- #include"reg51.h"
- void delay(void)
- {
- unsigned int i,j;
- for(i=0;i<400;i++)
- for(j=0;j<400;j++)
- ;
- }
- void main(void)
- { unsigned int i;
- unsigned char codep2[]={139,251,141,169,249,169,137,187,137,169};
- unsigned char codep0[]={246,254,254,254,246,247,247,254,246,246};
- while(1)
- {
- for(i=0;i<10;i++)
- {P2=codep2[i];P0=codep0[i];delay(); P0=0xff;P2=0xff;}
- }
- }
能看出来我这是干啥用的代码不?
作者: gaoyang9992006 时间: 2025-1-18 10:43
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit s1=P1^0;
- sbit s2=P1^1;
- sbit s3=P1^2;
- sbit p=P0^7;
- uchar code value[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //定义0~9编码的数组,后面只需要调用数组
- uchar code choice[4]={0x01,0x02,0x04,0x08};
- uchar time; //定义中断次数标识符
- uchar second; //定义秒的标识符
- uchar minute; //定义分的标识符
- uchar hour; //定义小时
- void delay(void)
- {
- uchar t;
- for(t=0;t<100;t++)
- ;
- }
- void delay60ms(void)
- {
- unsigned char i,j;
- for(i=0;i<200;i++)
- for(j=0;j<100;j++)
- ;
- }
- void displaysecond(uchar s)
- {
- P2=choice[0];p=0;delay();P2=choice[1];p=0;delay(); P2=choice[2];p=0;delay();P2=choice[3];p=0;delay();
- }
- void displayminute(uchar m)
- {
- P2=choice[0];P0=value[m%10];delay();P2=choice[1];P0=value[m/10];delay();
- }
- void displayhour(uchar h)
- {
- P2=choice[2];P0=value[h%10];delay();P2=choice[3];P0=value[h/10];delay();
- }
- void key(void)
- {
- if(s1==0)
- {
- delay60ms(); delay60ms();
- if(s1==0) { hour++; }
- }
- if(s2==0)
- {
- delay60ms(); delay60ms();
- if(s2==0) { minute++; }
- }
- if(s3==0)
- {
- delay60ms(); delay60ms();
- if(s3==0)
- {hour=0;minute=0;second=0;}
- }
- }
- void main(void)
- {
- TMOD=0x01;
- EA=1;
- ET0=1;
- TH0=0x4B;
- TL0=0xFF;
- TR0=1;
- time=0;second=0;hour=0;
- while(1)
- {
- displaysecond(second);
- displayminute(minute);
- displayhour(hour);
- div();
- key();
-
- }
- }
- void interserve(void)interrupt 1 using 1 //响应中断程序声明对应的模式
- {
- TH0=(65536-46083)/256;TL0=(65536-46083)%256;
- time++;
- if(time==20)
- {
- time=0;second++;
- }
-
-
- if(second==60)
- {
- second=0;minute++;
- }
- if(minute==60)
- {
- minute=0;hour++;
- }
- if(hour==24)
- hour=0;
-
-
- }
-
作者: gaoyang9992006 时间: 2025-1-18 10:43
- unsigned char year,month,K1,K2,K3,M0;
- void key1();
- void key2();
- void delay();
- unsigned char key();
- unsigned char find();
- void delay() //延时函数
- {
- unsigned char i,j;
- for(i=0;i<2;i++)
- for(j=0;j<165;j++)
- ;
- }
- unsigned char find() //按键功能选择
- {
- if(K1==0)
- {
- delay();
- if(K1==0)
- M0++;delay();
- if(M0>3)
- M0=0;
- }
- return M0;
- }
- unsigned char key(unsigned char M0) //根据功能选项判断执行哪种指令
- {
- if(M0==1)
- key1();
- if(M0==2)
- key2();
- return 0;
- }
- main()
- {
-
- key(find());
-
- }
- /************功能1********************************/
- void key1()
- {
- if(K2==0)
- {delay();
- if(K2==0)
- month++;
- }
- }
- /****************功能2***************************/
- void key2()
- {
- if(K3==0)
- {delay();
- if(K3==0)
- year++;
- }
- }
作者: gaoyang9992006 时间: 2025-1-18 10:45
[attach]2355652[/attach]
当年还学数码管怎么显示数字。
作者: gaoyang9992006 时间: 2025-1-18 10:45
[attach]2355654[/attach]
作者: mintspring 时间: 2025-1-18 14:39
不知道现在的大学是不是也是以51为教学内容
作者: yiy 时间: 2025-1-21 14:40
万年历的程序应该是很多人都玩过的。
作者: mintspring 时间: 2025-1-25 16:02
万年历的程序吗?不错啊,入门都是学这个。
作者: 幸福小强 时间: 2025-1-25 16:57
很不错的用法,学到了。
欢迎光临 21ic电子技术开发论坛 (https://bbs.21ic.com/) |
Powered by Discuz! X3.5 |