1 项目要求
(1)数码管开机初始显示----,正常运行时显示2013;
(2)数码管显示任意四位十进制数;
2 仿真测试
3 参考程序
3.1 主函数
#include 'DisplaySmg.h'
void main()
{
//任务1 正常运行时显示2023
unsigned int i; //0~65535
for(i=0;i<5000;i++) //数码管开机显示
{
DisplaySmg(); //for循环i控制显示时间
}
while(1)
{
LedBuf[0]=2; //重新设置LedBuf[](extern),即数据缓存区
LedBuf[1]=0;
LedBuf[2]=2;
LedBuf[3]=3;
DisplaySmg(); //调用数码管显示函数
}
// //任务2 数码管显示任意四位十进制数
// unsigned int i; //0~65535
// unsigned int NUM = 1983; //0~65535
// for(i=0;i<5000;i++) //数码管开机显示
// {
// DisplaySmg(); //for循环i控制显示时间
// }
// while(1)
// {
// LedBuf[0] = NUM/1000; //取千位
// LedBuf[1] = NUM/100%10; //取百位
// LedBuf[2] = NUM/10%10; //取十位
// LedBuf[3] = NUM%10; //取个位
// DisplaySmg(); //调用数码管显示函数
// }
}
3.2 数码管显示函数(H文件和C文件成对出现)
#ifndef __DisplaySmg_H__
#define __DisplaySmg_H__
#include
#include 'DelayXms.h'
#define GPIO_SEG P0 //段选端
#define GPIO_SEL P2 //位选端
#define SMG_NUM 4 //数码管的个数
extern unsigned char LedBuf[];
void DisplaySmg();
#endif
#include 'DisplaySmg.h'
unsigned char code LedData[]={ //共阴型数码管的段码表,字符,序号
0x3F, //'0',0
0x06, //'1',1
0x5B, //'2',2
0x4F, //'3',3
0x66, //'4',4
0x6D, //'5',5
0x7D, //'6',6
0x07, //'7',7
0x7F, //'8',8
0x6F, //'9',9
0x77, //'A',10
0x7C, //'B',11
0x39, //'C',12
0x5E, //'D',13
0x79, //'E',14
0x71, //'F',15
0x76, //'H',16
0x38, //'L',17
0x37, //'n',18
0x3E, //'u',19
0x73, //'P',20
0x5C, //'o',21
0x40, //'-',22
0x00, //熄灭 23
};
unsigned char code LedAddr[]={0xfe,0xfd,0xfb,0xf7}; //数码管位选
unsigned char LedBuf[]={22,22,22,22}; //显示缓存区
void DisplaySmg()
{
unsigned char i; //等价于 'static unsigned char i = 0;'
GPIO_SEG = LedData[LedBuf[i]]; //第一步 送段码
GPIO_SEL = LedAddr[i]; //第二步 送位选
DelayXms(1); //第三步 延时1ms
GPIO_SEG = 0x00; //第四步 消影(共阴形)
i++;
if(i==SMG_NUM) //SMG_NUM为数码管的个数
i=0;
}
3.3 延时函数
#ifndef __DelayXms_H__
#define __DelayXms_H__
#include
void DelayXms(unsigned char xms);
#endif
#include 'DelayXms.h'
void DelayXms(unsigned char xms) //@11.0592MHz
{
unsigned char i, j;
while(xms--)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
4 参考来源
(1)单片机应用 数码管动态显示编程之基于底层显示模块的应用层功能程序_哔哩哔哩_bilibili;
设计资源 培训 开发板 精华推荐
- IMX6SLEVK: i.MX 6SoloLite评估套件
- 使用 Analog Devices 的 LT1109CS8 的参考设计
- 基于RC522/WS1850S的IC卡门禁读卡器
- LT8631IFE 1MHz、5V、1A 降压转换器的典型应用电路
- LTC3838IUHF-1 6.5V 至 34V 输入、5V/12A 和 3.3V/12A 双路输出、300kHz、RSENSE、5V 输出连接至 EXTVCC、降压转换器的典型应用电路
- 红外语音助手
- LTC3633AIFE-1 1.8V/2.5V 4MHz 降压稳压器的典型应用电路
- 【航顺训练营】HK32F103CAN总线学习板+947086A
- SPIRIT1-低数据速率收发器-433 MHz-USB dongle
- ADP166CP-EVALZ,ADP166 TSOT LDO 线性稳压器评估板
- 5G来袭 TE Connectivity 助你抢占消费电子市场先机
- 关注、评论赢好礼!《美光2022台北国际电脑展主题演讲精选:智能边缘与智能制造专辑》
- 力源带你了解安森美半导体开发神器——高度灵活的物联网开发套件( IDK )!看视频轻松答题享好礼!
- “西北模电王”新概念模拟电路3——《运放电路的频率特性和滤波器》
- ADI有奖下载活动之7 可编程逻辑控制器(PLCs)解决方案
- 安世半导体&世平集团 高效能&小型化, Nexperia MOSFET的5G解决方案 观看、下载 闯关赢好礼!
- 看视频赢京东卡 PI电机驱动解决方案学习中心正式上线
- 贸泽翻牌挑战赛—一键配齐的乐趣,它不香吗?快来参与贸泽翻牌挑战赛!
- EMI 有奖调查