历史上的今天
返回首页

历史上的今天

今天是: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所示。

以PIC单片机为主要核心控制元件的LED模块书写显示屏设计

图1 系统结构图


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


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


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


分析与计算

(1)光笔选取与参数设计

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

以PIC单片机为主要核心控制元件的LED模块书写显示屏设计

图2 光敏电阻光电特性


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

以PIC单片机为主要核心控制元件的LED模块书写显示屏设计

图3 光笔电路图


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


(2)屏亮自动调节设计

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

以PIC单片机为主要核心控制元件的LED模块书写显示屏设计

图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口,点用资源少,易控制并且显示效果很好。

以PIC单片机为主要核心控制元件的LED模块书写显示屏设计

图5 显示屏行驱动电路图

以PIC单片机为主要核心控制元件的LED模块书写显示屏设计

图6 显示屏列驱动电路图


(2)坐标显示电路设计

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

以PIC单片机为主要核心控制元件的LED模块书写显示屏设计

图7 坐标显示电路


软件设计

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

以PIC单片机为主要核心控制元件的LED模块书写显示屏设计

图8 扫描与储存部分流程图


总结

本文所设计的32×32点阵LED模块书写显示屏,应用光敏电阻的光电特性,对光进行检测感应,反馈给单片机,通过处理可实现“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移”等书写显示功能。

推荐阅读

史海拾趣

Fairchild公司的发展小趣事

1957年,Fairchild半导体公司在硅谷成立,其背后有一群被称为“八叛逆”的年轻科学家。这八位科学家曾在肖克利半导体实验室共事,但因不满肖克利的管理方式和缺乏研究成果,他们决定离开并自行创业。这群年轻的科学家包括罗伯特·诺伊斯(N. Noyce)和戈登·摩尔(Gordon Moore)等,他们共同创立了Fairchild半导体公司,为硅谷的半导体产业奠定了坚实的基础。

AdaptivEnergy公司的发展小趣事

随着科技的不断进步和市场环境的变化,Fairchild公司也面临着转型和创新的挑战。为了保持竞争力和市场地位,Fairchild公司不断加大对新技术和新产品的研发投入。同时,公司也积极寻求与其他企业和研究机构的合作,共同推动半导体技术的创新和发展。通过这些努力,Fairchild公司成功实现了从传统半导体制造商向创新型科技企业的转型。

以上五个故事简要概述了Fairchild公司在电子行业发展的历程和成就。作为半导体行业的领军企业之一,Fairchild公司凭借其卓越的技术实力、创新能力和市场洞察力,为电子行业的发展做出了重要贡献。

BCD Semi(Diodes)公司的发展小趣事

BCD Semi(Diodes)公司自成立以来,一直致力于模拟半导体产品的设计和制造。在某一时期,公司研发团队成功突破了某项关键技术,开发出了具有更高性能、更低功耗的新型模拟器件。这一技术突破使得BCD Semi的产品在市场上更具竞争力,赢得了众多客户的青睐。随着产品升级的不断推进,公司逐渐在模拟半导体领域树立了良好的口碑。

Chip Quik公司的发展小趣事

为了进一步拓展业务,Chip Quik公司积极寻求与电子制造商、维修中心和分销商等合作伙伴建立合作关系。通过与这些合作伙伴的紧密合作,公司能够更好地了解市场需求,优化产品供应链,提高市场覆盖率。

American Power Devices Inc公司的发展小趣事

近年来,电子行业面临着巨大的变革,新技术、新产品层出不穷。为了应对这一挑战,APD公司积极调整战略,加大在新能源、物联网等领域的投入。同时,公司还注重人才培养和引进,通过搭建良好的人才梯队,为公司的创新发展提供了有力保障。

General Semiconductor ( Vishay )公司的发展小趣事

1997年,Vishay正式进入分立半导体领域,收购了Lite-On Power Semiconductor公司65%的股份。这一举措标志着Vishay在半导体技术上的重大突破。随后,在1998年,Vishay又收购了TEMIC的半导体业务部分,包括特洛芬肯(Telefunken)和硅尼克斯(Siliconix)两家公司的大部分股份。这些收购为Vishay带来了先进的晶体管、二极管、光电子装置等半导体技术,进一步巩固了其在半导体领域的地位。

问答坊 | AI 解惑

LM_LICENSE_FILE环境变量问题

使用actel要设置LM_LICENSE_FILE环境变量 使用altera QII 的modelsim也要设置LM_LICENSE_FILE环境变量, 每次切换IDE都要修改,有没有办法让他们不冲突啊…

查看全部问答>

关于传感器采样液体微量变化的问题?

    关于传感器采样液体微量变化的问题?     想用传感器采样液体的微量变化,然后试了试挂吊瓶,用传感器采样滴液的变化情况,感觉液体在滴啊,但是采样值却是一会大一会小,完全没有规律,一点也没呈现出线性变小的趋势。这 ...…

查看全部问答>

关于用ADS1.2调试中断程序的问题,想不明白!

在用ADS调试的时候,把程序下载到0x3000 0000处,如果此时0x00处有中断向量的话,程序调试就会成功,进入到中断处理程序中。    现在的问题是,程序怎么知道中断处理函数在哪?此时我明明是烧写到0x3000 0000处,但中断向量怎么会跳转到 ...…

查看全部问答>

ucosII的例子修改问题?

我将ucosII(邵贝贝译)内中的第一个例子,即:创建11个用户任务,随机显示0-9的数字. 我将静态显示部分修改如下:Example1# => Example1# maxiaolin  ,然后,在cmd下进入程序目录,用maketest重新编译,链接得到更新的test.exe文件,之后,运行 ...…

查看全部问答>

单片机中怎样设置为普通的IO口

大家好,在单片机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工作方式吗?…

查看全部问答>

各位大仙们,赊我点430的实验例程书吧

看了好长时间的理论,想着做做实验,买了板子!想动手了,不过各种大程序,不消化!大仙们有进阶的实验例程电子书吗!赊我点哈…

查看全部问答>

基于ADI的BF533的驾驶疲劳检测系统设计

看大家最近热火朝天的进行DIY,由于没时间不能参加,就把之前搜集的一些ADI的资源文档分享给大家,希望能有用。 加油啊!各位 疲劳驾驶是造成交通事故的主要原因之一。据统计,驾驶疲劳造成的交通事故无论是绝对数字还是所占比例都是最高的。如何 ...…

查看全部问答>