OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7844|回复: 2

关于74HC537和51驱动数码管问题,请教各位。。。有程序和原理图。。

[复制链接]

36

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
金钱
282
注册时间
2012-3-23
在线时间
0 小时
发表于 2012-11-8 10:29:29 | 显示全部楼层 |阅读模式

                 现在在弄51 驱动数码管 
                  用P0口控制6个数码管的显示。想简单些:
                      1:位选:将六个数码管都打开,即位选选中所有数码管         后不再位选  即每次显示都是6个数码管一起显示
                      2:段选:将所有数码管从0——F显示(共阴数码管)。
                      
                编译下载后:出现的现象是,显示的数字是正确的,但不是每个数码管都亮  数量不定  位置不定       经分析是因为位选没有锁存住。。但是明明根据74HC537真值表。。做了相关操作啊??弄了两天,实在没得头绪了。。求教大家了。。。

            
代码如下:
#include<reg52.h>
typedef unsigned char uint8;  
typedef unsigned int uint16;
uint8 numeber[]={0x3f,0x06,0x58,0x4f,    //共阴极数码管
       0x66,0x6d,0x7d,0x07,
       0x7f,0x6f,0X77,0x7c,
       0x58,0x5e,0x79,0x71};

sbit DU=P2^6;
sbit WE=P2^7;

main()
{
 uint8  counter, i;   
 TMOD=0x01;   //工作在01模式
 
 WE=1;        //WE==1时候,表示输入和输出一样,数据不锁存。
 0=0xc0;     //送入位选信号 应该是全部位都选通(应该全部亮)
 WE=0;        //WE==0时候,表示输入不改变输出,数据锁存。
 0=0xff;(消影)
 
 TH0=0xB8;//设定20MS延时
 TL0=0X00;
 TR0=1;
while(1)
 { 
 
  if(TF0==1)  
  {
   TF0=0;
  TH0=0xB8;     
   TL0=0x00;
   counter++;
  } 
    
  if(counter==50) //延时50次  刚好1S
    {
     DU=1;           //每次延时一秒后,不锁存数据,即改变数据输入。
     0=numeber[i++];//改变输入数据
     DU=0;           //改变后锁存数据
    counter=0;      //计数变量变为0
     }
  
  if(i==16) //如果现实完F返回从0开始显示
  {
   i=0;
  }
 }
}  


HL-1 V8.0电路图.pdf

70.79 KB, 下载次数: 727

天天实验室   却无成就。。。。。惨蛋!  感谢opendv的所有大虾。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

32

主题

300

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2012-3-30
在线时间
321 小时
发表于 2012-11-8 13:13:49 | 显示全部楼层
回复 支持 反对

使用道具 举报

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2012-8-28
在线时间
4 小时
发表于 2012-11-11 20:42:19 | 显示全部楼层
这里建议楼主 看看 郭天翔的 教程,会有你需要的!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表