|
自己寫(xiě)的,用的是德飛萊的開(kāi)發(fā)板。
4PZAH3Z5BE9W@D~%L2Q~NY5.png (143.32 KB, 下載次數(shù): 71)
下載附件
2019-5-26 21:51 上傳
)9~SWS_A2%`X}QU`@_X$}3V.png (243.79 KB, 下載次數(shù): 60)
下載附件
2019-5-26 21:51 上傳
單片機(jī)源程序如下:
- #include <reg52.h>
- #include "delay.h"
- #include "ds1302.h"
- #include"display.h"
- #include"18b20.h"
- #include"keyboard.h"
- extern bit ReadTimeFlag;//定義讀時(shí)間標(biāo)志
- extern bit ReadFlag; //讀時(shí)間標(biāo)志位 “1s”
- sbit led = P1^1; //led定義
- extern bit ReadTempFlag;//定義讀溫度標(biāo)志
- extern unsigned char dofly_DuanMa[10];
- extern unsigned char dofly_WeiMa[8];
- extern unsigned char TempData[9]; //存儲(chǔ)顯示值的全局變量
- unsigned int temps[10]; //用來(lái)存放采集到的溫度
- void model_1 (); //模式一間隔時(shí)間選擇
- void model_2 (); //模式二時(shí)鐘顯示
- unsigned char out = 1; //用來(lái)累計(jì)采取時(shí)間的
- unsigned char s = 1; //時(shí)間間隔的選擇位
- bit m,a,y,w,z,k;
- void main()
- {
- unsigned char key,temp_1,j; //按鍵,數(shù)組的變量
- unsigned int TempH,TempL,temp; //溫度的轉(zhuǎn)換
- static unsigned char time = 0;
- Init_Timer0(); //定時(shí)器0的初始化
- Ds1302_Init(); //時(shí)鐘的初始化
- Ds1302_Write_Time(); //重新寫(xiě)入
- while(1)
- {
- key = KeyScan(); //鍵盤(pán)掃面
- if(key == 4 && m == 0) //key4、key7按下,進(jìn)入選擇時(shí)間間隔
- {
- z = 1; //表示key4和key7不同的模式
- model_1 (); //時(shí)間間隔
- s++;
- if(s == 4) //時(shí)間間隔的四種選擇
- s = 0;
- }
- if(key == 5) //確認(rèn)采集間隔時(shí)間
- m = 1;
- if(m == 1 && ReadTimeFlag && k == 0)
- {
- ReadTimeFlag=0;
- Ds1302_Read_Time();
- model_2 (); //顯示時(shí)鐘
- if(ReadTempFlag == 1) //讀取溫度標(biāo)志位
- {
- ReadTempFlag = 0;
- time++;
- if(out == time) //到達(dá)指定采集間隔
- {
- time = 0;
- temp=ReadTemperature(); //讀取溫度
- if(j<10 || (out == time)) //每一次到達(dá)指定時(shí)間讀取,不是一次到達(dá)讀取十次
- {
- temps[j++] = temp; //依次存入數(shù)組中
- if(j == 10)
- {
- j = 0;
- led = 0; //溫度采集完點(diǎn)亮led
- }
- }
- }
- }
- }
- if(led == 0)
- k = 1; //k表示key = 6的情況
- if(key == 6 && k == 1)
- {
- led = 1;
- m = 0;
- z = 0;
- if(temp_1 < 10)
- {
- temp_1++;
- if(temp_1 == 9)
- y = 1;
- }
- }
- if(k == 1) //依次顯示索引和采集的溫度
- {
- if(temp_1<10)
- {
- TempData[0] = 0x40;
- TempData[1] = dofly_DuanMa[(temp_1)/10]; //索引
- TempData[2] = dofly_DuanMa[(temp_1)%10];
- TempH=temps[temp_1]>>4;
- TempL=temps[temp_1]&0x0F;
- TempL=TempL*5/10;//小數(shù)近似處理
- TempData[5]=0x40;
- TempData[6]=dofly_DuanMa[(TempH%100)/10]; //十位溫度
- TempData[7]=dofly_DuanMa[(TempH%100)%10]; //個(gè)位溫度,帶小數(shù)點(diǎn)
- TempData[3] = 0;
- TempData[4] = 0;
- }
- }
- if(key == 7 && y == 1 && z == 0) //進(jìn)入?yún)?shù)設(shè)置界面,進(jìn)行下一次的溫度采集工作
- {
- TempData[0]=0; //固定顯示
- TempData[1]=0;
- TempData[2]=0;
- TempData[3]=0;
- TempData[4]=0;
- TempData[5]=0x40;
- TempData[6]=dofly_DuanMa[0];
- TempData[7]=dofly_DuanMa[1];
- k = 0;
- y = 0;
- s = 1;
- temp_1 = 0;
- }
- }
- }
- void model_1 () //模式一間隔時(shí)間選擇
- {
-
- TempData[0]=0; //固定顯示
- TempData[1]=0;
- TempData[2]=0;
- TempData[3]=0;
- TempData[4]=0;
- TempData[5]=0x40;
- switch(s)
- {
- case 1:
- TempData[6]=dofly_DuanMa[0];
- TempData[7]=dofly_DuanMa[5];
- out = 5;
- break;
- case 2:
- TempData[6]=dofly_DuanMa[3];
- TempData[7]=dofly_DuanMa[0];
- out = 30;
- break;
- case 3:
- TempData[6]=dofly_DuanMa[6];//秒
- TempData[7]=dofly_DuanMa[0];
- out = 60;
- break;
- case 0:
- TempData[6]=dofly_DuanMa[0];
- TempData[7]=dofly_DuanMa[1];
- out = 1;
- break;
- }
- }
- /*------------------------------------------------
- 讀取1302的值 默認(rèn) RTC 時(shí)間: 23 時(shí) 59 分 50 秒
- 模式二 :時(shí)鐘顯示
- ------------------------------------------------*/
- void model_2 ()
- {
- TempData[0]=dofly_DuanMa[time_buf1[0]/10];//時(shí) //數(shù)據(jù)的轉(zhuǎn)換,
- TempData[1]=dofly_DuanMa[time_buf1[0]%10];//因我們采用數(shù)碼管0~9的顯示,將數(shù)據(jù)分開(kāi)
- if(ReadFlag)
- TempData[2]=0x40; //加入"-"
- else
- TempData[2] = 0;
- TempData[3]=dofly_DuanMa[time_buf1[1]/10];//分
- TempData[4]=dofly_DuanMa[time_buf1[1]%10];
- if(ReadFlag)
- TempData[5]=0x40;
- else
- TempData[5] = 0;
- ReadFlag = 0;
- TempData[6]=dofly_DuanMa[time_buf1[2]/10];//秒
- TempData[7]=dofly_DuanMa[time_buf1[2]%10];
- }
復(fù)制代碼
所有資料51hei提供下載:
溫度記錄器.zip
(64.09 KB, 下載次數(shù): 43)
2019-5-26 21:45 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|