GIỚI THIỆU TỔNG QUAN
Khối điều khiển
Vi điều khiển AVR do hãng Atmel (Hoa Kỳ) sản xuất được giới thiệu lần đầu tiên năm 1996 AVR có rất nhiều dòng khác nhau bao gồm dòng Tiny ( như At tiny 13, At tiny 22 ) có kích thước bộ nhớ nhỏ, ít bộ phận ngoại vi, rồi đến dòng AVR ( chẳng hạn AT90S8535, AT90S8515 ) có kích thước bộ nhớ vào loại trung bình và mạnh hơn là dòng Mega ( như ATmega 16, Atmega 32, Atmega 128 ) với bộ nhớ có kích thước vài kbyte đến vài trăm Kb cùng với bộ nhớ ngoại vi đa dạng được tích hợp cả bộ LCD trên chip (dòng LCD AVR) Tốc độ của dòng Mega cũng cao hơn so với các dòng khác Sự khác nhau cơ bản giữa các dòng chính là cấu trúc ngoại vi, còn nhận thì vẫn như nhau
ATmega16 là một loại vi điều khiển có nhiều tính năng đặc biệt thích hợp cho việc giải quyết những bài toán điều khiển trên nền vi xử lý:
- Các loại vi điều khiển AVR rất phổ biến trên thị trường Việt Nam nên không khó trong việc thay thế và sửa chữa hệ thống lúc cân
- Giá thành của dòng vi điều khiển này khá phải chăng.
- Các phần mềm lập trình và mã nguồn mở có thể tìm kiếm khá dễ dàng trên mạng.
- Các thiết kế demo nhiều nên có nhiều gợi ý tốt cho người thiết kế hệ thống. ATmega16 là vi điều khiển 8 bit dựa trên kiến trúc RISC Với khả năng thực hiện mỗi lệnh trong vòng một chu kỳ xung clock, ATmega16 có thể đạt tốc độ 1MIPS trên mỗi Mhz (1 triệu lệnh/s/Mhz), các lệnh được xử lý nhanh hơn, tiêu thụ năng lượng thấp
Atmega16 là bộ vi điều khiển công suất thấp 40 chân được phát triển bằng công nghệ CMOS
CMOS là một công nghệ tiên tiến được sử dụng chủ yếu để phát triển các mạch tích hợp Nó có mức tiêu thụ điện năng thấp và khả năng chống nhiễu cao
Atmega16 là bộ điều khiển 8-bit dựa trên kiến trúc RISC (Reduced Instruction Set Computing) tiên tiến AVR AVR là dòng vi điều khiển được Atmel phát triển vào năm
Nó là một máy tính chip đơn đi kèm với CPU, ROM, RAM, EEPROM, bộ định thời, bộ đếm, ADC và bốn cổng 8 bit được gọi là PORTA, PORTB, PORTC, PORTD trong đó - mỗi cổng bao gồm 8 chân I / O
Atmega16 có các thanh ghi tích hợp được sử dụng để tạo kết nối giữa CPU và các thiết bị ngoại vi bên ngoài CPU không có kết nối trực tiếp với các thiết bị bên ngoài Nó có thể nhận đầu vào bằng cách đọc thanh ghi và đưa ra đầu ra bằng cách ghi thanh ghi Atmega16 đi kèm với hai bộ định thời 8 bit và một bộ định thời 16 bit Tất cả các bộ định thời này có thể được sử dụng làm bộ đếm khi chúng được tối ưu hóa để đếm tín hiệu bên ngoài
Hầu hết các thiết bị ngoại vi cần thiết để chạy các chức năng tự động đều được tích hợp trong thiết bị này như ADC (bộ chuyển đổi analog sang kỹ thuật số), bộ so sánh tương tự, USART, SPI, giúp tiết kiệm hơn so với bộ vi xử lý yêu cầu thiết bị ngoại vi bên ngoài thực hiện các chức năng khác nhau
Atmega16 đi kèm với 1KB RAM tĩnh là một bộ nhớ dễ bay hơi, tức là lưu trữ thông tin trong thời gian ngắn và phụ thuộc nhiều vào nguồn điện liên tục Trong khi đó 16KB bộ nhớ flash, còn được gọi là ROM, cũng được tích hợp trong thiết bị với bản chất không bay hơi và có thể lưu trữ thông tin trong thời gian dài và không bị mất bất kỳ thông tin nào khi nguồn điện bị ngắt
Atmega16 hoạt động trên tần số tối đa 16MHz, các lệnh được thực hiện trong một chu kỳ máy
Kiến trúc của Atmega16 dựa trên Kiến trúc Harvard và đi kèm với các bus và bộ nhớ riêng biệt Các lệnh được lưu trữ trong bộ nhớ chương trình
CPU giống như bộ não của vi điều khiển giúp thực hiện một số lệnh Nó có thể xử lý các ngắt, thực hiện các phép tính và điều khiển các thiết bị ngoại vi với sự trợ giúp của các thanh ghi Atmega16 đi kèm với hai bus gọi là bus hướng dẫn và bus dữ liệu CPU đọc lệnh trong bus hướng dẫn trong khi bus dữ liệu được sử dụng để đọc hoặc ghi dữ liệu tương ứng CPU chủ yếu bao gồm bộ đếm chương trình, các thanh ghi mục đích chung, stack pointer, thanh ghi lệnh và bộ giải mã lệnh
Chương trình điều khiển được lưu trữ trong ROM, còn được gọi là bộ nhớ flash lập trình không bay hơi Bộ nhớ flash có độ phân giải ít nhất 10.000 chu kỳ ghi / xóa Bộ nhớ flash chủ yếu được chia thành hai phần được gọi là phần flash ứng dụng và phần flash booth Chương trình của bộ điều khiển được lưu trữ trong phần flash ứng dụng Trong khi phần flash booth được tối ưu hóa để hoạt động trực tiếp khi bộ điều khiển được bật nguồn
SRAM (bộ nhớ truy cập ngẫu nhiên tĩnh) được sử dụng để lưu trữ thông tin tạm thời và đi kèm với các thanh ghi 8 bit, giống như một RAM máy tính thông thường được sử - dụng để cung cấp dữ liệu thông qua thời gian chạy
EEPROM (Bộ nhớ chỉ đọc có thể xóa bằng điện tử) là bộ nhớ không thay đổi được sử dụng như một bộ lưu trữ thời gian dài Nó không liên quan đến việc thực thi chương trình chính Nó được sử dụng để lưu trữ cấu hình của hệ thống và các thông số thiết bị tiếp tục hoạt động trong thiết lập lại bộ xử lý ứng dụng EEPROM đi kèm với chu kỳ ghi giới hạn lên đến 100.000 trong khi chu kỳ đọc là không giới hạn Trong khi sử dụng EEPROM, hãy viết các lệnh tối thiểu theo yêu cầu, để bạn có thể nhận được lợi ích từ bộ nhớ này trong thời gian dài hơn
Ngắt được sử dụng cho trường hợp khẩn cấp đặt chức năng chính ở trạng thái chờ và thực hiện các lệnh cần thiết tại thời điểm đó Khi ngắt được gọi và thực thi, mã sẽ chuyển trở lại chương trình chính
• Module I / O analog và kỹ thuật số
Module I / O kỹ thuật số được sử dụng để thiết lập giao tiếp kỹ thuật số giữa bộ điều khiển và các thiết bị bên ngoài Trong khi module I / O analog được sử dụng để truyền thông tin analog Bộ so sánh analog và ADC thuộc loại module I / O analog
• Bộ định thời / Bộ đếm
Mạch Kit cho VĐK học AVR
1.2.1 Giới thiệu mạch Kit AVR
AVR là một dòng VĐK 8 bit khá mạnh và thông dụng tại thị trường Việt Nam Với tốc độ độ xung nhịp tới 16Mhz, bộ nhớ chương trình tối đa tới 256 kB, và rất nhiều chức nặng ngoại vi tích hợp sẵn, VĐK họ AVR có thể đáp ứng tốt cho nhiều ứng dụng trong thực tế từ đơn giản đến phức tạp
Với bộ Kit này có thể thử nghiệm các ứng dụng cơ bản như:
• Điều khiến công ra số, với LED đơn và LED 7 thanh
• Đọc trạng thái logic đầu vào số, từ bàn phím và giác cắm mở rộng
• Đo điện áp tương tự, với biến trở vị chỉnh và bộ ADC 10-bit
• Điều khiển màn hình tinh thể lỏng, với màn hình LCD dạng text
• Giao tiếp với máy tính qua chuẩn UART – USB
• Thử nghiệm các ngắt ngoài, thử khả năng điều khiển chế độ rộng xuI8
Nhiều ứng dụng điều khiển các chức năng tích hợp sẵn trong VĐK như:
Vận hành các bộ định thời (Timer) và bộ đếm (Counter), đọc ghi EEPROM, lập trình các ngắt chương trình, thiết lập Watchdog,
Hình 1.2 Mạch Kit phát triển và các phụ kiện 1.2.2 Cấu trúc mạch Kit
- Khi không có mô-đun mở rộng, toàn bộ đèn LED chỉ thị 10 tất: 15mA
- Khi có LCD và mô-đun USB, các LED chỉ thị I/O bị vô hiệu hóa: 22mA.
- Khi có LCD và mô-đun USB, toàn bộ LED chỉ thị I/O sáng: 80mA
• Mạch có khả năng tự bảo vệ khi bị lắp ngược cực tính nguồn
• Mức logic các cổng VO: TTL (5V)
• Loại VĐK được hỗ trợ: Atmega16, Atmega32 và tương đương
• Cổng VO mở rộng: 4 giắc cắm (loại 8 chân) ứng với 4 Port (8 bit mỗi Port)
• Hỗ trợ mô đun USB: UART- -USB hay COM-USB (mức 5 VDC).
• Xung nhịp tích hợp sẵn: thạch anh 8Mhz
1.2.4 Sơ đồ nguyên lý mạch Kit
Ngôn ngữ lập trình và các công cụ phần mềm: Để làm việc với VĐK AVR, có thể sử dụng ngôn ngữ C hoặc Assembly, viết trên 1 số môi trường phát triển khác nhau Đề tài này được xây dựng bằng ngôn no trường soạn thảo và biên dịch là sự kết hợp của AVR Studio 6 (phiên bản 6.2 dung lượng 538MB) với WinAVR (phiên bản 20100110, dung lượng 27.5 MB) hoặc dùng phần mềm CodeVisionAVR chuyên cho lập trình Atmega Phần mềm nạp mã máy là PROGISP (phiên bản 1.72, dung lượng khoảng 3 4MB).Phần mềm nhận dữ liệu từ cổng USB hay COM ảo - là Terminal Phần mềm mô phỏng mạch là Proteus 8 Professional
Cảm biến nhiệt độ DS18B20
Hình 1.5 Mạch cảm biến nhiệt độ DS18B20
Nhiệt độ là một trong những thông số được đo phổ biến nhất trên thế giới Chúng được sử dụng trong các thiết bị gia dụng như lò vi sóng, tủ lạnh, máy điều hòa, v.v cho đến các thiết bị được sử dụng trong công nghiệp Cảm biến nhiệt độ về cơ bản đo nóng/lạnh được tạo ra bởi một đối tượng mà nó được kết nối Cảm biến cung cấp một giá trị điện trở, dòng điện hoặc điện áp ở đầu ra tỷ lệ với nhiệt độ cần đo, sau đó các đại lượng này được đo hoặc xử lý theo ứng dụng của chúng ta
Cảm biến nhiệt độ về cơ bản được phân thành hai loại:
• Cảm biến nhiệt độ không tiếp xúc: Các cảm biến nhiệt độ này sử dụng đối lưu và bức xạ để theo dõi nhiệt độ
• Cảm biến nhiệt độ tiếp xúc: Cảm biến nhiệt độ tiếp xúc được chia thành ba loại:
- Cơ điện (Cặp nhiệt điện – Thermocouple)
- Cảm biến nhiệt độ điện trở (RTD – Resistance Temperature Detector)
- Dựa trên chất bán dẫn (LM35, DS1820, v.v ) Ở đề tài lần này, chúng emsẽ cùng tìm hiểu về cảm biến nhiệt độ DS1820, là một loại cảm biến tương tự dựa trên chất bán dẫn Cảm biến nhiệt độ DS1820 rất hay được sử dụng trong các ứng dụng đo nhiệt độ thời gian thực Vì nó hoạt động khá chính xác với sai số nhỏ, đồng thời có kích thước nhỏ và giá thành rẻ
1.3.1 Cảm biến nhiệt độ DS18B20 là gì?
Cảm biến nhiệt độ DS18B20 là một loại cảm biến trả về tín hiệusố rất hay được ứng dụng trong các ứng dụng đo nhiệt độ thời gian thực Vì nó hoạt động khá chính xác với sai số nhỏ, đồng thời với kích thước nhỏ và giá thành rẻ là một trong những ưu điểm của nó Cảm biến có kiểu chân TO 92 với chỉ 3 chân rất dễ giao tiếp và sử dụng.-
DS18B20 là IC cảm biến nhiệt độ kỹ thuật số tuân theo giao thức 1 dây và có thể đo nhiệt độ từ 55oC đến + 125oC với độ chính xác + - -5%
Dữ liệu nhận được từ 1 dây nằm trong khoảng từ 9 bit đến 12 bit
Vì IC cảm biến nhiệt độ DS18B20 tuân theo giao thức 1 dây nên có thể điều khiển cảm biến này thông qua một chân duy nhất của vi điều khiển (cũng phải cấp GND) Giao thức 1 dây là giao thức cấp cao và mỗi DS18B20 được có một mã nối tiếp 64 bit giúp điều khiển nhiều cảm biến thông qua một chân duy nhất của vi điều khiển Nói một cách đơn giản, nó gán các địa chỉ khác nhau cho tất cả các cảm biến được gắn vào và bằng cách gọi địa chỉ có thể nhận được giá trị của các cảm biến đó
1.3.2 Sơ đồ chân của cảm biến nhiệt độ DS18B20
Hình 1.6 Sơ đồ chân của cảm biến nhiệt độ DS18B20
Số chân Tên chân Mô tả
1 GND Nối đất của mạch
2 Data Cấp nguồn cho cảm biến, có thể là 3.3V hoặc 5V
3 Vcc Chân này cho đầu ra giá trị nhiệt độ có thể đọc bằng giao thức
1 dây Bảng 1.2 Các chân và chức năng của DS18B20
1.3.3 Thông số kỹ thuật của cảm biến DS18B20
- Cảm biến nhiệt độ kỹ thuật số có thể lập trình
- Giao tiếp bằng giao thức 1 dây
- Điện áp hoạt động: 3V đến 5V
- Phạm vi nhiệt độ: 55 ° C đến + 125 ° C -
- Độ phân giải đầu ra: 9-bit đến 12-bit (có thể lập trình)
- Địa chỉ 64-bit duy nhất cho phép ghép kênh
- Thời gian chuyển đổi: 750ms ở 12 bit
- Các tùy chọn báo động có thể lập trình
- Có gói TO-92, SOP và thậm chí dưới dạng cảm biến chống thấm nước
- Ngoài ra, bạn có thể xem datasheet DS18B20 ở cuối trang
DS18B20 có thể đo nhiệt độ trong phạm vi từ -55 o C đến 125 o C Độ chính xác thực tế của cảm biến: ±1/4°C ở nhiệt độ phòng và ±3/4°C trong phạm vi nhiệt độ từ -55°C đến 1 °C Việc chuyển đổi điện áp đầu ra sang C cũng dễ dàng và trực tiếp.25 o Trở kháng đầu ra nhỏ, đầu ra tuyến tính và hiệu chuẩn chính xác là những đặc tính vốn có của DS18B20, giúp tạo giao tiếp để đọc hoặc điều khiển mạch rất dễ dàng. Điện áp cung cấp cho cảm biến DS18B20 hoạt động có thể từ +4 V đến 30 V Nó tiêu thụ dòng điện khoảng 60μA
1.3.4 Nguyên lý hoạt động của cảm biến nhiệt độ DS18B20
DS18B20 là cảm biến nhiệt độ 1 dây có thể lập trình Nó được sử dụng rộng rãi để đo nhiệt độ trong các môi trường cứng như trong dung dịch hóa chất, hầm mỏ hoặc đất, Phần thắt của cảm biến rất chắc chắn và cũng có thể được mua với tùy chọn chống thấm nước giúp quá trình lắp đặt dễ dàng Nó có thể đo nhiệt độ từ 55 ° C đến + 125 ° với độ - chính xác khá cao là ± 5 ° C Mỗi cảm biến có một địa chỉ duy nhất và chỉ yêu cầu một chân của vi điều khiển để truyền dữ liệu, vì vậy đây là lựa chọn rất tốt để đo nhiệt độ ở nhiều điểm mà không ảnh hưởng nhiều đến các chân kỹ thuật số trên vi điều khiển
Cảm biến hoạt động với phương thức giao tiếp 1 dây Nó chỉ yêu cầu chân dữ liệu được kết nối với vi điều khiển có điện trở kéo lên và hai chân còn lại được sử dụng để cấp nguồn như hình dưới đây
Hình 1.7 Cấu hình sử dụng cảm biến nhiệt độ DS18B20
1.3.5 Các ứng dụng của cảm biến nhiệt độ DS18B20
Cảm biến nhiệt độ DS18B20 phù hợp cho các ứng dụng:
• Đo nhiệt độ ở môi trường cứng
• Đo nhiệt độ chất lỏng
• Các ứng dụng mà nhiệt độ phải được đo ở nhiều điểm.
Màn hình LCD 1602
Màn hình LCD1602 xanh lá sử dụng driver HD44780, có khả năng hiển thị 2 dòng với mỗi dòng 16 ký tự, màn hình LCD có độ bền cao, rất phổ biến, nhiều code mẫu và dễ sử dụng thích hợp cho những người mới học và làm dự án
Sản phẩm đi kèm với các tính năng nổi trội sau:
• Tên các chân được ghi ở mặt sau của màn hình LCD hỗ trợ việc kết nối, đi dây điện
• Có đèn led nền, có thể dùng biến trở hoặc PWM để điều chỉnh độ sáng
• Có thể được điều khiển với 6 dây tín hiệu
• Có bộ ký tự được xây dựng hỗ trợ tiếng Anh và tiếng Nhật
• Sản phẩm có kích thước nhỏ, gọn gàng và dễ dàng sử dụng với chi phí thấp.
- Điện áp hoạt động là 5 V
- Chữ đen, nền xanh lá
- Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với Breadboard
- Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi dây điện
- Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử dụng ít điện năng hơn
- Có thể được điều khiển với 6 dây tín hiệu
- Có bộ ký tự được xây dựng hổ trợ tiếng Anh và tiếng Nhật, xem thêm HD44780 datasheet để biết thêm chi tiết
1.4.3 Sơ đồ chân màn hình LCD 1602
Hình 1.9 Sơ đồ chân của màn hình LCD 1602
4 RS Lựa chọn thanh ghi RS=0 (mức thấp) chọn thanh ghi lệnh RS=1 (mức cao) chọn thanh ghi dữ liệu
5 R/W Chọn thanh ghi đọc/viết dữ liệu
R/W=0 thanh ghi viết R/W=1 thanh ghi đọc
7 DB0 Chân truyền dữ liệu 8 bit: DB0 - DB7
15 A Cực dương led nền 0V đến 5V
Bảng 1.3 Các chân và chức năng của cám biến DS18B20
Trong 16 chân củaLCD được chia ra làm 3 dạngtín hiệu nhưsau:
▪ Các chân cấp nguồn: Chân số 1 là chânnối mass (0V), chân thứ 2 Vlà cc nối với nguồn+5V Chân thứ 3 dùng để chỉnh contrast thường nối với biến trở.
▪ Các chânđiều khiển: Chân 4 số là chân RS dùng để điều khiển lựa chọnthanh ghi ChânR/W dùng để điều khiển quá trình đọc và ghi Chân E chân là cho phép dạng xung chốt
▪ Các chân dữ liệu D7÷D0: Chân số đến 7 chân số 14 8 là chân dùng để traođổi dữ liệu giữa thiết bị điều khiển và LCD
1.4.4 Địa chỉ ba vùng nhớ của LCD
Bộ điều khiển LCD có ba vùng nhớ nội, mỗi vùng có chức năng riêng Bộ điều khiển phải khởi động trước khi truy cập bất kỳ vùng nhớ nào a Bộ nhớ DDRAM
Bộ nhớ chứa dữ liệu để hiển thị (Display Data RAM: DDRAM) lưu trữ những mã ký tự để hiển thị lên màn hình Mã ký tự lưu trữ trong vùng DDRAM sẽ tham chiếu với từng bitmap kí tự được lưu trữ trong CGROM đã được định nghĩa trước hoặc đặt trong vùng do người sử dụng định nghĩa b Bộ phát kí tự ROM – CGROM
Bộ phát kí tự ROM (Character Generator ROM: CGROM) chứa các kiểu bitmap cho mỗi kí tự được định nghĩa trước mà LCD có thể hiển thị, như được trình bày bảng mã ASCII Mã kí tự lưu trong DDRAM cho mỗi vùng kí tự sẽ được tham chiếu đến một vị trí trong CGROM
Ví dụ: mã kí tự số hex 0x53 lưu trong DDRAM được chuyển sang dạng nhị phân 4 bit cao là DB[7:4] = “0101” và 4 bit thấp là DB[3:0] = “0011” chính là kí tự chữ ‘S’ sẽ hiển thị trên màn hình LCD c Bộ phát kí tự RAM – CGRAM
Bộ phát kí tự RAM (Character Generator RAM: CG RAM) cung cấp vùng nhớ để tạo ra 8 kí tự tùy ý Mỗi kí tự gồm 5 cột và 8 hàng
1.4.5 Các lệnh điều khiển của LCD
• Lệnh thiết lập chức năng giao tiếp “Function set”:
Bit DL (data length) = 1 thì cho phép giao tiếp 8 đường data D7 ÷ D0, nếu bằng 0 thì cho phép giao tiếp 4 đường D7 ÷ D4
Bit N (number of line) = 1 thì cho phép hiển thị 2 hàng, nếu bằng 0 thì cho phép hiển thị 1 hàng
Bit F (font) = 1 thì cho phép hiển thị với ma trận 5×8, nếu bằng 0 thì cho phép hiển thị với ma trận 5×11
Các bit cao còn lại là hằng số không đổi
• LỆNH XOÁ MÀN HÌNH “CLEAR DISPLAY”: KHI THỰC HIỆN LỆNH NÀY THÌ LCD SẼ BỊ XOÁ VÀ BỘ ĐẾM ĐỊA CHỈ ĐƯỢC XOÁ VỀ 0
Lệnh di chuyển con trỏ về đầu màn hình “Cursor Home”: khi thực hiện lệnh này thì bộ đếm địa chỉ được xoá về 0, phần hiển thị trở về vị trí gốc đã bị dịch trước đó Nội dung bộ nhớ RAM hiển thị DDRAM không bị thay đổi
Lệnh thiết lập lối vào “Entry mode set”: lệnh này dùng để thiết lập lối vào cho các kí tự hiển thị,
Bit I/D = 1 thì con trỏ tự động tăng lên 1 mỗi khi có 1 byte dữ liệu ghi vào bộ hiển thị, khi I/D = 0 thì con trỏ sẽ tự động giảm đi 1 mỗi khi có 1 byte dữ liệu ghi vào bộ hiển thị Bit S = 1 thì cho phép dịch chuyển dữ liệu mỗi khi nhận 1 byte hiển thị
• LỆNH ĐIỀU KHIỂN CON TRỎ HIỂN THỊ “DISPLAY CONTROL”:
Bit D: cho phép LCD hiển thị thì D = 1, không cho hiển thị thì bit D = 0.
Bit C: cho phép con trỏ hiển thị thì C= 1, không cho hiển thị con trỏ thì bit C = 0 Bit B: cho phép con trỏ nhấp nháy thì B= 1, không cho con trỏ nhấp nháy thì bit B = 0
Với các bit như trên thì để hiển thị phải cho D = 1, 2 bit còn lại thì tùy chọn, trong thư viện thì cho 2 bit đều bằng 0, không cho phép mở con trỏ và nhấp nháy, nếu bạn không thích thì hiệu chỉnh lại
Lệnh di chuyển con trỏ “Cursor /Display Shift”: lệnh này dùng để điều khiển di chuyển con trỏ hiển thị dịch chuyển
Bit SC: SC = 1 cho phép dịch chuyển, SC = 0 thì không cho phép
Bit RL xác định hướng dịch chuyển: RL = 1 thì dịch phải, RL = 0 thì dịch trái Nội dung bộ nhớ DDRAM vẫn không đổi
Vậy khi cho phép dịch thì có 2 tùy chọn: dịch trái và dịch phải
Lệnh thiết lập địa chỉ cho bộ nhớ RAM phát kí tự “Set CGRAM Addr”: lệnh này dùng để thiết lập địa chỉ cho bộ nhớ RAM phát kí tự
Lệnh thiết lập địa chỉ cho bộ nhớ RAM hiển thị “Set DDRAM Addr”: lệnh này dùng để thiết lập địa chỉ cho bộ nhớ RAM lưu trữ các dữ liệu hiển thị.
Hai lệnh cuối cùng là lệnh đọc và lệnh ghi dữ liệu LCD
20 Bảng 1.4 Các lệnh điều khiển của LCD
Bảng 1.5 Bảng mã ASCII sử dụng cho LCD 1602
THIẾT KẾ BỘ ĐO VÀ HIỂN THỊ
Tổng quan về phần mềm biên dịch
CodevisionAVR là một trình biên dịch chéo C và Lệnh hợp ngữ assembly môi trường phát triển tích hợp và bộ tạo chương trình tự động được thiết kế cho họ các vi điều khiển AVR của Atmel Bên cạnh các thư viện tiêu chuẩn C, CodevisionAVR còn có các thư viện dành riêng cho:
- Philips I2C bus -National Semiconductor LM75 Temperature Sensor
- Philips PCF8563, PCF8583, Maxim/Dallas Semiconductor DS1302 and DS1307 Real Time Clocks -Maxim/Dallas Semiconductor 1 Wire protocol
- Maxim/Dallas Semiconductor DS1820, DS18S20 and DS18B20 Temperature Sensors
- Maxim/Dallas Semiconductor DS1621 Thermometer/Thermostat
- Maxim/Dallas Semiconductor DS2430 and DS2433 EEPROMs
- MMC/SD/SD HC FLASH memory cards low level access
- FAT acces on MMC/SD/SD HC FLASH memory cards
CodevisionAVR cũng bao gồm bộ tạo chương trình tự động CodeWizardAVR, nơi cho phép ta viết một chương trình đơn giản chi trong vài phút, gồm các hàm sau:
- Thiết lập truy cập bộ nhớ ngoài
- Khởi tạo các cổng Output/Input
- Khởi tạo các ngắt ngoài External Interrputs
- Khởi tạo Watchdog Timer hởi tạo USART UART -
- Khởi tạo giao diện SPI
- Khởi tạo giao diện 2 Wire
- Khởi tạo giao diện CAN -I2C bus, sensor 75, DS1621 nhiệt kế/nhiệt độ và PCF8563, PCF8583, DS1302, DS1307 khởi tạo đồng hồ thời gian thực
- Khởi tạo bus 1 dây và các cảm biến nhiệt độ DS1820/DS18S20
2.1.2 Môi trường phát triển tích hợp CodeVisionAVR (IDE)
- Thanh menu bar: chứa các tùy chọn cơ bản, gồm File, Edit, Search, View, Project, Tools, Settings, Help
- Thanh Project: dùng để complie và build các project
- Thanh Tools : chứa các nút dùng để Run CodeWinzardAVR, Run debugger,…
- Thanh Setting: Chứa các nút dùng để cái đặt cho IDE, Edittor, Debugger, Programmer, Terminal
- Thanh View: chứa các tùy chọn thay đổi vị trí các cửa sổ bên dưới
Hình 2.4 Các thanh cơ bản trong CodeVisionAVR
CodevisionAVR IDE bao gồm các cửa sổ:
- Cửa sổ lập trình chính
- Thông thường, chúng ta hay dùng các của số: Code Navigator, Cửa sổ lập trình chính, Messages.
Tiến hành lập trình cho Project
2.2.1 Khởi tạo các thông số bằng CodeWizardAVR
Tạo project mới bằng cách vào File/new, cửa số Create New File hiện ra Ta chọn Project sau đó chọn OK
Cửa số Confirm xuất hiện, ở đây ta chọn YES để xác nhận tạo 1 project mới Tiếp theo là cửa số CodeWizardAVR dùng để chọn loại chip
Chọn ATmega16 và chọn xung dao động 8MHz
Hình 2.5 Khởi tạo Project Chọn giao tiếp 1 dây (1 Wire Settings) và chọn cổng giao tiếp với VĐK là D4, ta chọn PortD, Data Bit 4
Hình 2.6 Chọn giao tiếp Cấu hình các chân LCD cho đúng với cổng VĐK trên mạch in:
Các chân D0, D1, D2, D3 không sử dụng
Sau khi đã cài đặt xong cho vi điều khiển, ta có thể xem trước bằng cách vào
Lưu project này bằng vào File/Generate program , save and exit và tạo một thư mục mới để quản lí các file dễ dàng
Hình 2.7 Hàm ghi nhiệt độ và khởi tạo biến
Hình 2.8 Các hàm in ký tự ra màn hình
Khởi tạo chân EN = 1 để màn hình nhận dữ liệu
Gửi 4 bit data qua các chân D4, D5, D6, D7
Hình 2.9 Khởi tạo cảm biếnCác chân port A, B, C, D đều là 0xff để xuất dữ liệu, riêng cổng D4 = 0 để nhận dữ liệu từ cảm biến.
Thiết kế và mô phỏng
2.3.1 Thiết kế sơ đồ nguyên lý trên Altium Designer
Altium Designer trước kia có tên gọi quen thuộc là Protel DXP, là một trong những công cụ vẽ mạch điện tử mạnh nhất hiện nay Được phát triển bởi hãng Altium Limited Altium designer là một phần mềm chuyên nghành được sử dụng trong thiết kế mạch điện tử Nó là một phần mềm mạnh với nhiều tính năng thú vị, tuy nhiên phần mềm này còn được ít người biết đến so với các phần mềm thiết kế mạch khác như orcad hay proteus Altium Designer có một số đặc trưng sau:
- Giao diện thiết kế, quản lý và chỉnh sửa thân thiện, dễ dàng biên dịch, quản lý file, quản lý phiên bản cho các tài liệu thiết kế
- Hỗ trợ mạnh mẽ cho việc thiết kế tự động, đi dây tự động theo thuật toán tối ưu, phân tích lắp ráp linh kiện Hỗ trợ việc tìm các giải pháp thiết kế hoặc chỉnh sửa mạch, linh kiện, netlist có sẵn từ trước theo các tham số mới
- Mở, xem và in các file thiết kế mạch dễ dàng với đầy đủ các thông tin linh kiện, netlist, dữ liệu bản vẽ, kích thước, số lượng…
- Hệ thống các thư viện linh kiện phong phú, chi tiết và hoàn chỉnh bao gồm tất cả các linh kiện nhúng, số, tương tự…
- Đặt và sửa đối tượng trên các lớp cơ khí, định nghĩa các luật thiết kế, tùy chỉnh các lớp mạch in, chuyển từ schematic sang PCB, đặt vị trí linh kiện trên PCB
- Mô phỏng mạch PCB 3D, đem lại hình ảnh mạch điện trung thực trong không gian
3 chiều, hỗ trợ MCAD ECAD, liên kết trực tiếp với mô hình STEP, kiểm tra khoảng - cách cách điện, cấu hình cho cả 2D và 3D
- Hỗ trợ thiết kế PCB sang FPGA và ngược lại
Từ đó, chúng ta thấy Altium designer có nhiều điểm mạnh so với các phần mềm khác như đặt luật thiết kế, quản lý đề tài mô phỏng dễ dàng, giao diện thân thiện,…
Hình 2.10 Sơ đồ nguyên lý mạch đo nhiệt độ sử dụng Atmega16
30 2.3.2 Mô hình 3D và mạch in Kit AVR trên Altium Designer
Hình 2.12 Đi dây mạch in Kit AVR
Hình 2.13 Mạch in Kit AVR
2.3.3 Mô phỏng mạch bằng Proteus
Phần mềm Proteus là một phần mềm thiết kế mạch in được phát minh bởi Labcenter Electronics Nó được sử dụng để thiết kế các mạch khác nhau trên PCB (bo mạch in) và mô phỏng các mạch khác nhau Việc sử dụng proteus cho bất kỳ dự án mạch điện tử nào làm cho dự án đó tiết kiệm chi phí và ít sai sót hơn do cấu trúc sơ đồ trên proteus
Năm 1988, phiên bản Proteus đầu tiên được gọi là PCB-B được tạo ra bởi John Jameson, chủ tịch của công ty
- Bằng cách sử dụng proteus, ta có thể thiết kế mạch hai chiều
- Với việc sử dụng phần mềm kỹ thuật này, ta có thể xây dựng và mô phỏng các mạch điện và điện tử khác nhau trên máy tính cá nhân hoặc máy tính xách tay
- Có rất nhiều ưu điểm khi mô phỏng các mạch trên proteus trước khi thực hiện chúng trong thực tế
- Thiết kế mạch trên proteus tốn ít thời gian hơn so với việc xây dựng mạch trên thực tế
- Khả năng xảy ra lỗi ít hơn trong mô phỏng phần mềm chẳng hạn như kết nối lỏng lẻo, mất nhiều thời gian để tìm ra các vấn đề kết nối trong một mạch thực tế
- Mô phỏng mạch cung cấp tính năng chính mà một số linh kiện của mạch không thực tế thì bạn có thể xây dựng mạch của mình trên proteus
- Không có khả năng đốt cháy và làm hỏng bất kỳ linh kiện điện tử nào trong proteus
- Các công cụ điện tử rất đắt tiền có thể dễ dàng mắc vào proteus như máy hiện sóng
- Sử dụng proteus, bạn có thể tìm thấy yếu tố khác nhau của các mạch như dòng điện, giá trị điện áp của bất kỳ linh kiện nào và điện trở bất kỳ lúc nào, điều này rất khó trong một mạch thực tế
Hình 2.14 Kết quả mô phỏng mạch cảm biến nhiệt độ
Phần mềm Progisp là phần mềm khá tiện dụng trong việc nạp code cho các VĐK 89S/AVR Phần mềm hầu như tương thích với mọi dòng VĐK họ 89S và AVR Có thể fuse bit cho VĐK AVR
Phần mềm Progisp chỉ cho phép tải tệp hex
Hình 2.15 Giao diện phần mềm PROGISP
Hình 2.16 Cấu hình Program Fuse
- Chọn Load Flash, chọn file hex của chương trình
- Chọn auto để nạp chương trình:
Hình 2.17 Nạp code vào VĐK
2.3.5 Sản phẩm sau khi hoàn thiện
Sản phẩm đã hoàn thiện, chạy đúng như mô phỏng và hoàn thành đúng thời hạn Dưới dây là kết quả thu được sau khi hoàn thành:
36 Hình 2.18 Sản phẩm sau khi hoàn thiện