đồ án thiết kế bộ đo và khống chế nhiệt độ, hiển thị lcd - Pdf 13

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
KHOA : CƠ HỌC KỸ THUẬT VÀ TỰ ĐỘNG HÓA
BÀI TẬP LỚN
ĐỀ TÀI: THIẾT KẾ BỘ ĐO VÀ KHỐNG CHẾ NHIỆT ĐỘ, HIỂN THỊ LCD
“Nhiệt độ khống chế được đặt bằng LM35. thao tác khống chế được mô phỏng bằng
3 led với 3 màu khác nhau, sai số cho phép là ±0.5°C”.
Giáo viên hướng dẫn: Phạm Mạnh Thắng
Sinh viên thực hiện: 1.Phạm Tiến Anh
2.Nguyễn Thị Đào
3.Bùi Thị Hiền
4.Hoàng Thị Toàn
1
LỜI NÓI ĐẦU
Kỹ thuật vi điều khiển hiện nay rất phát triển, nó được ứng dụng vào rất
nhiều lĩnh vực sản xuất công nghiệp, tự động hóa, trong đời sống và còn nhiều lĩnh
vực khác nữa. So với kỹ thuật số thì kỹ thuật vi điểu khiển nhỏ gọn hơn rất nhiều do
nó được tích hợp lại và có khả năng lập trình được để điều khiển. Nên rất tiện dụng
và cơ động. Với tính ưu việt của vi điều khiển thì trong phạm vi đồ án nhỏ này, em
chỉ dùng vi điều khiển để đo và khống chế nhiệt độ, đồng thời cho hiển thị lên
LCD.
Mục đích của đề tài hướng đến: tạo ra bước đầu cho sinh viên thử nghiệm
những ứng dụng của vi điều khiển trong thực tiễn để rồi từ đó tìm tòi, phát triển
nhiều ứng dụng khác trong đời sống hằng ngày cần đến.
Việc thực hiện xong đồ án môn học bằng các kiến thức đã học, một số sách
tham khảo và một số nguồn tài liệu khác nên không tránh khỏi những thiếu sót. Vì
vậy nhóm rất mong được sự góp ý của thầy và các bạn.
2
Phần I: Lý thuyết:
I.Sơ đồ khối tổng quát
II.Các vi mạch chính sử dụng trong đồ án

qua Dz là khi dòng qua R2 = 0
• Như sơ đồ trên thấy dòng cực đại qua Dz bằng sụt áp trên R1 chia cho giá trị R1 ,
gọi dòng điện này là I1 ta có :
I1 = (110 - 33 ) / 7500 = 77 / 7500 ~ 10mA
Thông thường ta nên để dòng ngược qua Dz<=25 mA
2.Mạch cố định ổn áp dùng Tranzito, IC ổn áp
Mạch ổn áp dùng Diode Zener như trên có ưu điểm là đơn giản nhưng nhược điểm
là cho dòng điện nhỏ ( ≤ 20mA ) . Để có thể tạo ra một điện áp cố định nhưng cho
dòng điện mạnh hơn nhiều lần người ta mắc thêm Transistor để khuyếch đại về
dòng như sơ đồ dưới đây
4
Mạch ổn áp có Tranzitor khuếch đại
• Ở mạch trên điện áp tại điểm A có thể thay đổi và còn gợn xoay chiều nhưng điện
áp tại điểm B không thay đổi và tương đối phẳng.
• Nguyên tắc ổn áp : Thông qua điện trở R1 và Dz gim cố định điện áp chân B của
Transistor Q1, giả sử khi điện áp chân E đèn Q1 giảm => khi đó điện áp UBE tăng
=> dòng qua đèn Q1 tăng => làm điện áp chân E của đèn tăng , và ngược lại
Mạch ổn áp trên đơn giản và hiệu quả nên được sử dụng rất rộng dãi và người ta đã
sản xuất các loại IC họ LA78 để thay thế cho mạch ổn áp trên, IC LA78 có sơ đồ
mạch như phần mạch có mầu xanh của sơ đồ trên

