微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机驱动DS1302时间DS18B20温度12864液晶显示完整程序设计

单片机驱动DS1302时间DS18B20温度12864液晶显示完整程序设计

时间:12-11 来源:互联网 点击:


hei_lcd(unsigned char x,y){ //全黑用来做闪标用
char iy,ix,di,i;
di=0x00;
if(x>63){
x=x-64;
cs2_lcd();
}
else cs1_lcd();
i=0;
for(iy=0;iy2;iy++){
for(ix=0;ix16;ix++){
y_lcd(iy+y);
x_lcd(ix+x);
w_lcd(di);
}
}
}
key_t(){ //键盘key1 加1 key2 减1

if(!key1){
key_time++;
delay1(20000);
while(!key1);
}
if(!key2){
key_time--;
delay1(20000);
while(!key2);
}
}


void delay11(word useconds)
{
for(;useconds>0;useconds--)
key_t();
}

time_key(){
unsigned char keyd,ktime;
unsigned int year;
word kk;
keyd=0;
kk=10000;///闪动快慢
if(!key0){
for(;;){
if(!key0){
keyd=keyd+1;
delay1(500);
if(keyd>8)keyd=1;
key_time=0;//////每设牟换一个就把存设时间清0
key0=1;
while(!key0);
key0=1;
}
////////////////////////闪程序
if(keyd==1){//=1进入秒闪 同时设置秒时间
key_time=(time1[0]0x0f)+((time1[0]0xf0)>>4)*10; //将数姐里的数度到key_time里 10进制
hei_lcd(112,0);//x y
delay11(kk);//////闪动快慢
if(key_time>=60)key_time=0;
d12864_lcd(112,0,key_time/10);
d12864_lcd(120,0,key_time-(key_time/10)*10);
time1[0]=(((key_time/10)4)0xf0)+(key_time-(key_time/10)*10); //换成BCD码存到数组里
delay1(10000);
}
if(keyd==2){//=1进入分闪 同时设置秒时间
key_time=(time1[1]0x0f)+((time1[1]0xf0)>>4)*10; //将数姐里的数度到key_time里 10进制
hei_lcd(88,0);//x y
delay11(kk);//////闪动快慢
if(key_time>=60)key_time=0;
d12864_lcd(88,0,key_time/10);
d12864_lcd(96,0,key_time-(key_time/10)*10);
delay1(10000);
time1[1]=(((key_time/10)4)0xf0)+(key_time-(key_time/10)*10); //换成BCD码存到数组里
}
if(keyd==3){//=1进入时闪 同时设置秒时间
key_time=(time1[2]0x0f)+((time1[2]0xf0)>>4)*10; //将数姐里的数度到key_time里 10进制
hei_lcd(64,0);//x y
delay11(kk);//////闪动快慢
if(key_time>=24)key_time=0;
d12864_lcd(64,0,key_time/10);
d12864_lcd(72,0,key_time-(key_time/10)*10);
time1[2]=(key_time/10)4+(key_time-key_time/10);
delay1(10000);
time1[2]=(((key_time/10)4)0xf0)+(key_time-(key_time/10)*10); //换成BCD码存到数组里
}
if(keyd==4){//=1进入年闪 同时设置秒时间
key_time=(time1[6]0x0f)+((time1[6]0xf0)>>4)*10; //将数姐里的数度到key_time里 10进制
hei_lcd(16,2);//x y
delay11(kk);//////闪动快慢
if(key_time>99)key_time=0;
d12864_lcd(16,2,key_time/10);
d12864_lcd(24,2,key_time-(key_time/10)*10);
time1[6]=(key_time/10)4+(key_time-key_time/10);
delay1(10000);
time1[6]=(((key_time/10)4)0xf0)+(key_time-(key_time/10)*10); //换成BCD码存到数组里
}

if(keyd==5){//=1进入月闪 同时设置秒时间
key_time=(time1[4]0x0f)+((time1[4]0xf0)>>4)*10; //将数姐里的数度到key_time里 10进制
hei_lcd(40,2);//x y
delay11(kk);//////闪动快慢
if(key_time>=13)key_time=0;
d12864_lcd(40,2,key_time/10);
d12864_lcd(48,2,key_time-(key_time/10)*10);
time1[4]=(key_time/10)4+(key_time-key_time/10);
delay1(10000);
time1[4]=(((key_time/10)4)0xf0)+(key_time-(key_time/10)*10); //换成BCD码存到数组里
}

if(keyd==6){//=1进入日闪 同时设置秒时间
key_time=(time1[3]0x0f)+((time1[3]0xf0)>>4)*10; //将数姐里的数度到key_time里 10进制
year=(time1[4]0x0f)+(((time1[4]0xf0)>>4)*10)+2000;
switch(time1[4]){ //计算闰月
case 1: ktime=31;break;
case 3: ktime=31;break;
case 5: ktime=31;break;
case 7: ktime=31;break;
case 8: ktime=31;break;
case 10: ktime=31;break;
case 12: ktime=31;break;
case 4: ktime=30;break;
case 6: ktime=30;break;
case 9: ktime=30;break;
case 11: ktime=30;break;
case 2: if(year%4==0year%100!=0||year%400==0) ktime=29;
else ktime=29;break;
}
hei_lcd(64,2);//x y
delay11(kk);//////闪动快慢
if(key_time>ktime)key_time=0;
d12864_lcd(64,2,key_time/10);
d12864_lcd(72,2,key_time-(key_time/10)*10);
time1[3]=(key_time/10)4+(key_time-key_time/10);
delay1(10000);
time1[3]=(((key_time/10)4)0xf0)+(key_time-(key_time/10)*10); //换成BCD码存到数组里
}

if(keyd==7){//=1进入星期闪 同时设置秒时
char iy,ix,di,i;
key_time=time1[5];
di=0x00;
cs2_lcd();
i=0;
for(iy=0;iy2;iy++){
for(ix=0;ix8;ix++){
y_lcd(iy+4);
x_lcd(ix+96);
w_lcd(di);
}
di=00;
}
delay11(kk);//////闪动快慢
if(key_time>7)key_time=0;
d12864_lcd(96,4,key_time);
time1[5]=key_time;
delay1(10000);
time1[5]=key_time; //换成BCD码存到数组里
}
////////////////////
if(!key3)break;
}
ds1302_c(); ///更改时间
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top