基于51单片机的多功能电子钟的设计(4)

2018-11-21 22:26

附录二

多功能电子时钟完整程序 main.c(主程序)

#include\

uchar SetState,SetPlace; uchar renum,x,y,mn,i,nm,m;

uchar code CharCode6[]=\闹钟设定成功 uchar code CharCode7[]=\时间设定中%uchar code CharCode8[]=\闹钟设定中\void IrInit();

void DelayMs2(unsigned int); void redwear(void); void Delay10ms(void);

sbit K1=P2^0; sbit K2=P2^1; sbit K3=P2^2; sbit K4=P2^3;

void main() {

LCD12864_Init(); Ds1302Init1(); ClockInit(); renum=menu(); IT0=1; EX0=1; PX0=0;

EA=1;

while(1) { if(renum==0) { settime(); } else { m=0; setclock();

16

进入时钟\

m++; displaylcd(CharCode6); delay8(3000); settime(); } } }

void LcdDisplay() {

LCD12864_SetWindow(0, 0); LCD12864_WriteData('2'); LCD12864_WriteData('0');

LCD12864_WriteData('0'+TIME[6]/16); LCD12864_WriteData('0'+(TIME[6]&0x0f)); LCD12864_WriteData('-'); LCD12864_WriteData('-');

LCD12864_WriteData('0'+TIME[4]/16); LCD12864_WriteData('0'+(TIME[4]&0x0f)); LCD12864_WriteData('-'); LCD12864_WriteData('-');

LCD12864_WriteData('0'+TIME[3]/16); LCD12864_WriteData('0'+(TIME[3]&0x0f)); LCD12864_WriteData(' '); LCD12864_WriteData(' '); LCD12864_WriteData(' '); LCD12864_WriteData(' '); LCD12864_SetWindow(1, 0);

LCD12864_WriteData('0'+TIME[2]/16); LCD12864_WriteData('0'+(TIME[2]&0x0f)); LCD12864_WriteData('-'); LCD12864_WriteData('-');

LCD12864_WriteData('0'+TIME[1]/16); LCD12864_WriteData('0'+(TIME[1]&0x0f)); LCD12864_WriteData('-'); LCD12864_WriteData('-');

LCD12864_WriteData('0'+TIME[0]/16); LCD12864_WriteData('0'+(TIME[0]&0x0f)); LCD12864_SetWindow(2, 0); LCD12864_WriteData('w'); LCD12864_WriteData('e'); LCD12864_WriteData('e');

LCD12864_WriteData('k'); LCD12864_WriteData(' ');

17

LCD12864_WriteData('0'+(TIME[5]&0x07)); DS18B20(); }

void Int0() interrupt 0 { Delay10ms(); if(K1==0)

{ LCD12864_WriteCmd(0x0c); SetState=~SetState; SetPlace=0; nm=0; if(mn==0) { displaylcd(CharCode7); delay8(3000);mn++; } if(m==0) {Ds1302Init1();} else {Ds1302Init();} } }

void Delay10ms(void) {

unsigned char a,b,c; for(c=1;c>0;c--)

for(b=38;b>0;b--)

for(a=130;a>0;a--); }

void settime() { po=0;

b: while(clock()==0) { if(SetState==0) { mn=0; Ds1302ReadTime(); LcdDisplay(); } else

18

{ mn++; if(K2==0) { SetPlace++; if(SetPlace>=7) SetPlace=0; while((i<50)&&(K2==0)) { Delay10ms(); i++; } i=0; } if(K3==0||K4==0) { if(K3==0) { TIME[SetPlace]++; if((TIME[SetPlace]&0x0f)>9) { TIME[SetPlace]=TIME[SetPlace]+6; } } else {TIME[SetPlace]--; if((TIME[SetPlace]&0x0f)>9) { TIME[SetPlace]=TIME[SetPlace]-6; } } if((TIME[SetPlace]>=0x60)&&(SetPlace<2)) { TIME[SetPlace]=0; } if((TIME[SetPlace]>=0x24)&&(SetPlace==2)) { TIME[SetPlace]=0; } if((TIME[SetPlace]>=0x32)&&(SetPlace==3)) { TIME[SetPlace]=0; }

19

if((TIME[SetPlace]>=0x13)&&(SetPlace==4)) { TIME[SetPlace]=0; } if((TIME[SetPlace]>=0x8)&&(SetPlace==5)) { TIME[SetPlace]=1; } while((i<50)&&(K3==0)||(K4==0))

{ Delay10ms(); i++; } i=0; LcdDisplay(); }

if(nm==0) {

LcdDisplay(); nm++; }

}

switch (SetPlace) { case 0: y=4;x=1; case 1: y=2;x=1; case 2: y=0;x=1; case 3: y=5;x=0; case 4: y=3;x=0; case 5: y=2;x=2; case 6: y=1;x=0; } LCD12864_SetWindow(x,y);

LCD12864_WriteCmd(0x0f);

}

ring(); goto b; }

uchar numb;

20

break; break; break; break; break; break; break;


基于51单片机的多功能电子钟的设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:辽宁省预防接种异常反应补偿办法(试行)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: