历史上的今天
今天是:2025年12月20日(星期六)
2022年12月20日 | 51单片机四位数码管4个LED灯4个按键实现多种功能
2022-12-20 来源:zhihu
任务描述:用89C51单片机实现如下功能:<初始状态为数码管显示2020,四个灯灭。 1、电路有四个控制按键,四个灯,四个数码管; 2、按键1,按下,,第一个数码管开始从0-9递增,同时第一个灯亮; 3、按键2,按下,第二个数码管开始从0-9显示偶数,同时四个灯的偶数灯亮(即2、4个灯亮); 4、按键3,按下,第三个数码管从0-9显示奇数,同时四个灯的奇数灯亮(即1、3个灯亮); 5、按键4,按下,恢复到初始状态
硬件电路图

元件清单

C语言程序
#include unsigned char tube1[]={0x5b,0x3f,0x5b,0x3f};//数码管初始状态2020 字符码 unsigned char tube2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极字符码 sbit key1=P2^0; sbit key2=P2^1; sbit key3=P2^2; sbit key4=P2^3; sbit led1=P3^0; sbit led2=P3^1; sbit led3=P3^2; sbit led4=P3^3; void delay(unsigned int time); void main() { unsigned char i,W; while(1) { if(key1==1&key2==1&key3==1) //初始状态 { W=0x01; P3=0X00; for(i=0;i<4;i++) { P1 =W; W<<=1; P0=tube1[i]; delay(10); P1 =0x00; } } if(key1==0) // 按键1按下 { delay(10); if(key1==0) { led1=1; led2=0; led3=0; led4=0; W=0x08; for(i=0;i<10;i++) { if(key2==0|key3==0|key4==0) break; P1 =W; P0=tube2[i]; delay(1000); P1 =0x00; } } while(!key1); delay(10); while(!key1); } if(key2==0) //按键2按下 { delay(10); if(key2==0) { led1=0; led3=0; led2=1; led4=1; W=0x04; for(i=0;i<10;i=i+2) { if(key1==0|key3==0|key4==0) break; P1 =W; P0=tube2[i]; delay(1000); P1 =0x00; } } while(!key2); delay(10); while(!key2); } if(key3==0) //按键3按下 { delay(10); if(key3==0) { led1=1; led3=1; led2=0; led4=0; W=0x02; for(i=1;i<10;i=i+2) { if(key2==0|key1==0|key4==0) break; P1 =W; P0=tube2[i]; delay(1000); P1 =0x00; } } while(!key3); delay(10); while(!key3); } } } void delay(unsigned int time) { unsigned int j; for(;time> 0;time--) for(j=0;j<125;j++); }
史海拾趣
|
PXA3XX平台(MONAHANS) 内存升级 128M(两片64)升级到256M(两片128) http://topic.eeworld.net/u/20081121/16/4ba50dc9-fe31-48b9-acce-0619bb010372.html?27857 和这个帖子的情况基本相同,从里面看到不少东西,但我们的两个平台实现上好像有些差距。config.bib和oemaddrtab都差不多。 ...… 查看全部问答> |
|
GPIO驱动中,IO口发生中断后, 读取数据的问题. GPIO驱动中,IO口发生中断后,驱动是读IO口寄存器的一位数据,还是将IO口上的数据全部读完? 三星6410 BSP中有这样的参考代码吗? … 查看全部问答> |
|
我编译DirectX\\Directshow\\ddxclmv项目,已经加入strmiids.lib strmbase.lib ddraw.lib了,但连接时依然报错, 无法解析的外部符号 \"void __cdecl DbgLogInfo(unsigned long,unsigned long,wchar_t const *,...) 无法解析的外部符号 \"public: ...… 查看全部问答> |
|
想问大家,在进行在线升级时,是不是必须使用分散加载的方法,如果不采用分散加载,而是在升级后重新分配堆栈,初始化目标板,然后在运行升级程序可不可以啊?我这样做,程序运行没问题,但不知道,这种方法可不可行… 查看全部问答> |
|
Windows CE讨论群~ 群号49889190~欢迎高手们参加讨论给予帮助~也欢迎新手们增添人气 Windows CE讨论群~ 群号49889190~欢迎高手们参加讨论给予帮助~也欢迎新手们增添人气 新年快乐!… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 03:21 编辑 一. 需要准备的一些模块 1. 微控制器电路模块:单片机,FPGA,ARM,DSP 2. 微控制器外围电路模块:键盘及LED数码管显示器模块,LCD显示器模块,触摸屏显示器模块,RS-485总线通信模块,CAN总线通信 ...… 查看全部问答> |
|
单片机开发工程师-1人岗位职责:1、负责数码电子雷管仿真校准平台软件代码编程; 2、负责延时控制电路测试; 3、负责延时控制电路测试平台的搭建与开发;4、负责研发文档的撰写。任职要求:1、电子工程、自动化、机电、计算机相关专业,本科或 ...… 查看全部问答> |
|
这个图上画出的相频特性范围是360~90,但我希望设置为0~-270,请问程序上该如何改动? 下附程序: clear; s=tf(\'s\'); U1=35;R=2.45;L=38e-6;C=2820e-6;D=0.686; Gvd=-(U1/D)*(s*L/R-D*D)/(D*D+s*L/R+s*s*L*C); margin(Gvd); grid; … 查看全部问答> |




