找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7293|回复: 4
打印 上一主题 下一主题
收起左侧

单片机控制数码管用Proteus仿真时显示不正常

[复制链接]
跳转到指定楼层
楼主

刚学的51单片机,在用Proteus作仿真时,如图,数码管为共阳极,数码管显示的数字的位总是受到段的影响,本来应该是全部的数码管都点亮的,但是只要是段是高电平的,上面的数码管就会显示异常或者不显示,低电平的会正常显示,换上共阴极的也是这样,求问题到底出在哪里?万分感谢!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 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. }
复制代码






评分

参与人数 1黑币 +6 收起 理由
心灵的尘埃 + 6 赞一个!

查看全部评分

回复

使用道具 举报

板凳
ID:317383 发表于 2019-3-13 07:24 | 只看该作者
首先查看选择的数码管是共阴,还是共阳的
然后检查电路,
如果上述都没有问题,检查代码
回复

使用道具 举报

地板
ID:475247 发表于 2019-3-13 09:02 | 只看该作者
本帖最后由 还有谁? 于 2019-3-22 12:34 编辑

先看看别人是怎么写的,573怎么用的,不要什么都 不了解想当然的就玩起来
回复

使用道具 举报

5#
ID:481844 发表于 2019-3-13 17:01 | 只看该作者
明白了,因为我写的代码是先把锁存器打开然后给单片机输出需要的电平,但是单片机默认端口是高电平,所以在第二个段选的时候,一打开锁存器就会把未位选的锁存起来,产生了这种影响。感谢各位大佬
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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