单片机怎么控制LED点阵实现左移显示?

编程思路是怎样的?怎么去编写?... 编程思路是怎样的?怎么去编写? 展开
 我来答
limit_limb
推荐于2016-01-12 · TA获得超过731个赞
知道小有建树答主
回答量:694
采纳率:0%
帮助的人:520万
展开全部
相信你是个新手,相信你用的是51的两排8位口实现的功能,那么楼上的解释你可能不太懂(说实话我也不是很懂。)
但是简单一点来说led点阵需要两排8位,一个负责行,一个负责列,比如0是选中的意思,那么行是01111111,列是1011111,那么第一行的第二列灯亮。原理说完,那么左移的话那就简单了,简单而言,行不变,列左移一位,比如上面的行保持01111111,列在下一次变成01111111,就使得第一行的第一列亮灯了。那么在左移的时候,行是不用变,原来是多少就多少;而列呢,每次使用左移符号”<<“左移一位,就达到了左移显示的效果了。
追问
能否给我个例程,尽量简洁简单点,谢谢!
追答
*                     LED点阵实验 (左右流动显示)                                         *
* 说明 通过P0 和 P2 作为点阵接口 * *
#include
unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //纵条表--(主要看这个,理解这个!!)

/*************延时函数*********************/
void delay1(void)
{
unsigned char i,j,k;

for(k=10;k>0;k--) //循环时间是 10*20*248次
for(i=20;i>0;i--)
for(j=248;j>0;j--);

}

/*************主函数*****************************/
void main(void)
{
unsigned char i,j;

while(1)
{
for(i=0;i<8;i++) //循环8次逐条点亮8个LED点阵灯
{
P2=taba[i];
P0=0xff;
delay1();
}
}
}
空雪梦见
2013-09-09 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1198万
展开全部
比如你有一个这样的数组
__code unsigned char scrdata[24];
每一个元素代表一列数据(8个位),这样就是8行24列
然后你再弄一个这样的数组
unsigned char cur[8];
这个64个位,8x8,正好是一个点阵的大小。

好了,在主函数里面,设定一个定时器,定时器配合全局变量可以延长定时时间(不然只有65536个周期)。
然后弄一个全局变量代表当前显示是第几列开始。
定时器那边到时间了就从scrdata复制数据到cur
主函数就不断循环负责把cur的内容显示到led上。

大功告成。
追问
能否给我个例程,尽量简洁简单点,谢谢!
追答
我当时用的是汇编语言写的,C/C++手上没有现成的程序……
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王维wwww
2013-09-10 · TA获得超过104个赞
知道答主
回答量:57
采纳率:0%
帮助的人:31.9万
展开全部
赞同二楼,就是一个编码的问题,其实建议你看看例程,相信买单片机都会有例程的,自己再改改里面的东西,你就懂了。这个又没有什么驱动程序,不太复杂的。加油
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式