找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

36个LED不同单片机IO口的驱动问题,想了一天了求指导

查看数: 4787 | 评论数: 13 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-1-11 15:44

正文摘要:

本人单片机小白,只会用玩同一个IO口4*4的矩阵。在一个IO口上可以用十六进制设置4个引脚高,4个引脚低,P1=0xF0;  12*3的36个灯怎么驱动,想了一天了跪求大佬

回复

ID:466753 发表于 2019-1-19 15:45
两个P0总共可以驱动8*8=64个灯,方式原理与4*4一般
ID:149389 发表于 2019-1-18 15:36
动态扫描,Proteus仿真。



ID:466499 发表于 2019-1-14 22:22
wulin 发表于 2019-1-11 17:59
最简单的方法就像操作数码管一样,设置unsigned int 数组控制行,设置unsigned char 数组控制列,把不同组 ...

大佬牛逼,这么多方法,我还是觉得这种比较易实现多种功能组合
ID:432823 发表于 2019-1-12 13:39
根据你的电路用动态扫描方式,列提供数据,行扫描,频率在50*12Hz,每次单片机一个引脚上只有一个LED点亮,关键程序的写好,单片机引脚能承受电流的20MA,要加限流电阻。
ID:213173 发表于 2019-1-11 17:59
本帖最后由 wulin 于 2019-1-12 08:00 编辑

最简单的方法就像操作数码管一样,设置unsigned int 数组控制行,设置unsigned char 数组控制列,把不同组的端口组合成一个unsigned int变量来操作。参看我以前的回坛友的帖子:“异组端口组成矩阵键盘的读写操作方法”。也可以按点阵LED方法驱动。
ID:330301 发表于 2019-1-11 17:03
可以考虑采用扫描方式控制,只要扫频大于20Hz,人眼基本就分辨不出来。
ID:123289 发表于 2019-1-11 17:01
其实,这是个数学分解质因素的问题。
ID:123289 发表于 2019-1-11 16:59
如果必须用8个IO来做可以这样:4*3*3。
3*3用6个IO可以做成9个驱动,这样的驱动做4组,这4四组用剩下的两IO做选通,刚好可以有4个状态的选通。不过,3*3之后,如何再被选通要下功夫了。需要增加其它器件,得不偿失。
所以几乎无人采用这种方式,但作为学习,你可以按照这个思路试试。
大多会采用6*6的方案。即用12个IO口。
ID:212177 发表于 2019-1-11 16:51
相信P0,P2的数据你都会了,P1可以这样表示:第一行P1=10000000B,第二行P1=01000000B,第三行P1=00100000B
ID:123289 发表于 2019-1-11 16:49
如法炮制:6高6低。
ID:212177 发表于 2019-1-11 16:49
相信P0和P2的数据你都会了,P1你可以这样:P1=10000000B 表示第一行,P1=01000000B表示第二行,P1=00100000B表示第三行
ID:94031 发表于 2019-1-11 16:35
要L1头一个灯亮,p10低,p11与p12高,p20高,p21-p27以及p00-p03全低。
要L1第二个灯亮,p10低,p11与p12高,p21高,p20-p27以及p00-p03全低。



要L2头一个灯亮,p11低,p10与p12高,p20高,p21-p27以及p00-p03全低。



以此类推。
ID:435470 发表于 2019-1-11 16:05
P1=0xF0是全亮啊,你这36个LED也是要全亮和全灭吗?

全亮:P1&=0xf8;P2=0xff;P0|=0xff;
全灭:P1|=0xff;P2=0xff;P0|=0xff;

好久没搞51了,都不敢肯定对不对。。。

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

Powered by 单片机教程网

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