IC ổn áp họ LA78 IC ổn áp LA7805
• LA7805 IC ổn áp 5V
• LA7808 IC ổn áp 8V
• LA7809 IC ổn áp 9V
• LA7812 IC ổn áp 12V
Họ IC78 chỉ cho dòng tiêu thụ khoảng 1A trở xuống, khi ráp IC trong mạch thì U
in > Uout từ 3 đến 5V khi đó IC mới phát huy tác dụng.
3.ứng dụng của IC ổn áp họ 78…
5

tương ứng với giá trị ADClà 0. Với Vref=5V, giá trị của ADC từ 0 đến 1024, lấy
tròn 1000 mức. Mỗi giá trị ADC ứng với 5V/1000= 5 mV. Vậy 1 giá trị ADC ứng
với 0.5C. Muốn tăng độ phân giải ADC ta giảm Vref.
3.Hiển thị LCD
Trong các ứng dụng của vi điều khiển thì LCD đóng vai trò quan trọng nó là bộ
phận giao tiếp giữa người và thiết bị. Có rất nhiều loại LCD khác nhau của các hãng
khác nhau. Có loại LCD 8x1,8x2,16x2 Ngày nay, hầu hết các bộ hiển thị LCD
thông minh đều tuân theo một tiêu chuẩn chung. Tùy theo yêu cầu về hiển thị thông
tin mà ta chọn loại nào cho phù hợp. Trong bài tập lớn này chúng em dùng LCD
loại 8x2 2 dòng 8 kí tự một dòng. Do loại này dễ dùng và giá thành cũng phải chăng
do vậy chúng em dùng để hiển thị nhiệt độ và các thông báo khác.
a.Cấu tạo
- Chức năng các chân của Module LCD 8x2;
Chân
số
Ký hiệu Mức
logic
I/O Chức năng
1 Vss - - Nguồn cung cấp(GND)
2 Vdd - - Nguồn cung cấp(+5V)
3 Vee - I Điện áp để điều chỉnh độ tương phản
4 RS 0/1 I Lựa chọn thanh ghi
0= thanh ghi lệnh
1=thanh ghi dữ liệu
5 R/W 0/1 I 0=ghi vào LCD module
1=đọc từ LCD module
6 E 1,1=>0 I Tín hiệu cho phép
0:vô hiệu hóa
1: hoạt động
Từ 1 xuống 0: bắt đầu đọc/ghi

0 0 0 0 0 0 0 0 0 1 Xóa toàn bộ
kết quả hiển
thị trước đó,
con trỏ được
đưa về đầu
dòng trên
Đưa con
trỏ về
đầu dòng
0 0 0 0 0 0 0 0 1 x Con trỏ được
đưa về đầu
dòng trên, văn
bản nếu có
được dịch đi
một kí tự
Dịch
chuyển
0 0 0 0 0 0 0 1 DS s Định hướng di
chuyển con trỏ
sau khi một kí
tự xuất hiện
Hiển thị
và con
trỏ bật
tắt
0 0 0 0 0 0 1 D C B Bật tắt hiển thị
D,con trỏ
C,nhấp nháy
kí tự tại vị trí
con trỏ B

1 1 Dữ liệu Đọc dữ liệu từ
bộ nhớ hay bộ
phát kí tự
4.Vi điều khiển ATMEGA8
4.1.Tổng quan:
� SRAM: 1Kbytes
� EEPROM : 512 bytes
� 28 thanh ghi I/O
� 160 thanh ghi vào ra mở rộng
� 32 thanh ghi đa mục đích.
� 2 bộ định thời 8 bit (0,2).
� 1 bộ định thời 16 bit (1).
� Bộ định thời watchdog
� Bộ dao động nội RC tần số 1 MHz, 2 MHz, 4 MHz, 8 MHz
� ADC 6 kênh với độ phân giải 10 bit
� 3 kênh PWM 8 bit
� Bộ so sánh tương tự có thể lựa chọn ngõ vào
� Khối USART lập trình được
� Khối truyền nhận nối tiếp SPI
� Hỗ trợ boot loader
� 5 chế độ tiết kiệm năng lượng
� Lựa chọn tần số hoạt động bằng phần mềm
� Đóng gói 32 chân kiểu TQFP.
� Tần số tối đa 16MHz
� Điện thế : 4.5v - 5.5v
…v.v…
10
Sơ đồ cách tổ chức bộ nhớ và các cấu trúc thanh ghi của ATMEGA8 đã chỉ rất rõ
trong tài liệu datasheet, trong phạm vi bài tập của chúng em.Chúng em xin trình bày
cấu trúc các thanh ghi của bộ chuyển đổi ADC và khối giao tiếp UART.

