- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit en=P3^4;
- sbit rs=P3^5;
- sbit rw=P3^6;
- sbit s2=P3^0;
- sbit s3=P3^1;
- sbit s4=P3^2;
- sbit s5=P3^3;
- uchar shi,fen,miao,num,num1=0,num2=0,num3=0,flag;
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void busy()
- {
- uchar busy;
- P0=0xff;
- rs=0;
- rw=1;
- do
- {
- en=1;
- busy=P0;
- en=0;
-
- }while(busy & 0x80);//取最高位
-
- }
- void write_com(uchar com)
- {
- busy();
- rs=0;
- rw=0;
- P0=com;
- en=1;
- en=0;
- }
- void write_date(uchar date)
- {
- busy();
- rs=1;
- rw=0;
- P0=date;
- en=1;
- en=0;
- }
- void display(uchar num,weizhi)
- {
- uchar shi,ge;
- shi=num/10;
- ge=num%10;
- write_com(0x80+0x03+weizhi);
- write_date(0x30+shi);
- write_date(0x30+ge);
- }
- void init()
- {
- write_com(0x38);
- write_com(0x0c);
- write_com(0x06);
- write_com(0x01);//清屏
- write_com(0x80|0x07);
- write_date(':');
- write_com(0x80|0x0a);
- write_date(':');
- display(0,2);
- display(0,5);
- display(0,8);
- TMOD=0x01;
- TH0=(65536-45872)/256;
- TL0=(65536-45872)%256;
- EA=1;
- ET0=1;
- TR0=0;
- }
- void keyscan()
- {
- if(s5==0)
- {
- delay(10);
- if(s5==0)
- {
- while(!s5);
- TR0=~TR0;
- }
- }
- if(s3==0)
- {
- delay(10);
- if(s3==0)
- {
- num2++;
- if(num2==60)
- num2=0;
- display(num2,5);
- while(!s3);
- }
- }
- if(s2==0)
- {
- delay(10);
- if(s2==0)
- {
- num3++;
- if(num3==24)
- num3=0;
- display(num3,2);
- while(!s2);
- }
- }
- }
- void main()
- {
- init();
- while(1)
- {
- keyscan();
- }
- }
- void time0() interrupt 1
- {
- TH0=(65536-45872)/256;
- TL0=(65536-45872)%256;
- num++;
- if(num==20)
- {
- num=0;
- num1++;
- }
- display(num1,8);
- if(num1==60)
- {
- num1=0;
- num2++;
- if(num2==60)
- {
- num2=0;
- num3++;
- if(num3==24)
- {
- num3=0;
- }
- display(num3,2);
- }
- display(num2,5);
- }
- }
|