在开发板上,实现数码管的动态显示,在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(); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥100 Acess连接SQL 数据库后 不能用中文筛选
- ¥15 用友U9Cloud的webapi
- ¥20 电脑拓展屏桌面被莫名遮挡
- ¥20 ensp,用局域网解决
- ¥15 Python语言实验
- ¥15 我每周要在投影仪优酷上自动连续播放112场电影,我每一周遥控操作一次投影仪,并使得电影永远不重复播放,请问怎样操作好呢?有那么多电影看吗?
- ¥20 电脑重启停留在grub界面,引导出错需修复
- ¥15 matlab透明图叠加
- ¥50 基于stm32l4系列 使用blunrg-ms的ble gatt 创建 hid 服务失败
- ¥150 计算DC/DC变换器平均模型中的参数mu