ADC=
Vref
Vin 1024.
V
in
- là điện thế đầu vào
V
REF-
điện áp tham chiếu
* Các thanh ghi
Có 4 thanh trong bộ ADC trên AVR trong đó có 2 thanh ghi chứa dữ liệu sau khi
chuyển đổi, 2 thanh ghi điều khiển và chứa trạng thái của ADC.
Thanh ghi ADMUX:
Bít 7 6 5 4 3 2 1 0
12
REFS1 REFS0 ADLAR - MUX3 MUX2 MUX1 MUX0
Đọc/ghi Đọc/ghi Đọc/ghi Đọc/ghi Đọc Đọc/ghi Đọc/ghi Đọc/ghi Đọc/ghi
Giá trị
đầu
0 0 0 0 0 0 0 0
Bít 7-6: REFS1-0: là bít lựa chọn điện áp tham chiếu cho ADC, 1 trong 3 nguồn
điện áp tham chiếu có thể được chọn là: điện áp ngoài từ chân VREF, điện áp tham
chiếu nội 2.56V hoặc điện áp AVCC. Bảng tóm tắt giá trị các bit và điện áp tham
chiếu tương ứng
REFS1 REFS0 Điện áp tham chiếu
0 0 VREF
0 1 AVCC
1 0
1 1 Điện áp tham chiếu nội 2, 56V
Bít 5- ADLAR

ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0
Đọc/ghi Đ/G Đ/G Đ/G Đ/G Đ/G Đ/G Đ/G Đ/G
Giá trị
đầu
0 0 0 0 0 0 0 0
Bít 7-ADEN (ADC Enable): viết 1 vào bit này để cho phép bộ ADC hoạt động, nếu
set bít này về 0 thì ADC sẽ ngừng hoạt động . Nếu tắt ADC khi đang chuyển đổi thì
quá trình chuyển đổi sẽ kết thúc.
Bít 6: ADSC(ADC Start Conversion): Trong chế độ chuyển đổi đơn kênh, set bit
này lên 1 là bắt đầu khởi động quá trình chuyển đổi. Trong suốt quá trình chuyển
đổi, bit ADSC sẽ được giữ nguyên giá trị 1, khi quá trình chuyển đổi kết thúc (tự
động), bit này sẽ được trả về 0. Để thực hiện một chuyển đổi, thông thường chúng ta
sẽ set bit ADEN=1 trước và sau đó set ADSC=1.
Bit 4 – ADIF(ADC Interrupt Flag): cờ báo ngắt. Khi một chuyển đổi kết thúc, bit
này tự động được set lên 1, vì thế người dùng cần kiểm tra giá trị bit này trước khi
thực hiện đọc giá trị chuyển đổi để đảm bảo quá trình chuyển đổi đã thực sự hoàn
tất.
Bít 3- ADIE(ADC Interrupt Enable): bit cho phép ngắt, nếu bit này được set bằng 1
và bit cho phép ngắt toàn cục (bit I trong thanh ghi trạng thái của chip) được set,
một ngắt sẽ xảy ra khi một quá trình chuyển đổi ADC kết thúc.
Bít 2…0: ADPS2:0(ADC Prescaler Select Bits): các bit chọn hệ số chia xung nhịp
cho ADC. ADC, cũng như tất cả các module khác trên AVR, cần được giữ nhịp
bằng một nguồn xung clock. Xung nhịp này được lấy từ nguồn xung chính của chip
thông qua một hệ số chia. Các bit ADPS cho phép người dùng chọn hệ số chia từ
nguồn clock chính đến ADC
ADPS2 ADPS1 ADPS0 Hệ số chia sung
0 0 0 2
0 0 1 2
0 1 0 4
0 1 1 8

