历史上的今天
今天是:2025年01月20日(星期一)
2020年01月20日 | 以PIC单片机为主要核心控制元件的LED模块书写显示屏设计
2020-01-20 来源:elecfans
本文采用PIC 16F877A单片机为主要核心控制元件,设计了一个32×32 LED“ title=”LED“》LED” TItle=“LED”》LED“ TItle=”LED“》LED点阵模块的书写显示屏。它主要由光笔模块和点阵显示模块组成,光笔模块利用光敏电阻的光电特性,实现微亮检测功能。光笔反馈信号经放大器LM324比较后,送给单片机处理。32×32点阵显示模块、驱动模块由74HC595外设驱动阵列和8位串行输入/输出移位寄存器ULN2803A组成。光笔通过显示屏微亮扫描寻找坐标值,按键和LED指示灯可实现“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移”等书写显示功能。
系统系统总体构成
本系统设计包括三大部分:PIC 16F877A单片机主控器、光笔控制器、点阵显示屏。系统的结构如图1所示。

图1 系统结构图
PIC系列单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。其内部还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,并包括A/D和D/A模块,执行速度快,功能强大。
光笔选用光敏电阻作为感应器件,根据光敏电阻的光电特性,光敏电阻两瑞电压因光电阻的变化而变化。电压值经电压比较器LM324比较后可输出高/低电平。光电特性非线性易调节,且灵敏度较好。
LED与数码管同步使用,LED用于功能指示灯,数码管用于32×32点阵LED模块书写显示屏当前光笔所在的行/列坐标值。
分析与计算
(1)光笔选取与参数设计
点阵用微亮的光进行扫描,光笔用来感应。当光笔感应到光时,通过程序可获当前点阵光对应的坐标值。从而做出相对应的处理。光笔起着关键作用,其感应器件是光敏电阻。光敏电阻的光电特性如图2所示。

图2 光敏电阻光电特性
光敏电阻安装在光笔笔头,用于感应点阵扫描光。光笔电路图如图3所示。电路经过放大器LM324进行正相输入/反相输入电压比较,输出高低电位。经测量可知,在光照条件下,LM324输出端为0V(RB0),光敏电阻两端电压为0V;无光时,光敏电阻两端电压为2.8V,LM324输出端为高电位。由分压公式可得出RP阻值为7360Ω。当光笔接收到不同光线时,只需调节电位器,光笔正常工作。所以,在不同环境下,只需调节电位器,点阵显示屏一样正常工作。

图3 光笔电路图
点阵屏驱动参数设计无现成的32×32点阵LED模块,因此采用16块8×8点阵拼成32×32点阵。但这样占用单片机I/O过多,必须对其进行扩展。点阵工作电压在1.5V~2.2V左右,驱动电流较大。
(2)屏亮自动调节设计
屏亮自动调节设计采用光敏电阻和LM317(三端可调正电压稳压器)实现屏亮自动调节。由光敏电阻光电特性原理可知,光敏电阻在不同光线照射下,阻值不一样。根据此原理,光敏电阻与LM317可调电阻并联。当光线不一样时,LM317输出不一样的电压阻值。屏亮自动调节电路如图4所示。

图4 LID屏亮度自动调节电路
LM317输出电压计算,Vout由调节端的总电阻R和电流I共同决定。其输出电压计算公式为:
。这里通过改变电阻而改变电压。
(3)超时关显示节电设计
当光笔长时间(1~5min时间可由控制器输入设定)未接触显示屏,能自动关闭显示并进入休眠状态。进入休眠状态由程序控制,单片机进入休眠后,消耗电流在2mA以下。
电路设计
(1)点阵显示屏电路设计
32×32点阵LED显示屏共有32个端口,如不驱动点阵,占用单片机I/O过多。这里采用74HC595(八外设驱动阵列)、ULN2803A(8位串行输入/输出移位寄存器)点阵行驱动和74HC154、7404点阵列驱动。共同完成32×32点阵LED显示屏驱动。显示屏行驱动电路如图5所示、列驱动电路图如图6所示。仅仅用到8个I/O口,点用资源少,易控制并且显示效果很好。

