一、功能實現
本設計主要實現實時時鐘顯示,時間可調;實時溫度顯示,并具有超限報警功能,輸出顯示采用LCD1602。
二、仿真圖
基于proteus的仿真
三、主程序
#include "lian_pic.h"
#include "DHT11.h"
#include "ds1302.h"
#include "key.h"
#include "lcd12864.h"
#include "control.h"
__CONFIG(HS&WDTDIS&LVPDIS&PWRTEN);
//HS振蕩,禁止看門狗,低壓編程關閉,啟動延時定時器
void Basic_Io_Init(void)
{
ADCON1=0x06; //PORTA,PORTE設定為數字端口
TRISD=0; //PORTD設置為輸出
TRISA0=1; //按鍵輸入
TRISA1=1; //按鍵輸入
TRISA2=1; //按鍵輸入
TRISA3=1; //按鍵輸入
TRISB0=0; //串口,并口選擇
TRISB1=0; //并行讀寫使能
TRISB2=0; //并行讀/寫選擇
TRISB3=0; //并行數據/控制字選擇
TRISE2=0; //報警器
TRISC=0x00; //DS1302的端口定義
PORTC=0xff; //DS1302的端口定義
lcd12864_io_init();
}
//高溫報警
void temp_warning()
{
if((temp_valueH/10)>0x02&&reduce_voice==0) //30度開始 手動消除
{
RE2=1;
//報警IO
}
else if((temp_valueH/10)<=0x02&&reduce_voice==1)
{
reduce_voice=0;
}
else
{
RE2=0;
}
}
void main(void)
{
Basic_Io_Init(); //初始化IO口
Lcd_Init(); //初始化LCD
__delay_ms(2000); //等待2秒保證DHT11上電正常初始化
while(1)
{
temp_warning(); //循環執行高溫報警監控
DHT11_Read_data(); //讀取DHT11模塊的數據
Key_Scan(); //掃描模式識別鍵盤
ds1302_read_time(); //讀出當前時鐘信息
lcd_display_control();//顯示
__delay_ms(150);
}
}
剩下程序放附件里,仿真圖大家自己畫一下吧,剛不小心給刪除了
PIC16F877-Code.zip
(229.56 KB, 下載次數: 62)
2020-8-19 21:38 上傳
點擊文件名下載附件
|