在开发板上,实现数码管的动态显示,在6个数码管中,前面4位显示年份“2022”,后两位是月份,从1月份开始,每隔一段时间加1个月,到12月之后又从1月开始递增,如此往复。注意,只有共阴六个数码管
而且只有月份变化,年份不变就行。需要一个完整具体的代码。
附上蓝桥杯开发板的原理图
51单片机,数码管的动态显示
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CSDN专家-赖老师(软件之家) 2022-04-17 09:55关注
参考如下:
#include "reg52.h" unsigned char code SMG_duanma[18] = { // 0 1 2 3 4 5 6 7 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, // 8 9 A B C D E F 0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e, // - . 0xbf,0x7f}; sbit HC138_A = P2^3; sbit HC138_B = P2^4; sbit HC138_C = P2^5; void Delay(unsigned int t) { while(t--); while(t--); } void InitHC138(unsigned char n)//选 Y { switch(n) { case 2://8路LED P2 = (P2 & 0x1f) | 0x80; break; case 3://继电器与蜂鸣器 P2 = (P2 & 0x1f) | 0xa0; break; case 4://数码管位选 P2 = (P2 & 0x1f) | 0xc0; break; case 5://数码管段选 P2 = (P2 & 0x1f) | 0xe0; break; } } void ShowSMG_Bit(unsigned pos, unsigned char dat)//数码管 位置、数据 { InitHC138(4); //数码管的位置 P0 = 0x01 << pos; InitHC138(5); //数码管的数据 P0 = dat; } void SMG_Static() { unsigned char i, j; for (i = 0; i < 6; i++) { for (j = 0; j < 10; j++) { ShowSMG_Bit(i,SMG_duanma[j]); Delay(60000); } } for (j = 0; j <10; j++) { InitHC138(4); //数码管的位置(全部) P0 = 0xff; InitHC138(5); //数码管的数据 P0 = SMG_duanma[j]; Delay(60000); Delay(60000); } } void main() { while(1) { SMG_Static(); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
- ¥20 网站后台使用极速模式非常的卡
- ¥20 Keil uVision5创建project没反应
- ¥15 mmseqs内存报错
- ¥15 vika文档如何与obsidian同步
- ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
- ¥15 陆空双模式无人机飞控设置
- ¥15 sentaurus lithography
- ¥100 求抖音ck号 或者提ck教程
- ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)