PIC 16f887 Cảnh báo nhiệt độ hiển thị LCD

Thiết kế sơ đồ nguyên lý, lập trình cho bài toán cảnh báo nhiệt độ. Giả sử nhiệt độ
đọc được là T (0..5v), cảnh báo như sau:

Nếu T<T1: thì đèn mầu trắng sáng.
Nếu T1≤ T ≤ T2: thì đèn mầu xanh sáng.
Nếu T>T2: thì đèn mầu đỏ sáng.

Các giá trị T1, T2 nhập vào từ phím bấm, trạng thái hệ thống (T, T1, T2) hiển thị trên LED 7 thanh
hoặc LCD.

#include <main.h>

#define LCD_ENABLE_PIN PIN_D2
#define LCD_RS_PIN PIN_D0
#define LCD_RW_PIN PIN_D1
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#include <lcd.c>

float t;
int t1=0,t2=0;
void main ()
{
setup_adc_ports(sAN0);
setup_adc(ADC_CLOCK_DIV_2);
set_tris_b(0xff);
set_tris_c(0x00);
lcd_init();

while(TRUE)
{
set_adc_channel(0);
delay_us(10);
t=read_adc()/2.046;

if(input(PIN_B0)==0)
{
while(input(PIN_B0)==0);
t1++;
}
if(input(PIN_B1)==0)
{
while(input(PIN_B1)==0);
t2++;
}

if(t1>=100) t1=0;
if(t2>=100) t2=0;

lcd_gotoxy(1,1);
printf(lcd_putc,"T1=%2u",t1);
lcd_gotoxy(8,1);
printf(lcd_putc,"T2=%2u",t2);
lcd_gotoxy(1,2);
printf(lcd_putc,"T=%0.2f",t);

if(t<t1)
{
output_high(PIN_C0);
output_low(PIN_C1);
output_low(PIN_C2);
}
else
{
if(t>t2)
{
output_low(PIN_C0);
output_low(PIN_C1);
output_high(PIN_C2);
}
else
{
output_low(PIN_C0);
output_high(PIN_C1);
output_low(PIN_C2);
}
}
}
}

DOWNLOAD Code và Mô Phỏng


Từ khóa :

Không có nhận xét nào:

Đăng nhận xét