打印

求助关于51单片机的问题

[复制链接]
5361|60
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mojianzhi|  楼主 | 2007-6-2 20:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      在做微机系统实习中,要用到AT89C52单片机控制4位八段的LED数码管,让它显示日期,我就用了AT89C52的P1口接4片LED数码管,通过74LS373接到LED上,每片LED接一片74LS373,想让它们静态显示的,不知道这种接法可行不?能否达到目的的?

相关帖子

沙发
maychang| | 2007-6-2 20:35 | 只看该作者

还不够

还需要每片的片选和锁存信号。

使用特权

评论回复
板凳
gyt| | 2007-6-2 20:36 | 只看该作者

可以

使用特权

评论回复
地板
awey| | 2007-6-2 20:37 | 只看该作者

当然可以,就是太浪费了

使用特权

评论回复
5
mojianzhi|  楼主 | 2007-6-2 20:40 | 只看该作者

都有了

    片选信号是有了,片选是用在74LS373的,也就是用在使能端的,每选中一片74LS373,也相当于选中一片LED吧?

使用特权

评论回复
6
gyt| | 2007-6-2 20:41 | 只看该作者

那就行了

没问题

使用特权

评论回复
7
conwh| | 2007-6-2 20:44 | 只看该作者

数据还是动态输出的

使用特权

评论回复
8
mojianzhi|  楼主 | 2007-6-2 20:55 | 只看该作者

上面的电路的,用这个程序怎么不能让他显示1、2、3、4的呢?

  上面的电路的,用P2口的P2.0,P2.1,P2.2,P2.3作为四个74LS373的使能端的,用下面这个程序,怎么不能让它显示1,2,3,4的呢?程序是想让它显示1 ,2,3,4的,但不能实现?请指点,谢谢。



    
  ORG   0000H
      LJMP  MAIN
      ORG   0030H
MAIN: SETB  P2.3
      MOV   P1,#06H
      LCALL  DEL
      CLR   P2.3
      SETB  P2.2
      MOV   P1,#5BH
      LCALL  DEL
      CLR   P2.2
      SETB  P2.1
      MOV   P1,#4FH
      LCALL  DEL
      CLR  P2.1
      SETB P2.0
      MOV   P1,#66H
      LCALL  DEL
      CLR  P2.0
 DEL:  MOV R0, #7FH
 DEL1: MOV  R1,#0FFH
 DEL2: MOV  R3,#0FFH
 DEL3:  DJNZ  R3,DEL3
        DJNZ R1,DEL2
        DJNZ R0,DEL1
        RET           
      END
            

使用特权

评论回复
9
maychang| | 2007-6-2 21:11 | 只看该作者

这个时序根本不对

延时LCALL   DEL没有必要。既然是静态显示,输出数据后不必延时。
你的程序怎么看怎么像是动态显示。P2口的P2.0,P2.1,P2.2,P2.3接到各373的哪个脚?这是片选线,锁存呢?

使用特权

评论回复
10
mojianzhi|  楼主 | 2007-6-2 21:18 | 只看该作者

用于接到373的11号引脚作为片选行不?

   接是接在11号引脚使能端的,不知道这样合适不?想作为片选的和控制的。

使用特权

评论回复
11
maychang| | 2007-6-2 21:37 | 只看该作者

接到11脚,这个对

那么程序就不对。
373是下降沿锁存,11脚变成低电平后输出不变,所以应该去掉LCALL  DEL,数据输出后立即锁存。紧接着就可以处理下一位。
另外,373的1脚必须允许输出。

使用特权

评论回复
12
mojianzhi|  楼主 | 2007-6-2 21:44 | 只看该作者

有哪位能帮我修改一下程序的吗?俺先谢谢了

     输出控制1引脚已经接地了的,是去掉延时程序就可以了吗?

使用特权

评论回复
13
mojianzhi|  楼主 | 2007-6-2 21:59 | 只看该作者

是不是修改成这样就行了呢?

   特别感谢您maychang的一路支持。我是实习中做的电路板,想弄些简单的程序测试一下能否正常工作的,是否达到目标的?

 ORG   0000H
      LJMP  MAIN
      ORG   0030H
MAIN: SETB  P2.3
      MOV   P1,#06H
      CLR   P2.3
      SETB  P2.2
      MOV   P1,#5BH
      CLR   P2.2
      SETB  P2.1
      MOV   P1,#4FH
      CLR  P2.1
      SETB P2.0
      MOV   P1,#66H
      CLR  P2.0                   
      END
           

使用特权

评论回复
14
mojianzhi|  楼主 | 2007-6-2 23:00 | 只看该作者

经过测试,上面的程序还不行的

    本来想让它显示1,2 , 3 ,4的,就是不显示的,只显示4个8的。第一次测试的时候曾经用它显示过4个8的。经过软件模拟,上面的程序还不能把P2.0,P2.1,P2.2,P2.3清零的。到底是怎么回事呢?出了什么问题呢?请各位指教。谢谢!

使用特权

评论回复
15
conwh| | 2007-6-3 04:09 | 只看该作者

把电路贴出来

使用特权

评论回复
16
mojianzhi|  楼主 | 2007-6-3 08:56 | 只看该作者

电路图上传

     不知道这样的图可以不?

使用特权

评论回复
17
古道热肠| | 2007-6-3 10:20 | 只看该作者

用万用表查硬件吧

  可先检查硬件,因为从程序和电路来看,没看出原则性的错误。如果还不行的话,可启用仿真器,单步执行,检查P2口线是否变化,P1数据口是否与输出的内容相符。
  建议用如下程序测试:
ORG   0000H
      LJMP  MAIN

      ORG   0030H

MAIN: SETB  P2.3
      MOV   P1,#FFH
      CLR   P2.3

      SETB  P2.3
      MOV   P1,#00H
      CLR   P2.3

      AJMP MAIN

  看到全亮和全灭两种效果。

使用特权

评论回复
18
mojianzhi|  楼主 | 2007-6-3 12:08 | 只看该作者

经过测试,发现不一般的问题

     经过仿真测试,用的是Proteus软件,测得P2口的低电平是3V多的,高电平为5V的,也就是说,低电平的时候并不低,应该为接近零的啊.程序中的对P2.3清零时,它不变成零的.

使用特权

评论回复
19
maychang| | 2007-6-3 12:18 | 只看该作者

楼主:怎么数码管没有限流电阻的啊?

使用特权

评论回复
20
awey| | 2007-6-3 12:20 | 只看该作者

74LS373换成74HC373

电路没问题。
看看是否电路连线不对或单片机坏了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

29

帖子

0

粉丝