X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
单片机
[讨论] 6位数码管有效位显示
奔跑小羊
2015-4-17 21:26
楼主
大神们,求救。
要实现数码管有效位显示,可是有残影
如何修改程序的?
程序代码如下
#include
sbit ADDR0 = P1^0; //位地址声明
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
//数码管显示字符转换表
unsigned char code LedChar[]={
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};
unsigned char LedBuff[6]={
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF}; //显示缓冲区
unsigned int cnt = 0; //记录T0中断次数
//动态扫描的索引
void main()
{
unsigned long sec = 0; //记录经过的秒数,赋初值
EA = 1;
ENLED = 0;
ADDR3 = 1; //使能U3
TMOD = 0x01;
TH0 = 0xFC; //定时1ms
TL0 = 0x00;
TR0 = 1; //启动T0
ET0 = 1; //T0中断使能
while(1) //主循环
{ if(TF0 == 1)
{ TF0 = 0;
TH0 = 0xfc;
TL0 = 0x67;
cnt++;
if(cnt >= 1000)
{ cnt = 0;
sec++;
// 将sec按十进制从低到高提取并转为数码管显示符
LedBuff[0] = LedChar[sec%10];
ADDR2=0; ADDR1=0; ADDR0=0; P0 = LedBuff[0];
if(sec >= 10)
{
LedBuff[1] = LedChar[sec/10%10];
ADDR2=0; ADDR1=0; ADDR0=1; P0 = LedBuff[1];
}
else
{ LedBuff[1] = 0xff; }
if(sec >= 100)
{
LedBuff[2] = LedChar[sec/100%10];
ADDR2=0; ADDR1=1; ADDR0=0; P0 = LedBuff[2];
}
else
{
LedBuff[2] = 0xff;
}
if(sec >= 1000)
{
LedBuff[3] = LedChar[sec/1000%10];
ADDR2=0; ADDR1=1; ADDR0=1; P0 = LedBuff[3];
}
else
{
LedBuff[3] = 0xff;
}
if(sec >= 10000)
{
LedBuff[4] = LedChar[sec/10000%10];
ADDR2=1; ADDR1=0; ADDR0=0; P0 = LedBuff[4];
}
else
{
LedBuff[4] = 0xff;
}
if(sec >= 100000)
{
LedBuff[5] = LedChar[sec/100000%10];
ADDR2=1; ADDR1=0; ADDR0=1; P0 = LedBuff[5];
}
else
{
LedBuff[5] = 0xff;
}
}
}
}
}
点赞
回复评论 (2)
沙发
shower.xu
扫描周期后加上短暂的全关断状态,“消隐”
点赞
2015-4-17 23:06
板凳
奔跑小羊
谢谢了,问题解决了。程序没有扫描到低位,在前面加上
if(sec >=0)
{
LedBuff[0] = LedChar[sec%10];
ADDR2=0; ADDR1=0; ADDR0=0; P0 = LedBuff[0];
}
else
{
LedBuff{0}= 0xff;
}
即可。
点赞
2015-4-19 14:38
最新活动
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
PI 电源小课堂|无 DC-DC 变换实现多路高精度输出反激电源
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
随便看看
Linux-2.6.21 S3c6400中断剖析<六>(原创)-上海嵌入式索漫科技培训教材
lwip 学习求助
来ELEXCON深圳国际电子展不?我在EEWorld展台等着你
cmmb技术介绍
三极管做的电源--求解
【国产RISC-V Linux板 昉·星光VisionFive试用报告】Python点亮炫彩灯环
我西门是最后一个交作业的吧
【新人求教】高手们有99年国赛B题数字式工频有效值多用表的资料么?
可预置的8位计数器程序的主要部分分析
女电子工程师的耳环(很有创意)
内核编程与驱动编程有什么不同?
求最便宜的单片机
刚入手launchpad MSP430FR6989 简单介绍下~
2018年1月版主芯币及实物礼品奖励公告
请教AD7528数模转换芯片的使用方法
XP下,并口可以实现0.1ms精度的外部触发吗?
留住身边的美景,2015年春天
ADI生命体征技术助力高性能便携和穿戴医疗设备,答题有好礼
人行道闸的发展趋势
关于rf能不能在protues里跟MCU一起仿真
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复