用定时器做的可调电子钟.docx
- 文档编号:27826281
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:21
- 大小:16.65KB
用定时器做的可调电子钟.docx
《用定时器做的可调电子钟.docx》由会员分享,可在线阅读,更多相关《用定时器做的可调电子钟.docx(21页珍藏版)》请在冰豆网上搜索。
用定时器做的可调电子钟
#include
#include<51hei.h>
#include
#defineucharunsignedchar
sbitneum=P3^2;
sbitup=P3^6;
sbitdown=P3^7;
ucharcodetable2[]="MON";
ucharcodetable3[]="TUE";
ucharcodetable4[]="WED";
ucharcodetable5[]="THU";
ucharcodetable6[]="FRI";
ucharcodetable7[]="SAT";
ucharcodetable8[]="SUN";
ucharcount,neum_key,a,b;
ucharmiao,fen,shi,ri,yue,nian,zhou;
voidinit_time(void)
{
TMOD=0x01;//定时器0,工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//初值
TR0=1;
ET0=1;
EA=1;
}
voidwrite_sfm(ucharaddr,uchardate)
{
ucharshi,ge;
shi=date/10;
ge=date%10;
write_cmd(0x80+0x40+addr);
write_dat(0x30+shi);
write_dat(0x30+ge);
}
voidwrite_nyr(ucharaddr,uchardate1)
{
ucharshi,ge;
shi=date1/10;
ge=date1%10;
write_cmd(0x80+addr);
write_dat(0x30+shi);
write_dat(0x30+ge);
}
voidkeyscan()
{
if(neum==0)
{
delay(5);
if(neum==0)
{
neum_key++;
while(!
neum);
if(neum_key==1)
{
TR0=0;
write_cmd(0x80+0x40+11);
write_cmd(0x0f);
}
}
if(neum_key==2)
{
write_cmd(0x80+0x40+8);
write_cmd(0x0f);
}
if(neum_key==3)
{
write_cmd(0x80+0x40+5);
write_cmd(0x0f);
}
if(neum_key==4)
{
write_cmd(0x80+13);
write_cmd(0x0f);
}
if(neum_key==5)
{
write_cmd(0x80+10);
write_cmd(0x0f);
}
if(neum_key==6)
{
write_cmd(0x80+7);
write_cmd(0x0f);
}
if(neum_key==7)
{
write_cmd(0x80+4);
write_cmd(0x0f);
}
if(neum_key==8)
{
neum_key=0;
write_cmd(0x0c);
TR0=1;
}
}
///////////////////////////////////////////////////加减计算/////////////////////////////////////////秒
if(neum_key==1)
{
if(up==0)
{
delay(5);
if(up==0)
{
while(!
up);
miao++;
if(miao==60)
{
miao=0;
}
write_sfm(10,miao);
write_cmd(0x80+0x40+11);
}
}
if(down==0)
{
delay(5);
if(down==0)
{
while(!
down);
miao--;
if(miao==(-1))
{
miao=59;
}
write_sfm(10,miao);
write_cmd(0x80+0x40+11);
}
}
}
///////////////////////分//////////////////////////
if(neum_key==2)
{
if(up==0)
{
delay(5);
if(up==0)
{
while(!
up);
fen++;
if(fen==60)
{
fen=0;
}
write_sfm(7,fen);
write_cmd(0x80+0x40+8);
}
}
if(down==0)
{
delay(5);
if(down==0)
{
while(!
down);
fen--;
if(fen==(-1))
{
fen=59;
}
write_sfm(7,fen);
write_cmd(0x80+0x40+8);
}
}
}
///////////////////////////////////////////时
if(neum_key==3)
{
if(up==0)
{
delay(5);
if(up==0)
{
while(!
up);
shi++;
if(shi==24)
{
shi=0;
}
write_sfm(4,shi);
write_cmd(0x80+0x40+5);
}
}
if(down==0)
{
delay(5);
if(down==0)
{
while(!
down);
shi--;
if(shi==(-1))
{
shi=23;
}
write_sfm(4,shi);
write_cmd(0x80+0x40+5);
}
}
}
///////////////////////////////////////////星期
if(neum_key==4)
{
if(up==0)
{
delay(5);
if(up==0)
{
a++;
while(!
up);
if(a==1)
{
write_cmd(0x80+13);
for(b=0;b<3;b++)
{
write_dat(table2[b]);
}
}
}
if(a==2)
{
write_cmd(0x80+13);
for(b=0;b<3;b++)
{
write_dat(table3[b]);
}
}
if(a==3)
{
write_cmd(0x80+13);
for(b=0;b<3;b++)
{
write_dat(table4[b]);
}
}
if(a==4)
{
write_cmd(0x80+13);
for(b=0;b<3;b++)
{
write_dat(table5[b]);
}
}
if(a==5)
{
write_cmd(0x80+13);
for(b=0;b<3;b++)
{
write_dat(table6[b]);
}
}
if(a==6)
{
write_cmd(0x80+13);
for(b=0;b<3;b++)
{
write_dat(table7[b]);
}
}
if(a==7)
{
a=0;
write_cmd(0x80+13);
for(b=0;b<3;b++)
{
write_dat(table8[b]);
}
}
}
if(down==0)//减星期
{
delay(5);
if(down==0)
{
a++;
while(!
down);
if(a==1)
{
write_cmd(0x80+13);
for(b=0;b<3;b++)
{
write_dat(table8[b]);
}
}
}
if(a==2)
{
write_cmd(0x80+13);
for(b=0;b<3;b++)
{
write_dat(table7[b]);
}
}
if(a==3)
{
write_cmd(0x80+13);
for(b=0;b<3;b++)
{
write_dat(table6[b]);
}
}
if(a==4)
{
write_cmd(0x80+13);
for(b=0;b<3;b++)
{
write_dat(table5[b]);
}
}
if(a==5)
{
write_cmd(0x80+13);
for(b=0;b<3;b++)
{
write_dat(table4[b]);
}
}
if(a==6)
{
write_cmd(0x80+13);
for(b=0;b<3;b++)
{
write_dat(table3[b]);
}
}
if(a==7)
{
a=0;
write_cmd(0x80+13);
for(b=0;b<3;b++)
{
write_dat(table2[b]);
}
}
}
}
///////////////////////////////////////////日
if(neum_key==5)
{
if(up==0)
{
delay(5);
if(up==0)
{
while(!
up);
ri++;
if(ri==32)
{
ri=0;
}
write_nyr(9,ri);
write_cmd(0x80+10);
}
}
if(down==0)
{
delay(5);
if(down==0)
{
while(!
down);
ri--;
if(ri==0)
{
ri=31;
}
write_nyr(9,ri);
write_cmd(0x80+10);
}
}
}
///////////////////////////////////////////yue
if(neum_key==6)
{
if(up==0)
{
delay(5);
if(up==0)
{
while(!
up);
yue++;
if(yue==13)
{
yue=1;
}
write_nyr(6,yue);
write_cmd(0x80+7);
}
}
if(down==0)
{
delay(5);
if(down==0)
{
while(!
down);
yue--;
if(yue==0)
{
yue=12;
}
write_nyr(6,yue);
write_cmd(0x80+7);
}
}
}
///////////////////////////////////////////nian
if(neum_key==7)
{
if(up==0)
{
delay(5);
if(up==0)
{
while(!
up);
nian++;
if(nian==41)
{
nian=13;
}
write_nyr(3,nian);
write_cmd(0x80+4);
}
}
if(down==0)
{
delay(5);
if(down==0)
{
while(!
down);
nian--;
if(nian==12)
{
nian=41;
}
write_nyr(3,nian);
write_cmd(0x80+4);
}
}
}
}
voidmain(void)
{
init_time();
init_lcd();
while
(1)
{
keyscan();
if(count==20)
{
count=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)//周
{
shi=0;
ri++;
if(ri==32)
{
ri=0;
yue++;
if(yue==13)
{
yue=0;
nian++;
if(nian==99)
{
nian=0;
}
write_nyr(4,nian);
}
write_nyr(7,yue);
}
write_nyr(10,ri);
}
write_sfm(4,shi);
}
write_sfm(7,fen);
}
write_sfm(10,miao);
}
}
}
voidtimer0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
}
/////////////////////////////////////////以下是lcd1602头文件////////////////////////////////
#ifndef__LCD1602_H__
#define__LCD1602_H__
sbitrs=P3^5;
sbitrw=P2^7;
sbiten=P3^4;
#definelcd_dataP0
unsignedcharnum;
unsignedcharcodetable[]="2013-12-30SUN";
unsignedcharcodetable1[]="22:
58:
57";
voiddelay(unsignedcharz)//延时函数
{
unsignedcharx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidwrite_cmd(unsignedcharcmd)
{
rs=0;
rw=0;
delay
(2);
lcd_data=cmd;
delay
(2);
en=1;
delay
(2);
en=0;
}
voidwrite_dat(unsignedchardat)
{
rs=1;
rw=0;
delay
(2);
lcd_data=dat;
delay
(2);
en=1;
delay
(2);
en=0;
}
voidinit_lcd(void)
{
guanled();
guandz();
write_cmd(0x38);
write_cmd(0x0c);
write_cmd(0x06);
write_cmd(0x01);
write_cmd(0x80);
for(num=0;num<16;num++)
{
write_dat(table[num]);
}
write_cmd(0x80+0x40);
for(num=0;num<16;num++)
{
write_dat(table1[num]);
}
}
#endif
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 定时器 可调 电子钟