完美书写点阵屏设计.docx
- 文档编号:12759615
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:23
- 大小:629.96KB
完美书写点阵屏设计.docx
《完美书写点阵屏设计.docx》由会员分享,可在线阅读,更多相关《完美书写点阵屏设计.docx(23页珍藏版)》请在冰豆网上搜索。
完美书写点阵屏设计
LED点阵书写显示屏
摘要本系统以51单片机为核心,设计并制作了一个基于16×16点阵LED模块显示屏。
该点阵可以实现扫描微亮和显示点亮两种工作模式,能够通过自制光笔检测在点阵处于扫描微亮状态时获取其行列坐标信息,并能通过液晶显示出来,同时能依据功能要求控制检测点处LED的亮灭,在屏幕上实现“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移”等书写显示功能,并且通过按键可以实现不同功能之间的切换。
设计方案运用了74HC164驱动点阵的行和运用74HC595驱动点阵的列,通过单片机的控制实现各种显示功能。
关键词:
16×16点阵LED显示屏、单片机、74HC164、74HC595、光笔
目录
一、设计任务及要求2
1.1设计任务2
二、方案论证与比较2
2.1核心控制模块2
2.2光笔设计的方案选择2
2.3人机交互模块2
三、系统硬件设计3
3.1系统的总体设计3
3.2单元模块的设计及参数计算3
(1)光笔的设计及单元参数的设计3
(2)16×16LED点阵的连接及驱动控制电路4
(3)键盘的使用及设计5
四、软件设计6
4.1主程序流程图6
图4.1系统菜单程序图6
图4.2.2程序功能流程图7
4.2子程序流程图7
图4.2所示为光笔检测流程图7
4.3程序8
五、测试结果10
六、总结11
附表一12
一、设计任务及要求
1.1设计任务
设计并制作一个基于16×16点阵LED模块的书写显示屏,其系统结构如图1所示。
在控制器的管理下,LED点阵模块显示屏工作在人眼不易觉察的扫描微亮和人眼可见的显示点亮模式下;当光笔触及LED点阵模块表面时,先由光笔检测触及位置处LED点的扫描微亮以获取其行列坐标,再依据功能需求决定该坐标处的LED是否点亮至人眼可见的显示状态,从而在屏上实现“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移”等书写显示功能。
图1
二、方案论证与比较
2.1核心控制模块
核心控制模块是系统的大脑,控制着系统的所有输入输出、计算、判断与决策。
“LED点阵书写显示屏”检测精度要求高且数据存储容量大,选择适合的控制模块,能确保其快速是实现稳定及达到系统要求的基本条件。
考虑到我们现有的材料和技术,我们使用ATMEL公司的51系列单片机。
此系列单片机使用广泛,技术成熟,调试方便,价格便宜,其运行速度和存储空间基本符合项目要求。
所以,最终我们采用了51单片机。
2.2光笔设计的方案选择
光笔设计的关键是选择合适的传感器件,只有具有很高的灵敏度和一定的响应时间的传感器才能完成系统的要求及功能。
方案一:
采用光敏二极管,有较好的高频特性,具有一定的可靠性,功耗低,响应速度快。
方案二:
采用光敏三极管,其工作原理与光敏二极管相似。
但光敏三极管除了具有光敏二极管能将光信号转换成电信号的功能外,还有对电信号放大的功能。
但因为我们用光敏三极管做过一个光笔,其反应速度慢和不灵敏。
综上分析考虑,我们采用光敏二极管作为光笔的检测部件,做出来的性能比用光敏三极管好。
2.3人机交互模块
通过按键选择系统的“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移”等书写显示功能,所以考虑到需要显示的信息量较多,我们采用了将常用的12864液晶显示屏。
经过仔细的论证与比较,决定系统个主要模块最终方案如下:
微控制器模块采用51单片机最小系统;光笔模块采用光敏二极管;显示模块采用12684液晶显示;点阵屏模块采用成品的16*16点阵模块。
2.4定位方法
方案一:
大多定位方法都采用一次定位(即检测到光就立刻把坐标的值进行存储),这样做的好处是定位快速,屏幕不会有闪烁的现象,但定位不是很准确很容易出现误判,而且受光是影响很大。
方案二:
采用三次定位的方法(即进行三次的判断),这样做可以大大减少误判的情况,坐标的定位准确率达到了百分之九十八以上,但有与进行了三次判断使屏幕稍微有点闪烁的现象,影响不是很大。
综上我们采用了方案二。
三、系统硬件设计
3.1系统的总体设计
本设计以80C51单片机为核心部件结合按键、12864液晶显示、光笔检测及LED点阵驱动显示等部分组成。
系统框图如图2所示:
图2系统框图
3.2单元模块的设计及参数计算
(1)光笔的设计及单元参数的设计
光笔检测模块电路原理图如图4。
Q1为光敏二极管,经R2分压,将亮度信号转换成电压信号。
光敏二极管在微亮下的电阻为300K,当光笔检测到微光时,电压比较器LM393的正输入端比负输入端低,所以输出为低电平,在没遇到微光时,输出为高电平。
通过改变R5、R3的阻值,改变电压比较器的负输入端电压,从而提高光笔的灵敏度。
自附:
光敏二极管即光电二极管
图3光笔电路图
(2)16×16LED点阵的连接及驱动控制电路
通过74HC164驱动点阵的列和运用74HC595驱动点阵的行,再经过三极管进行电流放大,电路图见附表一。
图474HC164控制LED点阵屏的列
图474HC595控制LED点阵屏的行
(3)键盘的使用及设计
键盘是使用比较简单的独立式键盘,而且具有发光二极管指示功能模块。
在程序中采用中断扫描的方式,在没有键操作时CPU执行正常程序,只在有键操作时才处理键盘程序。
其电路如图8所示:
图5独立式键盘电路图
按键功能:
按键一:
实现各菜单功能的切换,其可以分别在
点亮模式;画亮模式;连写模式;对象拖移之间切换;同时按键一还是
可以实现从各个界面退回初始界面的的功能;
按键二:
确认键;实现进入各个界面的功能;
按键三:
光标移动按键,实现各个界面的选择;
四、软件设计
4.1主程序流程图
主程序采用了基于消息驱动的状态机软件设计思路,通过状态机来合理划分系统各工作状态,将原来复杂的问题简单话;并采用模块化的方法将各个功能细化。
整个程序清晰、简单、可读性高、移植性强。
系统菜单程序图下图4.1.1所示,通过划分不同工作状态,合理建立各状态模型。
详细的程序功能流程图如图4.2.2。
图4.1系统菜单程序图
图4.2.2程序功能流程图
4.2子程序流程图
如图4.2所示为光笔检测流程图。
图4.2所示为光笔检测流程图
4.3程序
//*********************************************************
//头文件
#include
#include
#include<12864.h>
#include
#include
#include
ucharkey1Times;//按键1次数
ucharkey1Save,key1Check;//按键1保存和检测
uchark2=0,k3=0;
//-----------------------------------------------
sbitKEY1=P3^0;//按键1定义
sbitKEY2=P3^1;//按键2定义
sbitKEY3=P3^5;//按键3定义
sbitKEY4=P3^6;//按键4定义
//-----------------------------------------------
//子程序声明和用法
bitscanKey1(void);
//按键1检测
voidprocKey(void);
//按键处理子程序
voidkeyword(void);//按键子程序
voidphoto1display();//图一子程序
//===============================================
Main()
{/******************K2=1时进入界面********************************/
if(k2==1)
{
switch(key1Times)
{case1:
{lcdClear();
dispString(0,0,1,"请点亮··········");
dispString(1,0,1,"行坐标");
dispString(2,0,1,"《《《《》》》》");
dispString(3,0,1,"列坐标");
while(KEY1&KEY2&KEY3==1)
dianliang();
}break;
case2:
{lcdClear();
dispString(0,0,1,"画亮中·····");
dispString(3,0,1,"K2键结束");
while(KEY1&KEY2&KEY3==1)
hualiang
(1);
}break;
case3:
{lcdClear();
dispString(0,0,1,"字一");
dispString(1,0,1,"字二");
dispString(2,0,1,"字三");
dispString(3,0,1,"字四显示");
while(KEY1&KEY2&KEY3==1);}break;
case4:
{lcdClear();
dispString(0,0,1,"请留下");
dispString(1,0,1,"您的笔记····");
dispString(3,0,1,"K2键拖移");
while(KEY1&KEY2&KEY3==1);}break;}
}
if((key1Times==2)&&(k2==2))
{
dispString(0,0,1,"全屏擦写");
dispString(1,0,1,"反显变色");
dispString(2,0,1,"画亮模式");
dispString(3,0,1,"橡皮擦");
delaySec
(1);}
以下是子程序:
《12864.h》
········
《点亮.h》
········
《画亮.h》
········
《连写.h》
········
五、测试结果
测试项目
基本要求
发挥要求
电路测试要求
点亮及显示坐标
即时点一个点并显示坐标
实现,并直接利用LED屏显示坐标
划亮
2S点亮40个点
2S点亮35个点,有点慢
反显
能对屏上显示的信息实现反相显示
实现
整屏擦除
能实现对屏上所显示信息的整屏擦除
实现
笔画擦除
能用光笔擦除屏上所显示汉字的笔画
实现
连写多字
在30S内在屏上以“划亮”方式逐个写出4个汉字
实现
六、总结
首先,感谢洪老师的指导,在我们遇到困难的时候能帮助我们解决难题。
在整个制作过程中,我们在网上查阅了大量的资料。
虽然网上有关我们这个课题的资料很多,但很多核心技术是没有写上去的。
所以,我们一步一步摸索。
在用光敏三极管做成我们的第一个光笔,虽然能检测的到光信号,但灵敏度达不到要求。
虽然电路图简单,原理简单,我们还是不能改进这第一个光笔。
接着,我们用光敏二极管做出了我们的第二个光笔。
显然,灵敏度比第一个好,所以我们采用了第二个光笔电路。
这个过程让我们明白,做东西读懂原理,再在面包板上做出电路图,检验过了,再画图做成成品。
这样子才能让我们更节省材料,节省开支。
在最关键的技术难题上,是如何确定点阵屏光点的坐标,通过改进光笔的性能,参考网上程序编写的思路,通过反复试验点阵屏的亮度与延时的时间,最后的效果还不是很好。
LED点阵书写屏的应用,我们总结如下:
1、技术特点和优势:
突破LED点阵屏传统输出模式,只能输出固定的程序字符,而该点阵不需要重新擦鞋程序就可以随时更改显示内容,方便快捷,同时输出的内容多样化,突破传统的字符。
2、作品适应范围及推广前景:
该作品适用于LED点阵广告屏,可应用该技术制作一个改变LED点阵内容的远程控制器,随时随地更新LED点阵屏的内容,方便快捷。
同时,可以应用于教学的黑板,解决传统的反光问题,让教师上课更加轻松。
3、市场分析和经济效应预测:
市场上,LED点阵广告牌应用广泛,但广告的内容是固定不变的,而我们的产品可以改变这种局面。
广告牌挂在高空中,改变内容十分困难,所以该技术可以应用一个LED点阵控制器,能随时随地改变广告的内容。
附表一
图116*16点阵屏
图2点阵行控制电路
图3电流放大电路
图4输入端与列控制电路
陣板部份:
核心板+驅動板:
早期調試圖:
終極pcb圖:
早期pcb:
人機接口:
驅動板背面:
===许多朋友弄不明白具体的扫描方式,这里用一个8*8的动画举列:
===
实际上还有反码校检和奇效验,这里为了简明而省掉了。
论文
这题可以用两种要领来实现,一种是用亮度来标志坐标,差别的点的亮度差异,这样的话会很贫苦:
要分亮和灭两个段,每个段里分别分(32*32)层,而且段与段之间还要隔很远,不然灭的灯内里最亮的一个与亮的灯内里最暗的一个就不好区分了。
反编码的进程是这样的,传感器采回一个点的亮度数据,首先果断它是属于亮这个范畴的点还是灭这个范畴的点,要是是灭的点,再在灭点所分的亮度级层之间找该点的亮度所对应的坐标。
取得坐标后要是想讲该点置亮,则用此坐标在亮这个分层里取得对应的亮度值将其送回屏幕上。
。
。
这样搞不但贫苦而且容易受到环境和四周灯的滋扰。
别的便是数字编码来实现了,每个灯表现的东东分两个部门,一个是编码(给呆板看的)、另一个是表现的内容(给人看的)。
由于人只想看表现的内容而非乱七八糟的编码,故编码部门所占的时间比要很小,表现内容所占的时间许多。
用数字编码的话不必要像上面模拟的那样两个坐标都编码,而是只必要编一个坐标码就够了,另一个坐标可直接取得。
一个坐标是0到31要5位二进制的编码,实际上还要加一些分外的编码做效验,云云以来抗外界滋扰的性能就很强了。
数字编码的编码和解码进程是同步举行的,控制器送一位编码(一排灯的编码是同时、并行送出的)到屏幕后,待其稳固后读回传感器的数据,当全部编码送完后,比对读回的编码,即可取得一个坐标值。
而别的一个坐标值便是控制器当前扫描的是哪一排。
(参看上面的gif动画)
3QLED显示屏的虑拟并逐点校正技术怎么理解?
A虚拟:
虚拟主要是跟IC的控制有关,静态的2R是由一颗IC角控制的,而虚拟的则是1个IC角控制一个红灯,这样他就可以与周边任意的红绿蓝组成一个像数点,静态的1颗红灯只能组成一个像素,虚拟的一颗红灯可以组成4个像素,所以一般虚拟的像素点是静态的4倍!
画面看起来更加柔和,但是显示字体却相对静态来说比较模糊!
逐点矫正:
这个功能是当你显示屏遇到马赛克、亮度不统一的时候,对显示屏进行亮度调整,使得显示屏色彩和亮度保持一致,不过他只能以亮度低的为标准,而损失亮度高的!
就是说越使用逐点矫正,亮度就越来越低,相对于马赛克,很多人则希望选择逐点矫正!
4Q不同尺寸的显示屏是不是与LED驱动有关?
如果在大屏上,如果是LED灯串联,LED背光IC的驱动电压大,并联电流会大,但总的来说,大屏的功率要大,是不是这样的?
通常说IC用在几寸机寸屏上,这与LED背光IC及LCD驱动IC有什么样的关系?
A不同尺寸显示幕它的电流控制都是有一定的生产标准,尺寸不同的完全可以生产电流或者电压相同的产品来,因为他们完全取决于电阻的控制,还有你说的驱动全是由IC取决的,与LED无关
5Q基于51单片机的led点阵显示屏设计原理与电路图
A51和led点阵一般要用到动态扫描的方式,也就是显示的画面不是一下子就把整个画面的内容全部显示出来,而是逐行显示的,只不过显示的频率超过了50HZ
甚至更高,所以我们看起来是“不晃眼”的。
也就是说,屏幕显示是由行显示组成的(即子程序)。
行显示再细分就是有位显示组成,不过行显示就不用逐位显示了。
其实行显示就是串入并出,即行显示是一下子就显示出来的。
6Q用液晶显示器的驱动来驱动LED点阵屏可以吗?
A可以啊 现在的显示屏信号分3种 245信号485信号483信号看你的是那种如果信号一样的话还要看点数是否一样不一样的话也会有变化 但是变化起来就不是那么回事了
7Q如何在LED点阵上显示会走动的字?
通过已烧入程序的芯片和简单电路,使这块点阵上能显示走动的文字,
A在点阵上控制字的组成形状的哪几个灯,然后按照排列的循序,采取递归的方式(循环增加亮灯的位数)一直走到头,然后循环。
8Q使用coreldraw制作点阵led显示效果
A有个字体就是点阵led字
不过你可以画圆然后向右向上负责成为点阵效果,然后使用精确裁剪工具,将做好的点阵放入目标图形或者文字(图形文字不填充,或者填充和点阵不一样色)
9Qled点阵模块用什么单片机驱动
A51不能直接驱动(负载能力不足)通常需要驱动电路,LED点阵有专门的译码驱动芯片,可以查一查
AVR可以直接驱动,但是需要译码,LED点阵不经译码,那需要多少IO口哦?
10QLED模块2*8个8*8点阵集成的使用方法
A通用的LED单元板,只要你有一张控制卡就可以控制了,或者你会编程也可以,上面16个输入输出排针是不是ABCD,OE,SCLK,R0,R1,等等
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完美 书写 点阵 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)