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

2018-11-21 22:26

void LcdDisplay1() {

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

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

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

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

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

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

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

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

void setclock() { mn=1; while(1) { if(SetState!=0) { SetState=0;

21

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

22

{ CLK[numb]=0; } if((CLK[numb]>=0x13)&&(numb==4)) { CLK[numb]=0; } if((CLK[numb]>=0x8)&&(numb==5)) { CLK[numb]=1; } while((i<50)&&(K3==0)||(K4==0)) { Delay10ms(); i++; } i=0; LcdDisplay1(); } if(nm==0) { LcdDisplay1(); nm++; } } switch (numb) { case 0: y=4;x=1; break; case 1: y=2;x=1; break; case 2: y=0;x=1; break; case 3: y=5;x=0; break; case 4: y=3;x=0; break; case 5: y=2;x=2; break; case 6: y=1;x=0; break; } LCD12864_SetWindow(x,y); LCD12864_WriteCmd(0x0f); } }

uchar clock() { uint pi;

for (pi = 0; pi < 7; pi++) {

23

if (CLK[pi] != TIME[pi]) {

return 0; break;

} } return 1; }

ds1302.c(时钟控制)

#include\#include\

uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d};

uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};

void Ds1302Write(uchar addr, uchar dat) {

uchar n; RST = 0; _nop_();

SCLK = 0; _nop_(); RST = 1; _nop_();

for (n=0; n<8; n++) { DSIO = addr & 0x01; addr >>= 1; SCLK = 1; _nop_(); SCLK = 0; _nop_(); }

for (n=0; n<8; n++) { DSIO = dat & 0x01; dat >>= 1;

24

SCLK = 1; _nop_(); SCLK = 0; _nop_(); } RST = 0; _nop_(); }

uchar Ds1302Read(uchar addr) {

uchar n,dat,dat1; RST = 0; _nop_();

SCLK = 0; _nop_(); RST = 1; _nop_();

for(n=0; n<8; n++) { DSIO = addr & 0x01; addr >>= 1; SCLK = 1; _nop_(); SCLK = 0; _nop_(); }

_nop_();

for(n=0; n<8; n++) { dat1 = DSIO; dat = (dat>>1) | (dat1<<7); SCLK = 1; _nop_(); SCLK = 0; _nop_(); }

RST = 0; _nop_(); SCLK = 1;

25


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

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

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

马上注册会员

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