?? lcd_tem_clock.c
字號:
#include <reg51.h>
#include <DS18B20.H>
#include <DS1302.H>
#include <LCD12864.H>
unsigned char j[8];
sbit KEY1=P3^2;
sbit KEY2=P3^3;
sbit KEY3=P3^4;
sbit LED1=P3^5;
sbit LED2=P3^6;
sbit LED3=P3^7;
uchar time0_count; //time0計數器
void delay10(void)
{
unsigned char i,j;
for(i=0;i<255;i++)
for(j=0;j<200;j++);
}
unsigned char conver(unsigned char a,unsigned char b,unsigned char c)
{
if((a&0x0f)==0x0a) a=a+6;
if(a==b) a=c;
return a;
}
main()
{
bit flag_2=1;
bit flag_3=1;
bit flag_4=1;
int i;
char a;
unsigned char choose=0x01;
InitLCD(); //初始化LCD12864
for(i=0;i<9;i++)
{
ShowNumber(6,i*8+32,i+14);
}
Show32x32(0,0,0);
ShowChina(4,0,7);
ShowChina(4,16,8);
ShowChina(4,32,9);
ShowChina(4,48,10);
ShowNumber(4,64,10); //顯示溫度高位
read_serial(j); //讀取DS1302的時間
ShowNumber(2,32,j[2]>>4&0x03);
ShowNumber(2,40, j[2]&0x0f);
ShowChina(2,48,3);
ShowNumber(2,64,j[1]>>4&0x07);
ShowNumber(2,72, j[1]&0x0f);
ShowChina(2,80,4);
ShowNumber(2,96,j[0]>>4&0x07);
ShowNumber(2,104, j[0]&0x0f);
ShowChina(2,112,5);
ShowNumber(0,32,j[6]>>4&0x0f);
ShowNumber(0,40, j[6]&0x0f);
ShowChina(0,48,0);
ShowNumber(0,64,j[4]>>4&0x01);
ShowNumber(0,72, j[4]&0x0f);
ShowChina(0,80,1);
ShowNumber(0,96,j[3]>>4&0x03);
ShowNumber(0,104, j[3]&0x0f);
ShowChina(0,112,2);
ShowChina(4,104,6);
ShowNumber(4,120,j[5]-1&0x07);
while(1)
{
//send_char_com(0x31);
if(flag_2==1)
read_serial(j); //讀取DS1302的時間
else
write_date_time(j);
a=Read_Temperature(); //讀取DS18B20的溫度
if(a<0) //處理溫度正負
{
a = (-1)*a; // 取補
ShowNumber(4,72,11); //顯示溫度正負
}
else
{
ShowNumber(4,72,12); //顯示溫度正負
}
ShowNumber(4,80,a/100); //顯示溫度高位
ShowNumber(4,88,a/10%10); //顯示溫度中位
ShowNumber(4,96,a%10); //顯示溫度低位
LED3=1;LED2=0;LED1=1;
if(a>40){LED3=0;LED2=1;LED1=1;}
if(a<30){LED3=1;LED2=1;LED1=0;}
if(KEY1==0) //按鍵1--處理設定時間和返回
{
delay10();
if(KEY1==1)
{
delay10();
flag_2=~flag_2;
}
}
if(KEY2==0) //按鍵2--處理選擇設定時間的項目
{
delay10();
if(KEY2==1)
{
delay10();
choose++;
if(choose==8)
choose=0x01;
}
}
if(KEY3==0) //按鍵3--處理設定時間和返回
{ delay10();
if(KEY3==1)
{
delay10();
switch(choose)
{
case 1: j[6]++; j[6]=conver(j[6],0xa0,0x00);break;//年
case 2: j[5]++; j[5]=conver(j[5],0x07,0x00);break;//周
case 3: j[4]++; j[4]=conver(j[4],0x13,0x01);break;//月
case 4: j[3]++; j[3]=conver(j[3],0x32,0x01);break;//日
case 5: j[2]++; j[2]=conver(j[2],0x24,0x00);break;//時
case 6: j[1]++; j[1]=conver(j[1],0x60,0x00);break;//分
case 7: j[0]++; j[0]=conver(j[0],0x60,0x00);break;//秒
}
}
}
if(flag_2==1)
read_serial(j); //讀取DS1302的時間
else
write_date_time(j);
ShowNumber(2,32,j[2]>>4&0x03);
ShowNumber(2,40, j[2]&0x0f);
ShowChina(2,48,3);
ShowNumber(2,64,j[1]>>4&0x07);
ShowNumber(2,72, j[1]&0x0f);
ShowChina(2,80,4);
ShowNumber(2,96,j[0]>>4&0x07);
ShowNumber(2,104, j[0]&0x0f);
ShowChina(2,112,5);
ShowNumber(0,32,j[6]>>4&0x0f);
ShowNumber(0,40, j[6]&0x0f);
ShowChina(0,48,0);
ShowNumber(0,64,j[4]>>4&0x01);
ShowNumber(0,72, j[4]&0x0f);
ShowChina(0,80,1);
ShowNumber(0,96,j[3]>>4&0x03);
ShowNumber(0,104, j[3]&0x0f);
ShowChina(0,112,2);
ShowChina(4,104,6);
ShowNumber(4,120,j[5]-1&0x07);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -