sbit KEY1=P3^4; sbit KEY2=P3^5; sbit KEY3=P3^6; sbit KEY4=P3^7; void main (void) { int temp1; float temperature;
char displaytemp[12];//定义显示温度区域临时存储数组 char displaytime[8]; //计算器模块数据
unsigned char num,i,j=0,sign; unsigned char temp[7],temp2[3]; //最大输入8个 bit firstflag; int a=0,b=0,c=0; unsigned char s;
LCD_Init(); //初始化液晶 DelayMs(20); //延时有助于稳定 LCD_Clear(); //清屏 Init_Timer0(); Init_DS18B20(); Ds1302_Init();
//UART_Init();
16
Lcd_User_Chr(); //写入自定义字符
while (1) //主循环 {
KeyScan1();
if(fun ==1) if(fun == 5) fun = 1 ;
{
LCD_Write_String(1,0,\ LCD_Write_String(5,1,\ // LCD_Clear();
}
//读入温度 if(fun==2) {
LCD_Write_Char(14,1,0x01);//写入温度右上角点 LCD_Write_Char(15,1,'C'); //写入字符C
ReadTempFlag=1; if(ReadTempFlag==1) {
ReadTempFlag=0;
17
temp1=ReadTemperature();
temperature=(float)temp1*0.0625;
sprintf(displaytemp,\is %5.3f\打印温度
值輒峄陽檉簖疖網儂號泶。 }
//读入时间 if(fun==3) { 出
{
while(!KEY1);//如果确认按下按键等待按键释
if(!KEY1) //如果检测到低电平,说明按键按下 LCD_Write_String(2,0,\
LCD_Write_String(0,1,displaytemp);//显示第二行 }
{
DelayMs(10); //延时去抖,一般10-20ms
if(!KEY1) //再次确认按键是否按下,没有按下则退
放,没有释放则一直等待
{
//正常时间 小时加1
time_buf1[4]++;
if( time_buf1[4]==24) time_buf1[4]=0;
18
出
Ds1302_Write_Time();
LCD_Clear();
}
}
}
if(!KEY2) //如果检测到低电平,说明按键按下
{
DelayMs(10); //延时去抖,一般10-20ms
if(!KEY2) //再次确认按键是否按下,没有按下则退
{
while(!KEY2);//如果确认按下按键等待按键释
放,没有释放则一直等待
{
尧侧閆繭絳闕
time_buf1[4]--;if(time_buf1[4]==255)time_buf1[4]=23;
绚勵蜆贅。
Ds1302_Write_Time(); //正常时间 小时减1
LCD_Clear();
}
}
}
if(!KEY3) //如果检测到低电平,说明按键按下
19
出
{
DelayMs(10); //延时去抖,一般10-20ms
if(!KEY3) //再次确认按键是否按下,没有按下则退
{
while(!KEY3);//如果确认按下按键等待按键释
放,没有释放则一直等待 出
{
time_buf1[5]++;if(time_buf1[5]==60)time_buf1[5]=0; Ds1302_Write_Time();break;//分加1
LCD_Clear();
}
}
}
if(!KEY4) //如果检测到低电平,说明按键按下
{
DelayMs(10); //延时去抖,一般10-20ms
if(!KEY4) //再次确认按键是否按下,没有按下则退
{
while(!KEY4);//如果确认按下按键等待按键释
20