图5 显示屏行驱动电路图

图6 显示屏列驱动电路图
(2)坐标显示电路设计
根据题目要求,在“点亮”功能下,光笔接融到显示屏某点时,控制板同步显示该点的坐标值。坐值标为数字,所以可采用四个数码管作为显示器件。采用74LS164扩展单片机I/O口,其电路如图7所示。共有四套这样的电路,其中两套用于X轴显示,另外两套用于Y轴显示。

图7 坐标显示电路
软件设计
该系统对软件设计要求高,大部分功能只能由软件完成。因程序量大,时间有限,采用C语言编程,这样就大大提高了程序移值性问题,提高了编程效率。编程关键点在于微亮扫描与捕捉储存,如图8所示。

图8 扫描与储存部分流程图
总结
本文所设计的32×32点阵LED模块书写显示屏,应用光敏电阻的光电特性,对光进行检测感应,反馈给单片机,通过处理可实现“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移”等书写显示功能。
史海拾趣
|
使用actel要设置LM_LICENSE_FILE环境变量 使用altera QII 的modelsim也要设置LM_LICENSE_FILE环境变量, 每次切换IDE都要修改,有没有办法让他们不冲突啊… 查看全部问答> |
|
关于传感器采样液体微量变化的问题? 想用传感器采样液体的微量变化,然后试了试挂吊瓶,用传感器采样滴液的变化情况,感觉液体在滴啊,但是采样值却是一会大一会小,完全没有规律,一点也没呈现出线性变小的趋势。这 ...… 查看全部问答> |
|
在用ADS调试的时候,把程序下载到0x3000 0000处,如果此时0x00处有中断向量的话,程序调试就会成功,进入到中断处理程序中。 现在的问题是,程序怎么知道中断处理函数在哪?此时我明明是烧写到0x3000 0000处,但中断向量怎么会跳转到 ...… 查看全部问答> |
|
我将ucosII(邵贝贝译)内中的第一个例子,即:创建11个用户任务,随机显示0-9的数字. 我将静态显示部分修改如下:Example1# => Example1# maxiaolin ,然后,在cmd下进入程序目录,用maketest重新编译,链接得到更新的test.exe文件,之后,运行 ...… 查看全部问答> |
|
大家好,在单片机STC12C5A08S2中怎样将某个端口设置为普通的IO口?比如我现在要将端口P44,P45,P46设俄日普通的IO口,怎么办? 别人写的程序段里有这样的一段,我看不懂。 mov 0bbh,#0ffh;p44 p45 p46 设置为普通IO口 里面的0bbh是什么,我也不知 ...… 查看全部问答> |
|
evc下操作txt文件,open后write都是成功的,可在目标机上打不开txt文件为什么? 直接在初始化中: CFile file; file.open(); fiel.write(); file.close(); 执行完这些过程后,打开目标机的txt文件时,弹出对话框“can\'t open the file” 到底是为什么? 谁能帮忙解决一下,非常感谢了!… 查看全部问答> |
|
WINCE下10Mbps的SPI数据流采用中断的接收工作方式(等到了中断然后一个个地读接收SFR)能不能处理的过来?难道必须用DMA工作方式吗? WINCE下10Mbps的SPI数据流采用中断的接收工作方式(等到了中断然后一个个地读接收SFR)能不能处理的过来?难道必须用DMA工作方式吗?… 查看全部问答> |
|
看大家最近热火朝天的进行DIY,由于没时间不能参加,就把之前搜集的一些ADI的资源文档分享给大家,希望能有用。 加油啊!各位 疲劳驾驶是造成交通事故的主要原因之一。据统计,驾驶疲劳造成的交通事故无论是绝对数字还是所占比例都是最高的。如何 ...… 查看全部问答> |




