51单片机驱动P10单元板

以下是P10单元板(单色,1/4扫描,户外半户外)的实物图。

在这里插入图片描述

P10屏幕是店铺常用的点阵屏幕,像素32*16(可以级联很多块)。内部电路是74hc595或者是74hc595的替代芯片编码驱动芯片组合而成的,电压5v,适合51单片机的控制,控制原理很简单。它解决了电信相关专业学生以及电子爱好者玩单片机没有点阵屏幕的尴尬局面。这个屏幕也比较便宜,30元左右。
p10单元板的接口是12接口,就是它的那个简易牛角座上的16个引脚,画pcb的话,直接两排16脚的排针就行了。
在这里插入图片描述

一、引脚介绍

其中几个引脚是有用的,剩下的都没用。
1.有用的引脚:

  • a、b:行选,屏幕总共有4行,相当于数码管的位选,接上单片机,可以是00,01,11,10,可以自己随便设置一个数去试试
  • oe:使能,高电平它的全部灯会亮,低电平灭。
  • s:74hc595的时钟(上升沿,数据移动 )
  • l: 数据锁存( 上升沿数据移动,其实:时钟和锁存这个东西,知道不知道上升沿和下降沿其实无所谓,程序中无论你写成先0后1或者先1后0,你这个写法它既有上升沿又有下降沿,就相当于按按键,有按下,有抬起)
  • r: 数据引脚
  • 供电的接线端子:电源5v,需要接电源。

2.无用的引脚(不用接线。直接露着就行了)

  • c和d同样是行选,高2和3位,这种1/4扫描屏幕上,他没有用,置空即可。
  • n为空脚,也不用接任何的线路。电源的5v上的gnd已经接地了,所以不用考虑接地的问题。

二、基本使用

  1. 这个屏幕从引脚上就基本知道如何使用了,无非就是:使能芯片,选好行选。剩下的就是写74hc595的数据了。(在此不介绍74hc595的写入,不懂的可以先学习移位寄存器,锁存器,再去学一下595)
  2. 单块屏幕上有16块74hc595的级联。理论上它可以控制16×8= 128的灯的关断。(多块屏幕级联就是16×n的74hc595的级联,n表示屏幕数,就可以控制16×n×8的灯的关断)
  3. 但是屏幕有512个灯,它是怎么控制的呢?其实一个74hc595的一个输出上接了4个灯。就是74hc595写0(这个是0亮,1灭的逻辑),如果灯一段接595,另一端直接接电源,四个灯都会亮。屏幕但是没有这么做,它使用了数码管的位选的概念。ab引脚的作用就是位选:选择四个灯中,哪个灯亮,一个灯亮了,那么剩下的都是灭的。
  4. 因为行选的原因,你只能每次控制128个灯亮,所以造成的问题是每次你只能是128灯亮,怎么全部显示数据,那就要扫描,就是比如:你可以显示行1的128点0.01秒,完了再显示行2的128点0.01秒。再就是行3行4,最后回来,再显示行1,行2等等,循环的去显示,显示切换的速度很快,人看到的就是全屏幕亮了。
  5. 屏幕扫描方式在此不做介绍了,因为我觉得它的扫描方式有点不同寻常,不太好描述。感兴趣自己试试就知道了,比如:ab选00,写入16*8位的数据,然后显示一下你就知道了。简单说一下就是:00位选的情况下:16字节数据在0,4,8,12行上,且是竖着排布的。01就是1,5,9,13行。

三、问题与解决

  • 消隐问题:当74hc595有数据且它显示在第一行时,第一行,就会有128点的亮灭情况,这时候你把ab换成2时,第二行就会显示,第一行就会灭了。但是此时第二行显示的就是第一行的数据,就会产生重影,这种下一行显示上一行的数据的情况如果处理不当,显示效果将会很差劲。
    解决方法: 显示部分的编程逻辑:先要往74hc595上写数据,但是不锁存,写完后,oe置0,全屏熄灭。但是这时候换ab行选,再锁存数据,步骤完成后,oe打开。这时候屏幕成功消隐了。
    建议:消隐问题一定要去解决的,因为可能遇到的无论怎么编程,显示就是不正确原因就是显示重隐没有消除

四、编程疑虑

  • 当今,P10屏幕用的芯片现在大多不是74hc595,它只是用更廉价的芯片给替代了,但是它控制逻辑和74hc595的逻辑是通用,可以这么想,不能因为换了芯片之后,市面上大多数的led控制卡都不能用了吧,造屏幕的也不傻。
  • 本人买的P10屏幕,也不是74hc595,而是74hc595的拓展版芯片,一个芯片16个输出,相当于两块595的级联。所以大家大可不必担心屏幕芯片的问题。
驱动 LED P10 单元可以使用单片机,常见的单片机有STC89C52,AT89C52等,这里以STC89C52为例进行介绍。 先介绍一下P10单元的硬件接口,P10单元主要包括一个LED点阵屏幕和一个控制电路。控制电路上有两个连接器,一个是信号连接器,一个是电源连接器。信号连接器包含了4个引脚,分别是:A、B、C、D。电源连接器分别包含了VCC和GND两个引脚。 接下来是具体的接线方法: 1. 将P10单元的电源引脚VCC接到单片机的5V引脚上; 2. 将P10单元的GND引脚接到单片机的GND引脚上; 3. 将P10单元的信号引脚A接到单片机的P2.0引脚上; 4. 将P10单元的信号引脚B接到单片机的P2.1引脚上; 5. 将P10单元的信号引脚C接到单片机的P2.2引脚上; 6. 将P10单元的信号引脚D接到单片机的P2.3引脚上。 接线完成后,可以按照以下步骤进行程序设计: 1. 定义引脚,将P2口定义为输出口; 2. 定义显示函数,通过将不同的数据发送到不同的引脚上,来控制LED点阵显示不同的图案; 3. 在主函数中循环调用显示函数,即可实现LED点阵屏幕的显示。 下面是示例代码: ``` #include <STC89C5xRC.H> sbit A = P2^0; sbit B = P2^1; sbit C = P2^2; sbit D = P2^3; void Display(unsigned char *data) { unsigned char i,j; for(i=0;i<8;i++) { for(j=0;j<4;j++) { A = (data[i] >> (3-j)) & 0x01; B = (data[i+8] >> (3-j)) & 0x01; C = (data[i+16] >> (3-j)) & 0x01; D = (data[i+24] >> (3-j)) & 0x01; } } } void main() { unsigned char data[32] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; while(1) { Display(data); } } ``` 上面的示例代码实现了一个连续闪烁的效果,可以根据需求修改data数组中的数据来实现不同的显示效果。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值