- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机驱动16-16 LED点阵显示汉字
单片机驱动16*16 LED点阵显示汉字由于点阵引脚众多,而单片机IO数量有限,所以,行和列均采用串行的方式进行输入。效果图(图1)
整个51单片机点阵原理图如图2所示,单片机采用的是AT89S52,用P1口输出到点阵:
1.板子的组成 4个大小为32mm*32mm的8*8共阳点阵组成16*16点阵,点阵屏可拆装,采用圆孔铜排针,连接性能非常好。驱动部份使用两个移位带存储器的74HC595和两个移位寄存器74HC164组成,74HC595负责行扫描数据,74HC164负责列扫描数据。列扫描采用三极管放大电流,加大扫描强度,提高点阵屏亮度。数据接口采用可并接方式,有输入和输出,方便拼接多个单板,组成32*16、48*16、64*16等点阵。(图2)
2.点阵屏详解。本板也使用4个8*8来组成16*16点阵屏,多块合并可组成32*16、48*16,64*16等。点阵屏分为共阳和共阴两种,本板使用共阳型,(图3)
3.行驱动IC-74HC595作用详解:74HC595是硅结构的CMOS器件, 兼容低电压TTL电路。 (图4)
74HC595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。 数据在SCHcp的上升沿输入,在STcp的上升沿进入存储寄存器。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲,电路中,将两个时钟分开控制,目的是先移好位,再存储数据,这样在移位的过程中,可保持输出的数据。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7),电路将其接入下一个IC的输入(Ds)组成16位移位存储。一个异步的低电平复位/MR,电路中不使用复位信号,将此脚直接接入电源VCC)。存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线,电路中直接将此脚接GND,做直接输出。详细信息请查看74HC595文档。
4.列驱动IC-74HC164作用详解: 74HC164是简单的8位移位寄存器,详细信息请查看74HC164文档。
如图5:输入A、B在SCK时钟脉冲作用下移入寄存器。A、B是与的输入,电路将其合并做一个输入,移位寄存器的最后一位输出Qh接入下一个74HC164的输入AB,组成16位移位寄存器,位的输出经过三极管放大电流加到点阵共阳端,即做为点阵的行控制。
列的处理信号有三个,DATA、SCLH和SCLT,DATA做为列移位寄存器的输入,SCLH是移位时钟,SCLT做为锁存时钟,当将16个位数据在SCLH的脉冲作用下移入寄存器后,就可以开启SCLT时钟,使寄存器中的数据存入锁存器,因使能脚接0使能,数据直接输出Q端,Q端数据经限流电阻接入点阵COL脚位,即一行的数据显示。
另外两个信号是AB和SCK,AB做为行移位寄存器的输入,SCK是移位时钟,AB的输入在SCK的时钟脉冲下移入寄存器,寄存器输出端Q经电阻接入三极管B极,控制三极管的导通和截止,从面控制点阵ROW脚位电量。每次移位行的输出16个Q位只允许有一个是低电平,即是分时轮流的输出低电平使用三极管轮流导通,从而使扫描至上而下进行。
对于16*16点阵,整个过程是先移出16个列数据信号,再移一个行信号,重复完成16行扫描
对于32*16点阵,整个过程是先移出32个列数据信号,再移一个行信号,重复完成16行扫描
对于48*16点阵,整个过程是先移出48个列数据信号,再移一个行信号,重复完成16行扫描
程序如下:
/*16*16点阵屏的显示*/
#include
#include
#define DATE_OUT P1 //指定P1口做为输出
sbit SI=DATE_OUT ; //列数据输出位
sbit RCK=DATE_OUT; //列扫描时钟位
sbit SCK=DATE_OUT; //列数据锁存位
sbit CLK =DATE_OUT; //行数据输出位
sbit AB =DATE_OUT; //行扫描时钟位
unsigned char date[32]; //32字节RAM做为16*16点阵屏显示缓存void display(); //做为点阵扫描函数,将显示缓存的数据输出到点阵屏
void display_time(unsigned int timer); //指定时间扫描显示
code unsigned char ji[32]={//东
0x10,0x00,0x10,0x10,0x11,0xF8,0x11,0x10,
0xFD,0x10,0x11,0x10,0x31,0x10,0x39,0x10,
文档评论(0)