chỉ một chuẩn giao tiếp. UART cần phải kết hợp với một thiết bị chuyển đổi mức
điện áp để tạo ra một chuẩn giao tiếp nào đó. Ví dụ, chuẩn RS232 (hay COM) trên
các máy tính cá nhân là sự kết hợp của chip UART và chip chuyển đổi mức điện áp.
Tín hiệu từ chip UART thường theo mức TTL: mức logic high là 5, mức low là 0V.
Trong khi đó, tín hiệu theo chuẩn RS232 trên máy tính cá nhân thường là -12V cho
mức logic high và +12 cho mức low .
15
Tín hiệu tương đương của UART và RS232.
Các thông số quan trọng của UART|
Baud rate (tốc độ Baud): tốc độ baud là số bit truyền trong 1 giây. Ví dụ nếu tốc
độ baud được đặt là 19200 thì thời gian dành cho 1 bit truyền là 1/19200
~52.083us.
Frame (khung truyền):. Khung truyền bao gồm các quy định về số bit trong mỗi
lần truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài
ra số lượng các bit trong một data cũng được quy định bởi khung truyền
start bit: start là bit đầu tiên được truyền trong một frame truyền, bit này có chức
năng báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới.
Data: data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận.
Trong truyền thông nối tiếp UART, bit có ảnh hưởng nhỏ nhất (LSB – Least
Significant Bit, bit bên phải) của dữ liệu sẽ được truyền trước và cuối cùng là bit có
ảnh hưởng lớn nhất (MSB–Most Significant Bit, bit bên trái).
Parity bit: parity là bit dùng kiểm tra dữ liệu truyền đúng không (một cách tương
đối). Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity). Parity
chẵn nghĩa là số lượng số 1 trong dữ liệu bao gồm bit parity luôn là số chẵn. Ngược
lại tổng số lượng các số 1 trong parity lẻ luôn là số lẻ.
Stop bits: stop bits là một hoặc các bit báo cho thiết bị nhận rằng một gói dữ liệu
đã được gởi xong. Sau khi nhận được stop bits, thiết bị nhận sẽ tiến hành kiểm tra
khung truyền để đảm bảo tính chính xác của dữ liệu. Stop bits là các bits bắt buộc
xuất hiện trong khung truyền.
16

trọng của thanh ghi này:
UDRE: (USART Data Register Empty) khi bit bày bằng 1 nghĩa là thanh ghi dữ liệu
UDR đang trống và sẵn sàng cho một nhiệm vụ truyền hay nhận tiếp theo. Vì thế
nếu bạn muốn truyền dữ liệu đầu tiên bạn phải kiểm tra xem bit UDRE có bằng 1
17
hay không, sau khi chắc chắn rằng UDRE=1 hãy viết dữ liệu vào thanh ghi UDR để
truyền đi.
U2X là bit chỉ định gấp đôi tốc độ truyền, khi bit này được set lên 1, tốc độ truyền
so cao gấp 2 lần so với khi bit này mang giá trị 0.
MPCM là bit chọn chế độ hoạt động đa xử lí (multi-processor)
UCSRB (USART Control and Status Register B): đây là thanh ghi quan trọng điều
khiển USART.
RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8
RXCIE (Receive Complete Interrupt Enable) là bit cho phép ngắt khi quá trình nhận
kết thúc. Việc nhận dữ liệu truyền bằng phương pháp nối tiếp không đồng bộ
thường được thực hiện thông qua ngắt, vì thế bit này thường được set bằng 1 khi
USART được dung nhận dữ liệu
TXCIE (Transmit Complete Interrupt Enable) bit cho phép ngắt khi quá trình truyền
kết thúc.
UDRIE (USART Data Register Empty Interrupt Enable) là bit cho phép ngắt khi
thanh ghi dữ liệu UDR trống.
RXEN (Receiver Enable) là một bit quan trọng điều khiển bộ nhận của USART, đề
kích hoạt chức năng nhận dữ liệu bạn phải set bit này lên 1.
TXEN (Transmitter Enable) là bit điều khiển bộ phát. Set bit này lên 1 bạn sẽ khởi
động bộ phát của USART
UCSZ2 (Chracter size) bit này kết hợp với 2 bit khác trong thanh ghi UCSRC quy
định độ dài của dữ liệu truyền/nhận. Chúng ta sẽ khảo sát chi tiết khi tìm hiểu thanh
ghi UCSRC.
RXB8 (Receive Data Bit 8) gọi là bit dữ liệu 8. Bạn nhớ lại rằng USART trong
AVR có hỗ trợ truyền dữ liệu có độ dài tối đa 9 bit, trong khi thanh ghi dữ liệu là

