ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN ĐỒ ÁN CHUYÊN NGÀNH LỜI NÓI ĐẦU ............................................................................................................1CHƯƠNG 1: ...............................................................................................................2TỔNG QUAN VỀ VI ĐIỀU KHIỂN .........................................................................21.1 Tổng quan về họ vi điều khiển..........................................................................21.2 Giới thiệu về AT89S52 .....................................................................................31.2.1 Tổng quan về AT89S52 .............................................................................31.2.2 Sơ đồ chân AT89S52 .................................................................................41.2.3 Tổ chức bộ nhớ ..........................................................................................61.3 Giới thiệu về 16F877A....................................................................................101.3.1 Tổng quan về 16F877A............................................................................101.3.2 Sơ đồ chân vi điều khiển PIC 16F877A..................................................111.3.3 Tập lệnh của vi điều khiển PIC 16F877A................................................141.3.4 Các thành phần cơ bản của một mạch ứng dụng vi điều khiển PIC: .......15CHƯƠNG 2: .............................................................................................................16TÍNH TOÁN THIẾT KẾ CHẾ TẠO MẠCH...........................................................162.1 Cấu tạo thành phần của bộ kit.........................................................................162.2 Thiết kế và tính toán linh kiện sử dụng...........................................................162.2.1 Khối MCU AT89S52 ...............................................................................162.2.2 MCU PIC16F877A ..................................................................................182.2.3 Khối Led đơn ...........................................................................................192.2.4 Khối led 7 thanh .......................................................................................202.2.5 Khối led LCD...........................................................................................222.2.6 Khối led matrix ........................................................................................232.2.7 Khối động cơ bước...................................................................................252.2.9 Khối điều khiển Relay..............................................................................282.2.10 Khối cảm biến ........................................................................................302.2.11 Khối ADC ..............................................................................................332.2.12 Khối nút nhấn đơn và ma trận phím.......................................................342.2.13 Khối nguồn.............................................................................................362.3 Thiết kế mạch..................................................................................................372.3.1 Sơ đồ thi công MCU AT89S52................................................................372.3.2 Sơ đồ thi công MCU PIC16F877A..........................................................392.3.3 Sơ đồ thi công MAIN...............................................................................39CHƯƠNG 3 ..............................................................................................................41BÀI TOÁN ỨNG DỤNG CỦA KIT THEO PIC16F877A ......................................423.1 Bài toán với led đơn ........................................................................................423.1.1 Bài toán và sơ đồ kết nối..........................................................................423.1.2 Xây dựng lưu đồ thuật toán và chương trình ...........................................433.2 Bài toán với led 7 thanh ..................................................................................453.2.1 Bài toán và sơ đồ kết nối..........................................................................453.3.2 Xây dựng lưu đồ thuật toán và chương trình ...........................................463.3 Bài toán với LCD ............................................................................................483.3.1 Bài toán và sơ đồ kết nối..........................................................................483.3.2 Xây dựng lưu đồ thuật toán và chương trình ...........................................493.4 Bài toán với led matrix....................................................................................513.4.1 Bài toán và sơ đồ kết nối..........................................................................513.4.2 Xây dựng lưu đồ thuật toán và chương trình ...........................................523.5 Bài toán với nút nhấn ......................................................................................543.5.1 Bài toán và sơ đồ kết nối..........................................................................542) Sơ đồ kết nối .................................................................................................543.5.2 Lưu đồ thuật toán và chương trình...........................................................553.6 Bài toán với động cơ bước ..............................................................................573.6.1 Bài toán và sơ đồ kết nối..........................................................................573.6.2 Xây dựng lưu đồ thuật toán và chương trình ...........................................583.7 Bài toán với động cơ điện 1 chiều 12VDC.....................................................613.7.1 Bài toán và sơ đồ kết nối..........................................................................613.7.2 Xây dựng lưu đồ thuật toán và chương trình ........................................623.8 Bài toán biến đổi ADC hiển thị LCD..............................................................653.8.1 Bài toán và sơ đồ kết nối..........................................................................653.8.2 Xây dưng lưu đồ thuật toán và chương trình ...........................................65KẾT LUẬN...............................................................................................................691 Đánh giá kết quả thực hiện.................................................................................69Ưu điểm của bộ kit..........................................................................................69Nhược điểm của bộ kit....................................................................................692 Phương hướng phát triển đề tài..........................................................................69
Tổng quan về họ vi điều khiển
Vào năm 1981 hãng Intel giới thiệu bộ vi điều khiển được gọi là 8051 Bộ vi điều khiển này có 128 byte RAM, 4K byte ROM trên chip, hai bộ định thời, một cổng nối tiếp và 4 cổng (độ rộng 8 bit) vào – ra tất cả được đặt trên một chip 8051 là một bộ xử lý 8 bit có nghĩa là CPU chỉ có thể làm việc với 8 bit dữ liệu tại một thời điểm
Dữ liệu lớn hơn 8 bit được chia ra thành các dự liệu 8 bit để xử lý 8051 đã trở lên phổ biến sau khi Intel cho phép các nhà sản xuất khác sản xuất và bán các dạng biến thể của 8051 Điều này dẫn đến sự ra đời nhiều phiên bản của 8051 với các tốc độ khác nhau và dung lượng ROM trên chip khác nhau Mặc dù có nhiều biến thể khác nhau của 8051 về tốc độ và dung lượng nhớ ROM trên chip, nhưng tất cả chúng đều tương thích với 8051 ban đầu về các lệnh Điều này có nghĩa là nếu viết chương trình của mình cho một phiên bản nào của 8051 thì nó cũng sẽ chạy với mọi phiên bản khác mà không phân biệt nó được sản xuất từ hãng nào Đặc Tính Số Lượng
Bảng 1.1: Các đặc tính của 8051 đầu tiên
PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip
Technology Dòng PIC đầu tiên là PIC1650 được phát triển bởi Microelectronics Division thuộc General Instrument
PIC bắt nguồn là chữ viết tắt của "Programmable Intelligent Computer" (Máy tính thông minh có thể lập trình được) là một sản phẩm của hãng General Instrument đặt cho dòng sản phẩm đầu tiên của họ là PIC1650 Lúc này, PIC1650 được dùng để giao tiếp với các thiết bị ngoại vi cho máy chủ 16bit CP1600, vì vậy, người ta cũng gọi PIC với cái tên "Peripheral Interface Controller" (Bộ điều khiển giao tiếp ngoại vi) CP1600 là một CPU tốt, nhưng lại kém về các hoạt động xuất nhập, và vì vậy PIC 8-bit được phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600 PIC sử dụng microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưa được sử dụng thời bây giờ, nhưng PIC thực sự là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động)
Năm 1985 General Instrument bán bộ phận vi điện tử của họ, và chủ sở hữu mới hủy bỏ hầu hết các dự án - lúc đó đã quá lỗi thời Tuy nhiên PIC được bổ sung EEPROM để tạo thành 1 bộ điều khiển vào ra khả trình Ngày nay rất nhiều dòng PIC được xuất xưởng với hàng loạt các module ngoại vi tích hợp sẵn (như USART, PWM, ADC ), với bộ nhớ chương trình từ 512 Word đến 32K Word.
Giới thiệu về AT89S52
AT89S52 là một hệ vi tính 8 bit đơn chíp CMOS có hiệu suất cao,công suất nguồn tiêu thụ thấp và có 4Kbyte bộ nhớ ROM Flash xoá được lập trình được Chip này được sản xuất dựa vào công nghệ bộ nhớ không mất nội dung có độ tích hợp cao của Atmel
Chip AT89S52 cũng tương thích với tập lệnh và các chân ra của chuẩn công nghiệp MCS-51 Flash trên chip này cho phép bộ nhớ chương trình được lập trình lại trên hệ thống hoặc bằng bộ lập trình bộ nhớ không mất nội dung qui ước Bằng cách kết hợp một CPU linh hoạt 8 bit với Flash trên một chip đơn thể, Atmel 89C51 là một hệ vi tính 8 bit đơn chip mạnh cho ta một giải pháp có hiệu quả về chi phí và rất linh hoạt đối với các ứng dụng điều khiển
AT89S52 có các đặc trưng sau: 4Kbyte Flash, 128 byte Ram, 32 đường xuất nhập, hai bộ định thời / đếm 16 bit, một cấu trúc ngắt 2 mức ưu tiên và 5 nguyên nhân ngắt, một port nối tiếp song công, mạch dao động và tạo xung clock trên chip
Ngoài ra AT89S52 được thiết kế với logic tĩnh cho hoạt đông có tần số giảm xuống 0 và hỗ trợ hai chế độ tiết kiệm năng lượng được lựa chọn bằng phần mềm
Chế độ nghĩ dừng CPU trong khi vẫn cho phép RAM, các bộ định thời / đếm, port nối tiếp và hệ thống ngắt tiếp tục hoạt động
Chế độ nguồn giảm duy trì nội dung của RAM nhưng không cho mạch dao động cung cấp xung clock nhằm vô hiệu hoá các hoạt động khác của chip cho đến khi có reset cứng tiếp theo
Các đặc điểm của 8951 được tóm tắt như sau:
• 4 KB bộ nhớ có thể lập trình lại nhanh, có khả năng tới 1000 chu kỳ ghi xoá
• Tần số hoạt động từ: 0Hz đến 24 MHz
• 3 mức khóa bộ nhớ lập trình
• 64 KB vùng nhớ mã ngoài
• 64 KB vùng nhớ dữ liệu ngoại
• Xử lý Boolean (hoạt động trên bit đơn)
• 210 vị trí nhớ có thể định vị bit
• 4 s cho hoạt động nhân hoặc chia
Hình 1.1 Sơ đồ các chân AT89S52
-Chức năng các chân tín hiệu :
• VCC: chân cung cấp điện
• Port 0: gồm 8 chân 32-39 (P0.0…P0,7) Port 0 là port có 2 chức năng Trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu
• Port1: chân 1-8 (P1.0…P1.7) Port 1 là port IO Có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần Port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài
• Port 2: chân 21-28 (P2.0….P2.7) Port 2 là port có tác dụng kép Được dùng như các đường xuất nhập hoặc byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng
• Port 3: chân 10-17 (P3.0…P3.7) Port 3 là port xuất nhập 8 bit 2 chiều có các điện trở kéo lên bên trong Các chân của port này có nhiều chức năng, các công dụng chuyển đổi có lien hệ với các đặc tính đặc biệt của 8051
• RST: Ngõ vào reset Mức cao trên chân này trong 2 chu kỳ máy trong khi bộ dao động đang hoạt động sẽ reset AT89S52
• ALE/ PROG Xung của ngõ ra cho phép chốt địa chỉ ALE (address latch enable) cho phép chốt byte thấp của địa chỉ trong thời gian truy xuất bộ nhớ ngoài Chân này cũng được dùng làm ngõ vào xung lập trình ( PROG ) trong thời gian lập trình Flash Khi hoạt động bình thường, xung của ngõ ra ALE luôn luôn có tần số bằng 1/6 tần số của mạch dao động trên chip, có thể được sử dụng cho các mục đích định thời từ bên ngoài và tạo xung clock Tuy nhiên cần lưu ý là một xung ALE sẽ bị bỏ qua trong mỗi chu kỳ truy xuất bộ nhớ dữ liệu ngoài Khi cần, hoạt động cho phép chốt byte thấp của địa chỉ sẽ được vô hiệu hoá bằng cách set bit 0 của thanh ghi chức năng đặc biệt có địa chỉ byte là 8EH Khi bit này được set, ALE chỉ tích cực tring thời gian thực thi lệnh MOVX hoặc MOVC Ngược lại chân này sẽ được kéo lên mức cao Việc set bit không cho phép hoạt động chốt byte thấp của địa chỉ sẽ không có tác dụng nếu bộ vi điều khiển đang chế độ thực thi chương trình ngoài
• PSEN : Chân cho phép bộ nhớ chương trình PSEN (program store enable) điều trình trong bộ nhớ chương trình ngoài, PSEN tích cực 2 lần cho mỗi chu kỳ máy, ngoại trừ trường hợp 2 tác động của PSEN bị bỏ qua cho mỗi truy xuất bộ nhớ dữ liệu ngoài
• EA / Vpp: Chân cho phép truy xuất bộ nhớ ngoài EA (external access enable) phải được nối với GND để cho phép chip vi điều khiển tìm nạp lệnh từ các vị trí nhớ của bộ nhớ chương trình ngoài, bắt đầu từ địa chỉ 0000H cho đến FFFFH Tuy nhiên cần lưu ý là nếu có bit khoá 1(clock bit 1) được lập trình, EA sẽ được chốt bên trong khi reset EA nên nối với Vcc để thực thi chương trình trong chip Chân EA / Vpp còn nhận điện áp cho phép lập trình Vpp trong thời gian lập trình cho Flash, điện áp này cấp cho các bộ phận có yêu cầu điện áp 12V
• XTAL 1: Ngõ vào đến mạch khuyếch đại đảo dao động và ngõ vào đến mạch tạo xung clock bên trong chip
• XTAL 2: Ngõ ra từ mạch khuyết đại đảo của mạch dao động
Trên vi điều khiển 8051/8052 đều có cả bộ nhớ chương trình (ROM) và bộ nhớ dữ liệu (RAM) Tuy nhiên dung lượng của các bộ nhớ trên chip là hạn chế Khi thiết kế các ứng dụng đòi hỏi bộ nhớ lớn người ta có thể dùng bộ nhớ ngoài
Bộ nhớ chương trình là bộ nhớ chỉ đọc, là nơi lưu trữ chương trình của vi điều khiển Bộ nhớ chương trình của họ 8051 có thể thuộc một trong các loại sau ROM, EPROM, FLASH hoặc không có bộ nhớ chương trình trên chip Với họ vi điều khiển 89xx, bộ nhớ chương trình được tích hợp sẵn trong chip có kích thước nhỏ nhất là 4kByte Với các vi điều khiển không tích hợp sẵn bộ nhớ chương trình trên chip, buộc phải thiết kế bộ nhớ chương trình bên ngoài Địa chỉ đầu tiên của bộ nhớ chương trình là 0000H, chính là địa chỉ reset của vi điều khiển Ngay khi bật nguồn hoặc reset vi điều khiển, thì CPU sẽ nhảy đến thực hiện lệnh ở địa chỉ 0000H này
Khi sử dụng bộ nhớ trên chip thì chân EA phải được nối lên mức logic cao (+5V) Nếu bạn muốn mở rộng bộ nhớ chương trình thì chúng ta phải dùng bộ nhớ ngoài với dung lượng tối đa là 64Kbyte
Bộ nhớ dữ liệu tồn tại độc lập so với bộ nhớ chương trình Họ vi điều khiển
8051 có bộ nhớ dữ liệu tích hợp trên chip nhỏ nhất là 128byte và có thể mở rộng với bộ nhớ dữ liệu ngoài lên tới 64kByte
Bộ nhớ dữ liệu được phân chia như sau:
Giới thiệu về 16F877A
1.3.1 Tổng quan về 16F877A Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài
14 bit Mỗi lệnh đều được thực thi trong một chu kỳ xung lock Tốc độ hoạt động tối đa cho phép là 20 MHz với một chu kỳ lệnh là 200ns Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu 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
• 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 lock 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ộ postcaler
• 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 Series Port), SPI và I2C
• 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 điều khiển
RD, WR, CS ở bên ngoài
• 8 kênh chuyển đổi ADC 10 bit
• Bên cạnh đó là một vài đặc tính khác 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 có 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ền
• 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ộ giao động trong
• Chức năng bảo mật mã chương trình
• Có thể hoạt động với nhiều dạng Oscillator khác nhau
1.3.2 Sơ đồ chân vi điều khiển PIC 16F877A
Hình 1.4 Sơ đồ chân của PIC 16F877A
Chức năng các chân tín hiệu :
• Chân 1: MCLR là chân clear của mạch này Nó sẽ khởi động lại vi điều khiển và được kích hoạt bởi mức logic thấp, có nghĩa là chân này phải được cấp liên tục một điện áp 5V và nếu cấp điện áp 0V thì PIC16F877A sẽ bị đặt lại
• Một nút nhấn và một điện trở được kết nối đến chân này Chân MCLR này luôn được cấp điện áp 5V Khi muốn khởi động lại mạch Bạn chỉ cần nhấn vào nút nhấn thì chân MCLR sẽ được đưa về 0 và mạch được đặt lại
• Chân 2 RA0/AN0: PORT A có 6 chân, từ chân số 2 đến chân số 7 Tất cả đều là các chân xuất, nhập dữ liệu hai chiều Chân số 2 là chân đầu tiên của PORT A Chân này có thể được sử dụng như một chân tương tự (analog) chân AN0 Nó được tích hợp bộ chuyển đổi analog sang digital
• Chân 3 RA1/AN1: Đầu vào tín hiệu analog 1
• Chân 4 RA2/AN2/Vref-: Có thể hoạt động như đầu vào analog thứ 2 hoặc chân điện áp tham chiếu âm
• Chân 5 RA3/AN3/Vref+: Có thể hoạt động như đầu vào analog thứ 3 hoặc chân điện áp tham chiếu dương
• Chân 6 RA0/T0CKI: Với timer 0, chân này hoạt động được như một đầu vào xung clock và đầu ra open drain
• Chân 7 RA5/SS/AN4: Có thể hoạt động như một đầu vào analog thứ 4 Có cổng nối tiếp đồng bộ và là chân SS cho cổng này
• Chân 8 RE0/RD/AN5: PORT E bắt đầu từ chân số 8 đến chân số 10 và là cổng I/O hai chiều Nó còn là cổng analog thứ 5 hoặc là chân RD (tích cực mức logic thấp) cho cổng slave giao tiếp song song
• Chân 9 RE1/WR/AN6: Là đầu vào analog thứ 6 và là chân WR (tích cực mức logic thấp) cho cổng slave giao tiếp song song
• Chân 10 RE2/CS/A7: Là đầu vào analog 7 và là chân CS cho cổng slave song song
• Chân 11 và 32 VDD: Đây là hai chân cấp nguồn 5V
• Chân 12 và 31 VSS: Các chân tham chiếu nối đất cho I/O và các chân logic Chúng nên được nối với 0V hoặc mắc GND
• Chân 13 OSC1/CLKIN: Là đầu vào bộ dao động hoặc chân đầu vào xung nhịp bên ngoài
• Chân 14 OSC2/CLKOUT: Đây là chân đầu ra của bộ dao động Một bộ dao động thạch anh được nối vào giữa hai chân 13 và 14 để cấp xung nhịp bên ngoài cho bộ vi điều khiển ẳ tần số của OSC1 được OSC2 xuất ra trong chế độ RC Điều này xác định tốc độ chu kỳ xử lý lệnh
• Chân 15 RC0/T1OCO/T1CKI: PORT C có 8 chân Là cổng I/O hai chiều Trong số đó, chân 15 là chân đầu tiên Nó có thể là đầu vào xung nhịp của bộ định thời 1 hoặc đầu ra bộ dao động của bộ định thời 2
• Chân 16 RC11/T1OSI/CCP2: Là đầu vào dao động của bộ định thời 1 hoặc đầu vào capture 2 / đầu ra so sánh 2 / đầu ra PWM 2
• Chân 17 RC2/CCP1: Đầu vào capture 1/ đầu ra so sánh 1/ đầu ra PWM1
• Chân 18 RC3/SCK/SCL: Đầu ra của chế độ SPI hoặc I2C và có thể là I/O cho bộ dao động nối tiếp đồng bộ
• Chân 23 RC4/SDI/SDA: Chân dữ liệu trong chế độ SPI hoặc là chân xuất nhập dữ liệu chế độ I2C
• Chân 24 RC5/SDO: Là chân xuất dữ liệu chế độ SPI
• Chân 25 RC6/TX/CK: Có thể là chân xung clock đồng bộ hoặc chân truyền không đồng bộ UART
• Chân 26 RC7/RX/DT: Là chân dữ liệu đồng bộ hoặc chân nhận tín hiệu UART
• Các chân 19, 20, 21, 22, 27, 28, 29, 30: Tất cả các chân này đều thuộc PORT D, đây là một cổng I/O hai chiều Khi bus vi xử lý được kết nối, nó có thể hoạt động ncho cổng slave giao tiếp dữ liệu song song
• Chân 33-40 PORT B: Hai chân này đều thuộc PORTB Trong đó RB0 có thể được sử dụng làm chân ngắt ngoài và RB6 và RB7 có thể được sử dụng làm chân debugger
Lưu ý chân RA4/TOCKI vừa là chân số 4 của Port A và vừa là ngõ vào từ bên ngoài cho bộ đếm Việc lựa chọn một trong hai chức năng này được thực hiện qua việcthay đổi giá trị cho các thanh ghi chuyên dụng Khi ta chọn một trong hai chức năng thì chức năng kia sẽ không hoặt động được
Tất cả các chân RARD thuộc cổng port Aport D đều có thể được dùng như hanh ghi TRIS bằng 1 thì bit tương ứng với vị trí đó trong port lúc này sẽ là ngõ nhập và ngược lại Mỗi port có thanh ghi TRIS cho riêng nó Port A ứng với thanh ghi TRISA nằm trong bank 0, port B ứng với thanh ghi TRISB nằm trong bank 1, Port C ứng với thanh ghi TRISC nằm trong bank 2 Đối với PIC16F877A PortA có 6 chân, PortB và PortC và PortD có 8 chân
1.3.3 Tập lệnh của vi điều khiển PIC 16F877A
PIC là vi điều khiển có tập lệnh rút gọn RISC (Reduced Instruction Set Computer), bao gồm 35 lệnh và có thể được phân ra thành 3 nhóm cơ bản:
Nhóm lệnh thao tác trên bit
Nhóm lệnh thao tác trên byte
• Đối với dòng vi điều khiển PIC16Fxxx, mỗi lệnh được mã hóa thành 14 bit word, bao gồm các bit opcode (dùng để xác định lệnh nào được mã hóa) và các bit mô tả một hay vài tham số của lệnh
• Đối với nhóm lệnh thao tác trên byte, ta có 2 tham số f (xác định địa chỉ byte cần thao tác) và d (xác định nơi chứa kết quả thực thi lệnh) Nếu d = 0, kết quả sẽ được đưa vào thanh ghi W Nếu d = 1, kết quả được đưa vào thanh ghi được mô tả bởi tham số f
• Đối với nhóm lệnh thao tác trên bit,ta có hai tham số b (xác định bit cần thao tác) và f (xác định địa chỉ byte dữ liệu cầnthao tác) Đối với nhóm lệnh điều khiển chỉ có một tham số duy nhất là k (k có thể là 8 bit trong trường hợp các lệnh bình thường hay 11 bit trong trường hợp là lệnh CALL và lệnh GOTO) dùng để mô tả đối tượng tác động của vi điều khiển (một label, một hằng số nào đó)
Cấu tạo thành phần của bộ kit
Bộ kit thí nghiệm thực hành vi điều khiển bao gồm 1 main chính là các khối chức năng đưa vào đầu vào và đầu ra của vi điều khiển, 2 mạch vi xử lí độc lập tách rời gồm : MCU AT89S52 và MCU PIC16F877A.
Thiết kế và tính toán linh kiện sử dụng
Hình 2.1 Sơ đồ nguyên lý của MCU AT89S52
-Cấu tạo gồm : Vi điều khiển AT89S52, khối tạo dao động, led báo nguồn, các jump cắm để kết nối đầu ra vào cũng như nạp code cho AT89S52, nút ấn reset và điện trở thanh
2) Thiết kế tính toán a) CPU AT89S52
• Họ vi điều khiển 8 bit
• Tần số hoạt động :0 - 24 Mhz
• Bộ nhớ : 8 Kb Flash, 256 Bytes SRAM
• Kiểu chân : PDIP40 b) Khối tạo dao động
- Dựa vào dải tần số của thông số kĩ thuật ta chon thạch anh là 12Mhz Lý do đằng sau một số lẻ như vậy là tốc độ baud đối với truyền thông nối tiếp của 8051 Tần số XTAL = 11,0592MHz cho phép hệ thống 8051 truyền thông với PC mà không có lỗi
- Tụ ổn định dao động cho thạch anh Cx3, Cx4 là 33pF c) Các linh kiện khác
- Chọn nguồn cấp cho CPU là 5V, led báo nguồn 3,3v và cần 1 điện trở 1k để hạ dòng cho led
- Điện trở 10k treo GND chân Reset
- Điện trở thanh 10k treo Vcc vào Port 0 do hở colector
Hình 2.2 Sơ đồ khối của MCU PIC16F877A
-Cấu tạo gồm : Vi điều khiển PIC16F877A, khối tạo dao động, led báo nguồn, các jump cắm để kết nối đầu ra vào cũng như nạp code cho PIC16F877A, nút ấn reset
2) Thiết kế tính toán a) CPU PIC16F877A
• Nhiệt độ hoạt động từ -40° đến 85°
• Tần số hoạt động 20MHz
• Loại bộ nhớ chương trình: FLASH
• Dung lượng bộ nhớ chương trình 14KB
• Kiểu chân : PDIP40 b) Khối tạo dao động
- Dựa vào dải tần số của thông số kĩ thuật ta chon thạch anh là 20Mhz
- Tụ ổn định dao động cho thạch anh Cx5, Cx6 là 33pF c) Các linh kiện khác
- Chọn nguồn cấp cho CPU là 5V, led báo nguồn 3,3V và cần một điện trở 1k để hạ dòng cho led
- Điện trở 10k treo VCC chân Reset
- 1 điện trở 10k treo VCC vào RA4 do hở colector
-Cấu tạo : Khối led đơn gồm 16 led đơn 3mm hoặc 5mm
-Nguyên lý : Các led đơn được nối Anot chung sử dụng tín hiệu mức thấp( mức 0) Để điều khiển được kết nối bằng jump cắm
2) Tính toán chọn linh kiện
Thông số chung LED đơn 5mm: Điện áp hoạt động ở mức: 1,8V - 3V;
Loại LED: LED đục, LED siêu sáng;
-Với điện áp được sử dụng là 5V thì giá trị điện trở R= (5ưU 𝐿𝐸𝐷 )
Chúng ta sẽ cần điện trở đáp ứng hoặc vượt mức công suất tiêu tán Công suất của điện trở có đơn vị là W Công thức tính là P = I * V
Như vậy với điện trở có I = 0,01A và V = 2,8 V áp vào công thức trên ta có
P = 0,01 x 2,8 = 0,028 W (28mW) là công suất tiêu tán của điện trở
Thường thì giá trị phổ biến hay gặp ở điện trở là 1
Hình 2.4 Sơ đồ khối nguyên lý khối led 7 thanh
-Cấu tạo : Gồm 1 led 7 thanh 4 số 30x14 có anot chung, 2 led 7 thanh độc lập nối anot chung, 4 transistor PNP A1015 và điện trở hạ dòng điều khiển transistor
-Nguyên lý : Led 7 thanh 4 số được điều khiển mức thấp (mức 0) bằng phương pháp quét led nhờ 4 transistor 2 led 7 thanh độc lập điều khiển mức thấp được kết nối với MCU bằng jump cắm
2) Tính toán chọn linh kiện
Hình 2.5 Sơ đồ chân khối led 7 thanh
Thông số kĩ thuật led 7 thanh:
• Màu hiển thị: Màu đỏ
• Dòng tối đa chạy qua mỗi LED là 25mA
• Dòng chạy bình thường: 10mA
Với điện áp được sử dụng là 5V thì giá trị điện trở R= (5ưU 𝐿𝐸𝐷 )
• Hệ số khuếch đại dòng một chiều (hfe) - 70 đến 400
• Tần số chuyển tiếp: - 80 MHz
• Khoảng nhiệt độ hoạt động và bảo quản: -55℃ đến +125℃
Hình 2.6 Sơ đồ nguyên lý khối led LCD
-Cấu tạo : Gồm 1 led LCD 20x4A , điện trở và 1 biến trở
-Nguyên lý : Led LCD được cấp nguồn và điều chỉnh độ sáng bằng 1 biến trở nối chân VSS
2) Tính toán chọn linh kiện
LCD 20x4 là loại màn hình tinh thể lỏng nhỏ dùng để hiển thị chữ hoặc số trong bảng mã ASCII Mỗi ô của Text LCD bao gồm các chấm tinh thể lỏng, các chấm này kết hợp với nhau theo trình tự “ẩn” hoặc “hiện” sẽ tạo nên các kí tự cần hiển thị và mỗi ô chỉ hiển thị được một kí tự duy nhất
LCD 20x4 nghĩa là loại LCD có 4 dòng và mỗi dòng chỉ hiển thị được 20 kí tự Đây là loại màn hình được sử dụng rất phổ biến trong các loại mạch điện
Thông số kĩ thuật LCD:
• Màu sắc: xanh lá hoặc xanh dương
• Ngoài ra sử dụng thêm 1 điện trở 220 ôm treo dương nguồn hạ dòng cho LCD và 1 biến trở 10k chỉnh độ sáng led LCD
Hình 2.7 Sơ đồ nguyên lý khối led matrix
-Cấu tạo : Gồm 1 led matrix 8x8 loại A chung, IC ULN2803 và điện trở bảo vệ led
-Nguyên lý : Led matrix được điều khiển bằng phương pháp quét led các hàng và các cột với mức tín hiệu mức cao (mức 1) ULN2803 đệm dòng cho led matrix
2) Tính toán chọn linh kiện
- Led matrix 8x8 đơn giản chỉ là 64 con led được sắp xếp với nhau theo dạng ma trận, tạo thành 8 hàng và 8 cột
• Phát sáng : Đỏ, trắng, xanh
Hình 2.8 Sơ đồ cấu tạo chân khối led matri 8x8
Với điện áp được sử dụng là 5V thì giá trị điện trở R= (5ưU 𝐿𝐸𝐷 )
Thông số kĩ thuật ULN2803:
• Điện áp ra max: 50V (Vce)
• Điện áo vào max: 30V (Vin)
• Dòng điện đầu ra liên tục: Ic = 500mA
• Dòng điện đầu vào liên tục: IIN = 25mA
• Công suất tiêu tán trên mỗi cặp darlington: 1W
Hình 2.9 Sơ đồ chân ULN2803
Việc sử dụng ULN2803 là để đệm dòng vào thay thế cho 8 transistor khuếch đại dòng điện giúp giảm linh kiện có trên mạch và đi dây PCD bớt phức tạp
Hình 2.10 Sơ đồ nguyên lý khối động cơ bước
-Cấu tạo và nguyên lý : Gồm 1 IC ULN2803 được điều khiển mức tích cực 1 qua ULN2803 để điều khiển các cuộn dây động cơ bước
2) Tính toán chọn linh kiện
Thông số kĩ thuật ULN2803:
• Điện áo vào max: 30V (Vin)
• Dòng điện đầu ra liên tục: Ic = 500mA
• Dòng điện đầu vào liên tục: IIN = 25mA
• Công suất tiêu tán trên mỗi cặp darlington: 1W
Thông số động cơ 28BYJ- 48:
• Điện áp hoạt động: 5V và 12V
• Kích thước: Đường kính 28mm, chiều cao 19mm, chiều dài trục 7.5mm
• Số đầu vào điều khiển step: 4
• Cường độ điện môi: 600VAC/1mA/1s
• Tần số khi tải kéo: > 600Hz
• Tần số không tải: > 1000Hz
• Mô-men xoắn: > 34.3mN.m (120Hz)
• Tiếng ồn : LED 8 Khoảng thời gian giữa mỗi lần sáng thêm 1 LED là 500ms xuất ra PORD D (RD0 – RD7)
Xây dựng lưu đồ thuật toán và chương trình
Khởi tạo hệ thống i, out out out=0xff i=0 i1; //dich phai 1 don vi
Bài toán với led 7 thanh
3.2.1 Bài toán và sơ đồ kết nối
Hiển thị LED 7 thanh từ 0-9 với chu kì hiển thì mỗi số là 500ms và lặp lại.Biết LED
3.3.2 Xây dựng lưu đồ thuật toán và chương trình
Xuất bảng mã ra PORT
* Du an :Lap trinh hien thi led 7 thanh tu 0 - 9 ,main.c
#use delay(crystal M) char maled[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//bang ma 0-9 unsigned int i; void main()
{ set_tris_c(0x00); //khai bao dau ra while(true) //vong lap vo han
{ output_c(maled[i]); //xuat bang ma ra port c delay_ms(500);
Bài toán với LCD
3.3.1 Bài toán và sơ đồ kết nối
Cho một màn hình LCD 20X4 Viết chương trình hiển thi “Hello World” tại hàng 1
3.3.2 Xây dựng lưu đồ thuật toán và chương trình
Khởi tạo hệ thống Khởi tạo LCD
Di chuyển con trỏ LCD tới hàng 1 cột 3
* Du an :Lap trinh hien thi “Hello World” ,main.c
****************************************************************** // Dinh nghia chan ket noi LCD
#define LCD_ENABLE_PIN PIN_C2
#define LCD_RS_PIN PIN_C0
#define LCD_RW_PIN PIN_C1
{ lcd_init(); //khoi tao lcd lcd_gotoxy(3,1); //di chuyen toi hang 3 cot 1 lcd_putc(”Hello World”); //in noi dung ra LCD while (true)
Bài toán với led matrix
3.4.1 Bài toán và sơ đồ kết nối
Cho 1 LED matrix 8x8 Hãy lập trình hiển thị chữ A trên led matrix
3.4.2 Xây dựng lưu đồ thuật toán và chương trình
Khởi tạo hệ thống Bien i,maled,maquet
Xuất mã led ra port C
Xuất mã quét ra port D i = i+1
* Du an :Lap trinh hien thi chữ “A” tren led matrix ,main.c
#use delay(crystal M) unsigned char code maled[8]={0x18,0x3C,0x66,0x66,0x7E,0x7E,0x66,0x66}; unsigned char code maquet[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; void delay(unsigned int t) //ham delay
{ output_d (0xFF); //tat toan bo LED output_c (maled[i]); //xuat ma led dong i delay(1); //delay de mat kip nhin }
Sơ đồ kết nối
3.1.2 Xây dựng lưu đồ thuật toán và chương trình
Khởi tạo hệ thống i, out out out=0xff i=0 i1; //dich phai 1 don vi
3.2 Bài toán với led 7 thanh
3.2.1 Bài toán và sơ đồ kết nối
Hiển thị LED 7 thanh từ 0-9 với chu kì hiển thì mỗi số là 500ms và lặp lại.Biết LED
3.3.2 Xây dựng lưu đồ thuật toán và chương trình
Xuất bảng mã ra PORT
* Du an :Lap trinh hien thi led 7 thanh tu 0 - 9 ,main.c
#use delay(crystal M) char maled[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//bang ma 0-9 unsigned int i; void main()
{ set_tris_c(0x00); //khai bao dau ra while(true) //vong lap vo han
{ output_c(maled[i]); //xuat bang ma ra port c delay_ms(500);
3.3.1 Bài toán và sơ đồ kết nối
Cho một màn hình LCD 20X4 Viết chương trình hiển thi “Hello World” tại hàng 1
3.3.2 Xây dựng lưu đồ thuật toán và chương trình
Khởi tạo hệ thống Khởi tạo LCD
Di chuyển con trỏ LCD tới hàng 1 cột 3
* Du an :Lap trinh hien thi “Hello World” ,main.c
****************************************************************** // Dinh nghia chan ket noi LCD
#define LCD_ENABLE_PIN PIN_C2
#define LCD_RS_PIN PIN_C0
#define LCD_RW_PIN PIN_C1
{ lcd_init(); //khoi tao lcd lcd_gotoxy(3,1); //di chuyen toi hang 3 cot 1 lcd_putc(”Hello World”); //in noi dung ra LCD while (true)
3.4 Bài toán với led matrix
3.4.1 Bài toán và sơ đồ kết nối
Cho 1 LED matrix 8x8 Hãy lập trình hiển thị chữ A trên led matrix
3.4.2 Xây dựng lưu đồ thuật toán và chương trình
Khởi tạo hệ thống Bien i,maled,maquet
Xuất mã led ra port C
Xuất mã quét ra port D i = i+1
* Du an :Lap trinh hien thi chữ “A” tren led matrix ,main.c
#use delay(crystal M) unsigned char code maled[8]={0x18,0x3C,0x66,0x66,0x7E,0x7E,0x66,0x66}; unsigned char code maquet[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; void delay(unsigned int t) //ham delay
{ output_d (0xFF); //tat toan bo LED output_c (maled[i]); //xuat ma led dong i delay(1); //delay de mat kip nhin }
3.5 Bài toán với nút nhấn
3.5.1 Bài toán và sơ đồ kết nối
Cho 2 nút nhấn đơn và 1 Led đơn Viết chương trình khi ấn nút ON led đơn sáng, khi ấn OFF led đơn tắt
3.5.2 Lưu đồ thuật toán và chương trình
* Du an :Lap trinh bat tat den led bang nut nhan ,main.c
#define OFF input(PIN_B1) void main ()
{ set_tris_b(0x02); //khai bao dau vao set_tris_d(0x00); //khai bao dau ra while(true) //vong lap vo han
{ while(ON==0); delay_ms(100); //chong dung phim output_low(PIN_D0); //bat led tai pin D0
{ while(OFF==0); delay_ms(100); output_high(PIN_D0); //tat led tai pin D0
3.6 Bài toán với động cơ bước
3.6.1 Bài toán và sơ đồ kết nối
Cho động cơ bước kết nối như hình vẽ Viết chương trình điều khiển động cơ bước chạy với 3 cấp độ 5s đầu chạy chậm (15ms), 5s sau chạy trung bình (10ms), sau đó chạy nhanh (5ms)
3.6.2 Xây dựng lưu đồ thuật toán và chương trình
Khơi tạo mã động cơ bước, biến thời gian t
* Du an :Lap trinh dieu khien dong co buoc ,main.c
#use delay(crystal M) char bangma[]={0b00001001, 0b00000011, 0b00000110, 0b00001100}; int8 t; void chaycham() // ham chay cham
{ int i; for(i=0;i