当前位置: 代码迷 >> 单片机 >> 亲爱的朋友 帮小弟我一下 74ls138 74ls47点亮数码管有关问题 小弟我是新手很简单的有关问题小弟我都搞不懂 帮小弟一把 多谢
  详细解决方案

亲爱的朋友 帮小弟我一下 74ls138 74ls47点亮数码管有关问题 小弟我是新手很简单的有关问题小弟我都搞不懂 帮小弟一把 多谢

热度:100   发布时间:2016-04-28 16:11:18.0
亲爱的朋友 帮我一下 74ls138 74ls47点亮数码管问题 我是新手很简单的问题我都搞不懂 帮小弟一把 谢谢
小弟刚学单片机 89c52 实验板的原理图已经传上来了 我想用74ls138 74ls47 同时点亮所有的 数码管 不过74ls138说明书上 只能同时输出一个低电平这样 我只能点亮一个数码管 要同时点亮六个数码管 需要六个低电平 能不能用c语言给我编个同时点亮六个数码管的程序呀 谢谢 我没有老师自己学 希望大家能帮小弟一下 谢谢谢谢谢谢谢谢!  

#include<reg52.h>
sbit D1=P0^0;
sbit D2=P0^1;
sbit D3=P0^2;
sbit D4a=P0^4;
sbit D5b=P0^5;
sbit D6c=P0^6;
sbit D7d=P0^7;

void main()
{

D1=1;
D2=0;
D3=0;

//以上是选择那个数码管 控制74ls138最多只能输出一个低电平所以只能点亮一数码管
D5b=0;
 D6c=0;
 D7d=0;
D4a=0;
//以上是控制那个数码管显示的 数字

}

反正这个程序最多只能点亮一个数码管 我希望能同时点亮六个数码管 谢谢大家了 每帖必结

------解决方案--------------------
你可以一次顯示一個,然後在顯示下一個,速度快點就可以做到,亮的東西轉快了就是一個亮圈,是人的視覺殘留效果,
例子????????????????現在找不到了,自己做吧,很容易的!
------解决方案--------------------
第一种方法:整体循环,显示内容固定(示意语法,具体请根据51语法替换)

void main() 

byte i;
while(1)
{
for(i=0;i<6;i++)
p0|=i;//让p0的低三位更新,因为i<6;
//D1=1; 
//D2=0; 
//D3=0; 

//以上是选择那个数码管 控制74ls138最多只能输出一个低电平所以只能点亮一数码管 
D5b=0; 
D6c=0; 
D7d=0; 
D4a=0; 
//以上是控制那个数码管显示的 数字 
}


方法2:
把上面代码中的数码管选择语句移植到timer的中断中。这样显示的内容就可以单独更新,适合显示动态的输入。