基于定时器的51单片机时钟程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于定时器的51单片机时钟程序51单片机时钟程序,基于定时器写出,同时还有定时、日历、键盘调节功能#include
sbit wela=P2^7;
sbit key1=P3^4;
sbit key2=P3^5;
sbit luis=P3^6;
sbit key4=P3^7;
#define uint unsigned int #define uchar unsigned char
uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; uchar code
table2[]={ 0xbf,0x86,0xdb,0xcf, 0xe6,0xed,0xfd,0x87, 0xff,0xef};
uchar a,b,d,shis,ges,
shif,gef,shim,gem,shi, fen,miao,shiy,gey,shir, ger,yue,ri;
void display1(uchar,uchar, uchar,uchar,uchar,uchar); void
display2(uchar,uchar, uchar,uchar);
void init();
void keyscan1();
void keyscan2();
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--); }
void main()
{
init();
a=0;
miao=0;
shi=0;
fen=0;
yue=1;
ri=1;
while(1)
{
if(luis==1)
{
display1(shis,ges,shif,gef,shim,gem); keyscan1();
}
else
{
display2(shiy,gey,shir,ger);
keyscan2();
}
}
}
void init()
{
d=0xaa;
P1=d;
TMOD=0x11;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
}
void display1(uchar shis,uchar ges,uchar shif, uchar gef,uchar shim,uchar gem)
{
dula=1;
P0=table[shis];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(1);
dula=1;
P0=table2[ges]; dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(1);
dula=1;
P0=table[shif]; dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(1);
dula=1;
P0=table2[gef]; dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delay(1);
dula=1;
P0=table[shim];
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delay(1);
dula=1;
P0=table[gem];
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delay(1);
}
void r0() interrupt 1 { TH0=(65536-45872)/256; TL0=(65536-45872)%256; a++;
{
if(a==20) {
a=0;
miao++;
if(miao==60) {
miao=0;
fen++;
if(fen==60) {
fen=0;
shi++;
if(shi==24) {
shi=0;
{
if(yue==1) {
ri++;
if(ri==32) {
ri=0;
yue=yue+1; }