控制系統(tǒng)直接通過STC 8a8k64s4a12 單片機控制兩組4位的數(shù)碼管進行顯示,使用DS1302時鐘芯片進行獲取時鐘數(shù)據(jù),使用DS18b20,獲取溫度信息,通過HC-05 藍牙模塊進行與手機app通訊,手機app由App Inventor 2編寫 可以實現(xiàn)鬧鐘、用戶設(shè)置數(shù)據(jù)的掉電保存,聯(lián)機自動校時等功能。
mmexport1581605038162.jpg (413.14 KB, 下載次數(shù): 36)
下載附件
2020-2-13 23:01 上傳
mmexport1581605035243.jpg (3.58 MB, 下載次數(shù): 44)
下載附件
2020-2-13 23:01 上傳
作品實物如圖所示:
IMG_20200210_135038.jpg (3.04 MB, 下載次數(shù): 45)
下載附件
2020-2-13 22:21 上傳
數(shù)碼管驅(qū)動:- #include <STC8.H>
- #include <shumaguan.H>
- #include <delay.H>
- uchar code shuzi[]={
- 0xc0,//0
- 0xf9,//1
- 0xa4,//2
- 0xb0,//3
- 0x99,//4
- 0x92,//5
- 0x82,//6
- 0xf8,//7
- 0x80,//8
- 0x90,//9
- 0x88,//A
- 0x83,//B 11
- 0xc6,//C 12
- 0xa1,//D
- 0x86,//E
- 0x8e,//F
- 0x8c,//P 16
- 0x40,//0.
- 0x79,//1.
- 0x24,//2.
- 0x30,//3.
- 0x19,//4.
- 0x12,//5.
- 0x02,//6.
- 0x78,//7.
- 0x00,//8.
- 0x10,//9.
- 0xbf,//- 27
- 0xff,// 熄滅 28
- 0x7f,//. 29
- 0x88,//A 30
- 0xc7,//L 31
- 0x87,//t 32
- 0x86,//E 33
- 0x8c,//P 34
- 0x83,//b 35
- 0x8b,//h 36
- 0x8e,//F 37
- 0xc8,//N 38
- 0x9c,//小圈 39
- 0xc1,//v 40
- };
- /***********************************************************************************************************
- * 函數(shù)名稱: xianshi()
- * 輸入?yún)?shù):uchar,uchar,uchar,uchar,uchar,uchar,uchar,uchar
- * 輸出參數(shù): void
- *
- * 功 能: 數(shù)碼管驅(qū)動程序
- *
- * 備 注:驅(qū)動8位數(shù)碼管、形參的值對應(yīng)數(shù)組shuzi里的位 、第幾位形參對應(yīng)數(shù)碼管的位
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
-
- void xianshi(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f,uchar g,uchar h)////公陰
- {
- P2=0xff-shuzi[a];
- wei1=0;
- delay(2);
- wei1=1;
- P2=0xff-shuzi[b];
- wei2=0;
- delay(2);
- wei2=1;
- P2=0xff-shuzi[c];
- wei3=0;
- delay(2);
- wei3=1;
- P2=0xff-shuzi[d];
- wei4=0;
- delay(2);
- wei4=1;
- P2=0xff-shuzi[e];
- wei5=0;
- delay(2);
- wei5=1;
- P2=0xff-shuzi[f];
- wei6=0;
- delay(2);
- wei6=1;
- P2=0xff-shuzi[g];
- wei7=0;
- delay(2);
- wei7=1;
- P2=0xff-shuzi[h];
- wei8=0;
- delay(2);
- wei8=1;
- }
- /***********************************************************************************************************
- * 函數(shù)名稱: xianshi5()
- * 輸入?yún)?shù):uchar,uchar,uchar,uchar,uchar
- * 輸出參數(shù): void
- *
- * 功 能: 數(shù)碼管驅(qū)動程序
- *
- * 備 注:驅(qū)動5位數(shù)碼管、形參的值對應(yīng)數(shù)組shuzi里的位 、第幾位形參對應(yīng)數(shù)碼管的位、顯示周期短
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void xianshi5(uchar d,uchar e,uchar f,uchar g,uchar h)////公陰
- {
- wei1=wei2=wei3=1;
- P2=0xff-shuzi[d];
- wei4=0;
- delay(2);
- wei4=1;
- P2=0xff-shuzi[e];
- wei5=0;
- delay(2);
- wei5=1;
- P2=0xff-shuzi[f];
- wei6=0;
- delay(2);
- wei6=1;
- P2=0xff-shuzi[g];
- wei7=0;
- delay(2);
- wei7=1;
- P2=0xff-shuzi[h];
- wei8=0;
- delay(2);
- wei8=1;
- }
-
復制代碼
ds1302驅(qū)動:
- #include <STC8.H>
- #include <ds1302.H>
- #include <delay.H>
- uchar shijian[13]={0,0,0,0,0,0,0,0,0,0,0,0,0};//時間緩存數(shù)組
- /***********************************************************************************************************
- * 函數(shù)名稱: xie1302()
- * 輸入?yún)?shù):uchar
- * 輸出參數(shù): void
- *
- * 功 能: 寫1302時序
- *
- * 備 注:向DS1302中寫入形參
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void xie1302(uchar dat)//寫1302時序
- {
- uchar i;
- SCLK=0; //拉低SCLK,為脈沖上升沿寫入數(shù)據(jù)做好準備
- delayus(2); //稍微等待,使硬件做好準備
- for(i=0;i<8;i++)
- {
- IO=dat&0x01;//取出dat的第0位數(shù)據(jù)寫入1302
- delayus(2); //稍微等待,使硬件做好準備
- SCLK=1; //上升沿寫入數(shù)據(jù)
- delayus(2); //稍微等待,使硬件做好準備3
- SCLK=0; //重新拉低SCLK,形成脈沖
- dat>>=1; //將dat的各數(shù)據(jù)位右移1位,準備寫入下一個數(shù)據(jù)位
- }
- }
- /***********************************************************************************************************
- * 函數(shù)名稱: du1302()
- * 輸入?yún)?shù):void
- * 輸出參數(shù): uchar
- *
- * 功 能:讀1302時序
- *
- * 備 注:將讀到的數(shù)據(jù)輸出
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- uchar du1302(void)//讀1302時序
- {
- uchar i,dat;
- delayus(2); //稍微等待,使硬件做好準備
- for(i=0;i<8;i++)
- {
- dat>>=1;//將dat的各數(shù)據(jù)位右移1位,因為先讀出的是字節(jié)的最低位
- if(IO==1) //如果讀出的數(shù)據(jù)是1
- dat|=0x80; //將1取出,寫在dat的最高位
- SCLK=1; //將SCLK置于高電平,為下降沿讀出
- delayus(2); //稍微等待,使硬件做好準備
- SCLK=0; //拉低SCLK,形成脈沖下降沿
- delayus(2); //稍微等待,使硬件做好準備
- }
- return dat; //將讀出的數(shù)據(jù)返回
- }
- /***********************************************************************************************************
- * 函數(shù)名稱:xiemingling1302()
- * 輸入?yún)?shù):uchar ,uchar
- * 輸出參數(shù): void
- *
- * 功 能:向ds1302寫指令、寫數(shù)據(jù)
- *
- * 備 注:實際上是調(diào)用兩次xie1302(),分別寫入指令、數(shù)據(jù)
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void xiemingling1302(uchar cmd,uchar dat)//寫命令 數(shù)據(jù)
- {
- CE=0;//禁止數(shù)據(jù)傳遞
- SCLK=0; //確保寫數(shù)據(jù)前SCLK被拉低
- CE=1; //啟動數(shù)據(jù)傳輸
- delayus(2); //稍微等待,使硬件做好準備
- xie1302(cmd); //寫入命令字
- xie1302(dat); //寫數(shù)據(jù)
- SCLK=1; //將時鐘電平置于已知狀態(tài)
- CE=0; //禁止數(shù)據(jù)傳遞
- }
- /***********************************************************************************************************
- * 函數(shù)名稱: dumingling1302()
- * 輸入?yún)?shù): uchar
- * 輸出參數(shù): uchar
- *
- * 功 能:向ds1302寫指令、讀數(shù)據(jù)
- *
- * 備 注:實際上是調(diào)用一次xie1302()一次du1302(),分別寫入指令、讀出數(shù)據(jù)
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- uchar dumingling1302(uchar cmd)
- {
- uchar dat;
- CE=0; //拉低RST
- SCLK=0; //確保寫數(shù)居前SCLK被拉低
- CE=1; //啟動數(shù)據(jù)傳輸
- xie1302(cmd); //寫入命令字
- dat=du1302(); //讀出數(shù)據(jù)
- SCLK=1; //將時鐘電平置于已知狀態(tài)
- CE=0; //禁止數(shù)據(jù)傳遞
- return dat; //將讀出的數(shù)據(jù)返回
- }
- /***********************************************************************************************************
- * 函數(shù)名稱: zhuanhuan()
- * 輸入?yún)?shù): void
- * 輸出參數(shù): void
- *
- * 功 能:讀ds1302的時鐘數(shù)據(jù),并轉(zhuǎn)換之后緩存在shijian[]數(shù)組的相應(yīng)的位
- *
- * 備 注:實際上是分別讀取ds1302的周、秒、分鐘、小時、日、月、年信息,并根據(jù)數(shù)據(jù)手冊取出其相應(yīng)的位進行存儲
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void zhuanhuan()//轉(zhuǎn)換
- {
-
- uchar a,b,c,d,e,f,g;
- g=dumingling1302(0x8B);//周
- f=dumingling1302(0x81);//秒
- e=dumingling1302(0x83);//分鐘
- d=dumingling1302(0x85);//小時
- c=dumingling1302(0x87);//日
- b=dumingling1302(0x89);//月
- a=dumingling1302(0x8D);//年
-
- shijian[12]=(g&0x07);//周轉(zhuǎn)化個位
- shijian[11]=(f&0x0f);//秒轉(zhuǎn)化個位
- shijian[10]=(f&0x70)>>4;//秒轉(zhuǎn)化十位
- shijian[9]=(e&0x0f);//分鐘轉(zhuǎn)化個位
- shijian[8]=(e&0x70)>>4;//分鐘轉(zhuǎn)化十位
- shijian[7]=(d&0x0f);//小時轉(zhuǎn)化個位
- shijian[6]=(d&0x30)>>4;//小時轉(zhuǎn)化十位
- shijian[5]=(c&0x0f);//日轉(zhuǎn)化個位
- shijian[4]=(c&0x70)>>4;//日轉(zhuǎn)化十位
- shijian[3]=(b&0x0f);//月轉(zhuǎn)化個位
- shijian[2]=(b&0x10)>>4;//月轉(zhuǎn)化十位
- shijian[1]=(a&0x0f);//年轉(zhuǎn)化個位
- shijian[0]=(a>>4);//年轉(zhuǎn)化十位
- }
- /***********************************************************************************************************
- * 函數(shù)名稱: xieshijian()
- * 輸入?yún)?shù): uchar ,uchar ,uchar ,uchar ,uchar , uchar ,uchar
- * 輸出參數(shù): void
- *
- * 功 能:向DS1302寫入時鐘數(shù)據(jù)
- *
- * 備 注:無
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void xieshijian(uchar nian,uchar yue,uchar ri,uchar shi,uchar fen, uchar miao,uchar zhou)
- {
-
- xiemingling1302(0x8E,0x00);//根據(jù)寫狀態(tài)寄存器命令字, 寫入不保護指令
- xiemingling1302(0x80,((miao/10)<<4|(miao%10))); //根據(jù)寫秒寄存器命令字,寫入秒的初始值
- xiemingling1302(0x82,((fen/10)<<4|(fen%10))); //根據(jù)寫分寄存器命令字,寫入分的初始值
- xiemingling1302(0x84,((shi/10)<<4|(shi%10))); // 根據(jù)寫小時寄存器命令字,寫入小時的初始值
- xiemingling1302(0x86,((ri/10)<<4|(ri%10))); // 根據(jù)寫日寄存器命令字,寫入日的初始值
- xiemingling1302(0x88,((yue/10)<<4|(yue%10))); // 根據(jù)寫月寄存器命令字,寫入月的初始值
- xiemingling1302(0x8c,((nian/10)<<4|(nian%10))); //根據(jù)寫年寄存器命令字,寫入年的初始值
- xiemingling1302(0x8B,((zhou/10)<<4|(zhou%10))); //根據(jù)寫周寄存器命令字,寫入周的初始值
- }
復制代碼
ds18b20驅(qū)動:
- #include "18b20.h"
- #include <delay.H>
- #include <shumaguan.H>
- int wendu;//溫度信息
- bit deng=0;//等待標志位
- /***********************************************************************************************************
- * 函數(shù)名稱: DS18b20Init()
- * 輸入?yún)?shù):void
- * 輸出參數(shù): void
- *
- * 功 能: ds18b20初始化程序
- *
- * 備 注:無
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void DS18b20Init()
- {
- if(deng==0)
- {
- DQ = 0; //將總線拉低480us~960us
- Delay640us();
- DQ = 1; //然后拉高總線,如果DS18B20做出反應(yīng)會將在15us~60us后總線拉低
- deng=1;
- }
- if(DQ&&deng==1) //等待DS18B20拉低總線
- {
- deng=0;
- Delay60us();
- }
- }
- /***********************************************************************************************************
- * 函數(shù)名稱: DS18b20WriteByte()
- * 輸入?yún)?shù):uchar
- * 輸出參數(shù): void
- *
- * 功 能: ds18b20寫數(shù)據(jù)程序
- *
- * 備 注:注意時間的把握
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void DS18b20WriteByte(uchar dat)
- {
- uint i;
- for(i=0; i<8; i++)
- {
- DQ = 0; //每寫入一位數(shù)據(jù)之前先把總線拉低1us
- Delay1us();
- DQ = dat & 0x01; //然后寫入一個數(shù)據(jù),從最低位開始
- Delay68us();
- DQ = 1; //然后釋放總線,至少1us給總線恢復時間才能接著寫入第二個數(shù)值
- dat >>= 1;
- }
- }
- /***********************************************************************************************************
- * 函數(shù)名稱: DS18b20ReadByte()
- * 輸入?yún)?shù): void
- * 輸出參數(shù): uchar
- *
- * 功 能: ds18b20讀數(shù)據(jù)程序
- *
- * 備 注:注意時間的把握
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- uchar DS18b20ReadByte()
- {
- uchar byte, bi;
- uint i;
-
- for(i=8; i>0; i--)
- {
- DQ = 0;//先將總線拉低1us
- Delay1us();
- DQ = 1;//然后釋放總線
- Delay6us();
- bi = DQ; //讀取數(shù)據(jù),從最低位開始讀取
- /*將byte左移一位,然后與上右移7位后的bi,注意移動之后移掉那位補0。*/
- byte = (byte >> 1) | (bi << 7);
- Delay48us(); //讀取完之后等待48us再接著讀取下一個數(shù)
- }
- return byte;
- }
- /***********************************************************************************************************
- * 函數(shù)名稱: DS18b20ChangTemp()
- * 輸入?yún)?shù): void
- * 輸出參數(shù): void
- *
- * 功 能: 向ds18b20寫啟動溫度轉(zhuǎn)換命令
- *
- * 備 注:
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void DS18b20ChangTemp()
- {
- DS18b20Init();
- Delay100us();
- DS18b20WriteByte(0xcc); //跳過ROM操作命令
- DS18b20WriteByte(0x44); //溫度轉(zhuǎn)換命令
- }
- /***********************************************************************************************************
- * 函數(shù)名稱: DS18b20ReadTempCom()
- * 輸入?yún)?shù): void
- * 輸出參數(shù): void
- *
- * 功 能: 向ds18b20寫讀取溫度命令
- *
- * 備 注:
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void DS18b20ReadTempCom()
- {
- DS18b20Init();
- Delay100us();
- DS18b20WriteByte(0xcc); //跳過ROM操作命令
- DS18b20WriteByte(0xbe); //發(fā)送讀取溫度命令
- }
- /***********************************************************************************************************
- * 函數(shù)名稱: DS18b20ReadTemp()
- * 輸入?yún)?shù): void
- * 輸出參數(shù): int
- *
- * 功 能: 讀取ds18b20溫度
- *
- * 備 注:讀取ds18b20溫度,并返回出來
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- int DS18b20ReadTemp()
- {
- int temp = 0;
- uchar tmh, tml;
- DS18b20ChangTemp(); //先寫入轉(zhuǎn)換命令
- DS18b20ReadTempCom(); //然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令
- tml = DS18b20ReadByte(); //讀取溫度值共16位,先讀低字節(jié)
- tmh = DS18b20ReadByte(); //再讀高字節(jié)
- temp = tmh;
- temp <<= 8;
- temp |= tml;
- if(tmh>0x07)
- {
- temp=~temp+1;
- temp=temp*6.25;
- temp=temp+5;
- temp=temp/10;
- temp=temp+10000;
- }
- else
- {
- temp=temp*6.25;
- temp=temp+5;
- temp=temp/10;
- }
- return temp;
- }
- /***********************************************************************************************************
- * 函數(shù)名稱: xianshiwendu()
- * 輸入?yún)?shù): void
- * 輸出參數(shù): void
- *
- * 功 能: 轉(zhuǎn)換溫度數(shù)據(jù)
- *
- * 備 注:無
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void xianshiwendu()
- {
- wendu=DS18b20ReadTemp();
- if(wendu<10000) xianshi5(28,wendu%1000/100,wendu%100/10+17,wendu%10,12);
- if(wendu>10000) xianshi5(27,wendu%1000/100,wendu%100/10+17,wendu%10,12);
- }
復制代碼
菜單程序(主要邏輯):
- #include <STC8.H>
- #include <caidan.H>
- #include <ds1302.H>
- #include <shumaguan.H>
- #include <anjian.H>
- #include <delay.H>
- #include <eeprom.h>
- #include <fengmingqi.H>
- #include <18b20.H>
- extern uchar shijian[13];
- extern uint ms1;//用于閃爍計時
- extern uint ms2;//用于按鍵長按快加計時
- extern uint ms4;//用于循環(huán)顯示計時
- bit changan=0;//長按標志位
- uint n=0;//計算平年閏年
- uint y=0;//計算月份
- bit runnian=1; //閏年標志位
- uchar yue=0;//大月標志位 1大月 2 2月 0小月
- uchar tiaozheng[13]={0,0,0,0,0,0,0,0,0,0,0,0,0};//調(diào)整時間數(shù)據(jù)暫存數(shù)組
- uchar cd=0;//菜單
- bit aj1,aj2,aj3,aj4;
- extern int nao_kaiguan,nao_shi,nao_fen,nao2_kaiguan,nao2_shi,nao2_fen,wendu_kaiguan;//eeprom數(shù)據(jù)
- bit s;//鬧鐘1、2切換標志位
- extern int wendu;//溫度信息
- /***********************************************************************************************************
- * 函數(shù)名稱: caidan()
- * 輸入?yún)?shù): void
- * 輸出參數(shù): void
- *
- * 功 能: 菜單程序
- *
- * 備 注: 該程序是本作品的核心
- *0級菜單用于正常顯示時間、日期、溫度;
- *1級菜單用于閃爍全部的時間(提示是否修改)
- *2級菜單用于顯示日期的全部閃爍(提示是否修改)
- *3級菜單用于閃爍al(提示是否修改鬧鐘信息)
- *4級菜單用于閃爍temp(提示是否修改溫度開關(guān))
- *5級菜單預留
- *10級菜單用于閃爍小時位
- *11級菜單用于閃爍分鐘位
- *12級菜單用于閃爍秒位
- *13級級菜單用于閃爍年位
- *14級菜單用于閃爍月位
- *15級級菜單用于閃爍日位
- *16級菜單用于閃爍鬧鐘一的開關(guān)
- *17級級菜單用于閃爍鬧鐘一的時位
- *18級菜單用于閃爍鬧鐘一的分位
- *19級級菜單用于閃爍溫度的開關(guān)
- *20級菜單用于閃爍鬧鐘一鬧鐘二選擇位
- *21級菜單用于閃爍鬧鐘二的開關(guān)
- *22級菜單用于閃爍鬧鐘二的時位
- *23級菜單用于閃爍鬧鐘二的分位
- *
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void caidan()
- {
- zhuanhuan();//獲取時間信息
- naozhong();//檢測鬧鐘
- if(cd==0)//0級菜單
- {
- if(ms4>0&&ms4<10000) xianshi(shijian[6],shijian[7],27,shijian[8],shijian[9],27,shijian[10],shijian[11]);
- if(ms4>10000&&ms4<10100) wendu=DS18b20ReadTemp();
- if(ms4>10100&&ms4<15000) xianshi(2,0,shijian[0],shijian[1]+17,shijian[2],shijian[3]+17,shijian[4],shijian[5]);
- if(wendu_kaiguan==0&&ms4>15000) ms4=0;
- if(ms4>15200&&ms4<20000) xianshiwendu();
- if(ms4>20000) ms4=0;
- if(anjian1==0&&aj1==0)
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1) aj1=0,cd=1,ms1=0;//按鍵1按下松開,去1級菜單
- }
- if(cd==1)//1級菜單 閃爍全部時間
- {
- if(ms1>0&&ms1<300) xianshi(shijian[6],shijian[7],27,shijian[8],shijian[9],27,shijian[10],shijian[11]);
- if(ms1>300&&ms1<600) xianshi(28,28,27,28,28,27,28,28);
- if(ms1>600) ms1=0;
-
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1) aj1=0,cd=2,ms1=0;//按鍵1按下松開,去2級菜單
-
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- tiaozheng[0]=shijian[0];
- tiaozheng[1]=shijian[1];
- tiaozheng[2]=shijian[2];
- tiaozheng[3]=shijian[3];
- tiaozheng[4]=shijian[4];
- tiaozheng[5]=shijian[5];
- tiaozheng[6]=shijian[6];
- tiaozheng[7]=shijian[7];
- tiaozheng[8]=shijian[8];
- tiaozheng[9]=shijian[9];
- tiaozheng[10]=shijian[10];
- tiaozheng[11]=shijian[11];
- aj2=0;
- cd=10;
- ms1=0;//按鍵2按下松開,去10級菜單
- }
- }
-
- if(cd==2)//2級菜單 閃爍全部日期
- {
- if(ms1>0&&ms1<300) xianshi(2,0,shijian[0],shijian[1]+17,shijian[2],shijian[3]+17,shijian[4],shijian[5]);
- if(ms1>300&&ms1<600) xianshi(28,28,28,29,28,29,28,28);
- if(ms1>600) ms1=0;
-
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1) aj1=0,cd=3,ms1=0;//按鍵1按下松開,去3級菜單
-
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- tiaozheng[0]=shijian[0];
- tiaozheng[1]=shijian[1];
- tiaozheng[2]=shijian[2];
- tiaozheng[3]=shijian[3];
- tiaozheng[4]=shijian[4];
- tiaozheng[5]=shijian[5];
- tiaozheng[6]=shijian[6];
- tiaozheng[7]=shijian[7];
- tiaozheng[8]=shijian[8];
- tiaozheng[9]=shijian[9];
- tiaozheng[10]=shijian[10];
- tiaozheng[11]=shijian[11];
- aj2=0;
- cd=13;
- ms1=0;//按鍵2按下松開,去13級菜單
- }
- }
- if(cd==3)//3級菜單 顯示al鬧鐘
- {
- if(ms1>0&&ms1<300) xianshi(27,27,27,30,31,27,27,27);
- if(ms1>300&&ms1<600) xianshi(27,27,27,28,28,27,27,27);
- if(ms1>600) ms1=0;
-
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1) aj1=0,cd=4,ms1=0;//按鍵1按下松開,去4級菜單
-
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- cd=20;
- dunaozhong();//讀取鬧鐘數(shù)據(jù)
- ms1=0;//按鍵2按下松開,去20級菜單
- }
- }
-
- if(cd==4)//4級菜單 顯示temp 溫度
- {
- if(ms1>0&&ms1<300) xianshi(27,27,32,33,34,33,27,27);
- if(ms1>300&&ms1<600) xianshi(27,27,28,28,28,28,27,27);
- if(ms1>600) ms1=0;
-
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
-
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1) aj1=0,cd=0,ms1=0;//按鍵1按下松開,去0級菜單
-
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- cd=19;
- wendu_kaiguan=IapRead(0x0800);
- ms1=0;//按鍵2按下松開,去19級菜單
- }
- }
-
- if(cd==5)//5級菜單 預留
- {
- // if(ms1>0&&ms1<300) xianshi(27,27,35,31,32,36,27,27);
- // if(ms1>300&&ms1<600) xianshi(27,27,28,28,28,28,27,27);
- // if(ms1>600) ms1=0;
- //
- // if(anjian1==0&&aj1==0)//檢測按鍵1
- // {
- // delay(5);
- // if(anjian1==0) aj1=1;
- // }
- // if(anjian1==1&&aj1==1) aj1=0,cd=0,ms1=0;//按鍵1按下松開,去0級菜單
- // if(anjian2==0&&aj2==0)//檢測按鍵2
- // {
- // delay(5);
- // if(anjian2==0) aj2=1;
- // }
- // if(anjian2==1&&aj2==1)
- // {
- // aj2=0;
- // cd=20;//按鍵2按下松開,去20級菜單
- // }
- }
-
- while(cd==10)//10級菜單 小時位閃爍調(diào)整
- {
- if(ms1>0&&ms1<300) xianshi(tiaozheng[6],tiaozheng[7],27,tiaozheng[8],tiaozheng[9],27,tiaozheng[10],tiaozheng[11]);
- if(ms1>300&&ms1<600) xianshi(28,28,27,tiaozheng[8],tiaozheng[9],27,tiaozheng[10],tiaozheng[11]);
- if(ms1>600) ms1=0;
- if(ms1>300&&changan==1) ms1=0;
-
-
-
- if(anjian3==0&&aj3==0)//檢測按鍵3
- {
- delay(5);
- if(anjian3==0) aj3=1,ms2=0;
- }
- if(anjian3==1&&aj3==1)
- {
- tiaozheng[7]++;
- if((tiaozheng[6]==2)&&(tiaozheng[7]==4)) tiaozheng[6]=tiaozheng[7]=0;
- if(((tiaozheng[6]==0)||(tiaozheng[6]==1))&&(tiaozheng[7]==10)) tiaozheng[6]++,tiaozheng[7]=0;
- changan=0;
- aj3=0;//按鍵1按下松開,小時++
- }
- if(aj3==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj3==1&&changan==1&&ms2>=100)//快加
- {
- tiaozheng[7]++;
- if((tiaozheng[6]==2)&&(tiaozheng[7]==4)) tiaozheng[6]=tiaozheng[7]=0;
- if(((tiaozheng[6]==0)||(tiaozheng[6]==1))&&(tiaozheng[7]==10)) tiaozheng[6]++,tiaozheng[7]=0;
- ms2=0;
- }
-
- if(anjian4==0&&aj4==0)//檢測按鍵4
- {
- delay(5);
- if(anjian4==0) aj4=1,ms2=0;
- }
- if(anjian4==1&&aj4==1)
- {
- tiaozheng[7]--;
- if((tiaozheng[6]==0)&&(tiaozheng[7]>100)) tiaozheng[6]=2,tiaozheng[7]=3;
- if(((tiaozheng[6]==2)||(tiaozheng[6]==1))&&(tiaozheng[7]>100)) tiaozheng[6]--,tiaozheng[7]=9;
- changan=0;
- aj4=0;//按鍵1按下松開,小時--
- }
- if(aj4==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj4==1&&changan==1&&ms2>=100)//快減
- {
- tiaozheng[7]--;
- if((tiaozheng[6]==0)&&(tiaozheng[7]>100)) tiaozheng[6]=2,tiaozheng[7]=3;
- if(((tiaozheng[6]==2)||(tiaozheng[6]==1))&&(tiaozheng[7]>100)) tiaozheng[6]--,tiaozheng[7]=9;
- ms2=0;
- }
-
-
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- cd=11;
- ms1=0;//按鍵2按下松開,去11級菜單
- }
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1)
- {
- aj1=0;
- cd=2;
- xieshijian(tiaozheng[0]*10+tiaozheng[1],tiaozheng[2]*10+tiaozheng[3],tiaozheng[4]*10+tiaozheng[5],tiaozheng[6]*10+tiaozheng[7],tiaozheng[8]*10+tiaozheng[9],tiaozheng[10]*10+tiaozheng[11],shijian[12]);
- ms1=0;//按鍵1按下松開,去2級菜單
- }
- }
- while(cd==11)//11級菜單 分鐘位閃爍調(diào)整
- {
- if(ms1>0&&ms1<300) xianshi(tiaozheng[6],tiaozheng[7],27,tiaozheng[8],tiaozheng[9],27,tiaozheng[10],tiaozheng[11]);
- if(ms1>300&&ms1<600) xianshi(tiaozheng[6],tiaozheng[7],27,28,28,27,tiaozheng[10],tiaozheng[11]);
- if(ms1>600) ms1=0;
- if(ms1>300&&changan==1) ms1=0;
-
- if(anjian3==0&&aj3==0)//檢測按鍵3
- {
- delay(5);
- if(anjian3==0) aj3=1,ms2=0;
- }
- if(anjian3==1&&aj3==1)
- {
- tiaozheng[9]++;
- if(tiaozheng[9]==10) tiaozheng[8]++,tiaozheng[9]=0;
- if(tiaozheng[8]==6) tiaozheng[8]=tiaozheng[9]=0;
- changan=0;
- aj3=0;//按鍵1按下松開,小時++
- }
- if(aj3==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj3==1&&changan==1&&ms2>=100)//快加
- {
- tiaozheng[9]++;
- if(tiaozheng[9]==10) tiaozheng[8]++,tiaozheng[9]=0;
- if(tiaozheng[8]==6) tiaozheng[8]=tiaozheng[9]=0;
- ms2=0;
- }
-
- if(anjian4==0&&aj4==0)//檢測按鍵4
- {
- delay(5);
- if(anjian4==0) aj4=1,ms2=0;
- }
- if(anjian4==1&&aj4==1)
- {
- tiaozheng[9]--;
- if(tiaozheng[9]>100) tiaozheng[8]--,tiaozheng[9]=9;
- if(tiaozheng[8]>100) tiaozheng[8]=5,tiaozheng[9]=9;
- changan=0;
- aj4=0;//按鍵1按下松開,小時--
- }
- if(aj4==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj4==1&&changan==1&&ms2>=100)//快減
- {
- tiaozheng[9]--;
- if(tiaozheng[9]>100) tiaozheng[8]--,tiaozheng[9]=9;
- if(tiaozheng[8]>100) tiaozheng[8]=5,tiaozheng[9]=9;
- ms2=0;
- }
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- cd=12;
- ms1=0;//按鍵2按下松開,去12級菜單
- }
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1)
- {
- aj1=0;
- cd=2;
- xieshijian(tiaozheng[0]*10+tiaozheng[1],tiaozheng[2]*10+tiaozheng[3],tiaozheng[4]*10+tiaozheng[5],tiaozheng[6]*10+tiaozheng[7],tiaozheng[8]*10+tiaozheng[9],tiaozheng[10]*10+tiaozheng[11],shijian[12]);
- ms1=0;//按鍵1按下松開,去2級菜單
- }
-
- }
- while(cd==12)//12級菜單 秒位閃爍調(diào)整
- {
- if(ms1>0&&ms1<300) xianshi(tiaozheng[6],tiaozheng[7],27,tiaozheng[8],tiaozheng[9],27,tiaozheng[10],tiaozheng[11]);
- if(ms1>300&&ms1<600) xianshi(tiaozheng[6],tiaozheng[7],27,tiaozheng[8],tiaozheng[9],27,28,28);
- if(ms1>600) ms1=0;
- if(ms1>300&&changan==1) ms1=0;
-
- if(anjian3==0&&aj3==0)//檢測按鍵3
- {
- delay(5);
- if(anjian3==0) aj3=1,ms2=0;
- }
- if(anjian3==1&&aj3==1)
- {
- tiaozheng[11]++;
- if(tiaozheng[11]==10) tiaozheng[10]++,tiaozheng[11]=0;
- if(tiaozheng[10]==6) tiaozheng[10]=tiaozheng[11]=0;
- changan=0;
- aj3=0;//按鍵1按下松開,小時++
- }
- if(aj3==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj3==1&&changan==1&&ms2>=100)//快加
- {
- tiaozheng[11]++;
- if(tiaozheng[11]==10) tiaozheng[10]++,tiaozheng[11]=0;
- if(tiaozheng[10]==6) tiaozheng[10]=tiaozheng[11]=0;
- ms2=0;
- }
-
- if(anjian4==0&&aj4==0)//檢測按鍵4
- {
- delay(5);
- if(anjian4==0) aj4=1,ms2=0;
- }
- if(anjian4==1&&aj4==1)
- {
- tiaozheng[11]--;
- if(tiaozheng[11]>100) tiaozheng[10]--,tiaozheng[11]=9;
- if(tiaozheng[10]>100) tiaozheng[10]=5,tiaozheng[11]=9;
- changan=0;
- aj4=0;//按鍵1按下松開,小時--
- }
- if(aj4==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj4==1&&changan==1&&ms2>=100)//快減
- {
- tiaozheng[11]--;
- if(tiaozheng[11]>100) tiaozheng[10]--,tiaozheng[11]=9;
- if(tiaozheng[10]>100) tiaozheng[10]=5,tiaozheng[11]=9;
- ms2=0;
- }
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- cd=10;
- ms1=0;//按鍵2按下松開,去10級菜單
- }
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1)
- {
- aj1=0;
- cd=2;
- xieshijian(tiaozheng[0]*10+tiaozheng[1],tiaozheng[2]*10+tiaozheng[3],tiaozheng[4]*10+tiaozheng[5],tiaozheng[6]*10+tiaozheng[7],tiaozheng[8]*10+tiaozheng[9],tiaozheng[10]*10+tiaozheng[11],shijian[12]);
- ms1=0;//按鍵1按下松開,去2級菜單
- }
- }
- while(cd==13)//第13級菜單 年位閃爍
- {
- if(ms1>0&&ms1<300) xianshi(2,0,tiaozheng[0],tiaozheng[1]+17,tiaozheng[2],tiaozheng[3]+17,tiaozheng[4],tiaozheng[5]);
- if(ms1>300&&ms1<600) xianshi(28,28,28,29,tiaozheng[2],tiaozheng[3]+17,tiaozheng[4],tiaozheng[5]);
- if(ms1>600) ms1=0;
- if(ms1>300&&changan==1) ms1=0;
-
- if(anjian3==0&&aj3==0)//檢測按鍵3
- {
- delay(5);
- if(anjian3==0) aj3=1,ms2=0;
- }
- if(anjian3==1&&aj3==1)
- {
- tiaozheng[1]++;
- if(tiaozheng[1]==10) tiaozheng[0]++,tiaozheng[1]=0;
- if(tiaozheng[0]==10) tiaozheng[0]=tiaozheng[1]=0;
- changan=0;
- aj3=0;//按鍵1按下松開,小時++
- }
- if(aj3==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj3==1&&changan==1&&ms2>=100)//快加
- {
- tiaozheng[1]++;
- if(tiaozheng[1]==10) tiaozheng[0]++,tiaozheng[1]=0;
- if(tiaozheng[0]==10) tiaozheng[0]=tiaozheng[1]=0;
- ms2=0;
- }
- if(anjian4==0&&aj4==0)//檢測按鍵4
- {
- delay(5);
- if(anjian4==0) aj4=1,ms2=0;
- }
- if(anjian4==1&&aj4==1)
- {
- tiaozheng[1]--;
- if(tiaozheng[1]>100) tiaozheng[0]--,tiaozheng[1]=9;
- if(tiaozheng[0]>100) tiaozheng[0]=9,tiaozheng[1]=9;
- changan=0;
- aj4=0;//按鍵1按下松開,小時--
- }
- if(aj4==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj4==1&&changan==1&&ms2>=100)//快減
- {
- tiaozheng[1]--;
- if(tiaozheng[1]>100) tiaozheng[0]--,tiaozheng[1]=9;
- if(tiaozheng[0]>100) tiaozheng[0]=9,tiaozheng[1]=9;
- ms2=0;
- }
-
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- cd=14;
- ms1=0;//按鍵2按下松開,去14級菜單
- }
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1)
- {
- aj1=0;
- cd=3;
- xieshijian(tiaozheng[0]*10+tiaozheng[1],tiaozheng[2]*10+tiaozheng[3],tiaozheng[4]*10+tiaozheng[5],tiaozheng[6]*10+tiaozheng[7],tiaozheng[8]*10+tiaozheng[9],tiaozheng[10]*10+tiaozheng[11],shijian[12]);
- ms1=0;//按鍵1按下松開,去3級菜單
- }
- }
-
- while(cd==14)//第14級菜單 月位閃爍
- {
- if(ms1>0&&ms1<300) xianshi(2,0,tiaozheng[0],tiaozheng[1]+17,tiaozheng[2],tiaozheng[3]+17,tiaozheng[4],tiaozheng[5]);
- if(ms1>300&&ms1<600) xianshi(2,0,tiaozheng[0],tiaozheng[1]+17,28,28,tiaozheng[4],tiaozheng[5]);
- if(ms1>600) ms1=0;
- if(ms1>300&&changan==1) ms1=0;
-
- if(anjian3==0&&aj3==0)//檢測按鍵3
- {
- delay(5);
- if(anjian3==0) aj3=1,ms2=0;
- }
- if(anjian3==1&&aj3==1)
- {
- tiaozheng[3]++;
- if(tiaozheng[3]==10) tiaozheng[2]++,tiaozheng[3]=0;
- if(tiaozheng[2]==1&&tiaozheng[3]==3) tiaozheng[2]=0,tiaozheng[3]=1;
- changan=0;
- aj3=0;//按鍵1按下松開,小時++
- }
- if(aj3==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj3==1&&changan==1&&ms2>=100)//快加
- {
- tiaozheng[3]++;
- if(tiaozheng[3]==10) tiaozheng[2]++,tiaozheng[3]=0;
- if(tiaozheng[2]==1&&tiaozheng[3]==3) tiaozheng[2]=0,tiaozheng[3]=1;
- ms2=0;
- }
- if(anjian4==0&&aj4==0)//檢測按鍵4
- {
- delay(5);
- if(anjian4==0) aj4=1,ms2=0;
- }
- if(anjian4==1&&aj4==1)
- {
- tiaozheng[3]--;
- if(tiaozheng[3]>100) tiaozheng[2]--,tiaozheng[3]=9;
- if(tiaozheng[2]==0&&tiaozheng[3]==0) tiaozheng[2]=1,tiaozheng[3]=2;
- changan=0;
- aj4=0;//按鍵1按下松開,小時--
- }
- if(aj4==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj4==1&&changan==1&&ms2>=100)//快減
- {
- tiaozheng[3]--;
- if(tiaozheng[3]>100) tiaozheng[2]--,tiaozheng[3]=9;
- if(tiaozheng[2]==0&&tiaozheng[3]==0) tiaozheng[2]=1,tiaozheng[3]=2;
- ms2=0;
- }
-
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- cd=15;
- n=2000+tiaozheng[0]*10+tiaozheng[1];//計算平年閏年
- y=tiaozheng[2]*10+tiaozheng[3];
- if((n%4==0)&&(n%100!=0)) runnian=1; //閏年標志位
- else runnian=0;
- if(y==1||y==3||y==5||y==7||y==8||y==10||y==12) yue=1;//大月標志位
- else if(y==2) yue=2;//2月標志位
- else yue=0;//小月標志位
- ms1=0;//按鍵2按下松開,去15級菜單
- }
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1)
- {
- aj1=0;
- cd=3;
- xieshijian(tiaozheng[0]*10+tiaozheng[1],tiaozheng[2]*10+tiaozheng[3],tiaozheng[4]*10+tiaozheng[5],tiaozheng[6]*10+tiaozheng[7],tiaozheng[8]*10+tiaozheng[9],tiaozheng[10]*10+tiaozheng[11],shijian[12]);
- ms1=0;//按鍵1按下松開,去3級菜單
- }
- }
- while(cd==15)//第15級菜單 日位閃爍
- {
- if(ms1>0&&ms1<300) xianshi(2,0,tiaozheng[0],tiaozheng[1]+17,tiaozheng[2],tiaozheng[3]+17,tiaozheng[4],tiaozheng[5]);
- if(ms1>300&&ms1<600) xianshi(2,0,tiaozheng[0],tiaozheng[1]+17,tiaozheng[2],tiaozheng[3]+17,28,28);
- if(ms1>600) ms1=0;
- if(ms1>300&&changan==1) ms1=0;
-
- if(anjian3==0&&aj3==0)//檢測按鍵3
- {
- delay(5);
- if(anjian3==0) aj3=1,ms2=0;
- }
- if(anjian3==1&&aj3==1)
- {
- tiaozheng[5]++;
- if(tiaozheng[5]==10) tiaozheng[4]++,tiaozheng[5]=0;
- if(runnian==1&&yue==2&&tiaozheng[4]==3) tiaozheng[4]=0,tiaozheng[5]=1;
- if(runnian==0&&yue==2&&tiaozheng[4]==2&&tiaozheng[5]==9) tiaozheng[4]=0,tiaozheng[5]=1;
- if(yue==1&&tiaozheng[4]==3&&tiaozheng[5]==2) tiaozheng[4]=0,tiaozheng[5]=1;
- if(yue==0&&tiaozheng[4]==3&&tiaozheng[5]==1) tiaozheng[4]=0,tiaozheng[5]=1;
- changan=0;
- aj3=0;//按鍵1按下松開,日++
- }
- if(aj3==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj3==1&&changan==1&&ms2>=100)//快加
- {
- tiaozheng[5]++;
- if(tiaozheng[5]==10) tiaozheng[4]++,tiaozheng[5]=0;
- if(runnian==1&&yue==2&&tiaozheng[4]==3) tiaozheng[4]=0,tiaozheng[5]=1;
- if(runnian==0&&yue==2&&tiaozheng[4]==2&&tiaozheng[5]==9) tiaozheng[4]=0,tiaozheng[5]=1;
- if(yue==1&&tiaozheng[4]==3&&tiaozheng[5]==2) tiaozheng[4]=0,tiaozheng[5]=1;
- if(yue==0&&tiaozheng[4]==3&&tiaozheng[5]==1) tiaozheng[4]=0,tiaozheng[5]=1;
- ms2=0;
- }
- if(anjian4==0&&aj4==0)//檢測按鍵4
- {
- delay(5);
- if(anjian4==0) aj4=1,ms2=0;
- }
- if(anjian4==1&&aj4==1)
- {
- tiaozheng[5]--;
- if(tiaozheng[5]>100) tiaozheng[4]--,tiaozheng[5]=9;
- if(runnian==1&&yue==2&&tiaozheng[4]==0&&tiaozheng[5]==0) tiaozheng[4]=2,tiaozheng[5]=9;
- if(runnian==0&&yue==2&&tiaozheng[4]==0&&tiaozheng[5]==0) tiaozheng[4]=2,tiaozheng[5]=8;
- if(yue==1&&tiaozheng[4]==0&&tiaozheng[5]==0) tiaozheng[4]=3,tiaozheng[5]=1;
- if(yue==0&&tiaozheng[4]==0&&tiaozheng[5]==0) tiaozheng[4]=3,tiaozheng[5]=0;
- changan=0;
- aj4=0;//按鍵1按下松開,日--
- }
- if(aj4==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj4==1&&changan==1&&ms2>=100)//快減
- {
- tiaozheng[5]--;
- if(tiaozheng[5]>100) tiaozheng[4]--,tiaozheng[5]=9;
- if(runnian==1&&yue==2&&tiaozheng[4]==0&&tiaozheng[5]==0) tiaozheng[4]=2,tiaozheng[5]=9;
- if(runnian==0&&yue==2&&tiaozheng[4]==0&&tiaozheng[5]==0) tiaozheng[4]=2,tiaozheng[5]=8;
- if(yue==1&&tiaozheng[4]==0&&tiaozheng[5]==0) tiaozheng[4]=3,tiaozheng[5]=1;
- if(yue==0&&tiaozheng[4]==0&&tiaozheng[5]==0) tiaozheng[4]=3,tiaozheng[5]=0;
- ms2=0;
- }
-
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- cd=13;
- ms1=0;//按鍵2按下松開,去13級菜單
- }
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1)
- {
- aj1=0;
- cd=3;
- xieshijian(tiaozheng[0]*10+tiaozheng[1],tiaozheng[2]*10+tiaozheng[3],tiaozheng[4]*10+tiaozheng[5],tiaozheng[6]*10+tiaozheng[7],tiaozheng[8]*10+tiaozheng[9],tiaozheng[10]*10+tiaozheng[11],shijian[12]);
- ms1=0;//按鍵1按下松開,去3級菜單
- }
- }
- while(cd==16)//菜單16 設(shè)置鬧鐘1開關(guān)
- {
- if(nao_kaiguan==0)
- {
- if(ms1>0&&ms1<300) xianshi(30,31,1,27,27,0,37,37);
- if(ms1>300&&ms1<600) xianshi(30,31,1,27,27,28,28,28);
- if(ms1>600) ms1=0;
- }
- if(nao_kaiguan==1)
- {
- if(ms1>0&&ms1<300) xianshi(30,31,1,27,27,27,0,38);
- if(ms1>300&&ms1<600) xianshi(30,31,1,27,27,27,28,28);
- if(ms1>600) ms1=0;
- }
-
- if(anjian3==0&&aj3==0)//檢測按鍵3
- {
- delay(5);
- if(anjian3==0) aj3=1;
- }
- if(anjian3==1&&aj3==1)
- {
- aj3=0;
- nao_kaiguan++;
- }
- if(anjian4==0&&aj4==0)//檢測按鍵4
- {
- delay(5);
- if(anjian4==0) aj4=1;
- }
- if(anjian4==1&&aj4==1)
- {
- aj4=0;
- nao_kaiguan++;
- }
- if(nao_kaiguan>1) nao_kaiguan=0;
-
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1)
- {
- aj1=0;
- cd=4;
- IapErase(0x0200);
- IapProgram(0x0200, nao_kaiguan);//寫開關(guān)值
- }
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- cd=17;//去菜單17
- IapErase(0x0200);
- IapProgram(0x0200, nao_kaiguan);//寫開關(guān)值
- }
- }
- while(cd==17)//菜單17 設(shè)置鬧鐘1 時
- {
- if(ms1>0&&ms1<300) xianshi(27,nao_shi/10,nao_shi%10,27,27,nao_fen/10,nao_fen%10,27);
- if(ms1>300&&ms1<600) xianshi(27,28,28,27,27,nao_fen/10,nao_fen%10,27);
- if(ms1>600) ms1=0;
- if(ms1>300&&changan==1) ms1=0;
-
-
-
- if(anjian3==0&&aj3==0)//檢測按鍵3
- {
- delay(5);
- if(anjian3==0) aj3=1,ms2=0;
- }
- if(anjian3==1&&aj3==1)
- {
- nao_shi++;
- if(nao_shi==25) nao_shi=0;
- changan=0;
- aj3=0;//按鍵1按下松開,小時++
- }
- if(aj3==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj3==1&&changan==1&&ms2>=100)//快加
- {
- nao_shi++;
- if(nao_shi==25) nao_shi=0;
- ms2=0;
- }
-
- if(anjian4==0&&aj4==0)//檢測按鍵4
- {
- delay(5);
- if(anjian4==0) aj4=1,ms2=0;
- }
- if(anjian4==1&&aj4==1)
- {
- nao_shi--;
- if(nao_shi<0) nao_shi=24;
- changan=0;
- aj4=0;//按鍵1按下松開,小時--
- }
- if(aj4==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj4==1&&changan==1&&ms2>=100)//快減
- {
- nao_shi--;
- if(nao_shi<0) nao_shi=24;
- ms2=0;
- }
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1)
- {
- aj1=0;
- cd=4;
- IapErase(0x0400);
- IapProgram(0x0400, nao_shi);//寫小時值
- }
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- cd=18;//去菜單18
- IapErase(0x0400);
- IapProgram(0x0400, nao_shi);//寫小時值
- }
-
- }
- while(cd==18)//菜單18 設(shè)置鬧鐘1 分
- {
- if(ms1>0&&ms1<300) xianshi(27,nao_shi/10,nao_shi%10,27,27,nao_fen/10,nao_fen%10,27);
- if(ms1>300&&ms1<600) xianshi(27,nao_shi/10,nao_shi%10,27,27,28,28,27);
- if(ms1>600) ms1=0;
- if(ms1>300&&changan==1) ms1=0;
-
-
-
- if(anjian3==0&&aj3==0)//檢測按鍵3
- {
- delay(5);
- if(anjian3==0) aj3=1,ms2=0;
- }
- if(anjian3==1&&aj3==1)
- {
- nao_fen++;
- if(nao_fen==60) nao_fen=0;
- changan=0;
- aj3=0;//按鍵1按下松開,小時++
- }
- if(aj3==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj3==1&&changan==1&&ms2>=100)//快加
- {
- nao_fen++;
- if(nao_fen==60) nao_fen=0;
- ms2=0;
- }
-
- if(anjian4==0&&aj4==0)//檢測按鍵4
- {
- delay(5);
- if(anjian4==0) aj4=1,ms2=0;
- }
- if(anjian4==1&&aj4==1)
- {
- nao_fen--;
- if(nao_fen<0) nao_fen=59;
- changan=0;
- aj4=0;//按鍵1按下松開,小時--
- }
- if(aj4==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj4==1&&changan==1&&ms2>=100)//快減
- {
- nao_fen--;
- if(nao_fen<0) nao_fen=59;
- ms2=0;
- }
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1)
- {
- aj1=0;
- cd=4;
- IapErase(0x0600);
- IapProgram(0x0600, nao_fen);//寫小時值
- }
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- cd=20;//去菜單20
- IapErase(0x0600);
- IapProgram(0x0600, nao_fen);//寫小時值
- }
- }
- while(cd==19)//菜單19 設(shè)置溫度開關(guān)
- {
- if(wendu_kaiguan==0)
- {
- if(ms1>0&&ms1<300) xianshi(32,33,34,33,27,0,37,37);
- if(ms1>300&&ms1<600) xianshi(32,33,34,33,27,28,28,28);
- if(ms1>600) ms1=0;
- }
- if(wendu_kaiguan==1)
- {
- if(ms1>0&&ms1<300) xianshi(32,33,34,33,27,27,0,38);
- if(ms1>300&&ms1<600) xianshi(32,33,34,33,27,27,28,28);
- if(ms1>600) ms1=0;
- }
-
- if(anjian3==0&&aj3==0)//檢測按鍵3
- {
- delay(5);
- if(anjian3==0) aj3=1;
- }
- if(anjian3==1&&aj3==1)
- {
- aj3=0;
- wendu_kaiguan++;
- }
- if(anjian4==0&&aj4==0)//檢測按鍵4
- {
- delay(5);
- if(anjian4==0) aj4=1;
- }
- if(anjian4==1&&aj4==1)
- {
- aj4=0;
- wendu_kaiguan++;
- }
- if(wendu_kaiguan>1) wendu_kaiguan=0;
-
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1)
- {
- aj1=0;
- cd=0;
- IapErase(0x0800);
- IapProgram(0x0800, wendu_kaiguan);//寫開關(guān)值
- }
- }
- while(cd==20)//菜單20 選擇鬧鐘1、2
- {
- if(s==0)
- {
- if(nao_kaiguan==0)
- {
- if(ms1>0&&ms1<300) xianshi(30,31,1,27,27,0,37,37);
- if(ms1>300&&ms1<600) xianshi(30,31,28,27,27,0,37,37);
- if(ms1>600) ms1=0;
- }
- if(nao_kaiguan==1)
- {
- if(ms1>0&&ms1<300) xianshi(30,31,1,27,27,27,0,38);
- if(ms1>300&&ms1<600) xianshi(30,31,28,27,27,27,0,38);
- if(ms1>600) ms1=0;
- }
- }
- if(s==1)
- {
- if(nao2_kaiguan==0)
- {
- if(ms1>0&&ms1<300) xianshi(30,31,2,27,27,0,37,37);
- if(ms1>300&&ms1<600) xianshi(30,31,28,27,27,0,37,37);
- if(ms1>600) ms1=0;
- }
- if(nao2_kaiguan==1)
- {
- if(ms1>0&&ms1<300) xianshi(30,31,2,27,27,27,0,38);
- if(ms1>300&&ms1<600) xianshi(30,31,28,27,27,27,0,38);
- if(ms1>600) ms1=0;
- }
- }
-
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1) aj1=0,cd=4,ms1=0;//按鍵1按下松開,去4級菜單
-
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- if(s==1) cd=21;//按鍵2按下松開,去21級菜單
- if(s==0) cd=16;//按鍵2按下松開,去16級菜單
- }
-
- if(anjian3==0&&aj3==0)//檢測按鍵3
- {
- delay(5);
- if(anjian3==0) aj3=1;
- }
- if(anjian3==1&&aj3==1)
- {
- aj3=0;
- s=1;
- }
- if(anjian4==0&&aj4==0)//檢測按鍵4
- {
- delay(5);
- if(anjian4==0) aj4=1;
- }
- if(anjian4==1&&aj4==1)
- {
- aj4=0;
- s=0;
- }
- }
- while(cd==21)//菜單21 設(shè)置鬧鐘2開關(guān)
- {
- if(nao2_kaiguan==0)
- {
- if(ms1>0&&ms1<300) xianshi(30,31,2,27,27,0,37,37);
- if(ms1>300&&ms1<600) xianshi(30,31,2,27,27,28,28,28);
- if(ms1>600) ms1=0;
- }
- if(nao2_kaiguan==1)
- {
- if(ms1>0&&ms1<300) xianshi(30,31,2,27,27,27,0,38);
- if(ms1>300&&ms1<600) xianshi(30,31,2,27,27,27,28,28);
- if(ms1>600) ms1=0;
- }
-
- if(anjian3==0&&aj3==0)//檢測按鍵3
- {
- delay(5);
- if(anjian3==0) aj3=1;
- }
- if(anjian3==1&&aj3==1)
- {
- aj3=0;
- nao2_kaiguan++;
- }
- if(anjian4==0&&aj4==0)//檢測按鍵4
- {
- delay(5);
- if(anjian4==0) aj4=1;
- }
- if(anjian4==1&&aj4==1)
- {
- aj4=0;
- nao2_kaiguan++;
- }
- if(nao2_kaiguan>1) nao2_kaiguan=0;
-
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1)
- {
- aj1=0;
- cd=4;
- IapErase(0x0c00);
- IapProgram(0x0c00, nao2_kaiguan);//寫開關(guān)值
- }
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- cd=22;//去菜單22
- IapErase(0x0c00);
- IapProgram(0x0c00, nao2_kaiguan);//寫開關(guān)值
- }
- }
- while(cd==22)//菜單22 設(shè)置鬧鐘2 時
- {
- if(ms1>0&&ms1<300) xianshi(27,nao2_shi/10,nao2_shi%10,27,27,nao2_fen/10,nao2_fen%10,27);
- if(ms1>300&&ms1<600) xianshi(27,28,28,27,27,nao2_fen/10,nao2_fen%10,27);
- if(ms1>600) ms1=0;
- if(ms1>300&&changan==1) ms1=0;
-
-
-
- if(anjian3==0&&aj3==0)//檢測按鍵3
- {
- delay(5);
- if(anjian3==0) aj3=1,ms2=0;
- }
- if(anjian3==1&&aj3==1)
- {
- nao2_shi++;
- if(nao2_shi==25) nao2_shi=0;
- changan=0;
- aj3=0;//按鍵1按下松開,小時++
- }
- if(aj3==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj3==1&&changan==1&&ms2>=100)//快加
- {
- nao2_shi++;
- if(nao2_shi==25) nao2_shi=0;
- ms2=0;
- }
-
- if(anjian4==0&&aj4==0)//檢測按鍵4
- {
- delay(5);
- if(anjian4==0) aj4=1,ms2=0;
- }
- if(anjian4==1&&aj4==1)
- {
- nao2_shi--;
- if(nao2_shi<0) nao2_shi=24;
- changan=0;
- aj4=0;//按鍵1按下松開,小時--
- }
- if(aj4==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj4==1&&changan==1&&ms2>=100)//快減
- {
- nao2_shi--;
- if(nao2_shi<0) nao2_shi=24;
- ms2=0;
- }
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1)
- {
- aj1=0;
- cd=4;
- IapErase(0x0e00);
- IapProgram(0x0e00, nao2_shi);//寫小時值
- }
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- cd=23;//去菜單23
- IapErase(0x0e00);
- IapProgram(0x0e00, nao2_shi);//寫小時值
- }
- }
-
- while(cd==23)//菜單23 設(shè)置鬧鐘2 分
- {
- if(ms1>0&&ms1<300) xianshi(27,nao2_shi/10,nao2_shi%10,27,27,nao2_fen/10,nao2_fen%10,27);
- if(ms1>300&&ms1<600) xianshi(27,nao2_shi/10,nao2_shi%10,27,27,28,28,27);
- if(ms1>600) ms1=0;
- if(ms1>300&&changan==1) ms1=0;
-
- if(anjian3==0&&aj3==0)//檢測按鍵3
- {
- delay(5);
- if(anjian3==0) aj3=1,ms2=0;
- }
- if(anjian3==1&&aj3==1)
- {
- nao2_fen++;
- if(nao2_fen==60) nao2_fen=0;
- changan=0;
- aj3=0;//按鍵1按下松開,小時++
- }
- if(aj3==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj3==1&&changan==1&&ms2>=100)//快加
- {
- nao2_fen++;
- if(nao2_fen==60) nao2_fen=0;
- ms2=0;
- }
-
- if(anjian4==0&&aj4==0)//檢測按鍵4
- {
- delay(5);
- if(anjian4==0) aj4=1,ms2=0;
- }
- if(anjian4==1&&aj4==1)
- {
- if(nao2_fen==0) nao2_fen=60;
- nao2_fen--;
- changan=0;
- aj4=0;//按鍵1按下松開,小時--
- }
- if(aj4==1&&ms2>=700) changan=1,ms2=0;//檢測長按時間0.5s
- if(aj4==1&&changan==1&&ms2>=100)//快減
- {
- nao2_fen--;
- if(nao2_fen<0) nao2_fen=59;
- ms2=0;
- }
- if(anjian1==0&&aj1==0)//檢測按鍵1
- {
- delay(5);
- if(anjian1==0) aj1=1;
- }
- if(anjian1==1&&aj1==1)
- {
- aj1=0;
- cd=4;
- IapErase(0x1000);
- IapProgram(0x1000, nao2_fen);//寫小時值
- }
- if(anjian2==0&&aj2==0)//檢測按鍵2
- {
- delay(5);
- if(anjian2==0) aj2=1;
- }
- if(anjian2==1&&aj2==1)
- {
- aj2=0;
- cd=20;//去菜單20
- IapErase(0x1000);
- IapProgram(0x1000, nao2_fen);//寫小時值
- }
- }
- }
復制代碼
串口驅(qū)動:
- #include <STC8.H>
- #include <uart.H>
- #include "intrins.h"
- #define FOSC 11059200UL
- #define BRT (65536 - FOSC / 115200 / 4)
- bit busy;
- //extern uchar tiaozheng[];
- char a=0;
- uchar huancun[15]={0};
- /*Z-------------A*/ //傳送時間數(shù)據(jù)
- /*Z----------B*/ //傳送鬧鐘數(shù)據(jù)
- /*Z----------C*/ //請求傳送溫度數(shù)據(jù)
- /***********************************************************************************************************
- * 函數(shù)名稱: UartIsr()
- * 輸入?yún)?shù): void
- * 輸出參數(shù): void
- *
- * 功 能: 串口1中斷(第4號中斷)
- *
- * 備 注:將數(shù)據(jù)緩存在 huancun[]數(shù)組中
- *
- * 作 者: 范
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void UartIsr() interrupt 4
- {
- if (TI)
- {
- TI = 0;
- busy = 0;
- }
- if (RI)
- {
- RI = 0;
- switch(SBUF)
- {
- case 'Z': a=0;//時間數(shù)據(jù)傳送開始標志
- break;
- case 'A': huancun[14]=1;//時間數(shù)據(jù)更新標志
- break;
- case 'B': huancun[14]=2;//鬧鐘數(shù)據(jù)更新標志
- break;
- case 'C': huancun[14]=3;//請求傳送溫度數(shù)據(jù) 標志
- break;
- case '0': huancun[a]=0,a++;
- break;
- case '1': huancun[a]=1,a++;
- break;
- case '2': huancun[a]=2,a++;
- break;
- case '3': huancun[a]=3,a++;
- break;
- case '4': huancun[a]=4,a++;
- break;
- case '5': huancun[a]=5,a++;
- break;
- case '6': huancun[a]=6,a++;
- break;
- case '7': huancun[a]=7,a++;
- break;
- case '8': huancun[a]=8,a++;
- break;
- case '9': huancun[a]=9,a++;
- break;
- default:break;
- }
- }
- }
- /***********************************************************************************************************
- * 函數(shù)名稱: UartInit()
- * 輸入?yún)?shù): void
- * 輸出參數(shù): void
- *
- * 功 能: 串口1初始化
- *
- * 備 注:用定時器2做波特率發(fā)生器
- *
- * 作 者: 范
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void UartInit()
- {
- SCON = 0x50;
- T2L = BRT;
- T2H = BRT >> 8;
- AUXR = 0x15;
- busy = 0;
- }
- /***********************************************************************************************************
- * 函數(shù)名稱: UartSend()
- * 輸入?yún)?shù): char
- * 輸出參數(shù): void
- *
- * 功 能: 串口1發(fā)送一個字符
- *
- * 備 注:無
- *
- * 作 者: 范
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void UartSend(char dat)
- {
- while (busy);
- busy = 1;
- SBUF = dat;
- }
- /***********************************************************************************************************
- * 函數(shù)名稱: UartSendStr()
- * 輸入?yún)?shù): char *p
- * 輸出參數(shù): void
- *
- * 功 能: 串口1發(fā)送一個字符串
- *
- * 備 注:無
- *
- * 作 者: 范
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void UartSendStr(char *p)
- {
- while (*p)
- {
- UartSend(*p++);
- }
- }
復制代碼
主函數(shù):- #include <STC8.H>
- #include <caidan.H>//菜單
- #include <chushihua.H>//初始化
- #include <uart.H>
- #include <ds1302.H>
- #include "eeprom.h"
- extern uchar huancun[];//藍牙接收緩存數(shù)據(jù)
- extern int nao_kaiguan,nao_shi,nao_fen,nao2_kaiguan,nao2_shi,nao2_fen;//eeprom數(shù)據(jù)
- extern int wendu;//溫度信息
- uchar wenzhuan[5]={0,0,0,0,0};
- uchar i;
- uchar xiawu;//下午標志位
- /***********************************************************************************************************
- * 函數(shù)名稱: main()
- * 輸入?yún)?shù): void
- * 輸出參數(shù): void
- *
- * 功 能: 主函數(shù)
- *
- * 備 注:程序的初始化、串口打印、串口接收手機端發(fā)來的數(shù)據(jù)、運行菜單程序
- *
- * 作 者: 范
- *
- * 完成時間: 2019.12.25
- ************************************************************************************************************/
- void main()
- {
- itin();
- UartSendStr("Uart Test !\r\n");
- while(1)
- {
- caidan();
- if(huancun[14]==1)//待時間更新數(shù)據(jù)
- {
- huancun[14]=0;//清標志位
- if(huancun[13]==1) xiawu=12;
- if(huancun[13]==0) xiawu=0;
- xieshijian(huancun[0]*10+huancun[1],huancun[2]*10+huancun[3],huancun[4]*10+huancun[5],huancun[6]*10+huancun[7]+xiawu,huancun[8]*10+huancun[9],huancun[10]*10+huancun[11],huancun[12]);//更新時間
- UartSendStr("時間信息已校準\r\n");
- }
- if(huancun[14]==2)//待鬧鐘更新數(shù)據(jù)
- {
- huancun[14]=0;//清標志位
- nao_kaiguan=huancun[0];
- nao_shi=huancun[1]*10+huancun[2];
- nao_fen=huancun[3]*10+huancun[4];
- nao2_kaiguan=huancun[5];
- nao2_shi=huancun[6]*10+huancun[7];
- nao2_fen=huancun[8]*10+huancun[9];
- IapErase(0x0200);
- IapProgram(0x0200, nao_kaiguan);//寫鬧鐘1開關(guān)默認值
- IapErase(0x0400);
- IapProgram(0x0400, nao_shi);//寫鬧鐘1小時默認值
- IapErase(0x0600);
- IapProgram(0x0600, nao_fen);//寫鬧鐘1分鐘默認值
- IapErase(0x0c00);
- IapProgram(0x0c00, nao2_kaiguan);//寫鬧鐘2分鐘默認值
- IapErase(0x0e00);
- IapProgram(0x0e00, nao2_shi);//寫鬧鐘2分鐘默認值
- IapErase(0x1000);
- IapProgram(0x1000, nao2_fen);//寫鬧鐘2亮度默認值
- UartSendStr("鬧鐘信息已更改\r\n");
- }
- if(huancun[14]==3)//請求傳送溫度數(shù)據(jù) 標志
- {
- huancun[14]=0;//清標志位
- wenzhuan[0]=wendu%1000/100;
- if(wendu<10000) wenzhuan[0]=wendu%1000/100,wenzhuan[1]=wendu%100/10,wenzhuan[2]=wendu%10,wenzhuan[3]=0;
- if(wendu>10000) wenzhuan[0]=wendu%1000/100,wenzhuan[1]=wendu%100/10,wenzhuan[2]=wendu%10,wenzhuan[3]=1;
- for(i=0;i<4;i++)
- {
- switch(wenzhuan[i])
- {
- case 0 : UartSend('0');
- break;
- case 1 : UartSend('1');
- break;
- case 2 : UartSend('2');
- break;
- case 3 : UartSend('3');
- break;
- case 4 : UartSend('4');
- break;
- case 5 : UartSend('5');
- break;
- case 6 : UartSend('6');
- break;
- case 7 : UartSend('7');
- break;
- case 8 : UartSend('8');
- break;
- case 9 : UartSend('9');
- break;
- default:break;
- }
- }
- }
- }
- }
復制代碼
由于代碼較多,完整的代碼、原理圖、pcb圖、手機app等 可以從附件中查找
123.zip
(17.73 MB, 下載次數(shù): 53)
2020-2-13 22:17 上傳
點擊文件名下載附件
全部的源程序、手機app、原理圖、pcb圖 下載積分: 黑幣 -5
|