找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1195|回复: 16
收起左侧

12位数码管同时显示单片机源代码 仿真图 数码管闪烁问题?

[复制链接]
ID:290290 发表于 2023-3-18 17:33 | 显示全部楼层 |阅读模式
利用片外RAM 扩展12位数码管,同时显示,仿真不显示,
实际电路显示,但数码管闪烁。求助,数码管如何才能不
闪烁?程序有问题?还是这种扩展方式不行?求教各位。多谢了。

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<absacc.h>
  3. #define hc273_U3 XBYTE[0x1fff]        //Y0:0x1fff(无关位用1),U1 74HC273 ,段码        四位
  4. #define hc273_U6 XBYTE[0x7fff]        //Y3:0x7fff(无关位用1),U6 74Hc273 ,位选
  5. #define hc273_U5 XBYTE[0x5fff]        //Y2:0x5fff(无关位用1),U3 74HC273 ,段码        四位
  6. #define hc273_U4 XBYTE[0x3fff]  //Y1:0x5fff(无关位用1),U1 74HC273 ,段码        四位

  7. unsigned char code c[10] = {0x81,0xcf,0x92,0x86,0xcc,0xa4,0xa0,0x8f,0x80,0x84}; // 数码管0-9段码 共阳数码管(部分改动)
  8. unsigned char code w[5] = {0xfe,0xfd,0xfb,0xf7};//数码管位码
  9.                               
  10. void main()
  11. {
  12.   unsigned int t;
  13.   unsigned char i;
  14.   unsigned char PA = 0x01;
  15.   unsigned char a[4] = {2,3,4,5};
  16.   unsigned char b[4] = {7,8,0,9};
  17.   unsigned char e[4] = {1,6,8,3};
  18.   while(1)
  19.   {
  20.    
  21.         for(i=0;i<4;i++)
  22.         {
  23.          hc273_U3 = c[a[i]];
  24.          hc273_U4 = c[b[i]];
  25.          hc273_U5 = c[e[i]];
  26.          hc273_U6 = ~PA;
  27.      for(t=0;t<1000;t++);
  28.          PA<<=1;
  29.         }
  30.         PA = 0x01;
  31.   }
  32. }
复制代码


1.jpg
回复

使用道具 举报

ID:213173 发表于 2023-3-18 20:57 | 显示全部楼层
给你一个示例参考
16位数码管万年历1302 仿真.rar (133.06 KB, 下载次数: 16)
回复

使用道具 举报

ID:290290 发表于 2023-3-18 21:39 | 显示全部楼层
wulin 发表于 2023-3-18 20:57
给你一个示例参考

多谢,下载来参考一下。
回复

使用道具 举报

ID:332444 发表于 2023-3-18 21:52 | 显示全部楼层
如果使用排阻的话并且P0口又没做其他事情的话用573毫无意义P0口应接排阻
回复

使用道具 举报

ID:290290 发表于 2023-3-18 22:24 | 显示全部楼层
xianfajushi 发表于 2023-3-18 21:52
如果使用排阻的话并且P0口又没做其他事情的话用573毫无意义P0口应接排阻

P0口为数据与地址(第位)复用口,273触发器。我只画了部分电路,按键复用P0口没有画出。
回复

使用道具 举报

ID:290290 发表于 2023-3-18 22:25 | 显示全部楼层
xianfajushi 发表于 2023-3-18 21:52
如果使用排阻的话并且P0口又没做其他事情的话用573毫无意义P0口应接排阻

此图应属于总线控制范畴
回复

使用道具 举报

ID:332444 发表于 2023-3-19 08:42 | 显示全部楼层
centch 发表于 2023-3-18 22:25
此图应属于总线控制范畴

273和245同属锁存器,且273已经分别控制了直接P0即可245可以不用。
回复

使用道具 举报

