找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12352|回复: 11
收起左侧

跑马灯亮了,可是八段译码管也会亮,为什么?

[复制链接]
ID:19484 发表于 2009-12-7 19:27 | 显示全部楼层 |阅读模式

关于跑马灯的问题

问:做跑马灯试验时,根据修改程序,跑马灯亮了,可是为什么八段译码管也会逐个亮起来呢?我把跳帽J26,J27拿掉也没有用啊?

回复

使用道具 举报

ID:1 发表于 2009-12-7 21:04 | 显示全部楼层


 因为led数码管和跑马灯都是用的P0口做数据口,所以会有你说的现象,但是只要我们把led数码管的显示关掉就可以了,但是怎么关呢?
 有2种方法搞定这个问题

  1.硬件法
   拔掉P2.7口的双排针跳线,将远离单片机的一端用杜邦线短路到地,就可以了.(解释:根据电路图分析我们可以知道:共阴的数码管如果将所有位选置1的话,所有的数码管都会处于灭的状态,而单片机上电所有io口上电时都是1,将负责位选的74hc573的锁存端 一直短路到地就可实现)


  2.软件法
 C语言:
将下面的几行代码复制到 mian函数的开始
 P2_7=1;  //令位选的U2-747c573直通
 P0=0xFF; //P0口全送高电平
 P2_7=0;  //锁存,也就是U2-74hc573的输出FF从此不变,这样8个共阴数码管的
               //公共端都被置为高电平,所以全都会灭掉  
 P2_6=0;  //锁存,原理同上,干掉8*8点阵

  解释:同理只是用软件来关闭数码管而已,注意头文件要使用#include"AT89x52.h",这个文件比reg52.h使用更方便因为io引脚都定义好了可以直接以P2_7=1;的形式调用

 


  汇编语言:
  ORG 0000H
  setb P2.7
  mov P0,#11111111B  
  clr   P2.7

  clr P1.4           
  mov P0,#11111100B  //点亮最后2个灯
  sjmp $             
  end


小知识:

锁存器就是把当前的状态锁存起来,使CPU送出的数据在接口电路的输出端保持一段时间锁存后状态不再发生变化,直到解除锁定,74hc573就是锁存器

[此贴子已经被作者于2012-4-15 21:50:24编辑过]
回复

使用道具 举报

ID:19203 发表于 2009-12-8 15:48 | 显示全部楼层
用个锁存器如何?
回复

使用道具 举报

ID:1 发表于 2009-12-9 01:23 | 显示全部楼层
2.软件法  就是用锁存器实现的
回复

使用道具 举报

ID:19839 发表于 2009-12-9 02:09 | 显示全部楼层

学习一下

回复

使用道具 举报

ID:21135 发表于 2010-1-14 18:18 | 显示全部楼层
我也学习一下,基本明白了
回复

使用道具 举报

ID:35879 发表于 2012-3-18 21:32 | 显示全部楼层
mark一下
回复

使用道具 举报

ID:36076 发表于 2012-3-26 21:02 | 显示全部楼层
学习了,多谢多谢,我一直也有同感,今天终于解决了!
回复

使用道具 举报

ID:37019 发表于 2012-4-12 16:30 | 显示全部楼层
同志们,我做1602显示,数码管老亮着干扰,按照你们的方法都没办法把数码管显示关掉,求高手指点呀
回复

使用道具 举报

ID:35775 发表于 2012-4-12 17:59 | 显示全部楼层
关了呗兄弟
回复

使用道具 举报

ID:39479 发表于 2012-4-30 10:46 | 显示全部楼层

你好,我不是很明白,为什么只能用p2.7和p1.4,p0能不能帮忙解析下。我是刚买了板子学习的。谢谢啦

回复

使用道具 举报

ID:35471 发表于 2014-1-21 22:58 | 显示全部楼层
其实直接把 51hei.h 复制到工程文件夹里,再在程序里包含,然后调用 guandz() 和 guanled()就可以了
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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