經過兩天熬夜的艱苦奮戰,在原程序基礎上進行升級,添加按鍵多功能操作
新增功能:1. K1模式轉換,可自由切換:主界面顯示,時間調整,鬧鐘設置,溫度上下限設定等。等 2. K2選定需要調整的位數。
切換至時間調整時,通過K3-"加",K4-"減"按鍵調整數值。
切換至鬧鐘設置時,通過K3-"加",K4-"減"按鍵調整數值。
切換至溫度上下限設定時,通過K3-"加",K4-"減"按鍵調整數值。
準備擴展的新功能:鬧鐘音樂,喇叭開啟和關閉,。
操作說明:
開機進入主界面,顯示時鐘和溫度。按下K1時,進入模式選擇,(有時間調整,鬧鐘設置,溫度上下限設定等),當K1按下四次后,長響一聲,回到主界面。
當K1(模式選擇鍵)按下第一次,選擇在時間調整時,按下K2,選定需要調整的位數,選定的位數會一秒鐘不停的閃爍。然后按下K3 “加”或者K4 “減”按鍵,進行數值的加減,當K2按到五次時,返回時間調整界面。
再按下K1(模式選擇鍵)按下第二次,進入到下一個模式,鬧鐘設置。按下K2,選定需要調整的位數,選定的位數會一秒鐘不停的閃爍。然后按下K3 “加”或者K4 “減”按鍵,進行數值的加減,當K2按到五次時,返回鬧鐘設置界面。
再按下K1(模式選擇鍵)按下第三次,進入到下一個模式,溫度上下限設定。按下K2,選定需要調整的位數,選定的位數會一秒鐘不停的閃爍。然后按下K3 “加”或者K4 “減”按鍵,進行數值的加減,當K2按到五次時,返回溫度上下限設定界面。
當K1(模式選擇鍵)按下第四次,返回到時鐘和溫度主界面顯示。
采用的是stc89c51單片機,代碼為自己原創,沒有進行整理和優化,有點亂,還有些沒有加注釋說明
完整的源代碼下載地址:http://www.xiaowoshenghuoquan.cn/f/dianzz5.rar
#include"reg51.h" #define uchar unsigned char #define uint unsigned int /****溫度 端口定義******/ sbit wx5=P2^4; sbit wx6=P2^5; sbit wx7=P2^6; sbit wx8=P2^7; sbit DQ=P3^6; uint temp, temp1,temp2, xs,H1,H2,L1,L2; uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0X9c,0xc6,0x91,0xfc,0XE3}; /******延時程序*******/ void delay1(uint m) { uint i,j; for(i=m;i>0;i--) for(j=110;j>0;j--); } void delay(unsigned int m) { while(m--); } void Init_DS18B20() { unsigned char x=0; DQ = 1; //DQ復位 ds18b20通信端口 delay(8); //稍做延時 DQ = 0; //單片機將DQ拉低 delay(80); //精確延時 大于 480us DQ = 1; //拉高總線 delay(4); x=DQ; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay(20); } /***********ds18b20讀一個字節**************/ uchar ReadOneChar() { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; // 高電平拉成低電平時讀周期開始 dat>>=1; DQ = 1; // 給脈沖信號 if(DQ) dat|=0x80; // delay(4); } return(dat); } /*************ds18b20寫一個字節****************/ void WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; //從高電平拉至低電平時,寫周期的開始 DQ = dat&0x01; //數據的最低位先寫入 delay(5); //60us到120us延時 DQ = 1; dat>>=1; //從最低位到最高位傳入 } } /**************讀取ds18b20當前溫度************/ void ReadTemperature() { unsigned char a=0; unsigned b=0; unsigned t=0; Init_DS18B20(); WriteOneChar(0xCC); // 跳過讀序號列號的操作 WriteOneChar(0x44); // 啟動溫度轉換 delay(1); // this message is wery important Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號列號的操作 WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度 delay(1); a=ReadOneChar(); //讀取溫度值低位 b=ReadOneChar(); //讀取溫度值高位 temp1=b<<4; //高8位中后三位數的值 temp1+=(a&0xf0)>>4; //低8位中的高4位值加上高8位中后三位數的值 temp1室溫整數值 temp2=a&0x0f; //小數的值 temp=((b*256+a)>>4); //當前采集溫度值除16得 實際溫度值 zhenshu xs=temp2*0.0625*10; //小數位,若為0.5則算為5來顯示 xs小數 xiaoshu } //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /****時鐘 端口定義******/ sbit wx1=P2^0; sbit wx2=P2^1; sbit wx3=P2^2; sbit wx4=P2^3; uchar qian,bai,shi,ge,miao1,miao2,count1,count2; uchar n1,n2,z1,z2;//設置鬧鐘變量 uchar code table1[]={0xc0,0xcf,0xa4,0x86,0x8b, 0x92,0x90,0xc7,0x80,0x82}; //////////////////////////////////////////// /***************按鍵調時程序***************/ sbit K1=P3^0; sbit K2=P3^1; sbit K3=P3^2; sbit K4=P3^3; sbit BEEP=P3^7; //// 定義蜂鳴器口 uchar K1num,K2num,K3num,K4num,K5num,K6num,K7num; ////////////////////////////////////////// /**********報警聲音**************/ bi(uint t) { int c,n; for(c=0;c<t;c++) { for(n=0;n<50;n++); BEEP=~BEEP; //按位取反BEEP } return(t); } /////////////////////////////////////////////// /********定時器初始化*************/ void init1() { TMOD=0x01; //定義定時器0,工作方式1 TH0=(65536-50000)/256; //高8位 TL0=(65536-50000)%256; //低8位 EA=1; //開全局中斷 ET0=1; TR0=1; //打開定時器 } /////////////////////////////////////////////// /***********定時器中斷函數************/ void timer0() interrupt 1 { TH0=50; TL0=50; count1++; if( count1==19 ) {count1=0; miao1++;//LED1=~LED1; if( miao1==10 ) { miao1=0; miao2++; } if( miao2== 6 ) { miao2=0; ge++; } if( ge==10 ) { ge=0; shi++; } if( shi== 6 ) { shi=0; bai++; } if( bai==10 ) { bai=0; qian++; } if( qian== 3 ) { qian=0; } if(qian==2&&bai==4){qian=0;bai=0; }} } void init2() { TMOD=0x01; //定義定時器0,工作方式1 TH1=(65536-50000)/256; //高8位 TL1=(65536-50000)%256; //低8位 EA=1; //開全局中斷 ET1=1; TR1=1; //打開定時器 } /////////////////////////////////////////////// /***********定時器中斷函數************/ void timer1() interrupt 3 { TH1=50; TL1=50; count2++; if( count2==120 ) {count2=0; }} void MODE() //模式選擇 { //正常顯示 時鐘和溫度 if( K1num==0 ) { TR0=1;TR1=0; //打開定時器0,關閉定時器1 wx1=1; P0=table[qian]; delay1(2);wx1=0; //時十位 if( count1<9.5 ) //時分之間的小數點閃爍,定時器0小于0.5秒,小數點亮 { wx2=1; P0=table[bai]+0X80; delay1(2); wx2=0; //時個位打開小數點 wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0; //分十位+小數點 } else //定時器0大于0.5秒,小數點滅 { wx2=1; P0=table[bai]; delay1(2); wx2=0; //時個位關閉小數點 wx3=1; P0=table1[shi]; delay1(2); wx3=0; //分十位關閉小數點 } wx4=1; P0=table1[ge]; delay1(2); wx4=0; //分個位 wx5=1; P0=table[temp/10]; delay1(2); wx5=0; //溫度十位 wx6=1; P0=table[temp%10]; delay1(2); wx6=0; //溫度個位 wx7=1; P0=table[12]; delay1(2); wx7=0; //溫度℃ wx8=1; P0=table[13]; delay1(2); wx8=0; //溫度℃ if((n1==qian)&&(n2==bai)&&(z1==shi)&&(z2=ge)) { bi(2000);} if((H1==temp/10)&(H2==temp%10)) { bi(1000); } if((L1==temp/10)&(L2==temp%10)) { bi(500); } } //時間調整顯示 if((K1num==1 )&&(K2num==0)) { TR1=0; wx1=1; P0=table[qian]; delay1(2); wx1=0; //時十位 wx2=1; P0=table[bai]+0X80; delay1(2); wx2=0; //時個位,小數點停止不動 wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0; //分十位,小數點停止不動 wx4=1; P0=table1[ge]; delay1(2); wx4=0; //分個位 wx5=1; P0=0xBF; delay1(2); wx5=0; //- wx6=1; P0=0x92; delay1(2); wx6=0; //s wx7=1; P0=0x87; delay1(2); wx7=0; //t wx8=1; P0=0xBF; delay1(2); wx8=0; //- } if((K1num==1 )&&(K2num==1)) { TR1=1; if (count2<60) {wx1=1; P0=table[qian]; delay1(2); wx1=0; } //時十位 else {wx1=1; P0=0xff; delay1(2); wx1=0; } //時十位 wx2=1; P0=table[bai]+0X80; delay1(2); wx2=0; //時個位,小數點停止不動 wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0; //分十位,小數點停止不動 wx4=1; P0=table1[ge]; delay1(2); wx4=0; //分個位 wx5=1; P0=0xBF; delay1(2); wx5=0; //- wx6=1; P0=0x92; delay1(2); wx6=0; //s wx7=1; P0=0x87; delay1(2); wx7=0; //t wx8=1; P0=0xBF; delay1(2); wx8=0; //- } if((K1num==1 )&&(K2num==2)) { TR1=1; wx1=1; P0=table[qian]; delay1(2); wx1=0; //時十位 if (count2<60) {wx2=1; P0=table[bai]+0X80; delay1(2); wx2=0; } //時個位,小數點停止不動 else {wx2=1; P0=0xff; delay1(2); wx2=0; } wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0; //分十位,小數點停止不動 wx4=1; P0=table1[ge]; delay1(2); wx4=0; //分個位 wx5=1; P0=0xBF; delay1(2); wx5=0; //- wx6=1; P0=0x92; delay1(2); wx6=0; //s wx7=1; P0=0x87; delay1(2); wx7=0; //t wx8=1; P0=0xBF; delay1(2); wx8=0; //- } if((K1num==1 )&&(K2num==3)) { TR1=1; wx1=1; P0=table[qian]; delay1(2); wx1=0; //時十位 wx2=1; P0=table[bai]+0X80; delay1(2); wx2=0; //時個位,小數點停止不動 if (count2<60) {wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0; } //分十位,小數點停止不動 else {wx3=1; P0=0xff; delay1(2); wx3=0; } wx4=1; P0=table1[ge]; delay1(2); wx4=0; //分個位 wx5=1; P0=0xBF; delay1(2); wx5=0; //- wx6=1; P0=0x92; delay1(2); wx6=0; //s wx7=1; P0=0x87; delay1(2); wx7=0; //t wx8=1; P0=0xBF; delay1(2); wx8=0; //- } if((K1num==1 )&&(K2num==4)) { TR1=1; wx1=1; P0=table[qian]; delay1(2); wx1=0; //時十位 wx2=1; P0=table[bai]+0X80; delay1(2); wx2=0; //時個位,小數點停止不動 wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0; //分十位,小數點停止不動 if (count2<60) {wx4=1; P0=table1[ge]; delay1(2); wx4=0; }//分個位 else {wx4=1; P0=0xff; delay1(2); wx4=0; } wx5=1; P0=0xBF; delay1(2); wx5=0; //- wx6=1; P0=0x92; delay1(2); wx6=0; //s wx7=1; P0=0x87; delay1(2); wx7=0; //t wx8=1; P0=0xBF; delay1(2); wx8=0; //- } //鬧鐘調整顯示 if(( K1num==2 )&&(K3num==0)) { TR1=0; wx1=1; P0=0x89; delay1(2); wx1=0; //H wx2=1; P0=0xBF; delay1(2); wx2=0; //- wx3=1; P0=table1[n1]; delay1(2); wx3=0; //時十位 wx4=1; P0=table1[n2]; delay1(2); wx4=0; //時個位 wx5=1; P0=0x8E; delay1(2); wx5=0; //F wx6=1; P0=0xBF; delay1(2); wx6=0; //- wx7=1; P0=table[z1]; delay1(2); wx7=0; //分十位 wx8=1; P0=table[z2]; delay1(2); wx8=0; //分個位 } if (( K1num==2 )&&(K3num==1)) { TR1=1; wx1=1; P0=0x89; delay1(2); wx1=0; //H wx2=1; P0=0xBF; delay1(2); wx2=0; //- if (count2<60) {wx3=1; P0=table1[n1]; delay1(2); wx3=0;} //時十位 else {wx3=1; P0=0xff; delay1(2); wx3=0;} wx4=1; P0=table1[n2]; delay1(2); wx4=0; //時個位 wx5=1; P0=0x8E; delay1(2); wx5=0; //F wx6=1; P0=0xBF; delay1(2); wx6=0; //- wx7=1; P0=table[z1]; delay1(2); wx7=0; //分十位 wx8=1; P0=table[z2]; delay1(2); wx8=0; //分個位 } if(( K1num==2 )&&(K3num==2)) { TR1=1; wx1=1; P0=0x89; delay1(2); wx1=0; //H wx2=1; P0=0xBF; delay1(2); wx2=0; //- wx3=1; P0=table1[n1]; delay1(2); wx3=0; //時十位 if(count2<60) {wx4=1; P0=table1[n2]; delay1(2); wx4=0;} //時個位 else{wx4=1; P0=0xff; delay1(2); wx4=0;} wx5=1; P0=0x8E; delay1(2); wx5=0; //F wx6=1; P0=0xBF; delay1(2); wx6=0; //- wx7=1; P0=table[z1]; delay1(2); wx7=0; //分十位 wx8=1; P0=table[z2]; delay1(2); wx8=0; //分個位 } if (( K1num==2 )&&(K3num==3)) { TR1=1; wx1=1; P0=0x89; delay1(2); wx1=0; //H wx2=1; P0=0xBF; delay1(2); wx2=0; //- wx3=1; P0=table1[n1]; delay1(2); wx3=0; //時十位 wx4=1; P0=table1[n2]; delay1(2); wx4=0; //時個位 wx5=1; P0=0x8E; delay1(2); wx5=0; //F wx6=1; P0=0xBF; delay1(2); wx6=0; //- if(count2<60) {wx7=1; P0=table[z1]; delay1(2); wx7=0;} //分十位 else{wx7=1; P0=0xff; delay1(2); wx7=0;} wx8=1; P0=table[z2]; delay1(2); ;wx8=0; //分個位 } if (( K1num==2 )&&(K3num==4)) { TR1=1; wx1=1; P0=0x89; delay1(2); wx1=0; //H wx2=1; P0=0xBF; delay1(2); wx2=0; //- wx3=1; P0=table1[n1]; delay1(2); wx3=0; //時十位 wx4=1; P0=table1[n2]; delay1(2); wx4=0; //時個位 wx5=1; P0=0x8E; delay1(2); wx5=0; //F wx6=1; P0=0xBF; delay1(2); wx6=0; //- wx7=1; P0=table[z1]; delay1(2); wx7=0; //分十位 if(count2<60) {wx8=1; P0=table[z2]; delay1(2); wx8=0;} //分個位 else{wx8=1; P0=0xff; delay1(2); wx8=0;} } //溫度調整顯示 if( (K1num==3)&&(K4num==0) ) { TR1=0; wx1=1; P0=0x89; delay1(2); wx1=0; //H wx2=1; P0=0xBF; delay1(2); wx2=0; //- wx3=1; P0=table1[H1]; delay1(2); wx3=0; //時十位 wx4=1; P0=table1[H2]; delay1(2); wx4=0; //時個位 wx5=1; P0=0xC7; delay1(2); wx5=0; //L wx6=1; P0=0xBF; delay1(2); wx6=0; //- wx7=1; P0=table[L1]; delay1(2); wx7=0; //分十位 wx8=1; P0=table[L2]; delay1(2); wx8=0; //分個位 } if( (K1num==3)&&(K4num==1) ) { TR1=1; wx1=1; P0=0x89; delay1(2); wx1=0; //H wx2=1; P0=0xBF; delay1(2); wx2=0; //- if(count2<60) {wx3=1; P0=table1[H1]; delay1(2); wx3=0;} //時十位 else {wx3=1; P0=0xff; delay1(2); wx3=0;} wx4=1; P0=table1[H2]; delay1(2); wx4=0; //時個位 wx5=1; P0=0xC7; delay1(2); wx5=0; //L wx6=1; P0=0xBF; delay1(2); wx6=0; //- wx7=1; P0=table[L1]; delay1(2); wx7=0; //分十位 wx8=1; P0=table[L2]; delay1(2); wx8=0; //分個位 } if( (K1num==3)&&(K4num==2) ) { TR1=1; wx1=1; P0=0x89; delay1(2); wx1=0; //H wx2=1; P0=0xBF; delay1(2); wx2=0; //- wx3=1; P0=table1[H1]; delay1(2); wx3=0; //時十位 if(count2<60) {wx4=1; P0=table1[H2]; delay1(2); wx4=0;} //時個位 else {wx4=1; P0=0xff; delay1(2); wx4=0;} wx5=1; P0=0xC7; delay1(2); wx5=0; //L wx6=1; P0=0xBF; delay1(2); wx6=0; //- wx7=1; P0=table[L1]; delay1(2); wx7=0; //分十位 wx8=1; P0=table[L2]; delay1(2); wx8=0; //分個位 } if( (K1num==3)&&(K4num==3) ) { TR1=1; wx1=1; P0=0x89; delay1(2); wx1=0; //H wx2=1; P0=0xBF; delay1(2); wx2=0; //- wx3=1; P0=table1[H1]; delay1(2); wx3=0; //時十位 wx4=1; P0=table1[H2]; delay1(2); wx4=0; //時個位 wx5=1; P0=0xC7; delay1(2); wx5=0; //L wx6=1; P0=0xBF; delay1(2); wx6=0; //- if(count2<60) {wx7=1; P0=table[L1]; delay1(2); wx7=0;} //分十位 else {wx7=1; P0=0xff; delay1(2); wx7=0;} wx8=1; P0=table[L2]; delay1(2); wx8=0; //分個位 } if( (K1num==3)&&(K4num==4) ) { TR1=1; wx1=1; P0=0x89; delay1(2); wx1=0; //H wx2=1; P0=0xBF; delay1(2); wx2=0; //- wx3=1; P0=table1[H1]; delay1(2); wx3=0; //時十位 wx4=1; P0=table1[H2]; delay1(2); wx4=0; //時個位 wx5=1; P0=0xC7; delay1(2); wx5=0; //L wx6=1; P0=0xBF; delay1(2); wx6=0; //- wx7=1; P0=table[L1]; delay1(2); wx7=0; //分十位 if(count2<60) {wx8=1; P0=table[L2]; delay1(2); wx8=0;} //分個位 else{wx8=1; P0=0xff; delay1(2); wx8=0;} } //喇叭開啟關閉顯示 if( (K1num==4)&&(K5num==0) ) { TR1=0; wx1=1; P0=0x92; delay1(2); wx1=0; //S wx2=1; P0=0x8C; delay1(2); wx2=0; //P wx3=1; P0=0x81; delay1(2); wx3=0; //A wx4=1; P0=0xF0; delay1(2); wx4=0; //C wx5=1; P0=0xBF; delay1(2); wx5=0; //- wx6=1; P0=0xF7; delay1(2); wx6=0; //_ wx7=1; P0=0xF7; delay1(2); wx7=0; //_ wx8=1; P0=0xBF; delay1(2); wx8=0; //- } if( (K1num==4)&&(K5num==1) ) { TR1=1; wx1=1; P0=0x92; delay1(2); wx1=0; //S wx2=1; P0=0x8C; delay1(2); wx2=0; //P wx3=1; P0=0x81; delay1(2); wx3=0; //A wx4=1; P0=0xF0; delay1(2); wx4=0; //C wx5=1; P0=0xBF; delay1(2); wx5=0; //- wx6=1; P0=0xC0; delay1(2); wx6=0; //o wx7=1; P0=0x8E; delay1(2); wx7=0; //F wx8=1; P0=0x8E; delay1(2); wx8=0; //F } if( (K1num==4)&&(K5num==2) ) { TR1=1; wx1=1; P0=0x92; delay1(2); wx1=0; //S wx2=1; P0=0x8C; delay1(2); wx2=0; //P wx3=1; P0=0x81; delay1(2); wx3=0; //A wx4=1; P0=0xF0; delay1(2); wx4=0; //C wx5=1; P0=0xBF; delay1(2); wx5=0; //- wx6=1; P0=0xC0; delay1(2); wx6=0; //o wx7=1; P0=0xC8; delay1(2); wx7=0; //n wx8=1; P0=0xBF; delay1(2); wx8=0; //- } } //////////////////////////////////////////////////////////////////////////////////// ///////////////////按鍵功能設置///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// void keycan() { /**********模式選擇***********/ if( K1==0 ) { K1num++; delay(5); if( K1==0 ) { while(!K1); bi(350); if(K1num==5) { K1num=0;bi(650);TR0=1;TR1=0;} } } if(K1num!=0) { if( K2==0 ) { K2num++; K3num++; K4num++; K5num++; delay(5); if( K2==0 ) { while(!K2);bi(100); TR1=1; { if(K2num==5) { K2num=0;bi(400);TR1=0;} if(K3num==5) { K3num=0;bi(400);TR1=0;} if(K4num==5) { K4num=0;bi(400);TR1=0;} if(K5num==3) { K5num=0;bi(400);TR1=0;} }}} } if(K1num!=0) //加 { if( K3==0 ) { delay(5); if( K3==0 ) { while(!K3); bi(100); if((K1num==1)&&(K2num==1)) { qian++; if(qian==3 ) qian=0; } if((K1num==1)&&(K2num==2)) { bai++; if( bai==10) bai=0; } if((K1num==1)&&(K2num==3)) { shi++; if( shi==6 ) shi=0; } if((K1num==1)&&(K2num==4)) { ge++; if( ge==10) ge=0; } if((K1num==2)&&(K3num==1)) { n1++; if( n1==3 ) n1=0; } if((K1num==2)&&(K3num==2)) { n2++; if( n2==10) n2=0; } if((K1num==2)&&(K3num==3)) { z1++; if( z1==6 ) z1=0; } if((K1num==2)&&(K3num==4)) { z2++; if( z2==19) z2=0; } if((K1num==3)&&(K4num==1)) { H1++; if( H1==10) H1=0; } if((K1num==3)&&(K4num==2)) { H2++; if( H2==10) H2=0; } if((K1num==3)&&(K4num==3)) { L1++; if( L1==10) L1=0; } if((K1num==3)&&(K4num==4)) { L2++; if( L2==10) L2=0; } if((K1num==4)&&(K5num==1)) { BEEP=0; } } } if( K4==0 ) { delay(5); if( K4==0 ) { while(!K4); bi(100); if((K1num==1)&&(K2num==1)) { qian--; if(qian==-1) qian=2; } if((K1num==1)&&(K2num==2)) { bai--; if( bai==-1) bai=9; } if((K1num==1)&&(K2num==3)) { shi--; if( shi==-1) shi=5; } if((K1num==1)&&(K2num==4)) { ge--; if( ge==-1) ge=9; } if((K1num==2)&&(K3num==1)) { n1--; if( n1==-1) n1=2; } if((K1num==2)&&(K3num==2)) { n2--; if( n2==-1) n2=9; } if((K1num==2)&&(K3num==3)) { z1--; if( z1==-1) z1=5; } if((K1num==2)&&(K3num==4)) { z2--; if( z2==-1) z2=9; } if((K1num==3)&&(K4num==1)) { H1--; if( H1==-1) H1=9; } if((K1num==3)&&(K4num==2)) { H2--; if( H2==-1) H2=9; } if((K1num==3)&&(K4num==3)) { L1--; if( L1==-1) L1=9; } if((K1num==3)&&(K4num==4)) { L2--; if( L2==-1) L2=9; } if((K1num==4)&&(K5num==2)) { bi(); } } } } } ///////////////////////////////////////////// //////////////// ///////////////////////////////////////////////////////////// /***********主函數********************/ //////////////////////////////////////////////////////////// void main() { BEEP=0; init1(); init2(); qian=0;bai=6;shi=3;ge=0;miao2=0;miao1=0,H1=H2=L1=L2=2,n1=n2=z1=z2=1; while(1) { ReadTemperature(); keycan(); MODE(); } }