Thông qua đồ án tốt nghiệp này em xin giới thiệu đến mọi người một sản phẩm ứng dụng nhỏ của công nghệ điện tử đó là “hệ thống biển quang báo điều khiển hiển thị từ xa bằng tín hiệu RF”
Trang 2LỜI CẢM ƠN
Em xin chân thành cảm ơn Khoa Công Nghệ Điện Tử & Truyền Thông,
Bộ môn Kỹ Thuật Y Sinh, Trường Đại học Công Nghệ Thông Tin và Truyền Thông đã tạo điều kiện tốt cho em hoàn thành đồ án này
Em xin gửi lời cảm ơn chân thành đến thầy Nguyễn Thế Dũng đã nhiệt tình hướng dẫn cho em hoàn thành đồ án tốt nghiệp này
Em xin gửi lời cảm ơn sâu sắc tới tất cả các thầy cô, những người đã giảng dạy, trang bị cho em kiến thức quý báu trong những năm học vừa qua – Trường Đại học Công Nghệ Thông Tin và Truyền Thông – Đại học Thái Nguyên
Mặc dù em đã cố gắng hoàn thiện thật tốt đồ án nhưng do kiến thức có hạn
do đó không thể tránh khỏi những sai sót, em rất mong nhận được sự cảm thông,
ý kiến đóng góp của các quý Thầy Cô và các bạn!
Em xin chân thành cảm ơn!
Sinh viên thực hiện Nguyễn Văn Khương
Trang 3LỜI CAM ĐOAN
Em xin cam đoan nội dung của đồ án này là sản phẩm của bản thân em tìm hiểu, nghiên cứu và xây dựng lên Không sao chép của ai Nội dung đồ án có tham khảo, sử dụng tài liệu, thông tin từ một số nguồn khác được trích dẫn trong phần tài liệu tham khảo, và một số website Nếu có gì sai só em xin chịu hoàn toàn mọi trách nhiệm và kỷ luật của nhà trường đề ra
Tác giả đồ án Nguyễn Văn Khương
Trang 4MỤC LỤC
NHIỆM VỤ ĐỒ ÁN 1
LỜI CẢM ƠN 2
LỜI CAM ĐOAN 3
MỤC LỤC 4
DANH MỤC HÌNH ẢNH 6
LỜI MỞ ĐẦU 7
CHƯƠNG 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC 16F877AVÀ 8051 8
1.1 Khái niệm về PIC 8
1.2 Sơ đồ chân vi điều khiển PIC 16F877A 8
1.3 Một vài thông số của vi điều khiển PIC 16F877A 8
1.4 Sơ đồ khối vi điều khiển 16F877A .10
1.5 Chức năng các chân của PIC 16F877A 10
1.6Các cổng xuất nhập của PIC 16F877A 13
1.6.1 PORTA 13
1.6.2 PORTB 14
1.6.3 PORTC 14
1.6.4 PORTD 14
1.6.5 PORTE 15
1.7.Giới thiệu chung về họ vi điều khiển 8051 15
1.8 Sơ đồ chân vi điều khiển 8051 16
1.9 Các thành viên khác của họ 18
1.10 Sơ đồ chân của vi điều khiển AT89C51 18
1.11 Cấu trúc bên trong của 89C51 18
1.11.1 Chức năng của các chânAT89C51 20
1.11.2 Các thanh ghi port xuất nhập 22
CHƯƠNG 2: CƠ SỞ LÍ THUYẾT 29
2.1 Giới thiệu điều khiển từ xa 29
2.1.1 Điều khiển từ xa bằng tần số vô tuyến (RF) 29
2.1.2 Hoạt động 29
2.2 Giới thiệu linh kiện sử dụng 29
2.2.1 Tổng quan về PT 2262 và PT2272 29
Trang 52.3 Giới thiệu các linh kiện sử dụng trong mạch 37
2.3.1 Vi điều khiển AT89C51 37
2.3.2 Thạch anh 12 MHz 37
2.3.3 Tụ gốm 33pF 38
2.3.4 Tụ hóa 39
2.3.5 Điện trở 40
2.3.6 Công tắc reset (button) 41
2.3.7 IC 7805 41
2.3.8 :LED đơn 42
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG 43
3.1 MÔ TẢ BÀI TOÁN 43
3.2 Yêu cầu bài toán 43
3.3 Lựa chọn phương án thiết kế .44
3.3.1 Phương án thiết kế một: Thiết kế biển quang báo điều khiển từ xa thông qua mạng wifi 44
3.3.2: Nhận xét 45
3.3.3 Phương án thiết kế hai: Thiết kế biển quang báo điều khiển từ xa bằng tín hiệu RF 45
3.3.3.1 sơ đồ khối 45
3.4 Lưu đồ thuật toán và giải thuật chương trình 47
3.5 THIẾT KẾ PHẦN CỨNG 48
3.5.1 Tính toán công suất cho biển quang báo 48
3.6 Quá trình thực hiện hoàn thành kết quả 51
3.7 Khả năng ứng dụng thực tế của đề tài 52
3.8 Hướng phát triển đề tài 52
PHỤ LỤC 53
KẾT LUẬN 58
TÀI LIỆU THAM KHẢO 59
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 60
Trang 6DANH MỤC HÌNH ẢNH
Hình 2.1 PT 2262 và PT2272 30
Hình 2.2 Xung nhịp tạo ra từ mạch dao động 31
Hình 2.3 Xung nhịp của bit 0 31
Hình 2.4 Xung nhịp của bit 1 32
Hình 2.5 Xung nhịp của bit F 32
Hình 2.6 Xung nhịp của bit đồng bộ Sync 32
Hình 2.7 Sơ đồ đấu chân của khối thu phát RF 33
Hình 2.8 Code mã word mã hóa hoàn chỉnh 34
Hình 2.9 Cấu trúc của PT 2272 35
Hình 2.10: Hình ảnh thực tế IC AT89C51 37
Hình 2.11: Thạch anh 37
Hình 2.12: Bộ dao động thạch anh của VĐK 8051 38
Hình 2.13: Tụ gốm 38
Hình 2.14: Điện trở 40
Hình 2.15: Công tắc button 41
Hình 2.16 IC 7805 41
Hình 2.17 Led Đơn 42
Hình 3.1: Sơ đồ hoạt động của hệ thống điều khiển biển quang báo thông qua mạng wifi 44
Hình 3.2: Sơ đồ khối của mạch 45
Hình 3.3: Lưu đồ thuật toán và giải thuật chương trình 47
Hình 3.4: Mạch điều khiển công suất 50
Hình 3.5 Hình ảnh mạch điều khiển 51
Hình 3.6 sản phẩm hoàn thành 51
Trang 7LỜI MỞ ĐẦU
Hiện nay, nước ta đang trong thời kì công nghiệp hóa, hiện đại hóa đất nước nền kinh tế phát triển nhanh và mạnh mẽ đặc biệt là các ngành công nghệ
kỹ thuật cao tiêu biểu như công nghệ thông tin hay công nghệ điện tử …
Như chúng ta đã biết trên thế giới công nghệ điện tử là một lĩnh vực có mức độ phát triển nhanh với nhiều ứng dụng to lớn phục vụ cho quá trình phát triển của mỗi quốc gia Đối với nước ta thì công nghệ điện tử có vai trò quan trọng trong công cuộc công nghiệp hóa, hiện đại hóa đất nước, cũng như trong cuộc sống thường ngày của chúng ta, nó làm tăng năng suất lao động cũng như chất lượng sản phẩm, giảm lao động chân tay nhờ sử dụng các thiết bị, dây chuyền điện tử vào sản xuất qua đó tiết kiệm được lao động con người đem lại hiệu quả cao cho công việc thúc đẩy công nghiệp ngày càng phát triển
Do vậy, ứng dụng công nghệ điện tử vào sản xuất cũng như các lĩnh vực khác đang là vấn đề được rất nhiều kỹ sư điện tử cũng như các doanh nghiệp đặc biệt quan tâm để càng ngày càng tạo ra những sản phẩm điện tử có chất lượng cao ứng dụng rộng rãi trong sản xuất cũng như trong cuộc sống hằng ngày, góp phần làm cho công nghệ điện tử tiến gần hơn với cuộc sống con người và không còn là lĩnh vực xa lạ với chúng ta
Thông qua đồ án tốt nghiệp này em xin giới thiệu đến mọi người một sản
phẩm ứng dụng nhỏ của công nghệ điện tử đó là “hệ thống biển quang báo điều
khiển hiển thị từ xa bằng tín hiệu RF”
Nội dung đồ án của em gồm 3 chương:
Chương 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC 16F877AVÀ 8051
Chương 2: CƠ SỞ LÝ THUYẾT
Chương 3: XÂY DỰNG BIỂN QUANG BÁO ĐIỀU KHIỂN HIỂN THỊ
TỪ XA BẰNG TÍN HIỆU RF
Mặc dù em đã nghiên cứu và chuẩn bị đồ án kỹ lưỡng nhưng cũng không thể tránh khỏi những sai sót trong quá trình thực hiện, vì vậy kính mong thầy cô
và các bạn có thể góp ý để em hoàn thành tốt hơn đề tài nghiên cứu này
Em xin chân thành cảm ơn!
Trang 8CHƯƠNG 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC 16F877AVÀ 8051 1.1 Khái niệm về PIC
PIC là tên viết tắt của “ Programable Intelegent Computer” có thể dịch là “ máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho vi điều khiển đầu tiên của họ: PIC1650 được thiết kế để dùng làm các thết bị ngoại vi cho vi điều khiển CP1600 Vi điều khiển này sau đó được nghiên cứu phát triển lên thành vi điều khiển PIC ngày nay
1.2 Sơ đồ chân vi điều khiển PIC 16F877A
Hình 2.1: sơ đồ vi điều khiển PIC 16F877A
1.3 Một vài thông số của vi điều khiển PIC 16F877A
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh với
độ dài 14 bit Mỗi lệnh đều được thực thi trong một chu kì xung clock Tốc độ hoạt động tối đa cho phép là 20MHZ với một chu kì lệnh là 200ns Bộ nhớ chương trình 8Kx14 bit, và bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu là EEPROM với dung lượng 256x8 byte Số PORT I/O là 5 với 33 pin I/O
Các đặc tính ngoại vi bao gồm các khối chức năng sau:
Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit
Trang 9 Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep
Timer2: bộ đếm 8 bit với bộ chia tần số, bộ poscaler
Hai bộ capture/so sánh/điều chế độ rộng xung
Các chuẩn giao tiếp nối tiếp SSP ( Synchronous Serial Port), I2C và SPI
Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ
Cổng giao tiếp song song PSP ( Parallel Slave Port) với các chân vi điều khiển RD, WR và CS ở bên ngoài
Các đặc tính analog:
8 kênh chuyển đổi ADC 10 bit
Hai bộ so sánh
Bên cạnh đó là một vài đặc tính của vi điều khiển như:
Bộ nhớ flash với khả năng ghi xóa được 100.000 lần
Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần
Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm
Khả năng tự nạp chương trình với sự điều khiển của phần mềm
Nạp được chương trình ngay trên mạch điện ICSP ( In Circuit Serial Programming) thông qua 2 chân
Watchdog Timer với bộ dao động trong
Chức năng bảo mật mã chương trình
Chế độ sleep
Có thể hoạt động với nhiều dạng Oscillator khác nhau
Trang 101.4 Sơ đồ khối vi điều khiển 16F877A
Hình 2.2 sơ đồ khối của vi điều khiển PIC 16F877A
Khối ALU-Arithmetic Login Unit
Khối bộ nhớ chương trình- Flash Program Memory
Khối bộ nhớ chứa dữ liệu EPROM – Data EPROM
Khối bộ nhớ file thanh ghi RAM – RAM file Register
Khối giải mã lệnh và điều khiển – Instruction Decode Control
Khối thanh ghi đặc biệt
Khối ngoại vi timer
Khối giao tiếp nói tiếp
Khối chuyển đổi tín hiệu tương tự sang số - ADC
Khối các port xuất nhập
1.5 Chức năng các chân của PIC 16F877A
Trang 11Hình 2.3 Sơ đồ chân vi điều khiển PIC 16F877A Chân OSC1/CLKI(13): ngõ vào kết nối với dao động thạch anh hoặc ngõ vào nhận xung clock từ bên ngoài
Chân OSC2/CLKO(14): ngõ ra dao động thạch anh hoặc ngõ ra cấp xung clock Chân (1) có 2 chức năng
: ngõ vào reset tích cực ở mức thấp
Vpp: ngõ vào nhận điện áp lập trình khi lập trình cho PIC
Chân RA0/AN0(2), RA1/AN1(3), RA2/AN2(3): có 2 chức năng
- RA0,1,2: xuất/ nhập số
- AN 0,1,2: ngõ vào tương tự của kênh thứ 0,1,2
Chân RA2/AN2/VREF-/CVREF+(4): xuất nhập số/ ngõ vào tương tự của kênh thứ 2/ nhõ vào điện áp chuẩn thấp của bộ AD/ ngõ vào điện áp chuẩn cao của bộ AD
Chân RA3/AN3/VREF+(5): xuất nhập số/ ngõ vào tương tự kênh 3/ ngõ vào điện áp chuẩn (cao) của bộ AD
Chân RA4/TOCK1/C1OUT(6): xuất nhập số/ ngõ vào xung clock bên ngoài cho Timer 0/ ngõ ra bộ so sánh 1
Trang 12Chân RA5/AN4/ / C2OUT(7): xuất nhập số/ ngõ vào tương tự kênh 4/ ngõ vào chọn lựa SPI phụ/ ngõ ra bộ so sánh 2
Chân RB0/INT (33): xuất nhập số/ ngõ vào tín hiệu ngắt ngoài
Chân RC1/T1OSI/CCP2(16) : xuất nhập số/ ngõ vào bộ dao động Timer 1/ ngõ vào Capture2, ngõ ra compare2, ngõ ra PWM2
Chân RC2/CCP1(17): xuất nhập số/ ngõ vào Capture1 ,ngõ ra compare1, ngõ ra PWM1
Chân RC3/SCK/SCL(18): xuất nhập số/ ngõ vào xung clock nối tiếp đồng bộ, ngõ ra chế độ SPI./ ngõ vào xung clock nối tiếp đồng bộ, ngõ ra của chế độ I2C
Chân RC4/SDI/SDA(23): xuất nhập số/ dữ liệu vào SPI/ xuất nhập dữ liệu I2C Chân RC5/SDO(24): xuất nhập số/ dữ liệu ra SPI
Chân RC6/TX/CK(25): xuất nhập số/ truyền bất đồng bộ USART/ xung đồng bộ USART
Chân RC7/RX/DT(26): xuất nhập số/ nhận bất đồng bộ USART
Chân RD0-7/PSP0-7(19-30): xuất nhập số/ dữ liệu port song song
Chân RE0/ /AN5(8): xuất nhập số/ điều khiển port song song/ ngõ vào tương tự 5
Chân RE1/ /AN6(9): xuất nhập số/ điều khiển ghi port song song/ ngõ vào tương tự kênh thứ 6
Chân RE2/ /AN7(10): xuất nhấp số/ Chân chọn lựa điều khiển port song song/ ngõ vào tương tự kênh thứ 7
Chân VDD(11, 32) và VSS(12, 31): là các chân nguồn của PIC
Trang 131.6Các cổng xuất nhập của PIC 16F877A
Cổng xuất nhập (I/0 port) chính là phương tiện mà vi điều khiển dùng để tương tác với thế giới bên ngoài Sự tương tác này là rất đa dạng và thông qua quá trình tương tác đó chức năng của vi điều khiển được thể hiện một cách rõ ràng
Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân ( I/O pin), tùy theo cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và
số lượng chân trong cổng có thể khác nhau Bên cạnh đó, do vi diều khiển được tích hợp sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức năng là cổng xuất nhập thông thường một số chân xuất nhập còn có thêm chức năng khác
để thể hiện sự tác động của các đặc tính ngoại vi nêu trên đối với thế giới bên ngoài Chức năng của từng chân xuất nhập trong mỗi cổng hoàn toàn có thể xác lập và điều khiển được thông qua các thanh ghi SFR liên quan đến chân xuất nhập đó
Vi điều khiển PIC 16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB, PORTC, PORTD, PORTE
1.6.1 PORTA
PORTA (RPA) bao gồm 6 I/O pin Đây là các chân “hai chiều” (bidirectional pin) nghĩa là có thể xuất và nhập được Chức năng I/O này được điều khiển bởi thanh ghi TRISA ( địa chỉ 85h) Muốn xác lập chức năng của một chân trong PORTA là input, ta “set” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA và ngược lại muốn xác lập chức năng của một chân trong PORTA là output, ta “clear” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA Thao tác này hoàn toàn tương tự đối với các PORT và các thanh ghi điều khiển tương ứng TRIS ( đối với PORTA là TRISA, đối với PORTB là TRISB, đối với PORTC là TRISC, đối với PORTD là TRISD và đối với PORTE
là TRISE) Bên cạnh đó PORTA còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vào analog, ngõ vào xung clock của Timer0 và ngõ vào bộ giao tiếp MSSP (Master Synchronous Serial Port) Đặc tính này sẽ được trình bày cụ thể trong phần sau
Các thanh ghi SFR liên quan đến PORTA bao gồm:
Trang 14PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA
TRISA (địa chỉ 85h) : chứa điều khiển xuất nhập
CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh
CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sánh điện áp
ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC
1.6.2 PORTB
PORTB (RPB) bao gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng là TRISB Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau PORTB còn liên quan đến ngắt ngoại vi và bộ Timer0 PORTB còn được tích hợp chức năng điện trở kéo lên được điều khiển bởi chương trình
Các thanh ghi SFR liên quan đến PORTB bao gồm:
PORTB (địa chỉ 06h, 106h) : chứa giá trị các pin trong PORTB
TRISB (địa chỉ 86h, 186h) : điều khiển xuất nhập
OPTION_REG (địa chỉ 81h,181h) : điều khiển ngắt ngoại vi và bộ Timer0
1.6.3 PORTC
PORTC (RPC) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng
là TRISC Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh, bộ Timer1, bộ PWM và các chuẩn giao tiếp I2C, SPI, SSP,USART
Các thanh ghi điều khiển liên quan đến PORTC bao gồm:
PORTC (địa chỉ 07h) : chứa các giá trị pin trong PORTC
TRISC (địa chỉ 87h) : điều khiển xuất nhập
1.6.4 PORTD
PORTD (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng
là TRISD PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel Slave Port)
Các thanh ghi liên quan đến PORTD bao gồm:
Thanh ghi PORTD : chứa giá trị các pin trong PORTD
Thanh ghi TRISD : điều khiển xuất nhập
Thanh ghi TRISE: điều khiển xuất nhập PORTE và chuẩn giao tiếp PSP
Trang 151.6.5 PORTE
PORTE (RPE) gồm 3 chân I/O Thanh ghi điều khiển xuất nhập tương ứng là TRISE Các chân của PORTE có ngõ vào là analog Bên cạnh đó PORTE còn là các chân điều khiển của chuẩn giao tiếp PSP
Các thanh ghi liên quan đến PORTE bao gồm:
PORTE : chứa giá trị các chân trong PORTE
TRISE : điều khiển xuất nhập và xác lập thông số cho chuẩn giao tiếp PSP ADCON1 : thanh ghi điều khiển khối ADC
1.7.Giới thiệu chung về họ vi điều khiển 8051
Thông thường so với các dòng vi điều khiển khác như PIC, AVR Thì
8051 là một dòng vi điều khiển cơ bản chúng ta có thể lập trình bằng hai ngôn ngữ C và ASM Nhưng để hiểu được nó môt cách trực quan nhất và sâu nhất thì chúng ta thường phải bắt đầu từ lập trình bằng ngôn ngữ ASM Ngôn ngữ này giúp ta thâm nhập vào các thanh ghi và các chân tín hiệu được một cách trực tiếp
để từ đó chúng ta có thể hiểu rõ hơn bản chất của dòng vi điều khiển này và từ đó
nó sẽ tạo cho chúng có thể tiến hành trình xa hơn bằng lập trình con vi điều khiển mới một cách tốt hơn tránh bị hổng kiến thức về sau
Là khả năng sẵn sàng đáp ứng về số lượng trong hiện tại và tương lai Đối với một sốnhà thiết kếđiều này là quan trong hơn cả Hiện nay, các bộ vi điều khiển 8 bit đứng đầu là họ 8051 có số lương lớn nhất các nhà cung cấp đa dạng (nhiều nguồn) Nhà cung cấp có nghĩa là nhà sản xuất bên cạnh nhà sáng chế của
bộ vi điều khiển Trong trường hợp 8051 thì nhà sáng chế của nó là Intel, nhưng hiện nay có rất nhiều hãng sản xuất nó (cũng như trước kia đã sản xuất)
Các hãng này bao gồm: Intel, Atmel, Philips/signe-tics, AMD, Siemens, Matra và Dallas, Semicndictior
Họ vi điều khiển dòng 8051
8-bits dữ liệu
4 cổng I/O, mỗi cổng có độ rộng là 8 bits
Tối đa 64K ROM nội(thường là 0K đến 4K)
Tối đa 64K bộ nhớ dữ liệu ngoài
Trang 16Tối đa 64K bộ nhớ mã lệnh ngoài
2 bộ định thời, 1 cổng nối tiếp
128 bytes RAM nội
Hoạt động nhiều tốc độ khác nhau như 11.095MHZ, hoặc 12MHZ
Vi điều khiển và vi xử lý
Xin nhắc đến cái máy tính của bạn, con chíp Intel hay ADM của bạn là 1
bộ vi xử lí, nó không có RAM, ROM,cổng IO và các thiết bị ngoại vi on Chip Còn vi điều khiển chứa 1 bộ vi xử lí và RAM,ROM, cổng IO, và có thể có các thiết bị ngoại vi
1.8 Sơ đồ chân vi điều khiển 8051
Là IC đóng vỏ dạng DIP có 40 chân, mỗi chân có một kí hiệu tên và có các chức năng như sau:
Chân 40: Nối với nguồn nuôI +5V
Chân 20: Nối với đất(Mass, GND)
Chân 29 (PSEN)(program store enable) là tín hiệu điều khiển xuất ra của
8051, nó cho phép chọn bộ nhớ ngoài và được nối chung với chân của OE (Outout Enable) của EPROM ngoài để cho phép đọc các byte của chương trình Các xung tín hiệu PSEN hạ thấp trong suốt thời gian thi hành lệnh Những mã nhị phân của chương trình được đọc từ EPROM đi qua bus dữ liệu và được chốt vào thanh ghi lệnh của 8051 bởi mã lệnh.(chú ý việc đọc ởđây là đọc các lệnh (khác với đọc dữ liệu), khi đó VXL chỉđọc các bit opcode của lệnh và đưa chúng vào hàng đợi lệnh thông qua các Bus địa chỉ và dữ liệu)
Chân 30 (ALE : Adress Latch Enable) là tín hiệu điều khiển xuất ra của
8051, nó cho phép phân kênh bus địa chỉ và bus dữ liệu của Port 0
Chân 31 (EA : Eternal Acess) được đưa xuống thấp cho phép chọn bộ nhớ
mã ngoàI đối với 8051 Đối với 8051 thì : EA = 5V : Chọn ROM nội EA = 0V : Chọn ROM ngoại 32 chân còn lại chia làm 4 cổng vào ra: Vào ra tức là có thể dùng chân đó đểđọc mức logic (0;1 tương ứng với 0V ; 5V)vào hay xuất mức logic ra(0;1)
P0 từ chân 39 -32 tương ứng là các chân P0_0 -P0_7
Trang 17P1 từ chân 1 -8 tương ứng là các chân P1_0 -1_7
P2 từ chân 21 -8 tương ứng là các chân P2_0 -P2_7
P3 từ chân 10 -17 tương ứng là các chân P3_0 -3_7
Riêng cổng 3 có 2 chức năng ở mỗi chân như trên hình vẽ:
P3.0 – RxD : Chân nhận dữ liệu nối tiếp khi giao tiếp RS232(Cổng COM ) P3.1 _ TxD : Chân truyền dữ liệu nối tiếp khi giao tiếp RS232
P3.2 _ INTO : interrupt 0 , ngắt ngoài 0
P3.3 _ INT1: interrupt 1, ngắt ngoài 1
P3.4 _T0 : Timer0 , đầu vào timer0
P3.5_T1 : Timer1, đầu vào timer 1
P3.6_ WR: Write, điều khiển ghi dứ liệu
P3.7 _RD: Read , điều khiển đọc dữ liệu
Chân 18, 19 nối với thạch anh tạo thành mạch tạo dao động cho VĐK
Hình 2.4: Sơ đồ chân của VĐK 8051
Trang 181.9 Các thành viên khác của họ
Có hai bộ vi điều khiển thành viên khác của họ 8051 là 8052 và 8031
Bộ vi điều khiển 8052: 8052 có tất cả các đặc tính chuẩn của 8051 ngoài ra nó có thêm 128 byte RAM và một bộđịnh thời nữa Hay nói cách khác là 8052 có 256 byteAM và 3 bộđịnh thời Nó cũng có 8K byte ROM Trên chíp thay vì 4K byte như 8051
Do vậy tất cả mọi chương trình viết cho 8051 đều chạy trên 8052 nhưng điều ngược lại là không đúng.Đặc biệt : Một nhà sản xuất chính của họ 8051 khác nữa là Philips Corporation Hàng này có một dải lựa chọn dộng lớn cho các
bộ vi điều khiển
1.10 Sơ đồ chân của vi điều khiển AT89C51
Dưới đây là hình dạng thực tế và sơ đồ chân của vi điều khiển AT89C51
Hình 2.5: Hình dạng thực tế và sơ đồ chân của AT89C51
1.11 Cấu trúc bên trong của 89C51
Thành phần chính của vi điều khiển AT89C51 là bộ xử lý trung tâm hay còn gọi là CPU (Central Processing unit) CPU bao gồm:
Thanh ghi tích lũy A
Thanh ghi tích lũy phụ B, dùng cho phép nhân và phép chia
Đơn vị logic học ALU (Arithmetric Logical Unit)
Từ trạng thái chương trình PSW (Program Status Word)
Trang 194 bank thanh ghi
Con trỏ ngăn xếp
Ngoài ra còn có bộ nhớ chương trình, bộ giải mã lệnh, bộ điều khiển thời gian và logic.Đơn vị xử lí trung tâm nhận trực tiếp xung từ bộ dao động.Chương trình đang chạy có thể cho dừng lại nhờ một khối điều khiển ngắt ở bên trong Các nguồn ngắt có thể là: Các biến cố ở bên ngoài, sự tràn bộ đếm định thời hoặc cũng có thể là giao diện nối tiếp
Hai bộ định thời 16bit hoạt động như một bộ đếm
Các cổng (Port 0, Port 1, Port 2, Port 3) được sử dụng vào mục đích điều khiển Ở cổng Port 3 có thêm các đường dẫn điều khiển dùng để trao đối với một
bộ nhớ bên ngoài, hoặc để đấu nối giao diện nối tiếp, cũng như các đường ngắt dẫn bên ngoài
Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ, làm việc độc lập với nhau Tốc độ truyền qua cổng nối tiếp có thể đặt trong dãy rộng và được ấn định bằng một bộ định thời.Trong vi điều khiển 8051 có hai thành phần quan trong khác là bộ nhớ và các thanh ghi.Bộ nhớ gồm có bộ nhớ RAM và bộ nhớ ROM dùng để lưu trữ dữ liệu và mã lệnh
Các thanh ghi sử dụng để lưu trữ thông tin trong quá trình xử lí Khi CPU làm việc, nó thay đổi nội dung của các thanh ghi
Hình 2.6: Cấu trúc bên trong IC 89C51
Trang 201.11.1 Chức năng của các chânAT89C51
Chân VCC: Chân số 40 là VCC cấp điện áp nguồn cho Vi điều khiển
Nguồn điện cấp là +5V±0.5
Chân GND: Chân số 20 nối GND (hay nối Mass) Khi thiết kế cần sử
dụng một mạch ổn áp để bảo vệ cho Vi điều khiển, cách đơn giản là sử dụng IC
ổn áp 7805
Port 0 (P0): Port 0 gồm 8 chân (từ chân 32 đến 39) có hai chức năng:
Chức năng xuất/nhập: Các chân này được dùng để nhận tín hiệu từ bên ngoài vào để xử lí, hoặc dùng để xuất tín hiệu ra bên ngoài, chẳng hạn xuất tín hiệuđểđiều khiển led đơn sáng tắt
Chức năng là bus dữ liệu và bus địa chỉ (AD7-AD0): 8 chân này (hoặcPort 0) còn làm nhiệm vụ lấy dữ liệu từ ROM hoặc RAM ngoại
Port 1 (P1): Port P1 gồm 8 chân (từ chân 1 đến chân 8): chỉ có chức năng
làm các đường xuất/nhập, không có chức năng khác
Port 2 (P2): Port 2 gồm 8 chân (từ chân 21 đến chân 28) có hai chức
năng:
Chức năng xuất/nhập
Chức năng là bus địa chỉ cao (A8-A15): khi kết nối với bộ nhớ ngoài có dung lượng lớn,cần 2 byte để định địa chỉ của bộ nhớ, byte thấp do P0 đảm nhận, byte cao do P2 này đảm nhận
Port 3 (P3): Port 3 gồm 8 chân (từ chân 10 đến 17):
Chức năng xuất/nhập : Với mỗi chân có một chức năng riêng thứ hai như trong bảng sau :
P3.0 RxD Ngõ vào nhận dữ liệu nối tiếp
P3.1 TxD Ngõ xuất dữ liệu nối tiếp
P3.2 INT0 Ngõ vào ngắt cứng thứ 0
P3.3 INT1 Ngõ vào ngắt cứng thứ 1
P3.4 T0 Ngõ vào của Timer/Counter thứ 0
P3.5 T1 Ngõ vào của Timer/Counter thứ 1
Trang 21P3.6 WR Ngõ điều khiển ghi dữ liệu lên bộ nhớ ngoài P3.7 RD Ngõ điều khiển đọc dữ liệu từ bộ nhớ bên
ngoài P1.0 T2 Ngõ vào của Timer/Counter thứ 2
P1.1 T2X Ngõ Nạp lại/thu nhận của Timer/Counter thứ 2
Bảng 1.3 Chức năng các chân của port 3 Chân RESET (RST)
Ngõ vào RST ở chân 9 là ngõ vào Reset dùng để thiết lập trạng thái ban đầu cho vi điều khiển Hệ thống sẽ được thiết lập lại các giá trị ban đầu nếu ngõ này ở mức 1 tối thiểu 2 chu kì máy
Chân XTAL1 và XTAL2
Hai chân này có vị trí chân là 18 và 19 được sử dụng để nhận nguồn xung clock từ bên ngoài để hoạt động, thường được ghép nối với thạch anh và các tụ
để tạo nguồn xung clock ổn định
Hình 2.7: Chân XTAL 1 và XTAL 2 của nguồn tạo xung
Chân cho phép bộ nhớ chương trình PSEN
PSEN ( program store enable) tín hiệu được xuất ra ở chân 29 dùng để truy xuất bộ nhớ chương trình ngoài Chân này thường được nối với chân OE (output enable) của ROM ngoài
Khi vi điều khiển làm việc với bộ nhớ chương trình ngoài, chân này phát ra tín hiệu kích hoạt ở mức thấp và được kích hoạt 2 lần trong một chu kì máy.Khi thực thi một chương trình ở ROM nội, chân này được duy trì ở mức logic không tích cực (logic 1) (Không cần kết nối chân này khi không sử dụng đến)
Trang 22Chân ALE (chân cho phép chốt địa chỉ-chân 30)
Khi Vi điều khiển truy xuất bộ nhớ từ bên ngoài, port 0 vừa có chức năng
là bus địa chỉ, vừa có chức năng là bus dữ liệu do đó phải tách các đường dữ liệu
và địa chỉ Tín hiệu ở chân ALE dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và các đường dữ liệu khi kết nối chúng với IC chốt
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động đưa vào vi điều khiển, như vậy có thể dùng tín hiệu ở ngõ ra ALE làm xung clock cung cấp cho các phần khác của hệ thống
Ghi chú: Khi không sử dụng có thể bỏ trống chân này
Chân EA
Chân EA dùng để xác định chương trình thực hiện được lấy từ ROM nội hay ROM ngoại Khi EA nối với logic 1(+5V) thì Vi điều khiển thực hiện chương trình lấy từ bộ nhớ nội.Khi EA nối với logic 0(0V) thì Vi điều khiển thực hiện chương trình lấy từ bộ nhớ ngoài
1.11.2 Các thanh ghi port xuất nhập
Các port của AT89C51 bao gồm port 0 ở địa chỉ 80H, port 1 ở địa chỉ 90H, port 2 ở địa chỉ A0H, và port3 ở địa chỉ B0H Tất cả các port này đều có thể truy xuất từng bit nên rất thuận tiện trong khả năng giao tiếp
Các thanh ghi timer
AT89C51 có chứa 2 bộ định thời/đếm 16 bit được dùng cho việc định thời hoặc đếm sự kiện Timer 0 ở địa chỉ 8AH (TL0: byte thấp) và 8CH (TH0: Byte cao) Timer 1 ở địa chỉ 8BH (TL1: Byte thấp) và 8DH (TH1: Byte cao) Việc khởi động timer được Set bởi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi điều khiển timer (TCON) ở địa chỉ 88H, chỉ có TCON được địa chỉ hóa từng bit
Các thanh ghi port nối tiếp
AT89C51 chứa một port nối tiếp dành cho việc trao đổi thông tin với các thiết bị nối tiếp như máy tính, modem hoặc giao tiếp nối tiếp với các IC khác Một thanh ghi gọi là bộ đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả 2 dữ liệu truyền và dữ liệu nhận Khi truyền dữ liệu thì ghi lên SBUF, khi nhận dữ liệu
Trang 23thì đọc SBUF Các mode vận hành khác nhau được lập trình qua thanh ghi điều khiển port nối tiếp SCON ở địa chỉ 98H
Các thanh ghi ngắt
AT89C51 có cấu trúc 5 nguồn ngắt, 2 mức ưu tiên Các ngắt bị cấm sau khi reset hệ thống và sẽ được cho phép bằng việc ghi thanh ghi cho phép ngắt (IE) ở địa chỉ A8H, cả 2 thanh ghi được địa chỉ hóa từng bit
Thanh ghi điều khiển công suất
Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa các bit điều khiển
Tín hiệu Reset
AT89C51 có ngõ vào reset RST tác động ở mức cao trong khoảng thời gian 2 chu kỳ, sau đó xuống mức thấp để AT89C51 bắt đầu làm việc RST có thể kích bằng tay bằng một phím nhấn thường mở, sơ đồ mạch reset như hình trên (hình 1.5) sau khi reset hệ thống được tóm tắt như sau:
Hình 2.8: Sơ đồ chân RESET của AT89C51
Bảng 1.4 Các thanh ghi trạng thái của chân RESET
Trang 24Hoạt động thanh ghi TIMER
AT89C51 có hai timer 16 bit, mỗi timer có bốn cách làm việc Người ta sử dụng các timer để:Định khoảng thời gian, đếm sự kiện.Tạo tốc độ baud cho port nối tiếp trong AT89C51
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở những khoảng đều đặn và đặt cờ tràn timer Cờ được dùng để đồng bộ hóa chương trình để thực hiện một tác động như kiểm tra trạng thái của các ngõ vào hoặc gửi sự kiện ra các ngõra Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của timer để đo thời gian trôi qua giữa hai sự kiện (ví dụ đo độ rộng xung )
Truy xuất các timer của AT89C51 dùng sáu thanh ghi chức năng đặc biệt cho trong bảng sau:
Mục Đích Địa chỉ Địa chỉ hóa từng bit
Bảng 1.5 Các thanh ghi chức năng của timer trong AT89C51
Thanh ghi chế độ timer (TMOD)
Thanh ghi TMOD chứa hai nhóm 4 bit dùng để đặt chế độ làm việc cho Timer 0 và Timer 1
7 GATE 1 Bit mở cổng, khi lên 1 timer chỉ chạy khi INT1 ở mức
cao
6 C/T 1 Bit chọn chế độ Count/Timer
1 = bộ đếm sự kiện
0 = bộ định khoảng thời gian
5 M1 1 Bit 1 của chế độ mode
Trang 254 M0 1 Bit 0 của chế độ mode
3 GATE 0 Bit mở cổng, khi lên 1 timer chỉ chạy khi INT0 ở mức
cao
2 C/T 0 Bit chọn chế độ Count/Timer
1 M1 0 Bit 1 của chế độ mode
0 M0 0 Bit 0 của chế độ mode
Bảng 1.6 Tóm tắt thanh ghi chức năng TMOD
Thanh ghi điều khiển timer(TCON)
Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho Timer
1, Timer 0
Bit Ký
hiệu
TCON.7 TF1 8FH Cờ báo tràn timer 1 Đặt bởi phần cứng khi tràn,
được xóa bởi phần mềm, hoặc phần cứng khi bộ
xử lý chỉ đến chương trình phục vụ ngắt
TCON.6 TR1 8EH Bit điều khiển timer 1 chạy đặt xóa bằng phần
mềm để cho timer chạy ngưng
TCON.5 TF0 8DH Cờ báo tràn Timer 0
TCON.4 TR0 8CH Bit điều khiển Timer 0 chạy
TCON.3 IE1 8BH Cờ cạnh ngắt 1 bên ngoài Đặt bởi phần cứng khi
phát hiện một cạnh xuống ở INT1 xóa bằng phần mềm họăc phần cứng khi CPU chỉ đến chương trình phục vụ ngắt
TCON.2 IT1 8AH Cờ kiểu ngắt 1 bên ngoài Đặt xóa bằng phần
mềm để ngắt ngoài tích cực cạnh xuống /mức thấp
TCON.1 IE0 89H Cờ cạnh ngắt 0 bên ngòai
TCON.0 IT0 88h Cờ kiểu ngắt 0 bên ngoài
Bảng 1.7 Thanh ghi điều khiển timer
Trang 26Khởi động và truy xuất thanh ghi timer
Thông thường các thanh ghi được khởi động một lần đầu ở chương trình
để đặt ở chế độ làm việc đúng Sau đó, trong thân chương trình, các thanh ghi timer được cho chạy, dừng, các bit được kiểm tra và xóa, các thanh ghi timer được đọc và cập nhật theo đòi hỏi các ứng dụng
TMOD là thanh ghi thứ nhất được khởi động vì nó đặt chế độ hoạt động
Ví dụ, các lệnh sau khởi động Timer 1 như timer 16 bit (chế độ 1) có xung nhịp
từ bộ dao động tên chip cho việc định khoảng thời gian:
MOV TMOD, #1B
Lệnh này sẽ đặt M1 = 1 và M0 = 0 cho chế độ 1, C/ T= 0 và GATE = 0 cho xung nhịp nội và xóa các bit chế độ Timer 0 Dĩ nhiên, timer không thật sự bắt đầu định thời cho đến khi bit điều khiển chạy TR1 được đặt lên 1.Khi timer tràn, cần dừng timer và xóa cờ báo tràn trong phần mềm:
Tổ chức ngắt của AT89C51:
Có 5 nguồn ngắt ở AT89C51: 2 ngắt ngoài 2 ngắt từ timer và 1 ngắt port nối tiếp Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi reset hệ thống và được cho phép từng cái một bằng phần mềm
Khi có hai hoặc nhiều ngắt đồng thời, hoặc một ngắt xảy ra khi một ngắt khác đang được phục vụ, có cả hai sự tuần tự hỏi vòng và sơ đồ ưu tiên hai mức dùng để xác định việc thực hiện các ngắt Việc hỏi vòng tuần tự thì cố định nhưng ưu tiên ngắt thì có thể lập trình được
Trang 27Cho phép và cấm ngắt:
Mỗi nguồn ngắt được cho phép hoặc cấm ngắt qua một thanh ghi chức năng đặt biệt có định địa chỉ bit IE ( Interrupt Enable : Cho phép ngắt ) ở địa chỉ A8H
IE.5 ET2 ADH Cho phép ngắt từ Timer 2 (8052) IE.4 ES ACH Cho phép ngắt port nối tiếp
IE.3 ET1 ABH Cho phép ngắt từ Timer 1
IE.1 ET0 A9H Cho phép ngắt từ Timer 0
Bảng 1.8 Tóm tắt thanh ghi IE
Các cờ ngắt :
Khi điều kiện ngắt xảy ra thì ứng với từng loại ngắt mà loại cờ đó được đặt lên một để xác nhận ngắt
Bảng 1.9 Các loại cờ ngắt trong AT89C51
Các vectơ ngắt :
Khi chấp nhận ngắt, giá trị được nạp vào PC được gọi là vector ngắt Nó
là địa chỉ bắt đầu của ISR cho nguồn tạo ngắt, các vector ngắt được cho ở bảng sau
Trang 28Bảng 1.10 Các vecter ngắt trong AT89C51
Vector reset hệ thống (RST ở địa chỉ 0000H) được để trong bảng này vì theo nghĩa này, nó giống ngắt : Nó ngắt chương trình chính và nạp cho PC giá trị mới
Trang 29CHƯƠNG 2: CƠ SỞ LÍ THUYẾT 2.1 Giới thiệu điều khiển từ xa
Ít người biết rằng những chiếc điều khiển từ xa đầu tiên trên thế giới được
ra đời nhằm mục đích phục vụ cho chiến tranh Các loại điều khiển từ xa bằng tần số vô tuyến xuất hiện vào chiến tranh thế giới I nhằm hướng dẫn các tàu hải quân Đức đâm vào thuyền của quân Đồng Minh
Đến chiến tranh thế giới II, điều khiển từ xa dùng để kích nổ những quả bom.Sau chiến tranh, công nghệ tuyệt vời của chúng tiếp tục được cải tiến để phục vụ đắc lực trong đời sống con người Và đến nay, có thể nói, gần như ai cũng đã từng sử dụng điều khiển từ xa để điều khiển một thiết bị nào đó
Ban đầu, người ta dùng điều khiển từ xa sử dụng công nghệ tần số vô tuyến RF
(Radio Frequency) và sau đó bắt đầu ứng dụng công nghệ hồng ngoại IR (Infrared Remote) vào điều khiển từ xa Hiện nay trong đời sống, chúng ta sử dụng cả hai loại điều khiển từ xa này
2.1.1 Điều khiển từ xa bằng tần số vô tuyến (RF)
Là loại điều khiển từ xa xuất hiện đầu tiên và đến nay vẫn giữ một vai trò quan trọng và phổ biến trong đời sống Nếu điều khiển IR chỉ dùng trong nhà thì điều khiển RF lại dùng cho nhiều vật dụng bên ngoài như các thiết bị mở cửa gara xe, hệ thống báo hiệu cho xem các loại đồ chơi điện tử từ xa thậm chí kiểm soát vệ tinh và các hệ thống máy tính xách tay và điện thoại thông minh…
2.1.2 Hoạt động
Với loại điều khiển này, nó cũng sử dụng nguyên lý tương tự như điều khiển bằng tia hồng ngoại nhưng thay vì gửi đi các tfn hiệu ánh sáng, nó lại truyền sóng vô tuyến tương ứng với các lệnh nhị phân Bộ phận thu sóng vô tuyến trên thiết bị được điều khiển nhận tín hiệu và giải mã nó
2.2 Giới thiệu linh kiện sử dụng
2.2.1 Tổng quan về PT 2262 và PT2272
Trước khi nghĩ đến việc mở rộng các ứng dụng của sóng điện từ trong viễn khiển, nghĩa là dùng sóng vô tuyến để điều khiển các thiết bị ở xa, chúng ta
Trang 30hãy tìm hiểu kỹ hơn về hai IC chuyên dùng trong điều khiển từ xa, đó là ic PT2262 dùng để tạo ra mã lệnh và ic PT2272 dùng để giải mã Ngày nay người
ta chế tạo rất nhiều các cặp ic, một con thì dùng cho bên phát và một con thì dùng cho bên nhận Trước hết chúng ta hãy tìm hiểu khái quát công dụng của các chân của ic này PT2262 có sơ đồ chân như hình vẽ sau:
Hình 2.1 PT 2262 và PT2272
IC PT2262 có nhiều nhóm, nhiều phiên bản, phân nhóm theo cách chữ viết tiếp theo ở bên sau chữ PT2262, hình vẽ cho thấy có nhóm 18 chân và có nhóm 20 chân, theo tên ghi trên các chân của IC chúng ta hiểu công dụng của từng chân như sau: Chân cuối của hàng dưới cho nối masse và chân cuối của hàng trên cho nối với nguồn Vcc, từ 4V đến 15V Trên chân fSCf và fSC2 dùng gắn điện trở R để định tần cho xung nhịp, dùng tạo ra các dãy xung mã lệnh Tần
số xung nhịp phải lấy tương thích giữa bên phát và bên nhận
Các chân A0 – A5 dùng nhập mã địa chỉ, trên mỗi chân có thể có 3 trạng thái,cho nối masse là bit 0, cho nối vào nguồn dương là bit 1 và bỏ trống là bit F
Chân A6/D0 – A11/D5 có thể dùng như các chân địa chỉ từ A6 đến A11, nhưngkhi dùng như chân nhập dữ liệu fata thì chỉ xác lập theo mức 1 và mức 0, chỉ có 2 trạng thái Chân TE dùng cho xuất nhóm xung mã lệnh, nó có tác dụng ở mức áp thấp.Nghĩa là khi chân này ở mức áp thấp, nó sẽ cho xuất ra xung mã lệnh trên chân Dout Chân Dout, là chân ngã ra của nhóm tín hiệu mã lệnh, các tín hiệu mã lệnh đều ở dạng xung, nghĩa là lúc ở mức áp thấp, lúc ở mức áp cao