当前位置: 代码迷 >> 单片机 >> 小弟在练习LED时遇到了很奇怪的现象解决方法
  详细解决方案

小弟在练习LED时遇到了很奇怪的现象解决方法

热度:63   发布时间:2016-04-28 16:07:47.0
小弟在练习LED时遇到了很奇怪的现象
8位数码管,默认是高亮小数点,本来我按一下按钮0,应该是第一个第一个数码管显示0,再按一下0,第一,二数码管显示为0,以此类推。可是在一,二显示0的时候,另外5个本该显示只显示小数点的数码管中有些段,却表现为微微亮的状态,整个一排数码管就显得很乱,求解决方案。
这个是默认的情况下
这个是按了两下0,问题就出来了,后面几个数码管该是显示小数点的
把数码管全部置0后




------解决方案--------------------
或者是你硬件设计的原因吧,后面的数码管有微弱电流流过,所以才会有微弱的显示。
把你的程序贴上来看看。
------解决方案--------------------
这个硬件和软件要匹配
------解决方案--------------------

楼主,你这种现象: 数码管,亮度低, 其实就是你 那个 延时设计不够精确所导致的, 把握好: 位选延时 时间解决了。 多调试几次,就可以 了。 我也是这样过来的。 大概是延时 10 毫秒。
------解决方案--------------------
实践出真知,加油!
探讨
这个小东西困扰了我2天了啊,没有老师教的孩子最可怜了

------解决方案--------------------
最好段选和位选打开后再关闭!剩下的就是调整延时。


另外switch加上default,保持好的编程习惯。
------解决方案--------------------
应该用定时中断处理键盘和延时
------解决方案--------------------
为什么无延时
加一下看看
for(i=0; i<8; i++)
{
P0 = LedOut[i]; //将字模送到P0口显示
 delay1ms(10); 
switch(i) //使用switch 语句控制位选
{
case 0:LS138A=0; LS138B=0; LS138C=0; break;
case 1:LS138A=1; LS138B=0; LS138C=0; break; 
case 2:LS138A=0; LS138B=1; LS138C=0; break;
case 3:LS138A=1; LS138B=1; LS138C=0; break;
case 4:LS138A=0; LS138B=0; LS138C=1; break;
case 5:LS138A=1; LS138B=0; LS138C=1; break;
case 6:LS138A=0; LS138B=1; LS138C=1; break;
case 7:LS138A=1; LS138B=1; LS138C=1; break;
  
}
------解决方案--------------------
试试这样改动呢!



for(i=0; i<8; i++)
{
P0 = 0x80; //关显示
 
switch(i) //使用switch 语句控制位选
{
case 0:LS138A=0; LS138B=0; LS138C=0; break;
case 1:LS138A=1; LS138B=0; LS138C=0; break;
case 2:LS138A=0; LS138B=1; LS138C=0; break;
case 3:LS138A=1; LS138B=1; LS138C=0; break;
case 4:LS138A=0; LS138B=0; LS138C=1; break;
case 5:LS138A=1; LS138B=0; LS138C=1; break;
case 6:LS138A=0; LS138B=1; LS138C=1; break;
case 7:LS138A=1; LS138B=1; LS138C=1; break;

}
P0 = LedOut[i]; //将字模送到P0口显示
delay1ms(10);
  相关解决方案