ID:857072 发表于 2023-3-19 23:37 来自手机 | 显示全部楼层
此回答来自gpt 3.5闪烁问题可能来自于数据和位选信号同时改变导致的,可以考虑在更改数据之前先将位选信号置位,然后再更改数据,最后才将位选信号清零。修改程序如下所示:  while (1) {     for (i = 0; i < 4; i++)     {         hc273_U6 = w[i]; // 先置位选信号         hc273_U3 = c[a[i]];         hc273_U4 = c[b[i]];         hc273_U5 = c[e[i]];         for (t = 0; t < 1000; t++);         hc273_U6 = 0xFF; // 清除位选信号     } } 此外,还需要注意以下几点。  在使用绝对地址访问外部RAM时,需要确保地址线连接正确,否则会导致无法访问到RAM中的数据。  如果数码管闪烁问题依然存在,可以考虑增加延时时间或者使用定时器实现定时刷新。
回复

使用道具 举报

ID:332444 发表于 2023-3-20 05:32 | 显示全部楼层
用3片锁存器分别控制段=控制位只有4速度可以说是很快的时间很好安排,若段是共用的则是控制位为12速度稍慢时间也不是不能安排,因为锁存器是并行数据,若是用串行传送数据则更慢,数码管闪烁原因基本就是时间安排问题。
回复

使用道具 举报

ID:290290 发表于 2023-3-20 21:53 | 显示全部楼层
a185980800 发表于 2023-3-19 23:37
此回答来自gpt 3.5闪烁问题可能来自于数据和位选信号同时改变导致的,可以考虑在更改数据之前先将位选信号 ...

多谢您的指点,按照您说的方法,修改了程序,闪烁还存在。我再试试定时中断。
回复

使用道具 举报

ID:290290 发表于 2023-3-20 21:55 | 显示全部楼层
xianfajushi 发表于 2023-3-19 08:42
273和245同属锁存器,且273已经分别控制了直接P0即可245可以不用。

由于电流超出,用245做了电流缓冲。
回复

使用道具 举报

ID:290290 发表于 2023-3-20 21:57 | 显示全部楼层
xianfajushi 发表于 2023-3-20 05:32
用3片锁存器分别控制段=控制位只有4速度可以说是很快的时间很好安排,若段是共用的则是控制位为12速度稍慢 ...

可能需要严格的时序,数码管才会不闪,调试中;多谢。
回复

使用道具 举报

ID:332444 发表于 2023-3-26 08:51 | 显示全部楼层
快分享给好友吧_.png
回复

使用道具 举报

ID:332444 发表于 2023-3-26 18:10 | 显示全部楼层
本帖最后由 xianfajushi 于 2023-3-27 09:23 编辑
centch 发表于 2023-3-20 21:55
由于电流超出,用245做了电流缓冲。

数字芯片中74系列07缓冲器有40毫安电流可以选用。如我上图电路就可以使用缓冲器扩大电流给12位数码段,而位电流则直接273够用不需扩流当然要扩流也是可以的,这样算起来也就使用8个缓冲器,或许会问74*07是对电源开集电路,对于共阴数码管接位直接上即可,对于段怎么弄,很简单的加上拉电阻即可,若不满意那就复杂些添加PNP基极电阻4.7K射极限流电阻247即可从仿真可以调节射极电阻大小值达到调节电流目标。
回复

使用道具 举报

ID:290290 发表于 2023-3-30 16:16 | 显示全部楼层
有道理,实验一下,多谢。
回复

使用道具 举报

ID:1038987 发表于 2023-4-9 20:32 | 显示全部楼层
哈哈。我只想说用1640根本就没有那么多的麻烦事。TM1640可以驱动1-16位也不会闪。也省单片机的资源。之前发过一个文章。应该里面有代码。
回复

使用道具 举报

ID:332444 发表于 2023-4-9 20:54 | 显示全部楼层
我初学编程时就到论坛1是看看别人是怎么写的,2是有机会就回复力所能及的,有一次好像是回复不怎样,有人奚落我一边呆着去,我问什么意思,答“哪凉快哪呆着去”,然而这种人我觉得不值一提,没那么了不起,反而是没见识鄙陋的表现,其实学单片机我也是一样来看看别人是怎么写的,不是赋值粘贴的,最重要的是自己思考推敲才要紧,其实这种驱动没什么特别的,多动脑子就有办法,很简单的,不是什么很难的时序。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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