找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3602|回复: 10
收起左侧

关于单片机数码管动态刷新显示值储存!

[复制链接]
ID:232366 发表于 2021-1-7 20:23 | 显示全部楼层 |阅读模式
先上程序如下:这是一部分程序
问题一   DisplayData[ 8 ] = {0,1,2,3,4,5,6,7};此数组内的成员归谁调用?

uchar DisplayData[ 8 ] = {0,1,2,3,4,5,6,7};


问题二 此语句里《DisplayData[i ];这个数组是怎么跟上面的第一个进行数据传输和获取??》
此为数码管动态刷新的其中的一条语句case(0):LSA=1;    LSB=1; LSC=1; GPIO_DIG_= DisplayData[i ];  break;


问题三为何在主程序里调用此语句就可以控制数码管用哪一个来显示/*第1个数码管*/ DisplayData [0] = display_SMG_ [LEDbuff[0]];//发送段码


真的是困惑单片机编程真的是多种多样!!!!!!!!

回复

使用道具 举报

ID:517466 发表于 2021-1-7 21:26 | 显示全部楼层
本帖最后由 suncat0504 于 2021-1-7 21:29 编辑

首先搞清楚动态显示的原理。然后按照动态显示的思路,去理解程序。相信你就会有所收获的。
正常处理逻辑是:
1、关闭所有数码管的电源。
2、组织第一个数码管的笔段数据,通常笔段数据保存在一个一维Byete数组中。0-9号元素对应0-9的显示笔段数据。此外还可以加入其它特殊符号的笔段数据,比如减号,A,b,C,d,E,F等
3、把笔段数据发送给数码管公用的笔段数据线上
4、给这个数码管加电,并显示一段时间
5、关闭这个数码管的电源
6、组织下一个数码管的笔段数据,重复执行第三步到第五步
回复

使用道具 举报

ID:235200 发表于 2021-1-7 21:54 | 显示全部楼层
DisplayData[ 8 ] = {0,1,2,3,4,5,6,7};此数组内的成员归谁调用:任意表达式中含有名字DisplayData均可调用,DisplayData[i ]中的i确定与数组元素对应,i的值范围0-7,分别对应数组中元素0至元素7,这一句DisplayData [0] = display_SMG_ [LEDbuff[0]];的意思是把要显示的数字内容转换为显示段码重新存入数组DisplayData中的第0个元素,
回复

使用道具 举报

ID:390416 发表于 2021-1-7 21:56 | 显示全部楼层
关于这个问题,你可以去看看《人人学会单片机》这个视频教程。就是这差不多的意思。把数码管作为一个独立的模块。
回复

使用道具 举报

ID:390416 发表于 2021-1-7 21:58 | 显示全部楼层
数码管显示原理.png
这个就是数码管缓存的做法。
回复

使用道具 举报

ID:390416 发表于 2021-1-8 00:15 | 显示全部楼层

这是我在51hei的贴子  两个595显示8位数码管的 可以看到了
http://www.51hei.com/bbs/dpj-201201-1.html
回复

使用道具 举报

ID:213173 发表于 2021-1-8 06:44 | 显示全部楼层
1.定义8个成员的缓存数组,用于保存8位数码管显示内容
uchar DisplayData[8];

2.当需要变更数码管显示内容时对8个成员或部分成员重新赋值
通过display_SMG_ []数码管段码数组把数字或字符转换成段码保存在缓存数组中
DisplayData [0] = display_SMG_ [单个数字或数码管能够表示的字符的下标位置];
DisplayData [1] = display_SMG_ [......];
......

3.在显示程序中将缓存数组成员按序逐位送到驱动端口
GPIO_DIG_= DisplayData[i];//i由0~7重复循环

强调一点:数码管显示的并不是数字或字符,而是由8笔段拼凑成的图形。
回复

使用道具 举报

ID:232366 发表于 2021-1-8 08:35 来自手机 | 显示全部楼层
suncat0504 发表于 2021-1-7 21:26
首先搞清楚动态显示的原理。然后按照动态显示的思路,去理解程序。相信你就会有所收获的。
正常处理逻辑是 ...

感谢回复  动态刷新的原理小有了解只是对编程来控制的理论稍差还欠佳!
回复

使用道具 举报

ID:451718 发表于 2021-1-8 08:44 | 显示全部楼层
这里有一个片选的概念,也就是内存RAM的工作原理。 如果你弄懂了这个硬件原理, 理解数码管的工作原理会容易很多。  程序只是配合软件层面的应用,主要是硬件 片选这个知识点,是一个难点。
回复

使用道具 举报

ID:232366 发表于 2021-1-8 08:56 来自手机 | 显示全部楼层
robinsonlin 发表于 2021-1-8 08:44
这里有一个片选的概念,也就是内存RAM的工作原理。 如果你弄懂了这个硬件原理, 理解数码管的工作原理会容 ...

感谢回复  !
回复

使用道具 举报

ID:232366 发表于 2021-1-8 08:58 来自手机 | 显示全部楼层
wulin 发表于 2021-1-8 06:44
1.定义8个成员的缓存数组,用于保存8位数码管显示内容
uchar DisplayData[8];


您后面强调的那一点说的好  前面我一直以为用二传输给数码管也从相关书籍看到和您说的一样!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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