經(jīng)過兩天熬夜的艱苦奮戰(zhàn),在原程序基礎(chǔ)上進(jìn)行升級,添加按鍵多功能操作
新增功能:1. K1模式轉(zhuǎn)換,可自由切換:主界面顯示,時(shí)間調(diào)整,鬧鐘設(shè)置,溫度上下限設(shè)定等。等 2. K2選定需要調(diào)整的位數(shù)。
切換至?xí)r間調(diào)整時(shí),通過K3-"加",K4-"減"按鍵調(diào)整數(shù)值。
切換至鬧鐘設(shè)置時(shí),通過K3-"加",K4-"減"按鍵調(diào)整數(shù)值。
切換至溫度上下限設(shè)定時(shí),通過K3-"加",K4-"減"按鍵調(diào)整數(shù)值。
準(zhǔn)備擴(kuò)展的新功能:鬧鐘音樂,喇叭開啟和關(guān)閉,。
操作說明:
開機(jī)進(jìn)入主界面,顯示時(shí)鐘和溫度。按下K1時(shí),進(jìn)入模式選擇,(有時(shí)間調(diào)整,鬧鐘設(shè)置,溫度上下限設(shè)定等),當(dāng)K1按下四次后,長響一聲,回到主界面。
當(dāng)K1(模式選擇鍵)按下第一次,選擇在時(shí)間調(diào)整時(shí),按下K2,選定需要調(diào)整的位數(shù),選定的位數(shù)會(huì)一秒鐘不停的閃爍。然后按下K3 “加”或者K4 “減”按鍵,進(jìn)行數(shù)值的加減,當(dāng)K2按到五次時(shí),返回時(shí)間調(diào)整界面。
再按下K1(模式選擇鍵)按下第二次,進(jìn)入到下一個(gè)模式,鬧鐘設(shè)置。按下K2,選定需要調(diào)整的位數(shù),選定的位數(shù)會(huì)一秒鐘不停的閃爍。然后按下K3 “加”或者K4 “減”按鍵,進(jìn)行數(shù)值的加減,當(dāng)K2按到五次時(shí),返回鬧鐘設(shè)置界面。
再按下K1(模式選擇鍵)按下第三次,進(jìn)入到下一個(gè)模式,溫度上下限設(shè)定。按下K2,選定需要調(diào)整的位數(shù),選定的位數(shù)會(huì)一秒鐘不停的閃爍。然后按下K3 “加”或者K4 “減”按鍵,進(jìn)行數(shù)值的加減,當(dāng)K2按到五次時(shí),返回溫度上下限設(shè)定界面。
當(dāng)K1(模式選擇鍵)按下第四次,返回到時(shí)鐘和溫度主界面顯示。


