您的位置 首页 硬件

怎么使用单片机完成LED点阵横向动画移动

如何利用单片机实现LED点阵横向动画移动-这里大家是不是有种头顶冒汗的感觉?我们要做好技术,但是不能沉溺于技术。技术是我们的工具,我们在做开发的时候除了用好这个工具外,也得多拓展自己解决问题的思路,要慢慢培养自己的多角度思维方式。

上下移动咱们会了,那咱们还想左右移动该怎么操作呢?

办法一、最简略,便是把板子侧过来放,纵向取模就能够完结。

这儿咱们是不是有种头顶冒汗的感觉?咱们要做好技能,可是不能沉溺于技能。技能是咱们的东西,咱们在做开发的时分除了用好这个东西外,也得多拓宽自己解决问题的思路,要渐渐培育自己的多角度思想办法。

那把板子正过来,左右移动就完不成了吗?当然不是。咱们渐渐的学多了就会培育了一种感觉,便是一旦硬件规划好了,咱们要完结一种功用,大脑就能够直接考虑出来能否完结这个功用,这个在咱们进行电路规划的时分最为重要。咱们在开发产品的时分,首先是规划电路,规划电路的时分,工程师就要在大脑中经过思想来验证板子硬件和程序能否完结咱们想要的功用,一旦硬件做好了,做好板子回来剩余的便是靠编程来完结了。只要是硬件逻辑上没问题,功用上软件必定能够完成。

当然了,咱们在进行硬件电路规划的时分,也得充分考虑软件编程的便利性。由于咱们的程序是用 P0 来操控点阵的整行,所以关于咱们这样的电路规划,上下移动程序是比较好编写的。那假如咱们规划电路的时分知道咱们的图形要左右移动,那咱们规划电路画板子的时分就要尽可能的把点阵横过来放,有利于咱们编程便利,削减软件工作量。

办法二、运用二维数组来完成,算法基本上和上下移动相似。

二维数组,前边提过一次,他的运用其实也没什么杂乱的。它的声明办法是:

数据类型数组名[数组长度1][数组长度2];

与一位数组相似,数据类型是整体元素的数据类型,数组名是标识符,数组长度1和数组长度2别离代表数组具有的行数和列数。数组元素的下标一概从0开端。

例如:unsigned char a[2][3];声明晰一个具有2行3列的无符号字符型的二维数组 a。

二维数组的数组元素总个数是两个长度的乘积。二维数组在内存中存储的时分,选用行优先的办法来存储,即在内存中先寄存第0行的元素,再寄存榜首行的元素。同一行中再依照列次序寄存,方才界说的那个 a[2][3]的寄存方式就如表7-11所示。

a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]

二维数组的初始化办法分两种状况,咱们前边学一维数组的时分学过,数组元素的数量能够小于数组元素个数,没有赋值的会主动给0。当数组元素的数量等于数组个数的时分,如下所示:

unsignedchara[2][3]={{1,2,3},{4,5,6}};

或者是

unsignedchara[2][3]={1,2,3,4,5,6};

当数组元素的数量小于数组个数的时分,如下所示:

unsignedchara[2][3]={{1,2},{3,4}};

等价于

unsignedchara[2][3]={1,2,0,3,4,0};

而反过来的写法

unsignedchara[2][3]={1,2,3,4};

等价于

unsignedchara[2][3]={{1,2,3},{4,0,0}};

此外,二维数组初始化的时分,行数能够省掉,编译体系会主动依据列数计算出行数,可是列数不能省掉。

讲这些,仅仅为了让咱们了解一下,看他人写的代码的时别离发懵就行了,可是咱们往后写程序的时分,依照标准,行数列数都不要省掉,悉数写齐,初始化的时分,悉数写成unsigned char a[2][3] = {{1,2,3}, {4,5,6}};的方式,而不允许写成一维数组的格局,避免咱们犯错,一起也是进步程序的可读性。

那么下面咱们要进行横向做 I ? U 的动画了,先把咱们需求的图片画出来,再逐个取模,和上一张图片相似的是,咱们这个图形共有30张图片,经过程序每 250 ms 改动一张图片,就能够做出来动画作用了。可是不同的是,咱们这个是要横向移动,横向移动的图片切换时的字模数据不是接连的,所以这次咱们要对30张图片别离取模,如图7-11所示。

图7-11 横向动画取模图片

图7-11中最上面的图形是横向连在一起的作用,而实际上咱们要把它分解为30个帧,每帧图片独自取模,取出来都是8个字节的数据,总共便是30*8个数据,咱们用一个二维数组来存储它们。
来历;21ic

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/yingjian/344024.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部