|
一、功能實(shí)現(xiàn)
本設(shè)計(jì)主要實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘顯示,時(shí)間可調(diào);實(shí)時(shí)溫度顯示,并具有超限報(bào)警功能,輸出顯示采用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振蕩,禁止看門狗,低壓編程關(guān)閉,啟動(dòng)延時(shí)定時(shí)器
void Basic_Io_Init(void)
{
ADCON1=0x06; //PORTA,PORTE設(shè)定為數(shù)字端口
TRISD=0; //PORTD設(shè)置為輸出
TRISA0=1; //按鍵輸入
TRISA1=1; //按鍵輸入
TRISA2=1; //按鍵輸入
TRISA3=1; //按鍵輸入
TRISB0=0; //串口,并口選擇
TRISB1=0; //并行讀寫使能
TRISB2=0; //并行讀/寫選擇
TRISB3=0; //并行數(shù)據(jù)/控制字選擇
TRISE2=0; //報(bào)警器
TRISC=0x00; //DS1302的端口定義
PORTC=0xff; //DS1302的端口定義
lcd12864_io_init();
}
//高溫報(bào)警
void temp_warning()
{
if((temp_valueH/10)>0x02&&reduce_voice==0) //30度開始 手動(dòng)消除
{
RE2=1;
//報(bào)警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(); //循環(huán)執(zhí)行高溫報(bào)警監(jiān)控
DHT11_Read_data(); //讀取DHT11模塊的數(shù)據(jù)
Key_Scan(); //掃描模式識別鍵盤
ds1302_read_time(); //讀出當(dāng)前時(shí)鐘信息
lcd_display_control();//顯示
__delay_ms(150);
}
}
剩下程序放附件里,仿真圖大家自己畫一下吧,剛不小心給刪除了
PIC16F877-Code.zip
(229.56 KB, 下載次數(shù): 62)
2020-8-19 21:38 上傳
點(diǎn)擊文件名下載附件
|
評分
-
查看全部評分
|