按关键词阅读: 设计 单片机 基于 简单 毕业设计 C51 万年历
/中断请求void timer1_int(void);
/中断void charge();
/判断秒分时日月等是否大于额外值 , 若大于向上一位加一void ftime();
/初始时间void time 。
15、on();
/计时void add();
/自加void sub();
/自减void wcmd(uchar del);
/1602写指令void write(uchar del);
/1602写数据void L1602_init(void);
/1602初始化void second();
/秒显示void minute();
/分显示void hours();
/时显示void days();
/日显示void month();
/月显示void years();
/年显示void other();
/符号显示void number();
/键盘输入数字uint count,t;
/中断执行次数 , 光标位置参数uchar 。
16、 sec=0;
/初始秒uchar min=0;
/初始分uchar hour=0;
/初始时uchar day=0;
/初始日uchar mon=0;
/初始月uchar yearh=0;
/初始年前两位uchar yearl=0;
/初始年后两位/1602命令函数void wcmd(uchar del) P0 = del;
RS = 0;
RW = 0;
E = 1;
Delay(1);
E = 0;
Delay(1);
/ 1602写数据函数void write(uchar del) P0 = del;
RS = 1;
RW = 0;
E = 1;
Delay(1);
E = 0;
Delay(1);
/ 1602初始化voi 。
【基于|基于单片机C51的简单万年历设计毕业设计】17、d L1602_init(void)wcmd(0x38);
wcmd(0x38);
wcmd(0x38);
wcmd(0x0e);
wcmd(0x06);
wcmd(0x01);
/显示秒void second()uchar i,j;
i=sec/10;
j=sec%10;
wcmd(0xca);
write(tablei);
write(tablej);
/显示分void minute()uchar i,j;
i=min/10;
j=min%10;
wcmd(0xc7);
write(tablei);
write(tablej);
/显示时void hours()uchar i,j;
i=hour/10;
j=hour%10;
wc 。
18、md(0xc4);
write(tablei);
write(tablej);
/显示日void days()uchar i,j;
i=day/10;
j=day%10;
wcmd(0x8b);
write(tablei);
write(tablej);
/显示月void month()uchar i,j;
i=mon/10;
j=mon%10;
wcmd(0x88);
write(tablei);
write(tablej);
/显示年void years()uchar i,j,m,n;
i=yearh/10;
j=yearh%10;
m=yearl/10;
n=yearl%10;
wcmd(0x83);
write(tablei) 。
19、;
write(tablej);
write(tablem);
write(tablen);
/符号显示void other()wcmd(0xc9);
write(:);
wcmd(0xc6);
write(:);
wcmd(0x87);
write(-);
wcmd(0x8a);
write(-);
/延时void Delay(uint xms)uint i,j;
for(i=0;
i=100) count=0;
charge();
ftime();
/显示初始时间/时间初值void ftime()second();
Delay(5);
minute();
Delay(5);
hours();
Delay(5);
days();
Del 。
20、ay(5);
month();
Delay(5);
years();
Delay(5);
other();
Delay(5);
/各个按键返回值uint Keyvalue() uint i,j;
uchar temp;
uint Key_value;
while(1)P1=0xf0;
if(P1!=0xf0)Delay(100);
if(P1!=0xf0)for(j=0;
j0)yearh-;
years();
else if(t=3) /光标在第四个位置时 , 判断年后两位是否大于0 , 是 , 年后两位减1 , 并显示if(yearl1) yearl-;
years();
else if(t=5)/光标在第六个位置时 , 判断月是否大于1 , 是 。
21、 , 月减1 , 并显示if(mon1)mon-;
month();
else if(t=7)/光标在第八个位置时 , 判断日是否大于1 , 是 , 日减1 , 并显示if(day1)day-;
days();
else if(t=9) /光标在第十个位置时 , 判断时是否大于0 , 是 , 时减1 , 并显示if(hour0)hour-;
hours();
else if(t=11) /光标在第十二个位置时 , 判断分是否大于0 , 是 , 分减1 , 并显示if(min0)min-;
minute();
else if(t=13) /光标在第十四个位置时 , 判断秒是否大于0 , 是 , 秒减1 , 并显示if(sec0)sec-;
second();
/主函数void main 。
22、()uchar keys;
uint i,key;
/数组a的参数i=0;
t=0;
/位置参数L1602_init();
/1602初始化L1602_string(1,5,Showtime);
/初始界面显示L1602_string(2,5,Welcome!);
/初始界面显示while(1) key=Keyvalue();
/将键值赋值给keykeys=tablekey;
if(keys=) /判断键值是否为 , 是 , 执行计时 Time0_Init();
while(1)timeon();
else if(keys=!)/判断键值是否为! , 是 , 显示初始时间 , 光标在第一个位置ftime();
wcmd(0x 。
23、83);
else if(keys=-|keys=+) /判断键值是否为+或- if(keys=+) /键值为+ , 执行自加函数add();
else /键值为- , 执行自减函数sub();
/判断键值是否为=1)i-;
t=t-1;
wcmd(wt);
else if(keys=) /判断键值是否为 , 是 , 光标不在最右边时 , 光标右移一位if(t13)i+;
t=t+1;
wcmd(wt);
else /键值为数字键时 , 将键值放入a数组中 , 在调用函数 , 显示当前设置的时间 number();
i=i%14;
ai=key;
i+;
t+;
number();
/输入数字void number()yearh=a0*10+a1;
yea 。
稿源:(未知)
【傻大方】网址:/a/2021/0711/0022846012.html
标题:基于|基于单片机C51的简单万年历设计毕业设计( 三 )