PIC单片机控制点阵LED显示技术研究

时间:2022-09-29 05:42:24

PIC单片机控制点阵LED显示技术研究

[摘要]led显示技术在 工业 仪表中应用十分广泛,它能直观地显示运行系统的实时状态。同时pic单片机由于功能强,成本低的优势在各种仪表中应用广泛。对pic单片机控制点阵led显示技术进行研究。

[关键词]pic单片机 led 控制

一、点阵led的结构

使用的led为14*15点阵,由六片7*5点阵led拼接而成,先分别用三片led横向组成两个7*15点阵,再用两个7*15上下排列,组成需要的14*15点阵。当某一个led所在的行驱动为低,列驱动为高时,这个发光管被点亮。

二、静态显示电路的构成

74ls164为ttl单向8位移位寄存器,可实现串行输入,并行输出。其中a、b(第1、2脚)为串行数据输入端,2个引脚按逻辑与运算 规律 输入信号,共一个输入信号时可并接。clk(第8脚)为时钟输入端,可连接到串行口的同步时钟输出端。每一个时钟信号的上升沿加到clk端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74ls164中。在给出了8个脉冲后,最先进入74ls164的第一个数据到达了最高位,再来一个脉冲,第一个脉冲就会从最高位移出。4片74ls164首尾相串,而时钟端则接在一起。

只要我们对每片led上7位行驱动中的一位输入低电平,这行中相应列驱动为高的点就会被点亮。如此反复向每一行送入低电平,同时在相应的行被选中时,在列送入相应的数据,并反复的扫描,由于人眼存在视觉暂留效应就可以看到预期的画面信息。

三、编码方式

编码方式是由硬件设计方式决定的。因为送入下排三个led中最后一片最后一位的列驱动是最先进入74ls164的数据,所以字模的编码顺序和在led显示顺序正好相反。而且pic16f877做串行输出时,串行输出寄存器sspbuf中的8位数据的最高位是最先送出的,所以每行8个点是右面为高位,左面为低进行编码。后面的类推,要显示一个完整的14*15点阵共需要28组的8位2进制字模数据。

四、pic16f877与led电路的连接

pic16f877中提供了两个串行通信模块,分别是同步串行口和通用同步异步接收发送器。其中mssp模块又提供了两种工作方式,一种是串行接口(spi),另一个工作方式是芯片间通信总线(iic)。ssp模块主要用于单片机和其他接口或微处理器芯片间的串行通信,像串行eeprom、显示控制器、模拟数字转换器等,都属于电路板上众多器件间的串行通信接口。usart则属于和电路板外部设备串行通信的接口,简单地说就是rs232接口,可以与pc通信。所以,我们选择spi同步串行通信方式送入行选编码。spi工作方式提供8位数据的传输,sck引脚上的时钟速度决定数据的传输速度。在连接的器件中,由主控器件来产生时钟,其他器件以此外界的时钟为标准。因此在使用spi方式时,必须确定那个器件为主控器件,其它则为从控器件。本电路使用pic16f877作为主控器件,ssp模块工作在主控方式下。sck引脚的时钟由单片机自己产生,因此可以在任何时候数据的传送,传送在有写入sspbuf缓冲器的动作时开始,我们用sck引脚输出串行输出同步时钟。本电路中的spi模块中用来输入出数据,那么sdi引脚可以关掉不用,这时ssbuf寄存器里的内容全根据设定的时钟一位的由sdo引脚移出。在设置使用mssp模块的spi工作方式前第一件事是初始化mssp模块,sspcon寄存器包含了要设置的相关位,在设置完成后,置mssp模式使能位sspen,便可以开始spi方式的工作。同时,要复位ssp模块,只要先将sspen位清除0,然后重新设置sspcon,再将sspen设置为1就可以。设定好sspcon就相当于设定了sdo,sck,sdi,ss 为串行通信用的引脚,因此除了sspcon寄存器的设置外,对spi工作方式用到的引脚也要设置。sdo和sck为输出引脚,因此trisc<3>和trisc<5>必须清零。

portd端口寄存器读出的是相应的i/o引脚上的电平状态,而写portd

端口寄存器则是写入其数据锁存器。另外,d端口还可以作为并行从动端口与单片机总线接口。这里,我们使用它的8 位并行数据输出功能,作为7位并行行选信号和一位使能信号的输出。

五、程序的编写

程序各模块功能说明:

initial:初始化模块。设置串行口工作方式为spi主动方式;rc3,rc5引脚为输出;sspbuf寄存器在时钟上升沿送出数据;串行同步时钟为单片机内部时钟的四分频;清ssp中断标志;使能ssp模块。

i2c_out:串行口发送数据模块,要发送的数据存放在txdata寄存单元中。将txdata内容送入sspbuf中后,检查sspif位。当此位被置1时,表示sspbuf数据送完。sspif位需要手动清零,然后此模块返回。

show:将表table的段地址装入数据寄存器data1中。共有四个字符要显示,数据寄存器num中存放当前显示的是第几个字体符。

show1:每送一次行选取数据后连续送四个列选数据,数据寄存器r1 中存放在送出的是每四个列选数据是的第几个,初始值为4。

show2:初始化表地址段内偏移数据寄存器r0。由段地址和段内偏移相加得出要查表数据的页内地址,地址值存放w寄存器。查表得到地址w 内的数据内容放入txdata数据寄存器,即当前要送入的列选数据。

show3:将行选数据寄存器r2中的内容送放d口,显示已经送出的四组列选数据。调用延迟模块。关闭d口,led全灭。从新 计算 行选数据,然后存入行选数据寄存器r2中。通过r3寄存器判断是否一个字符是否全部显示完毕,如果没有完毕则回到show1模块,送出下面四个列选数据;否则转到下一个模块。

number:将当前的段内偏移加上段地址作为新的段地址,这个新的段地址存放在data1数据寄存器中。判断是否所有字符都已经显示完毕。如果没有则转移到show6模块准备显示下一个字符;如果所有字符都已经显示完毕,则回到主模块main,循环显示四个字符。

delay:延迟模块。因为每次led上只有一行是显示出来的,所以快速的刷新会在人的视觉系统中造成视觉暂留,人眼看到的就会是一幅完成的画面。延迟程序时间的长短应使人肉眼看到的画面连贯,无强烈闪烁。

参考 文献 :

[1]程明、刘琴,led显示屏的原理及其无线寻呼通信方法[j].电讯技术,2004,(04).

[2]王永忠,银行自动叫号系统的设计[j].北京服装学院学报( 自然 科学 版),2006,(02).

上一篇:关于纳米技术的应用现状及展望 下一篇:金保工程的完善与运用