1608895182460.jpg (1.91 MB, 下載次數(shù): 61)
下載附件
2020-12-25 23:59 上傳
- #include<reg51.h>
- #include<E:/lmj/LCD1602.H>
- #define uchar unsigned char
- #define uint unsigned int
- sbit K1=P1^0;
- sbit K2=P1^1;
- sbit K3=P1^2;
- sbit K4=P1^3;
- uchar int_time;
- uchar minute;
- uchar hour;
- uchar code date[]="LuoMengJie";
- uchar code time[]="23:59:55";
- uchar second=55,minute=59,hour=23;
- void delay10ms()
- {
- uchar x,y;
- for(x=0;x<100;x++)
- for(y=0;y<100;y++);
- }
- void clock_init()
- {
- uchar i,j;
- for(i=0;i<10;i++)
- {
- write_data(date[i]);
- }
- write_com(0xC0);
- for(j=0;j<8;j++)
- {
- write_data(time[j]);
- }
- P1=0xff;
- }
- void clock_write(uint s,uint m,uint h)
- {
- write_sfm(0x40,h);
- write_sfm(0x43,m);
- write_sfm(0x46,s);
- }
- void main()
- {
- init1602();//1602初始化
- clock_init();//時鐘初始化
- //時鐘設(shè)置
- TMOD=0x01;//設(shè)置定時計數(shù)器控制寄存器
- EA=1;//中斷允許總開關(guān)
- ET0=1;//定時計數(shù)器0允許開關(guān)
- TH0=(65536-46483)/256;
- TL0=(65536-46483)%256;
- TR0=1;//開始計時
- int_time=0;
- second=55;
- minute=59;
- hour=23;
- //按鍵設(shè)置
- EX0=1;//外部中斷0允許開關(guān)
-
- while(1)
- {
- clock_write(second ,minute ,hour);
- if(K1==0)
- {
- delay10ms();
- if(K1==0)//按鍵1按下,進入編輯模式
- {
- while(1)
- {
- if(K2==0)
- {
- delay10ms();
- if(K2==0)//按鍵2按下
- {
- hour++;
- if(hour==24)
- {
- hour=0;
- }
- }
- delay(300);
- }
- if(K3==0)
- {
- delay10ms();
- if(K3==0)//按鍵3按下
- {
- minute++;
- if(minute==60)
- {
- minute=0;
- hour++;
- }
- if(hour==24)
- {
- hour=0;
- }
- }
- delay(300);
- }
- if(K4==0)
- {
- delay10ms();
- if(K4==0)//按鍵4按下
- {
- break;
- }
- delay(300);
- }
- }
- }
- }
- }
- }
- void TO_interserve(void) interrupt 1 using 1
- {
- int_time++;
- if(int_time==20)
- {
- int_time=0;
- second++;
- }
- if(second==60)
- {
- second=0;
- minute++;
- }
- if(minute==60)
- {
- minute=0;
- hour++;
- }
- if(hour==24)
- {
- hour=0;
- }
- TH0=(65536-46083)/256;
- TL0=(65536-46083)%256;
- }
復制代碼
頭文件:
- #ifndef LCD_CHAR_1602_2005_4_9
- #define LCD_CHAR_1602_2005_4_9
- #define uchar unsigned char
- #define uint unsigned int
- sbit lcdrs=P2^0;
- sbit lcdrw=P2^1;
- sbit lcden=P2^2;
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void write_com(uchar com)
- {
- lcdrw=0;
- lcdrs=0;
- P0=com;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void write_data(uchar date)
- {
- lcdrw=0;
- lcdrs=1;
- P0=date;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void init1602()
- {
- lcdrw=0;
- lcden=0;
- write_com(0x3c);
- write_com(0x0c);
- write_com(0x06);
- write_com(0x01);
- write_com(0x80);
- }
- void write_string(uchar *pp,uint n)
- {
- int i;
- for(i=0;i<n;i++)
- write_data(pp[i]);
- }
- void write_sfm(uchar add,uchar date)
- {
- uchar shi,ge;
- shi=date/10;
- ge=date%10;
- write_com(0x80+add);
- write_data(0x30+shi);
- write_data(0x30+ge);
- }
- #endif
復制代碼 |