微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于一个数码管的问题,希望得到帮助

关于一个数码管的问题,希望得到帮助

时间:10-02 整理:3721RD 点击:
这里我用 的是单片机的P2^4~P2^7,控制四位的数码管,有P1^0~P1^7控制段选;如代码我需要显示一个2013,有动态表示静态显示,数码管是共阳极的,我下载之后他显示的是四个相同的数字,还出现重影,求帮助,求指点
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
uchar code table[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit s0=P2^5;
sbit s1=P2^4;
sbit s2=P2^7;
sbit s3=P2^6;
delay(uchar del)
{
uint i,j;
for(i=0;i<del;i++)
for(j=0;j<148;j++);
}
  
void main()
{      
while(1)
{
P0=0xff;
s0=0;
P0=table[2];
delay(3);

P0=0xff;
s1=0;
P0=table[0];
delay(3);
P0=0xff;
s2=0;
P0=table[1];
delay(3);
P0=0xff;
s3=0;
P0=table[3];
delay(3);
}

}

急需要解决,求指点啊,在此先谢过了

没人帮忙

好吧,我自己解决了,太不有爱啦

不明白你为什么要多加这句 P0=0xff,你delay(3)是延时多久,延时时间越短,这句影响就越大

我新注册的,其实刚才就在帮你照这个错误,没想到这边解决后,你已经搞定了。就是你的S0~S3位选标志位的设置有问题,既然是共阳,那么S0=1才能保证第一位选中,紧接着S1=1,但这时应该记得把S0拉低,所以这样逐位操作是不合适的,建议P2口直接赋值,测试通过。另外对于ls,P0=0xff在应用中也是很有必要的,当然我刚才是在protues帮你仿真的,没什么大影响。我只是一个略懂单片机的人,不是什么高手,但是我希望坛子里的朋友能够相互帮助,一起进步。

P0=0xff是为了消影,延时是3ms,因为之前就问了一些人,他们说应该要消影

等你学到能独立写大工程了,就会发现真心不愿意看别人的代码,如果你要实现思路,大家肯定都会提供参考意见。你见到坛里哪个人贴代码出来找错误的贴有多少人去评么。加油,当初大家都是这么过来的。

因为硬件限制,只能一位一位 的弄,原来做的都是有38译码器的,直接赋值就可以,现在变成原始的就一下没弄出来啊,我也是刚学不久的,学校有电子设计竞赛,就凑热闹来了,还是不好做啊 ,总之还是谢谢你啊

这样啊,我懂了,努力

ddddddddddddddddddddddddddddddddddddd

加油咯~呵呵。期待看到你分享作品上来,不是问代码了,其实坛里很多大家的分享可以看看,对学习事半功倍的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top