标题:
单片机数码管倒计时显示乱码 求帮助
[打印本页]
作者:
nancheng307
时间:
2021-11-21 16:34
标题:
单片机数码管倒计时显示乱码 求帮助
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint);
sbit DULA=P2^6; //声明U2锁存端,段选
sbit WELA=P2^7; //位选
uchar code Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0-9段码
void main()
{
uint k;
while(1)
{
WELA=1;
// P0=0XF8;
P0=0Xc7;
WELA=0;//关闭位选
DULA=1;
// for(k=0;k<10;k++)
// {
// P0=Tab[k];
// delay(500);
// }
for(k=10;k>=0;k--)
{
P0=Tab[k];
delay(500);
}
}
}
void delay(uint xms)
{
uint i ,j;
for(i=xms;i>0;i--)
{
for(j=110;j>0;j--)
{
}
}
}
数码管倒计数.rar
2021-11-21 16:34 上传
点击文件名下载附件
83.89 KB, 下载次数: 2
作者:
munuc_w
时间:
2021-11-23 08:42
做任何事情都是有规律的,按着处理数据、分离个,十,百。。。位、查段吗、送显的顺序做,不会出问题的。
作者:
glinfei
时间:
2021-11-23 09:05
你在用锁存器控制数码管, DULA=1; 打开锁存器送完数据之后,应该有个 DULA=0;再delay,这样应该可以防止乱码。
作者:
man1234567
时间:
2021-11-23 09:12
你这个肯定是乱码。关键代码修改建议如下:
for(k=10;k>=0;k--) //从10到1循环
{
P0=Tab[k]; //显示循环数
delay(500); //延时
//这里要加消隐P0=0x00和延时delay(??),而且和上面的延时配合得当,让视觉暂留现象出现的残影呵呵
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1