You are on page 1of 3

Họ tên : Đặng Minh Nhật

Mssv : 07111118

BÁO CÁO GIỮA KỲ

1: Nội dung báo cáo;

Thiết kế mạch cảm biến nhệt độ để đo nhiệt độ phòng, có đèn báo quá nhiệt, sử
dụng LM35 và Atmega8
Mạch sử dụng adc 8 bit, và điện áp tham chiếu trong 2.56v

2 : Nội dung Code

void led (unsigned char x)//ham dua du lieu ra PORT B


{
switch(x)
{
case 0:{PORTB=0XC0;break;}//so 0
case 1:{PORTB=0xF9;break;}//so 1
case 2:{PORTB=0xA4;break;}//so 2
case 3:{PORTB=0xB0;break;}//so 3
case 4:{PORTB=0x99;break;}//so 4
case 5:{PORTB=0x92;break;}//so 5
case 6:{PORTB=0x82;break;}//so 6
case 7:{PORTB=0xF8;break;}//so 7
case 8:{PORTB=0x80;break;}//so 8
case 9:{PORTB=0x90;break;}//so 9
}
}

Đây là chương trình con dùng để điều khiển led 7 đoạn


while (1)
{
adc_value=read_adc(5);
vin=((float)adc_value*2560)/255; // vin la mot so co 3 chu so kieu float
a=(int)vin/100;
b=((int)vin-a*100)/10;

while(i<=50)
{
PORTD.0=1;
led(a);
delay_ms(5);
PORTB=0xFF;
PORTD.0=0;
PORTD.1=1;
led(b);
delay_ms(5);
PORTB=0xFF;
PORTD.1=0;
i=i+1;

Mục đích của vòng lặp while (i<=50) dùng để chờ cho nhiệt độ ổn định rồi mới
cập nhật nhiệt độ,
Nếu không có vòng lặp while này khi nhiệt độ thay đổi led 7 đoạn sẽ chớp nháy
liên tục trước khi hiện 1 số cố định

if( a>=5)
{
j=1;
}
k=k+j;
if (k>=2000)
{
k=0;
j=0;
}
if(k!=0)
{
PORTD.2=1;
}
else if (k==0)
{
PORTD.2=0;
}
i= 0;
}

Mục đích của hàm if này dùng để điều khiển đèn báo khi nhiệt độ cao hơn
500C,
Đèn báo được sử dụng tượng trưng cho quạt làm mát,nghĩa là khi nhiệt độ
tăng quá cao thì quạt chạy,nhưng khi nhiệt độ giảm thì quạt phải chạy thêm
một khoảng thời gian nữa rồi mới dừng lại

You might also like