1 0 1
1 1 0
1 1 1 9-bít
UCPOL (Clock Pority) là bit chỉ cực của xung kích trong chế độ truyền thông đồng
bộ. nếu UCPOL=0, dữ liệu sẽ thay đổi thay đổi ở cạnh lên của xung nhịp, nếu
UCPOL=1, dữ liệu thay đổi ở cạnh xuống xung nhịp.Ở chế độ truyền thông không
đồng bộ, set bit này bằng 0
UBRRL và UBRRH (USART Baud Rate Register): 2 thanh ghi thấp và cao quy
định tốc độ baud.
URSEL
UBRR[7:0]
Thanh ghi UBRRH dùng chung địa chỉ thanh ghi UCSRC, ta phải set bit này bằng 0
nếu muốn sử dụng thanh ghi UBRRH. Trong hình trên, chỉ có 4 bit thấp của
UBRRH được dùng, 4 bit này kết hợp với 8 bit trong thanh ghi UBRRL tạo thành
thanh ghi 12 bit quy định tốc độ baud. Khi viết giá trị vào thanh ghi UBRRL, tốc độ
19
baud sẽ tức thì được cập nhật, vì thế ta phải viết giá trị vào thanh ghi UBRRH trước
khi viết vào thanh ghi UBRRL.
5.Module MAX232
Chuẩn RS232 và UART nhìn chung là như nhau về mặt khung truyền, tốc độ
baud…nhưng khác nhau về mặt điện áp và cực:
Trong chuẩn UART (trên AVR), mức 1 tương ứng điện áp cao (5V, TTL) trong khi
đối với RS232 thì mức 1 tương ứng với điện áp thấp (điện áp âm, có thể -12V). Như
thế rõ ràng cần một “cầu chuyển” (converter) kết nối giữa 2 chuẩn này.
MAX232 là một trong các IC chuyển UART-RS232 được sử dụng nhiều nhất. Sơ
đồ dưới đây là cách mắc MAX232 với cổng Com 9 chân.
20
Mạch điện trên chỉ có tác dụng thay đổi mức điện áp cho phù hợp giữa RS232 và
UART, nó hoàn toàn không làm thay đổi phương thức giao tiếp của các chuẩn này
và vì thế việc lập trình trên PC và AVR đều không có gì thay đổi. Max232 có đến 2

vin=(float) adc_data[0]*5/1024; //tinh gia tri dien ap dau vao lcd
nhietdo=vin*100; // bien doi ve nhiet do theo do phan giai LM35
itoa(nhietdo,thongbao); //luu gia tri nhiet do vao mang thong bao

lcd_clear(); //xoa man hinh lcd
lcd_gotoxy(0,0); //dua con tro ve vi tri dong 1 cot 1
lcd_putsf("nhiet_do:"); //xuat ra man hinh lcd dong chu nhiet_do
lcd_gotoxy(0,1); //dua con tro den vi tri dong 2 cot 1
lcd_puts(thongbao); //lenh xuat gia tri nhiet do luu trong mang thong bao
printf(“\n\rnhietdo:%d”,nhietdo) // xuat gia tri nhiet do len may tinh
delay_ms(1000) ; //cu sau 1000 ms thi do lai mot lan

if(nhietdo<29) //khong che nhiet do
{
PORTC.3=1;
PORTC.2=0;
24
PORTC.1=0;
}
else if (nhietdo==29)
{
PORTC.2=1;
PORTC.3=0;
PORTC.1=0;
}
else
{
PORTC.1=1;
PORTC.3=0;
PORTC.2=0;


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status