采用的是stc89c51單片機(jī),代碼為自己原創(chuàng),沒有進(jìn)行整理和優(yōu)化,有點(diǎn)亂,還有些沒有加注釋說明
完整的源代碼下載地址:http://www.raoushi.com/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};
/******延時(shí)程序*******/
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復(fù)位 ds18b20通信端口
delay(8); //稍做延時(shí)
DQ = 0; //單片機(jī)將DQ拉低
delay(80); //精確延時(shí) 大于 480us
DQ = 1; //拉高總線
delay(4);
x=DQ; //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗
delay(20);
}
/***********ds18b20讀一個(gè)字節(jié)**************/
uchar ReadOneChar()
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 高電平拉成低電平時(shí)讀周期開始
dat>>=1;
DQ = 1; // 給脈沖信號(hào)
if(DQ)
dat|=0x80; //
delay(4);
}
return(dat);
}
/*************ds18b20寫一個(gè)字節(jié)****************/
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0; //從高電平拉至低電平時(shí),寫周期的開始
DQ = dat&0x01; //數(shù)據(jù)的最低位先寫入
delay(5); //60us到120us延時(shí)
DQ = 1;
dat>>=1; //從最低位到最高位傳入
}
}
/**************讀取ds18b20當(dāng)前溫度************/
void ReadTemperature()
{
unsigned char a=0;
unsigned b=0;
unsigned t=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳過讀序號(hào)列號(hào)的操作
WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換
delay(1); // this message is wery important
Init_DS18B20();
WriteOneChar(0xCC); //跳過讀序號(hào)列號(hào)的操作
WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度
delay(1);
a=ReadOneChar(); //讀取溫度值低位
b=ReadOneChar(); //讀取溫度值高位
temp1=b<<4; //高8位中后三位數(shù)的值
temp1+=(a&0xf0)>>4; //低8位中的高4位值加上高8位中后三位數(shù)的值 temp1室溫整數(shù)值
temp2=a&0x0f; //小數(shù)的值
temp=((b*256+a)>>4); //當(dāng)前采集溫度值除16得 實(shí)際溫度值 zhenshu
xs=temp2*0.0625*10; //小數(shù)位,若為0.5則算為5來顯示 xs小數(shù) xiaoshu
}
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
/****時(shí)鐘 端口定義******/
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;//設(shè)置鬧鐘變量
uchar code table1[]={0xc0,0xcf,0xa4,0x86,0x8b,
0x92,0x90,0xc7,0x80,0x82};
////////////////////////////////////////////
/***************按鍵調(diào)時(shí)程序***************/
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;
//////////////////////////////////////////
/**********報(bào)警聲音**************/
bi(uint t)
{
int c,n;
for(c=0;c<t;c++)
{
for(n=0;n<50;n++);
BEEP=~BEEP; //按位取反BEEP
}
return(t);
}
///////////////////////////////////////////////
/********定時(shí)器初始化*************/
void init1()
{
TMOD=0x01; //定義定時(shí)器0,工作方式1
TH0=(65536-50000)/256; //高8位
TL0=(65536-50000)%256; //低8位
EA=1; //開全局中斷
ET0=1;
TR0=1; //打開定時(shí)器
}
///////////////////////////////////////////////
/***********定時(shí)器中斷函數(shù)************/
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; //定義定時(shí)器0,工作方式1
TH1=(65536-50000)/256; //高8位
TL1=(65536-50000)%256; //低8位
EA=1; //開全局中斷
ET1=1;
TR1=1; //打開定時(shí)器
}
///////////////////////////////////////////////
/***********定時(shí)器中斷函數(shù)************/
void timer1() interrupt 3
{
TH1=50;
TL1=50;
count2++;
if( count2==120 ) {count2=0; }}
void MODE() //模式選擇
{
//正常顯示 時(shí)鐘和溫度
if( K1num==0 )
{
TR0=1;TR1=0; //打開定時(shí)器0,關(guān)閉定時(shí)器1
wx1=1; P0=table[qian]; delay1(2);wx1=0; //時(shí)十位
if( count1<9.5 ) //時(shí)分之間的小數(shù)點(diǎn)閃爍,定時(shí)器0小于0.5秒,小數(shù)點(diǎn)亮
{
wx2=1; P0=table[bai]+0X80; delay1(2); wx2=0; //時(shí)個(gè)位打開小數(shù)點(diǎn)
wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0; //分十位+小數(shù)點(diǎn)
}
else //定時(shí)器0大于0.5秒,小數(shù)點(diǎn)滅
{
wx2=1; P0=table[bai]; delay1(2); wx2=0; //時(shí)個(gè)位關(guān)閉小數(shù)點(diǎn)
wx3=1; P0=table1[shi]; delay1(2); wx3=0; //分十位關(guān)閉小數(shù)點(diǎn)
}
wx4=1; P0=table1[ge]; delay1(2); wx4=0; //分個(gè)位
wx5=1; P0=table[temp/10]; delay1(2); wx5=0; //溫度十位
wx6=1; P0=table[temp%10]; delay1(2); wx6=0; //溫度個(gè)位
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); }
}
//時(shí)間調(diào)整顯示
if((K1num==1 )&&(K2num==0))
{
TR1=0;
wx1=1; P0=table[qian]; delay1(2); wx1=0; //時(shí)十位
wx2=1; P0=table[bai]+0X80; delay1(2); wx2=0; //時(shí)個(gè)位,小數(shù)點(diǎn)停止不動(dòng)
wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0; //分十位,小數(shù)點(diǎn)停止不動(dòng)
wx4=1; P0=table1[ge]; delay1(2); wx4=0; //分個(gè)位
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; } //時(shí)十位
else {wx1=1; P0=0xff; delay1(2); wx1=0; } //時(shí)十位
wx2=1; P0=table[bai]+0X80; delay1(2); wx2=0; //時(shí)個(gè)位,小數(shù)點(diǎn)停止不動(dòng)
wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0; //分十位,小數(shù)點(diǎn)停止不動(dòng)
wx4=1; P0=table1[ge]; delay1(2); wx4=0; //分個(gè)位
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; //時(shí)十位
if (count2<60)
{wx2=1; P0=table[bai]+0X80; delay1(2); wx2=0; } //時(shí)個(gè)位,小數(shù)點(diǎn)停止不動(dòng)
else {wx2=1; P0=0xff; delay1(2); wx2=0; }
wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0; //分十位,小數(shù)點(diǎn)停止不動(dòng)
wx4=1; P0=table1[ge]; delay1(2); wx4=0; //分個(gè)位
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; //時(shí)十位
wx2=1; P0=table[bai]+0X80; delay1(2); wx2=0; //時(shí)個(gè)位,小數(shù)點(diǎn)停止不動(dòng)
if (count2<60)
{wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0; } //分十位,小數(shù)點(diǎn)停止不動(dòng)
else {wx3=1; P0=0xff; delay1(2); wx3=0; }
wx4=1; P0=table1[ge]; delay1(2); wx4=0; //分個(gè)位
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; //時(shí)十位
wx2=1; P0=table[bai]+0X80; delay1(2); wx2=0; //時(shí)個(gè)位,小數(shù)點(diǎn)停止不動(dòng)
wx3=1; P0=table1[shi]+0X80; delay1(2); wx3=0; //分十位,小數(shù)點(diǎn)停止不動(dòng)
if (count2<60)
{wx4=1; P0=table1[ge]; delay1(2); wx4=0; }//分個(gè)位
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; //-
}
//鬧鐘調(diào)整顯示
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; //時(shí)十位
wx4=1; P0=table1[n2]; delay1(2); wx4=0; //時(shí)個(gè)位
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; //分個(gè)位
}
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;} //時(shí)十位
else {wx3=1; P0=0xff; delay1(2); wx3=0;}
wx4=1; P0=table1[n2]; delay1(2); wx4=0; //時(shí)個(gè)位
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; //分個(gè)位
}
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; //時(shí)十位
if(count2<60)
{wx4=1; P0=table1[n2]; delay1(2); wx4=0;} //時(shí)個(gè)位
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; //分個(gè)位
}
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; //時(shí)十位
wx4=1; P0=table1[n2]; delay1(2); wx4=0; //時(shí)個(gè)位
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; //分個(gè)位
}
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; //時(shí)十位
wx4=1; P0=table1[n2]; delay1(2); wx4=0; //時(shí)個(gè)位
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;} //分個(gè)位
else{wx8=1; P0=0xff; delay1(2); wx8=0;}
}
//溫度調(diào)整顯示
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; //時(shí)十位
wx4=1; P0=table1[H2]; delay1(2); wx4=0; //時(shí)個(gè)位
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; //分個(gè)位
}
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;} //時(shí)十位
else
{wx3=1; P0=0xff; delay1(2); wx3=0;}
wx4=1; P0=table1[H2]; delay1(2); wx4=0; //時(shí)個(gè)位
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; //分個(gè)位
}
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; //時(shí)十位
if(count2<60)
{wx4=1; P0=table1[H2]; delay1(2); wx4=0;} //時(shí)個(gè)位
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; //分個(gè)位
}
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; //時(shí)十位
wx4=1; P0=table1[H2]; delay1(2); wx4=0; //時(shí)個(gè)位
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; //分個(gè)位
}
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; //時(shí)十位
wx4=1; P0=table1[H2]; delay1(2); wx4=0; //時(shí)個(gè)位
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;} //分個(gè)位
else{wx8=1; P0=0xff; delay1(2); wx8=0;}
}
//喇叭開啟關(guān)閉顯示
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; //-
}
}
////////////////////////////////////////////////////////////////////////////////////
///////////////////按鍵功能設(shè)置/////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
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(); }
}
}
}
}
/////////////////////////////////////////////
////////////////
/////////////////////////////////////////////////////////////
/***********主函數(shù)********************/
////////////////////////////////////////////////////////////
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();
}
}

