- Hai bộ so sánh tương tự * Khối tạo điện áp chuẩn VREF tích hợp bên trong có thể lập trình * Đa hợp ngõ vào lập trình từ ngõ vào của CPU với điện áp chuẩnbên trong.. Đọc thanh ghi PORT
Trang 1KHOA: ĐIỆN, ĐIỆN TỬ VÀ CÔNG NGHỆ VẬT LIỆU
MẠCH THU PHÁT ÂM THANH SỬ DỤNG PIC16F877A và
Giảng viên hướng dẫn :TS LÊ VĂN THANH VŨ
Sinh viên thực hiện :HÀN DƯƠNG QUANG
Mã sinh viên :17T1051054
HUẾ, THÁNG 1 NĂM 2022
Trang 2ời đầu tin em xin chân thành cảm ơn tất cả quí thầy/cô giáo đã hướng dẫn
và chỉ bảo hết sức tận tình trong thời gian em làm Đồ án Môn Học 1 vừaqua, đặc biệt là khoa Điện Tử Và Công Nghệ Vật liệu đã tạo điều kiệnthuận lợi nhất cho em hòan thành đồ án này Em cũng vô cùng biết ơn Lê Văn Thanh
Vũ là người trực tiếp hướng dẫn và chỉ bảo hết sức tận tình cho em hoàn thành Đồ
án này.THIẾT KẾ MẠCH THU PHÁT ÂM THANH SỬ DỤNG PIC16F877A vàMCP4921
Em xin chân thành cảm ơn
Thành phố Huế, ngày 26 tháng 12 năm 2021
Sinh viên thực hiện
Quang Hàn Dương Quang
Trang 3DANH SÁCH HÌNH ẢNH
Hình 1.Hình ảnh thực tế và sơ đồ chân của PIC16F877A
Hình 2.Sơ đồ khối PIC16F877A
Hình 3.Mạch reset
Hình 4.Mạch tạo dao động
Hình 5.Sơ đồ chân IC MCP4921
Hình 6.Sơ đồ kết nối PIC16F877A VÀ MCP4921
Hình 7.Giản đồ xung mô tả gửi lệnh từ vi điều khiển sang DACHình 8.Flowchart quá trình thực hiện
Trang 4PHỤ LỤC 2
MỤC LỤC 3
CHƯƠNG I PHÂN TÍCH HỆ THỐNG 2
1.Phân tích yêu cầu của hệ thống: 2
2 Sơ đồ tổng quát: 2
CHƯƠNG II.LÝ THUYẾT 3
I GIỚI THIỆU VI ĐIỀU KHIỂN PIC16F877A 3
1 Tổng quan về vi điều khiển PIC 3
1.1 Các đặc tính ngoại vi: 3
1.2 Đặc tính về tương tự: 4
1.3 Các đặc tính đặc biệt: 4
2 Vi điều khiển PIC16F877A 5
2.1.Sơ đồ khối 5
2.2 Chức năng các chân: 6
2.3 Các Port xuất nhập: 7
2.4 Mạch reset CPU: 10
2.5 Cấu hình bộ dao động: 10
II IC MCP4921 11
1 Sơ đồ chân: 12
2 Giao tiếp vi điều khiển với MCP 4921: 12
3 Giao tiếp SPI giữa PIC và MCP4921: 13
4 Thanh ghi lệnh của MCP4921: 14
CHƯƠNG III THỰC HIỆN: 15
1.Flowchart cho quá trình thực hiện: 15
2.Hình ảnh mô phỏng: 15
3.Code thực hiện: 16
TÀI LIỆU THAM KHẢO 20
Trang 5LỜI NÓI ĐẦU
Trước sự phát triển nhanh chóng của khoa học và kỹ thuật thìcác thiết bị điện tử đóng vai trò rất quan trong Nó giúp con ngườithực hiện các công việc một cách nhanh chóng và chính xác, làmtăng năng suất lao động và rút ngắn thời gian làm việc các loại thiết
bị hiện đại dần dần thay thế con người làm các công việc nặng nhọc
và các công việc mang tính chất nguy hiểm Bên cạnh các thiết bịphục vụ cho lợi ích con người thì nhu cầu về giải trí của con ngườikhồng ngừng thay đổi, con người không ngừng thu thập và trao đổi
và nắm bắt các nguồn thông tin từ đó nảy sinh ra các thiết bị điện
tử như: radio, máy nghe nhạc, tivi từ các thiết bị điện tử cồng kềnhcủa thời xưa thì nay các thiết bị gần như tinh vi, siêu nhỏ nhưng tính
của chúng thì rất cao và bền
Trong lĩnh vực phát thanh, truyền hình ở nước ta ngày nay đã
có nhiều tiến bộ đáng kể do có nhiều nhà khoa học, nhiều chuyêngia, nhiều kỹ sư giỏi về khoa học kỹ thuật cùng tham gia nghiên cứu
và triển khai ứng dụng, kết quả có rất nhiều thiết bị mới được đưavào thay thế các thiết bị, máy móc cũ mang lại hiệu quả kinh tế cao.tuy vậy, về phát thanh truyền hình cần có nhiều lính vực cần tiếp tụcnghiên cứru, học hỏi và phát triến thêm đối với người làm kỹ thuậtphát thanh truyền hình nói riêng và các kỹ sư điện tử nói chung Dựatrên những kiến thức đã học về môn học, em đã nghiên cứu thôngqua đề tài: “Mạch Thu Phát Sử Dụng Pic 16F877A và MCP4921”.Trong quá trình thực hiện đề tài nhưng không thế tránh khỏi nhữngthiếu sót, nếu có điều kiện em sẽ nghiên cứu sâu hơn và hoàn thiệnhơn Mong nhận được sự góp ý chỉ bảo thêm của Thầy, Cô và cácbạn để đề tài có thể hoàn thiện tốt hơn
Trong lúc chờ đợi em xin chân thành cảm ơn
Trang 7CHƯƠNG I PHÂN TÍCH HỆ THỐNG 1.Phân tích yêu cầu của hệ thống:
Phân tích yêu cầu đề tài là làm rõ yêu cầu thực tiễn đặt ra để làm cơ sở cho việcthiết kế nhằm giải quyết các vấn đề chức năng và nhiệm vụ của hệ thống
Mục đích yêu cầu của bài toán:
Thu âm thanh được phát ra từ bên ngoài xử lí rồi phát lại thông qua các nútđiều khiển
Ta đặt ra các yêu cầu sau:
+ Phải có các nút để điều khiển quá trình
+ Hệ thống phát lại đúng thời gian mà ta đã thu
+ Sử dụng loa để kiểm tra kết quả của hệ thống
+ Thu tín hiệu âm thanh bên ngoài rồi phát lại
+ Âm thanh thu vào và phát ra phải giống nhau
Trang 8CHƯƠNG II.LÝ THUYẾT
I GIỚI THIỆU VI ĐIỀU KHIỂN PIC16F877A
1 Tổng quan về vi điều khiển PIC
PIC là viết tắt của từ “Programmable Intelligent Computer”
là một họ của vi điều khiển RISC được sản xuất bởi công tyMicrochip Technology Thế hệ đầu tiên là PIC1650 được phát triển bởiMicroelectronics Division thuộc General – Intrument
Hiện nay có khá nhiều dòng PIC có có rất nhiều khác biệt vềphần cứng, nhưng cơ bản chúng cớ những đặc điểm như:
- Là CPU 8 bit hoặc 16 bit được xây dựng theo kiến trúc Harvard cósữa đổi
- Có bộ nhớ Flash và ROM có thể tùy chọn từ 256 byte đến 256kbyte
- Có các cổng xuất – nhập (I/O port)
- Có timer 8 bit hoặc 16 bit
- Có các chuẩn giao tiếp nối tiếp đồng bộ, không đồng bộ USART
- Có các bộ chuyển đổi ADC 10 bit hoặc 12 bit
- Có các bộ so sánh điện áp
- Có các khối Capture/compare/PWM
- Có hỗ trợ giao tiếp LCD
- Có MSSP peripheral dùng cho các giao tiếp I2C, SPI, I2S
- Có bộ nhớ nội EEPROM có thể ghi, xóa lên đến 1 triệu lần
- Có khối điều khiển động cơ, đọc Encoder
- Có hỗ trợ giao tiếp USB
- Có hỗ trợ điều khiển Ethernet và giao tiếp CAN
Trang 91.1 Các đặc tính ngoại vi:
- Timer0: là bộ định thời timer/couter 8 bit có bộ chia trước
- Timer1: là bộ định thời timer/couter 16 bit có bộ chia trước, có thểđếm khi CPU đang ở chế độ ngủ với nguồn xung từ tụ thạch anhhoặc nguồn xung bên ngoài
- Timer2: là bộ định thời timer/couter 8 bit với thanh ghi 8 bit chiatrước và Postscaler
- Hai khối Capture, Compare, PWM
* Capture có độ rộng 16 bit, độ phân giải 12,5ns
* Compare có độ rộng 16 bit, độ phân giải 200ns
* Độ phân giải lớn nhất của PWM là 10 bit
1.2 Đặc tính về tương tự:
- Có 8 kênh chuyển đổi tín hiệu tương tự thành tín hiệu số ADC 10bit
- Có Reset BOR (Brown – Out Reset)
- Khối so sánh điện áp tương tự
- Hai bộ so sánh tương tự
* Khối tạo điện áp chuẩn VREF tích hợp bên trong có thể lập trình
* Đa hợp ngõ vào lập trình từ ngõ vào của CPU với điện áp chuẩnbên trong
* Các ngõ ra vào của bộ o sánh có thể truy xuất từ bên ngoài
1.3 Các đặc tính đặc biệt:
- Bộ nhớ chương trình Enhanced cho phép xóa và ghi 100000 lần.
- Bộ nhớ dữ liệu EEPROM cho phép xóa và ghi 1000000
- Bộ nhớ dữ liệu EEPROM có thể lưu trữ dữ liệu hơn 40 năm và có thể
tự lập trình lại dưới sự điều khiển của phần mềm
Trang 10- Mạch lập trình nối tiếp IPSC thông qua 2 chân.
- Nguốn sử dụng là nguồn đơn 5v cấp cho mạch lập trình nối tiếp
- Có bộ Watchdog Timer (WDT) với bộ dao động RC tích hợp trênchip
- Có thể lập trình mã bảo mật
- Có thể hoạt động ở chế độ Sleep để tiết kiệm năng lượng
- Có thể lựa chọn bộ dao động
- Có mạch điện gỡ rối ICD thông qua 2 chân
2 Vi điều khiển PIC16F877A
Hình 1.Hình ảnh thực tế và sơ đồ chân của PIC16F877A.
Vi điều khiển PIC16F877A có 40 chân với các đặc điểm là có 5 cổngxuất nhập là A, B, C, D, E Tần số hoạt động không quá 20Mhz, bộnhớ chương trình Flash là 8Kbyte, bộ nhớ dữ liệu là 368 byte, bộ nhớ
dữ liệu EEPROM là 256 byte, có 15 nguồn ngắt, 3 bộ Timer, 8 kênhchuyển đổi A/D 10 bit, 2 module capture/compare/PWM Giao tiếpnối tiếp USART, giao tiếp song song PSP, …
Trang 112.1.Sơ đồ khối.
Hình 2 bên dưới trình bày sơ đồ khối của PIC16F877A, gồm các khối:
- Khối ALU – Arithmetic Logic unit
- Khối bộ nhớ chứa chương trình chính – Flash Program Memory
- Khối bộ nhớ chứa dữ liệu EEPROM – Data EPROM
- Khối bộ nhớ file thanh ghi RAM – RAM file Register
- Khối giải mã và điều khiển – Instruction Decode Control
- Khối thanh ghi đặc biệt
- Khối giao tiếp nối tiếp
- Khối chuyển đổi tương tự sang số - ADC
- Khối các cổng xuất nhập
Trang 12Hình 2.Sơ đồ khối PIC16F877A
- Chân 13, 14: nối bộ tạo xung dao động cho vi điều khiển
- Chân 15 – 18: PORTC (PORTC0 – PORTC3)
- Chân 23 – 25: PORTC (PORTC4 – PORTC7)
Trang 13- Chân 19 – 22: PORTD (PORTD0 – PORTD3)
- Chân 27 – 30: PORTD (PORTD4 – PORTD7)
- Chân 33 – 40: PORTB
2.3 Các Port xuất nhập:
*PORTA và thanh ghi TRISA
PORT A là port hai chiều chỉ có 6 bit, thanh ghi định hướng tươngứng là TRISA Khi bit TRISA bằng 1 thì PORT A là port nhập, khi bitTRISA bằng 0 thì PORT A là port xuất dữ liệu
Đọc thanh ghi PORT A là đọc trạng thái ở các chân, nhưng ngượclại khi ghi thì dữ liệu sẽ vào mạch chốt port Tất cả hoạt động gồm 3giai đoạn: đọc – hiệu chỉnh – ghi Do đó ghi dữ liệu vào 1 port đượchiểu là đọc dữ liệu từ port rồi hiệu chỉnh và sau cùng là ghi dữ liệuvào mạch chốt dữ liệu
Chân RA4 được đa hợp với ngõ vào xung clock của moduletimer0 có cấu hình Schmitt trigger Tất cả các chân còn lại của PORT
A ở chuẩn TTL khi nó là ngõ vào và khi xuất dữ liệu thì theo chuẩnCMOS
Những chân khác của PORT A được đa hợp với các ngõ vàotương tự VREF cho các bộ chuyển đổi A/D và các bộ so sánh Hoạtđộng của mỗi chân được lựa chọn bằng cách xóa lặp vào các bit điềukhiển cho phù hợp trong thanh ghi ADCON1 hoặc thanh ghi CMCON Thanh ghi TRISA điều khiển hướng các chân của port ngay cảkhi chúng được sử dụng như là ngõ vào tương tự
* PORT B và thanh ghi TRISB:
Trang 14PORT B là port 2 chiều 8 bit với thanh ghi định hướng tươngứng là TRISB Khi bit TRISB bằng 1 thì PORT B là port nhập, Khi bitTRISB bằng 0 thì PORT B là port xuát dữ liệu.
Ba chân của PORT B được đa hợp với mạch điện gỡ rối bêntrong và chức năng lập trình điện áp thấp: RB3/PGM, RB6/PGC,RB7/PGD
Mỗi chân của PORT B có điện trở kéo lên Bit điều khiển RBPU– 1 thì có mở tất cả các điện trở kéo lên Khi PORT B được thiết lập làcác ngõ ra thì sẽ tự động tắt chức năng điện trở kéo lên cũng tương
tự khi CPU bị Reset khi mới cúp điện
Bốn chân của PORT B RB4 – RB7 có cấu trúc ngắt thay đổi, chỉnhững chân được thiết lập ở cấu hình là ngõ vào thì mới có chứcnăng ngắt Các chân ngõ vào được so sánh với các giá tri cũ đã đượcchốt trong lần đọc của PORT B Các ngõ ra không trùng nhau của cácchân RB4 – RB7 được OR lại với nhau để tạo ra ngắt ở PORT B với bit
có báo ngắt RBIF
Ngắt này có thể kích hoạt vi điều khiển trở lại trạng tháihoạt động khi nó đang ở chế độ sleep Trong chương trình phục vụngắt, có thể xóa ngắt bằng cách:
- Bất kì lệnh đọc hay ghi PORT B sẽ kết thúc điều kiện khôngthích ứng
- Xóa bit cờ RBIF
Điều kiện không tương thích sẽ tiếp tục làm cờ báo ngắt RBIF bằng
1 Khi đọc PORTB sẽ chấm dứt điều kiện không tương thích và chophép cho bit cờ báo ngắt RBIF
* PORT C và thanh ghi TRISC:
Trang 15PORT C là port hai chiều 8 bit có thanh ghi định hường làTRISC Khi TRISC bằng 1 thì PORTC là port nhập, Khi TRISC bằng 0 thìPORTC là port xuất.
PORT C được đa hợp với chức năng ngoại vi, các chân củaPORT C có mạch điện Schmmitt trigger ở ngõ vào
Khi khối I2C được cho phép thì các chân PORTC <4,3> cóthể được định cấu hình ở các mức I2C hoặc mức SMBUS bằng cách
sử dụng bit CKE
Khi cho phép các chức năng ngoại vi, nên chú ý đến các bitTRIS cho mỗi chân của PORT C Một vài thiết bị ngoại vi ghi nên bitTRIS để làm 1 chân như là 1 ngõ ra, trong khi đó các thiết bị ngoại vikhác ghi nên bit TRIS để làm 1 chân lí là một ngõ vào Khi ghi đè bitTRIS thì không ảnh hưởng đến các thiết bị đã cho phép, các lệnh đọc– hiệu chỉnh – ghi với TRISC là đích đến tránh phải dùng
* PORT D và thanh ghi TRISD:
PORT D là port 8 bit với ngõ vào có mạch Schmitt Trigger,mỗi chân có thể được cấu hình độc lập là ngõ vào hoặc ngõ ra
PORT D có thể định cấu hình như port của vi xử lý 8 bit bằngcách thiết lập bit điều khiển PSPMODE Trong mode này thì các bộđệm ngõ vào dạng TTL
* PORT E và thanh ghi TRISE:
PORTE có 3 chân RE0, RE1, RE2 có cấu hình độc lập để thiếtlập ngõ vào hoặc ngõ ra Những chân này có mạch điện Schmitttrigger ở ngõ vào
PORTE trở thành các ngõ vào điều khiển xuất, nhập của vi
xử lý khi bit PSPMODE – 1
Trang 16Các chân PORTE cũng được đa hợp với các ngõ vào tương
tự Khi được chọn là ngõ vào tương tự thì đọc các chân này sẽ có giátrị là 0
TRISE điều khiển định hướng các chân RE ngay khi chúngđược dùng như những ngõ vào tương tự
2.4 Mạch reset CPU:
Hình 3.Mạch reset
PIC16F877A có bộ lọc nhiễu cho ngõ vào của chân resetMCLR Bộ lọc nhiễu sẽ tách và hủy các xung nhỏ
Giá trị điện trở R1 chọn thường nhỏ hơn 40k để đảm bảo điện
áp rơi trên điện trở không vượt quá các thông số chỉ định
Giá trị điện trở R2 chọn lớn hơn 1kΩ để hạn chế dòng điệnchạy vào chân MCLR từ tụ C bên ngoài, trong trường hợp chân resetsụp áp liên quan đến phóng tĩnh điện
Trang 17II IC MCP4921
PIC16F877A không hỗ trợ chức năng DAC nên để dùng chứcnăng này thì phải ghép nối thêm IC phụ có chức năng DAC DAC làchức năng ngược của ADC tức là biến đổi tín hiệu từ dạng số sangtương tự, nó nhận vào 1 chuỗi số nhị phân và xuất sang tín hiệu điện
áp tương tự
Có nhiều loại IC có chức năng DAC và MCP4921 cũng nằmtrong số đó, IC MCP4921 có độ phân giải 12 bit, hoạt động trong dải
Trang 18điện từ 2,7 – 5v, sử dụng giao tiếp SPI với vi điều khiển IC MCP4921
có chân điện áp tham chiếu ngoài, một ngõ ra điện áp tương tự, có
bộ điện áp khuyếch đại 2 lần điện áp ngõ ra, thời gian xác lập ngõ ra
là 4,5us, dòng điện tiêu thụ là 175uA, có cấu trúc 2 hàng chân vớimỗi bên 4 chân và hoạt động trong dãi nhiệt độ -40°C - 125°C
1 Sơ đồ chân:
Hình 5.Sơ đồ chân IC MCP4921
- Chân 1: VDD: cấp nguồn dương
- Chân 2: CS: Chip Select
- Chân 3: SCK: Clock
- Chân 4: SDI: Serial Data In
- Chân 5: LDAC: chốt ngõ vào
- Chân 6: VREFA: điện áp tham chiếu
- Chân 7: AVss: nguồn 0v
- Chân 8: V outA: ngõ ra analog
Trang 192 Giao tiếp vi điều khiển với MCP 4921:
Hình 6.Sơ đồ kết nối PIC16F877A VÀ MCP4921
Chân SCK của DAC nối chân SCK của PIC
Chân SDI của DAC nối chân SDO của PIC chân CS của DAC nối chânSDO của PIC chân CS của DAC nối vào một chân I/O bất kì trừ chânSDO của PIC
Chân LDAC nối GND khi dữ liệu số sang cho DAC thì ngay lập tứcchuyển đổi thành điện áp ngõ ra
Chân VREFA nối nguồn VCC hoặc nối nguồn điện áp ổn định
Cấp nguồn dương cho DAC của chân 1 và nối đất vào chân 7
3 Giao tiếp SPI giữa PIC và MCP4921:
Để DAC tạo đươck điện áp ngõ ra thì phải gửi lệnh sang cho DAC,chiều dài của lệnh là 16 bit trong đó,
- 4 bit cao là 4 bit cấu hình, dùng để tùy chỉnh các chế độ hoạtđộng của DAC
Trang 20- 12 bit thấp còn lại là các số nhị phân cần chuyển đổi sang điện
4 Thanh ghi lệnh của MCP4921:
Trang 21BUF: bộ đếm VREF, nếu là 0 thì là không đệm, là 1 thì có đệm.
GA: chọn hệ số khuếch đại:
- 1: x1: VOUT =VREF
-0 : X2: VOUT =VREF
SHDN: Shutdown: nếu là 0 thì ngõ ra tổng trở cao, là 1 thì ngõ ra
điện áp DAC
Trang 22CHƯƠNG III THỰC HIỆN:
1.Flowchart cho quá trình thực hiện:
Hình 8.Flowchart quá trình thực hiện
2.Hình ảnh mô phỏng:
Trang 233.Code thực hiện:
#include <16f877.h>
#device *=16 ADC= 8
#use delay( clock =20000000)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP, NOCPD, NOWRT
#define signal pin_AN0
#define Start pin_AN1
#define Stop pin_AN2
#define Play pin_AN3
#define Replay pin_AN4
#define Pause pin_AN5