标题: 单片机控制数码管用Proteus仿真时显示不正常 [打印本页]

作者: 心灵的尘埃    时间: 2019-3-13 00:35
标题: 单片机控制数码管用Proteus仿真时显示不正常

刚学的51单片机,在用Proteus作仿真时,如图,数码管为共阳极,数码管显示的数字的位总是受到段的影响,本来应该是全部的数码管都点亮的,但是只要是段是高电平的,上面的数码管就会显示异常或者不显示,低电平的会正常显示,换上共阴极的也是这样,求问题到底出在哪里?万分感谢!!!

作者: wulin    时间: 2019-3-13 06:56
本帖最后由 wulin 于 2019-3-13 09:54 编辑

共用P0+573数码管动态或静态显示在实际电路中一定要加消隐语句,而且应该先赋值后锁存,否则位码与段码串扰而显示错乱。仿真时有些问题不一定能反映出来,你这个程序如果这样写(例1),仿真虽然能正常显示,但用于实际电路必须按例2写程序才完整。
例1
  1. #include <reg52.h>

  2. sbit du26=P2^6;
  3. sbit we27=P2^7;

  4. void main()
  5. {
  6.         P0=0xff;
  7.         we27=1;
  8.         we27=0;
  9.         
  10.         P0=0xf8;
  11.         du26=1;
  12.         du26=0;
  13. }
复制代码
例2
  1. #include <reg52.h>

  2. sbit du26=P2^6;
  3. sbit we27=P2^7;

  4. void main()
  5. {
  6.         while(1)
  7.         {                                                   
  8.                 P0=0xff;//消隐
  9.                 du26=1;
  10.                 du26=0;

  11.                 P0=0xff;//位码全显
  12.                 we27=1;
  13.                 we27=0;

  14.                 P0=0xf8;//段码 7
  15.                 du26=1;
  16.                 du26=0;
  17.         }
  18. }
复制代码







作者: gh001    时间: 2019-3-13 07:24
首先查看选择的数码管是共阴,还是共阳的
然后检查电路,
如果上述都没有问题,检查代码
作者: 还有谁?    时间: 2019-3-13 09:02
本帖最后由 还有谁? 于 2019-3-22 12:34 编辑

先看看别人是怎么写的,573怎么用的,不要什么都 不了解想当然的就玩起来
作者: 心灵的尘埃    时间: 2019-3-13 17:01
明白了,因为我写的代码是先把锁存器打开然后给单片机输出需要的电平,但是单片机默认端口是高电平,所以在第二个段选的时候,一打开锁存器就会把未位选的锁存起来,产生了这种影响。感谢各位大佬




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1