经典的运用PIC单片机实现LED点阵手写屏设计方案



商悦传媒   2019-05-14 23:35

导读: 本文提出了一种基于PIC单片机的手写屏设计方案,本方案采用PIC16F877A单片机为主要核心控制元件,设计了一...

  本文提出了一种基于PIC单片机的手写屏设计方案,本方案采用PIC16F877A单片机为主要核心控制元件,设计了一个32×32LED点阵模块的书写显示屏。它主要由光笔模块和点阵显示模块组成,光笔模块利用光敏电阻的光电特性,实现微亮检测功能。

  本方案采用PIC16F877A单片机为主要核心控制元件,设计了一个32×32LED点阵模块的书写显示屏。它主要由光笔模块和点阵显示模块组成,光笔模块利用光敏电阻的光电特性,实现微亮检测功能。光笔反馈信号经放大器LM324比较后,送给单片机处理。32×32点阵显示模块、驱动模块由74HC595外设驱动阵列和8位串行输入/输出移位寄存器ULN2803A组成。光笔通过显示屏微亮扫描寻找坐标值,按键和LED指示灯可实现“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移”等书写显示功能。

  本方案中的系统设计包括三大部分:PIC16F877A单片机主控器、光笔、点阵显示屏。系统的结构如图1所示。

  PIC系列单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微内核,与MCS-51指令集完全兼容。其内部还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,并包括A/D和D/A模块,执行速度快,功能强大。

  光笔选用光敏电阻作为感应器件,根据光敏电阻的光电特性,光敏电阻两瑞电压因光电阻的变化而变化。电压值经电压比较器LM324比较后可输出高/低电平。光电特性非线性易调节,且灵敏度较好。

  LED与数码管同步使用,LED用于功能指示灯,数码管用于32×32点阵LED模块书写显示屏当前光笔所在的行/列坐标值。

  点阵用微亮的光进行扫描,光笔用来感应。当光笔感应到光时,通过程序可获当前点阵光对应的坐标值。从而做出相对应的处理。光笔起着关键作用,其感应器件是光敏电阻。光敏电阻的光电特性如图2所示。

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

  点阵屏驱动参数设计无现成的32×32点阵LED模块,因此采用16块8×8点阵拼成32×32点阵。但这样占用单片机I/O过多,必须对其进行扩展。点阵工作电压在1.5V~2.2V左右,驱动电流较大。

  屏亮自动调节设计采用光敏电阻和LM317(三端可调正电压稳压器)实现屏亮自动调节。由光敏电阻光电特性原理可知,光敏电阻在不同光线照射下,阻值不一样。根据此原理,光敏电阻与LM317可调电阻并联。当光线输出不一样的电压阻值。屏亮自动调节电路如图4所示。

  当光笔长时间(1~5min时间可由输入设定)未接触显示屏,能自动关闭显示并进入休眠状态。进入休眠状态由程序控制,单片机进入休眠后,消耗电流在2mA以下。

  32×32点阵LED显示屏共有32个端口,如不驱动点阵,占用单片机I/O过多。这里采用74HC595(八外设驱动阵列)、ULN2803A(8位串行输入/输出移位寄存器)点阵行驱动和74HC154、7404点阵列驱动。共同完成32×32点阵LED显示屏驱动。显示屏行驱动电路如图5所示、列驱动电路图如图6所示。仅仅用到8个I/O口,点用资源少,易控制并且显示效果很好。

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

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

  本方案所设计的32×32点阵LED模块书写显示屏,采用PIC16F877A单片机为主要核心控制元件,主要由光笔模块和点阵显示模块组成,应用光敏电阻的光电特性,对光进行检测感应,反馈给单片机,光笔通过显示屏微亮扫描寻找坐标值,按键和LED指示灯可实现“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移”等书写显示功能。从而也证实了本方案具有较强的实用性。