標(biāo)題:
帶節(jié)日顯示提醒,溫度報(bào)警的單片機(jī)萬(wàn)年歷程序
[打印本頁(yè)]
作者:
51hei學(xué)習(xí)技術(shù)中
時(shí)間:
2016-10-20 22:30
標(biāo)題:
帶節(jié)日顯示提醒,溫度報(bào)警的單片機(jī)萬(wàn)年歷程序
0.png
(68.13 KB, 下載次數(shù): 81)
下載附件
2016-10-20 22:28 上傳
非常經(jīng)典的STC89C52單片機(jī) + DS1820溫度 + DS1302時(shí)間0 + LCD12864液晶 萬(wàn)年歷程序,帶節(jié)日顯示提醒,溫度報(bào)警:
萬(wàn)年歷.zip
(111.76 KB, 下載次數(shù): 50)
2016-10-20 22:29 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
部分源碼預(yù)覽:
/***********************************************************
文件名稱(chēng): 主函數(shù)
作 者: LQW
版 本: 0.01
說(shuō) 明:
時(shí)間 : 12月12日22:20:11
修改記錄:
總結(jié) : 1:今天搞了4個(gè)鐘,收獲最大是要看電路圖,忘記加一個(gè)上拉電阻,時(shí)鐘時(shí)間跑不準(zhǔn)
2:12月18日20:33:21加入顯示節(jié)日函數(shù)
3:12月20日18:58:58加入溫度顯示函數(shù)
4: 全局變量用多了將會(huì)超出KEIL 默認(rèn)的直接尋址的DATA區(qū)且DATA區(qū)只有128字節(jié)
5: DS18B20也加4.7K上拉電阻
***********************************************************/
#include"LCD12864.h"
#include"delay.h"
#include"ds1302.h"
#include"timeadjust.h"
#include"keyscan.h"
#include"keypro.h"
#include"disfestival.h"
#include"ds18b20.h"
#include"ds18b20distemp.h"
#include"ds18b20alarm.h"
//#include<reg52.h>
//#include<string.h"
/*------------------------------------------
定義臨時(shí)變量
-------------------------------------------*/
u8 *WEEK[] = {"SUM","MON","TUS","WEN","THU","FRI","SAT"};
sbit LED1 = P3^7;//溫度高于上限LED1閃爍
sbit LED2 = P3^6; //溫度高于下限LED2閃爍
u16 TimCnt = 0;
sbit BEEP = P3^5;
/***********************************************************
函數(shù)名稱(chēng): 定時(shí)器T0 初始化
函數(shù)功能:
入口參數(shù):
出口參數(shù):
備 注:
***********************************************************/
void Time0_Init(void)
{
TMOD |= 0x01; // 定時(shí)器T0工作在方式1
TH0 = - 1000 / 256;
TL0 = - 1000 % 256;
EA = 1; //打開(kāi)總中斷
ET0 = 1; //允許T0中
//TR0 = 1; //開(kāi)啟定時(shí)器T0中斷
}
/***********************************************************
函數(shù)名稱(chēng): 定時(shí)器T0中斷函數(shù)
函數(shù)功能: 定時(shí)每2ms刷新數(shù)碼管
入口參數(shù):
出口參數(shù):
備 注:
***********************************************************/
void Time0_ISR() interrupt 1
{
TH0 = - 1000 / 256;
TL0 = - 1000 % 256;
BEEP = !BEEP;
if( ++TimCnt == 200 )
{
TimCnt = 0;
if( H_Alarm )
LED1 = ~LED1;
else
LED1 = 1;
if( L_Alarm )
LED2 = ~LED2;
else
LED2 = 1;
TR0 = 0; //關(guān)閉定時(shí)器
}
}
void main()
{
u8 keynum;
Time0_Init();//定時(shí)器T0初始化
Set_DS18B20_Alarm_Temp();//設(shè)置DS18B20溫度的報(bào)警值,且寫(xiě)入ds18b20里
ds18b20_ReadTemperature();////讀取溫度值分別放在Temp_Value[](存放溫度值)與Temp_Alarm[](存放報(bào)警值
Init_DS18B20();//ds18b20初始化
Init_DS1302();//ds1302初始化,是對(duì)時(shí)時(shí)間
Init_LCD12864();//液晶初始化
DelayMs( 1 );
while( 1 )
{
ds18b20_ReadTemperature();//讀取溫度值分別放在Temp_Value[](存放溫度值)與Temp_Alarm[](存放報(bào)警值
keynum = KeyScan();//讀取按鍵的
if( adjust_index == -1)
{
GetTime();//獲取時(shí)間
Format_Time( DataTime[ 6 ], LCD_DIS_BUFFER1 + 2 );
Format_Time( DataTime[ 4 ], LCD_DIS_BUFFER1 + 6 );
Format_Time( DataTime[ 3 ], LCD_DIS_BUFFER1 + 10 );
Format_Time( DataTime[ 2 ], LCD_DIS_BUFFER2 + 0 );
Format_Time( DataTime[ 1 ], LCD_DIS_BUFFER2 + 4 );
Format_Time( DataTime[ 0 ], LCD_DIS_BUFFER2 + 8 );
strcpy( LCD_DIS_BUFFER2 + 13, WEEK[ DataTime[ 5 ] - 1]);
LCD_PutString( 0, 1, LCD_DIS_BUFFER1);
LCD_PutString( 0, 2, LCD_DIS_BUFFER2);
}
Dis_Festival(); //顯示公歷節(jié)日
if( iS_DS18B20_OK == 1 )
{
if( H_Alarm == 1 || L_Alarm == 1 )
TR0 = 1;
else
TR0 = 0;
ds18b20_Display_Temperature();//溫度轉(zhuǎn)換
}
if( keynum != 0xff )
{
KeyPro( keynum ); //一邊調(diào)整一邊顯示
Format_Time( DataTime[ 6 ], LCD_DIS_BUFFER1 + 2 );
Format_Time( DataTime[ 4 ], LCD_DIS_BUFFER1 + 6 );
Format_Time( DataTime[ 3 ], LCD_DIS_BUFFER1 + 10 );
LCD_PutString( 0, 1, LCD_DIS_BUFFER1);
Format_Time( DataTime[ 2 ], LCD_DIS_BUFFER2 + 0 );
Format_Time( DataTime[ 1 ], LCD_DIS_BUFFER2 + 4 );
Format_Time( DataTime[ 0 ], LCD_DIS_BUFFER2 + 8 );
LCD_PutString( 0, 2, LCD_DIS_BUFFER2);
}
}
}
復(fù)制代碼
作者:
symbl
時(shí)間:
2017-3-31 13:54
好厲害啊
作者:
wangtao123
時(shí)間:
2017-12-5 20:13
有仿真圖嗎?,求發(fā)
作者:
吳宇
時(shí)間:
2017-12-7 21:30
沒(méi)有圖片。。。。。。!
作者:
1328024957
時(shí)間:
2020-4-11 00:14
可以發(fā)一下原理圖仿真圖嗎?跪求
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1