作为一个刚刚学习几天的小白,向各位大神请教一个小问题
怎样解决数码管亮度不均匀的问题呀,,最后一位总是比前三个要暗,下面是我写的程序。。
#include
void Delay(unsigned int t)
{
while(--t);
} //延时
unsigned char code shuma[]={
0xC0, 0xF9, 0xA4, 0xB0,
0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83,
0xC6, 0xA1, 0x86, 0x8E
} ;
sbit xshu=P2^4; //数码管
sbit xshu1=P2^5;
sbit xshu2=P2^6;
sbit xshu3=P2^7;
sbit led=P2^0; //LED小灯
sbit led1=P2^1;
sbit led2=P2^2;
sbit led3=P2^3;
unsigned char shu1=12;
unsigned char shu2=34;
void main()
{
led=1;led1=1;led2=1;led3=1;
while(1)
{
P0=shuma[shu1/10];
xshu=1;
xshu=0;
led3=~led3;
Delay(500000);
P0=shuma[shu1%10];
xshu1=1;
xshu1=0;
led2=~led2;
Delay(500000);
P0=shuma[shu2/10];
xshu2=1;
xshu2=0;
led1=~led1;
Delay(500000);
P0=shuma[shu2%10];
xshu3=1;
xshu3=0;
led=~led;
Delay(500000);
}
}
led=1;led1=1;led2=1;led3=1;
while(1)
{
P0=shuma[shu1/10];//显示数字1
xshu=0;//导通最左边数码管亮
led3=~led3;//LED灯取反
Delay(500000);延时
剩下的都一样了,,,想知道怎么修改可以让亮度均匀,,就是让最后一位点亮的时间长一点
在郭天祥的51单片机的书中,我记得有提到一个词叫“重影”,如何消重影。他也提到了。。。建议你下载这样的PDF去好好观摩下。
這問題跟硬件沒關係,嘗試調整delay time。 本帖最后由 philipchiu 于 2016-10-22 21:21 编辑
先不说亮度,4位显示数值一样不觉得奇怪吗?
先试着分别点亮每一位,然后再显示4位不同的数字,相信你会在这个过程中发现问题(想要“同时”显示不同的数值,必须先关闭其他位,然后仅在其中一位显示)
停留的时间太短 眼睛反映不过来
天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
重點在delay子程序,你的賦值遠遠超出類型定義,請將delay做為ms級
两种解决方法:
1)调整对应的电阻值,使电流稍许加大;
2)适当延长该位的显示时间,或让该位显示2次。
点亮数码管xshu=1;应该加个延时delay();函数后 xshu=0;,四个数码管都应该加这个延时