Trong lĩnh vực sản xuất cũng như trong đời sống hằng ngày, các đại lượng vật lý: nhiệt độ, độ ẩm, áp suất,… tạo ra những ảnh hưởng lớn cho nhân loại. Việc đo và tính toán các đại lượng vật lý này luôn có một vai trò quan trọng vì từ đó con người có thể biết được các thông số mình đang làm việc và từ đó sẽ khống chế và điều khiển chúng cho phù hợp với mục đích của bản thân
Trang 1MỤC LỤC
MỤC LỤC 1
LỜI MỞ ĐẦU 3
CHƯƠNG I – CƠ SỞ LÝ THUYẾT CỦA ỨNG DỤNG 4
1.1 Tổng quan về cấu trúc phần cứng KIT easyAVR V7 4
1.1.1 Nguồn điện kép 4
1.1.2 Vi điều khiển được hỗ trợ 4
1.1.3 Xung clock 5
1.1.4 Lập trình on-board 5
1.1.5 Phần mềm lập trình 5
1.1.6 UART qua RS-232 5
1.1.7 USB UART 5
1.1.8 Đầu nối máy chủ mikroBUS 6
1.1.9 Nhóm đầu vào / đầu ra 6
1.1.10 LCD 16x2 6
1.1.11 GLCD 128X64 7
1.1.12 Bảng điều khiển cảm ứng 7
1.1.13 Hệ thống 4 LED 7 thanh 7
1.1.14 DS1820 - Cảm biến nhiệt độ số 8
1.1.15 LM35 - Cảm biến nhiệt độ tương tự 8
1.1.16 Đầu vào ADC 8
1.1.17 I2C EEPROM 9
1.1.18 Piezo Buzzer 9
1.2 Tổng quan về khối truyền thông UART 9
1.2.1 Các thông số cơ bản trong truyền nhận UART 10
1.2.2 Thanh ghi 10
1.2.3 Sử dụng UART 12
1.3 Các khối ngoại vi 12
1.3.1 IC DS18B20 12
1.3.1.1 Chuẩn one – wire 13
1.3.1.2 Thanh ghi dữ liệu 13
1.3.1.3 Bộ nhớ và thanh ghi 14
Trang 21.3.1.4 Trao đổi dữ liệu giữa vi điều khiển và DS18B20 15
1.3.1.5 Cách đọc giá trị nhiệt độ 16
1.3.2 LCD (Liquid Crystal Display) 17
1.3.2.1 Sơ đồ chân 18
1.3.2.2 Thanh ghi và tổ chức bộ nhớ 19
1.3.2.3 DDRAM 19
1.3.2.4 CGROM 20
1.3.2.5 CGRAM 20
1.3.2.6 Các chân điều khiển LCD 20
1.3.2.7 Tập lệnh của LCD 21
1.3.2.8 Giao tiếp 8 bit và 4 bit 22
1.3.3 Phím bấm (Button) 22
CHƯƠNG II – THIẾT KẾ ỨNG DỤNG VÀ GIẢI THUẬT PHẦN MỀM 23
2.1 Nguyên lý thiết kế ứng dụng và thiết kế phần cứng 23
2.1.1 Khối xử lí trung tâm 23
2.1.2 Khối phím bấm 24
2.1.3 Khối hiển thị 24
2.1.4 Khối cảm biến nhiệt độ 25
2.2 Thuật toán thực hiện 25
CHƯƠNG III – KẾT QUẢ ỨNG DỤNG 27
3.1 Kết quả mô phỏng 27
3.2 Ứng dụng trong thực tế 29
3.3 Ưu nhược điểm của mạch thiết kế 30
3.3.1 Ưu điểm 30
3.3.2 Nhược điểm 30
KẾT LUẬN 31
TÀI LIỆU THAM KHẢO 32
Trang 3CHƯƠNG I – CƠ SỞ LÝ THUYẾT CỦA ỨNG DỤNG 1.1 Tổng quan về cấu trúc phần cứng KIT easyAVR V7
ATmega32-là-vi-điều-khiển-mặc-định-của-EasyAVR-V7.-Có-16 thao tácMIPS, 32K byte bộ nhớ chương trình Flash, 2K byte bộ nhớ SRAM và 1K byte của bộnhớ EEPROM.-Nó-có-40-chân-với-32-chân-I/O,-bộ-chuyển đổi Analog-to-Digital 10-bit với tối đa 8 kênh (ADC), hai bộ xử lý 8-bit và một bộ đếm 16-bit, bốn kênh PWM,lập trình-nối-tiếp-USART,-Master/Slave-SPI-và-giao diện I2C-hai-dây,-bộ-định vị 8MHz RC nội bộ-và-bộ-dao-động-RTC-32-KHz.-Nó-cũng-có-giao-diện-JTAG-cho lậptrình và gỡ lỗi
1.1.1 Nguồn điện kép
KIT có sẵn nguồn điện chuyển đổi tạo ra điện áp ổn định và mức dòng điện cầnđể-cấp-nguồn-cho-từng-phần-của-bảng-mạch.-Bộ-phận-cung-cấp-điện gồm hai bộđiều chỉnh công suất: ST1S10 tạo ra VCC-5V và MC33269DT3.3 tạo ra VCC-3.3V
Trang 41.1.2 Vi điều khiển được hỗ trợ
bộ-vi-điều-khiển-khác nhau từ AVR
Ổ-cắm-vi-điều-khiển:-Bảng-có-7-ổ-DIP.-Bo-mạch-có-thể-lập-trình-khoảng-65-1.1.3 Xung clock
Bộ vi điều khiển AVR có thể sử dụng xung clock bên trong hoặc dùng dao độngthạch-anh-bên-ngoài.-KIT-EasyAVR-V7-chứa-một-tinh-thể-thạch-anh cho tất cả ổcắm vi điều khiển.-Giá-trị-của-thạch-anh-phụ-thuộc-vào-tần-số-xung clock tối đa chophép và ứng dụng của người dùng
1.1.4 Lập trình on-board
MikroProg là một lập trình USB 2.0 nhanh cho phép mikroProg hỗ trợ khoảng65-bộ-điều-khiển-AVR-trong-một-lập-trình-đơn-lẻ.-Để-bắt-đầu-sử-dụng mikroProg vàlập trình vi điều khiển chỉ cần làm theo 2 bước:
1.1.6 UART qua RS-232
- UART (thu/phát không đồng bộ) là một trong những cách phổ biến nhất đểtrao đổi dữ-liệu-giữa-MCU-và-các-thành-phần-ngoại vi
- Giao-tiếp-nối-tiếp-RS-232-được-thực-hiện-thông-qua-đầu-nối SUB-D 9-pin
và môđun UART của vi điều khiển
Trang 51.1.7 USB UART
Giao-tiếp-USB-UART-được-thực-hiện-thông-qua-bộ-điều-khiển-FT232RL,đầu nối USB (CN4) và mô-đun UART-vi-điều-khiển.-Kết-nối-này được thực hiệnbằng cách sử dụng DIP switch SW10
Hình 1.2 Hệ thống sơ đồ nối chân USB UART
1.1.8 Đầu nối máy chủ mikroBUS
Mỗi kết-nối-máy-chủ-mikroBUS-bao-gồm-hai-đầu-1x8-có-chứa-các-chân cónhiều-khả-năng-được-sử-dụng-trong-bảng-phụ-kiện.-Có ba nhóm chân giao tiếp : SPI,UART-và-giao-tiếp-I2C.-Ngoài-ra-còn-có-một chân cho PWM, Interrup, đầu vàoAnalog, Reset và Chip Select
1.1.9 Nhóm đầu vào / đầu ra
Các-đầu-PORT,-các-nút-PORT-và-PORT-LED-đều-nằm kế bên nhau và đượcnhóm-lại-với-nhau.-Có-thêm-các-đầu-PORT-ở phía bên trái của bảng, vì vậy ngườidùng-có-thể-truy-cập-vào-bất-kỳ-chân-nào từ cả hai mặt của bảng mạch
Bộ chuyển-mạch-DIP-của-Tri-State-được-sử-dụng để kích hoạt điện trở kéolên hoặc-kéo-xuống-4K7-lên-bất-kỳ-cổng-nào.-Mỗi thiết bị chuyển mạch có ba trạngthái:
- Vị-trí-giữa-vô-hiệu-hóa-chức-năng kéo lên và kéo xuống từ chân PORT
- Vị-trí-trên-kết-nối-điện-trở trong trạng thái kéo lên đến chân chọn
Trang 6- Vị-trí-dưới-kết-nối-điện-trở-trong-kéo-xuống đến pin PORT đã chọn.
1.1.12 Bảng điều khiển cảm ứng
KIT-EasyAVR-V7-được-trang-bị-điều-khiển-cảm-ứng-và-đầu nối cho bảngcảm ứng điện trở 4 dây Bảng điều khiển cảm ứng được bật bằng SW8.5, SW8.6,SW8.7 và SW8.8.-Chúng-kết-nối-các-dòng-READ-X-và-READ-Y-của-bảng-điềukhiển cảm ứng với đầu vào analog PA0 và PA1, DRIVEA và DRIVEB với đầu ra sốPA2 và PA3 trên ổ cắm-vi-điều-khiển.-Đảm-bảo-ngắt-kết-nối-các-thiết-bị-ngoại-vikhác, đèn LED và các điện-trở-kéo-lên-hoặc-kéo-xuống-để-không-can-thiệp-vào-tínhiệu/dữ liệu
Trang 71.1.14 DS1820 - Cảm biến nhiệt độ số
DS1820-là-một-cảm-biến-nhiệt-độ-số-sử-dụng-giao-diện 1 dây để hoạt động
Nó có-khả-năng-đo-nhiệt-độ-trong-khoảng-từ 55-đến 128 ° C và độ chính xác ±0.5°C cho nhiệt-độ-trong-khoảng-từ 10-đến-85°C Nó đòi-hỏi-nguồn điện 3V đến5.5V để hoạt động ổn định
Hình 1.5 Sơ đồ chân nối IC DS1820
Trang 8EasyAVR V7 cung cấp một ổ cắm riêng (TS1) cho DS1820 Dây kết nối với viđiều-khiển-được-kết-nối-thông-qua-chân-J18.-EasyAVR-V7-cho phép bạn thiết lậptruyền-thông-1-wire-giữa-DS1820-và-vi-điều-khiển-thông-qua-chân vi xử lí PB4 hoặcPA7.
1.1.15 LM35 - Cảm biến nhiệt độ tương tự
EasyAVR-V7-cho-phép-bạn-lấy-các-phép-đo-tương-tự-từ cảm biến LM35trong khoảng-nhiệt-độ-giới-hạn-từ-+-2ºC-đến-+ 150ºC Bảng mạch cung cấp một ổcắm riêng (TS2)-cho-cảm-biến-LM35-trong-bao-bì-nhựa-TO-92 EasyAVR V7 chophép bạn có được-các-tín-hiệu-tương-tự-từ-bộ-cảm-biến-LM35 sử dụng chân PA7hoặc PB4 Việc chọn một-trong-hai-đường-này được thực hiện bằng cách sử dụngchân J19
1.1.16 Đầu vào ADC
EasyAVR V7-cung-cấp-một-giao-diện-dưới-dạng hai chiết áp để mô phỏng cácđiện áp-đầu-vào-tương-tự-có-thể-được-chuyển-tới-bất-kỳ-một trong 12 chân đầu vàotương tự-được-hỗ-trợ.-Để-kết-nối-đầu-ra của chiết áp P1 với đầu vào vi điều khiểntương-tự-PB0,-PB2,-PD6,-PB4,-PB5-hoặc-PC3,-bạn phải đặt chân J3 ở vị trí mongmuốn.-Nếu-bạn-muốn-kết-nối-chiết-áp-P3-với-bất-kỳ-đầu-vào-vi điều khiển tương tựPB1, PB3, PD7, PC4, PA5 hoặc PA6, đặt chân J4 ở vị trí mong muốn Bằng cách dichuyển-núm-chiết-áp,-bạn-có-thể-tạo-ra-các-điện-áp-từ-khoảng GND đến VCC-BRD
1.1.17 I2C EEPROM
EasyAVR V7 hỗ trợ EEPROM nối tiếp sử dụng giao tiếp truyền thông I2C và
có bộ-nhớ-1024-byte.-I2C-là-một-kênh-đơn-nối-tiếp-đa-chủ-được sử dụng để gắn cácthiết bị-ngoại-vi-tốc-độ-thấp-vào-máy-tính-hoặc-các-hệ-thống nhúng
1.1.18 Piezo Buzzer
EasyAVR-V7-đi-kèm-với-piezo-buzzer-có-thể-được-kết-nối với chân điềukhiển vi-điều-khiển-PB1-hoặc-PD4-được-xác định bởi vị trí của chân J21 Buzzerđược điều khiển bởi-bán-dẫn-Q8.-Vi-điều-khiển-có-thể-tạo-ra-âm-thanh-bằng cách tạo
ra tín hiệu PWM-(Pulse-Width-Modulated)- -một-tín-hiệu-sóng-vuông,-một chuỗi các
số không logic và các số nguyên
Trang 9Hình 1.6 Hệ thống âm báo
1.2 Tổng quan về khối truyền thông UART
UART-là-viết-tắt-của-Universal-Asynchronous-Receiver – Transmitter.Thường được-sử-dụng-trong-việc-truyền-dẫn-dữ-liệu-nối tiếp giữa máy tính và cácthiết bị ngoại vi Rất-nhiều-vi-điều-khiển-hiện-nay-đã được tích hợp UART Như cácbạn đã biết giao tiếp-SPI-và-I2C-có-1-dây-truyền-dữ-liệu-và-1-dây được sử dụng đểtruyền xung clock (SCL) để-đồng-bộ-trong-giao-tiếp.-Với-UART thì không có dâySCL, vấn đề được giải quyết-khi-mà-việc-truyền-UART-được-dùng-giữa-2 vi xử lývới nhau, đồng nghĩa với việc-mỗi-vi-xử-lý-có-thể-tự-tạo-ra-xung-clock-cho-chính-nó-sử-dụng
Hình 1.7 Sơ đồ nguyên lý UART
Ở trạng thái chờ mức điện thế ở mức 1 (high) Khi bắt đầu truyền START bit sẽchuyển-từ-1-xuống-0-để-báo-hiệu-là-quá-trình-truyền-dữ liệu sắp xảy ra Sau STARTbit-là-đến-các-bit-dữ-liệu-D0-D7-(Có-thể-ở-mức-High-or-Low tùy theo dữ liệu) Saukhi truyền-hết-dữ-liệu-thì-đến-Bit-Parity-để-bộ-nhận-kiểm tra tính đúng đắn của dữ
Trang 10liệu truyền.-Cuối-cùng-là-STOP-bit-là-1-báo-cho-thiết-bị-là các bit đã được gửi xong.Thiết bị-nhận-sẽ-tiến-hành-kiểm-tra-khung-truyền-để-đảm-báo-tính-đúng-đắn của dữliệu.
1.2.1 Các thông số cơ bản trong truyền nhận UART
- Baund-rate-(tốc-độ-baund):-Khoảng-thời-gian-dành-cho-1 bit được truyền.Phải được cài đặt giống nhau ở gửi và nhận
- Frame-(khung-truyền ): Khung truyền quy định về số bit trong mỗi lần truyền
- Start bit: là bit đầu tiên được truyền trong 1 Frame Báo hiệu cho thiết bị nhậncó-một-gói-dữ-liệu-sắp-đc-truyền-đến.-Bit-bắt-buộc
- Data:-dữ-liệu-cần-truyền.-Bit-có-trọng-số-nhỏ-nhất-LSB được truyền trướcsau đó đến bit MSB
- Parity bit : kiểm tra dữ liệu truyền có đúng không
- Stop-bit:-là-1-hoặc-các-bit-báo-cho-thiết-bị rằng các bit đã được gửi xong.Thiết bị nhận-sẽ-tiến-hành-kiểm-tra-khung-truyền-nhằm-đảm-bảo-tính đúng đắn của
dữ liệu
1.2.2 Thanh ghi
Cũng như các thiết bị khác trên AVR, tất cả hoạt động và trạng thái của moduleUSART-được-điều-khiển-và-quan-sát-thông-qua-các-thanh-ghi-trong-vùng nhớ I/O
Có 5 thanh ghi được thiết kế riêng cho hoạt động và điều khiển USART
UDR:-hay-thanh-ghi-dữ-liệu,-là-1-thanh-ghi-8-bit chứa giá trị nhận được vàphát đi của USART
UCSRA(-USART-control-and-Status-register-A)-là 1 trong 3 thanh ghi điềukhiển hoạt-động-của-module-USART
Trang 11UCSRB- -USART-control-and-Status-register B) đây là thanh ghi quan trọngđiều khiển USART.
UCSRC (USART control and Status register C): thanh ghi quy định khungtruyền và-chế-độ-truyền.-Thanh-ghi-này-cùng-địa-chỉ-với-thanh ghi UBRRH (thanhghi dùng để xác lập tốc độ baud ) Vì thế bit 7 ( bit URSEl) là bit chọn thanh ghi KhiURSEl =1 thanh-ghi-này-được-chip-AVR-hiểu-là-thanh ghi điều khiển UCSRC, nếubit URSEl =0 thì-thanh-ghi-UBRRH-sẽ-được-sử-dụng
Trang 12- Độ chính xác: ±0.5°C trong khoảng đo từ -10°C đến +85°C
1.3.1.1 Chuẩn one – wire
One - Wire là một hệ thống bus giao tiếp với thiết bị, có tốc độ tối đa 16Kbps.Truyền-tín-hiệu-và-nguồn-nuôi-qua-cùng-một-chân-tín-hiệu đơn one -wire cũngtương tự như I2C, nhưng với tốc độ truyền dữ liệu thấp và khoảng cách xa hơn ( Xanhất là 300m).-Nó-thường-được-sử-dụng-để-giao-tiếp-với-các-thiết-bị-nhỏ-giá rẻ nhưnhiệt kế kĩ thuật số và công cụ đo thời tiết Một mạng lưới của các thiết bị One -Wirevới một thiết-bị-điều-khiển-chính-được-gọi-là-một-MicroLAN
Một-tính-năng-đặc-biệt-là-khả-năng-chỉ-sử-dụng-hai-dây tín hiệu: data vàGND Để thực hiện điều này, các thiết bị one - wire bao gồm một tụ điện 800pF để trữđiện và cung-cấp-nguồn-trong-quá-trình-đường-data-đang-hoạt-động
Trang 13Hình 1.9 Sơ đồ khối IC DS18B20
1.3.1.2 Thanh ghi dữ liệu
Mỗi-DS18B20-đều-có-mã-định-danh-với-độ-lớn-64-bit-duy-nhất được lưu trong ROM
- 8 bit-thấp-nhất-của-ROM-chứa đựng mã quy ước của họ dòng đo nhiệt độ 1dây DS18B20 với mã là 28h
Trang 14các byte này
- Byte-8-chứa-đựng-mã-CRC-của-byte-0-đến-byte-7 của bộ nhớ nháp
Dữ liệu trong các thanh ghi EEPROM không mất đi khi ngắt nguồn cấp; khi cónguồn-cấp-lại-dữ-liệu-trong-các-thanh-ghi-này-sẻ-được-nạp-vào bộ nhớ nháp theo vịtrí byte-tương-ứng.-Dữ-liệu-này có thể nạp lại bằng lệnh từ EEPROM bằng lệnh E2[B8h]
Thanh ghi cấu hình:
Hình 1.10 Cấu tạo thanh ghi cấu hình Bảng 1.1 Cấu hình độ phân giải và thời gian chuyển dổi
Trang 151.3.1.4 Trao đổi dữ liệu giữa vi điều khiển và DS18B20
a) Khởi tạo
Quá-trình-khởi-tạo-bao-gồm-1-xung-reset-do vi điều khiển master gửi đến slaveDS18B20,-sao-đó-là-xung-presence-từ-DS18B20 gửi đến vi điều khiển, để chỉ ra sựhiện-diện-của-vi-điều-khiển-và-DS18B20 Quá trình hoạt động trao đổi dữ liệu có thểbắt đầu
b) Lệnh điều khiển ROM
Các lệnh này làm việc với 64 bits serial code ROM, lệnh này được phát ra sauquá-trình-khởi-tạo.-lệnh-cho-phép-vi-điều-khiển-biết có bao nhiêu thiết bị và thiết bịloại gì trên bus
c) Lệnh điều khiển DS18B20
Sau khi vi điều khiển định địa chỉ thiết bị cần giao tiếp thông qua các lệnhROM, vi-điều-khiển-sẽ-gửi-các-lệnh-điều khiển hoạt động của DS18B20 Những lệnhnày cho phép-vi-điều-khiển-ghi-và-đọc-dữ-liệu-từ-bộ nhớ Scratchpad của DS18B20,bắt đầu quá-trình-chuyển-đổi-nhiệt-độ-và-xác-định-chế-độ-cấp-nguồn
Các-lệnh-cơ-bản: SEARCH-ROM-(F0h):-Khi-hệ-thống-đươc cấp nguồn, thiết bị đóng vai tròmaster-phải-xác-định-mã-ROM-của-tất-cả-các-thiết bị slave được đấu trên cùng bus,việc làm-này-cho-phép thiết bị master xác định số lượng thiết bị salve và kiểu thiết bị
- READ ROM (33h): Lệnh này chỉ dùng khi trên bus có 1 cảm biến DS1820,nếu không-sẽ-xảy-ra-xung đột trên bus do tất cả các thiết bị tới cùng đáp ứng Nó chophép đọc-64-bit-mã-ROM-và-không-sử-dụng-quy-trình-Search Rom
- MATCH-ROM-(55h):-Lệnh-này-được-gửi-đi-cùng-với 64 bit ROM tiếp theo,cho phép bộ điều khiển bus chọn ra chỉ một cảm biến DS1820 cụ thể khi trên bus cónhiều-cảm-biến-DS1820-cùng-nối-vào
- SKIP ROM (CCh): Thiết bị master có thể sử dụng lệnh này để gửi đến tất cảcác-thiết-bị-slave-trên-bus-một-cách-đồng-thời mà không cần gửi mã ROM định danhcủa-thiết-bị.-Lệnh-READ-SCRATCHPAD-có thể theo sau lệnh SKIP ROM khi trênbus chỉ có một thiết bị slave Trường hợp trên bus có-nhiều-thiết-bị-tới-nếu-ta-sử dụng
Trang 162 lệnh-này-sẽ-xảy-ra-xung-đột-dữ-liệu
- ALARM SEARCH (ECh): Tiến trình của lệnh này giống hệt như lệnh SearchROM,-nhưng-cảm-biến-DS1820-chỉ-đáp-ứng-lệnh-này-khi xuất hiện điều kiện cảnhbáo trong-phép-đo-nhiệt độ cuối cùng
1.3.1.5 Cách đọc giá trị nhiệt độ
Bảng 1.2 Bảng chuyển đổi giá trị nhiệt độ sang hệ nhị phân
- Bên trong DS18B20 sẽ có bộ chuyển-đổi-giá-trị-nhiệt-độ-sang-giá-trị-số vàđược lưu trong các thanh ghi ở bộ nhớ scratchpad Độ phân giải nhiệt độ đo có thểđược cấu hình-ở-chế-độ-9-bits,-10-bits,-11-bits, 12 bits Ở chế độ mặc định thìDS18B20 hoạt động ở-độ-phân-giải-12 bits
- Để bắt đầu quá trình đọc nhiệt độ và chuyển đổi từ giá trị tương tự sang giá trị
số thì vi điều khiển gửi lệnh Convert-T-(44h),-sau-khi-chuyển-đổi-xong-thì-giá-trịnhiệt độ sẽ được lưu trong 2 thanh ghi nhiệt độ ở bộ nhớ scratchpad và IC trở về trạngthái nghỉ
- Nhiệt-độ-được-lưu-bên-trong-DS18B20-đưuọc-tính-ở nhiệt độ Celcius nếutính ở nhiệt độ Fahrenheit cần phải xây-dựng-thêm-bảng-chuyển-đổi-nhiệt độ Giá trịnhiệt độ lưu trong bộ nhớ gồm-2-bytes-16-bits.-Số-âm-sẽ-được-lưu-dưới-dạng-bù-2
- Bit cao nhất là bit dấu (S)-nếu-S=0-thì-giá-trị-nhiệt-độ-dương,-S=1-thì giá trịnhiệt độ âm
- Nếu cấu hình độ phân giải là 12 bits thì tất cả các bit đều được sử dụng Nếu
độ phân-giải-11-bits-thì-bit-0-không-được-sử dụng Tương tự nếu cấu hình là 10 bits