PIC 16f887 Cảnh báo nhiệt độ hiển thị LCD
Thứ Tư, 6 tháng 5, 2015 - Blade1407
Xem với phiên bản web đầy đủ
Xem với phiên bản web đầy đủ
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);
}
}
}
}
đọ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
Bài liên quan
- PIC16f887 Đếm người đi qua cửa hiển thị LED7x2
- PIC 16f887 Cảnh báo nhiệt độ hiển thị LCD
- Thời gian thực PIC16F887 và LCD16x2
- Điều khiển động cơ RC servo SG90-90 với Pic16f877A sử dụng CCS
- PIC16F887 lò ấp trứng có hiển thị LCD
Nhận xét
Không có nhận xét nào:
Đăng nhận xét