基于单片机的LED汉字显示屏的设计与Proteus仿真_第1页
基于单片机的LED汉字显示屏的设计与Proteus仿真_第2页
基于单片机的LED汉字显示屏的设计与Proteus仿真_第3页
基于单片机的LED汉字显示屏的设计与Proteus仿真_第4页
基于单片机的LED汉字显示屏的设计与Proteus仿真_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的LED汉字显示屏的设计与Proteus仿真摘要:研究了基于AT89C51单片机16×16LED汉字滚动显示屏的设计与运用Proteus软件的仿真实现。主要介绍了LED汉字显示屏的硬件电路、汇编程序设计与调试、Proteus软件仿真等方面的内容,本显示屏的设计具有体积小、硬件少、电路结构简单及容易实现等优点。能帮助广大电子爱好者了解汉字的点阵显示原理,认识单片机的基本结构、工作原理及应用方法,并提高单片机知识技术的运用能力。

关键词:单片;LED;点阵;汉字显示

O引言

LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的用于公交汽车、商店、体育场馆、车站、学校、银行、高速公路等公共场所的信息发布和广告宣传。LED显示屏发展较快,本文讲述了基于AT89C51单片机16×16LED汉字点阵滚动显示的基本原理、硬件组成与设计、程序编写与调试、Proteus软件仿真等基本环节和相关技术。

1硬件电路组成及工作原理

本产品采用以AT89C51单片机为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HCl54)、16×16LED点阵5部分组成,如图1所示。其中,AT89C51是一种带4kB闪烁可编程可擦除只读存储器(FalshProgrammableandErasableReadOnlyMemory,FPEROM)的低电压、高性能CMOS型8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,工业标准的MCS一5l指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,能够进行1000次写/擦循环,数据保留时间为10年。他是一种高效微控制器,为很多嵌人式控制系统提供了一种灵活性高且价廉的方案。因此,在智能化电子设计与制作过程中经常用到AT89C51芯片。时钟电路由AT89C5l的18,19脚的时钟端(XTAIl及XTAL2)以及12MHz晶振X、电容C2、C3组成,采用片内振荡方式。复位电路采用简易的上电复位电路,主要由电阻R,R2,电容C,开关K组成,分别接至AT89C51的RST复位输入端。LED点阵显示屏采用16×16共256个象素的点阵,可通过万用表检测发光二极管的方法测试判断出该点阵的引脚分布。

我们把行列总线接在单片机的I/0口,然后把上面分析到的扫描代码送入总线,就可以得到显示的汉字了。但是若将LED点阵的行列端口全部直接接入89S51单片机,则需要使用32条I/0口,这样会造成I/0口资源的耗尽,系统也再无扩充的余地。因此,我们在实际应用中只是将LED点阵的16条行线直接接在P0口和P2口,至于列选扫描信号则是由4—16线译码器74HCl54来选择控制,这样一来列选控制只使用了单片机的4个I/O口,节约了很多I/O口资源,为单片机系统扩充使用功能提供了条件。考虑到P0口必需设置上拉电阻,我们采用4.7kΩ排电阻作为上拉电阻。汉字扫描显示的基本过程是这样的:通电后由于电阻R,电容c1的作用,使单片机的RST复位脚电平先高后低,从而达到复位;之后,在C、C3、X以及单片机内部时钟电路的作用下,单片机89C2汉字的点阵显示原理及字库代码获取方法

我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。即国标汉字库中的每一个字均由256点阵来表示。我们可以把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在256象素范围内的任何图形。如查用8位的AT89C51单片机控制,由于单片机的总线由8位,一个字需要拆分为2个部分,如图2所示为了弄清楚汉字的点阵组成规律,首先通过列扫描方法获取汉字的代码。汉字可拆分为上部和下部,上部由8×16点阵组成,下部也由8×16点阵组成。本例通过列扫描方法首先显示左上角的第一列的上半部分,即第0列的P00~P07口,方向为P00到P07,显示汉字“我”时,为全灭,第一列的下半部分也为全灭。第二列的上半部分P06、点亮,由上往下排列,为:PO.0灭,PO.1灭,P0.2灭PO.3灭,PO.4灭,P0.5灭,P0.6亮,P0.7灭。即二进制00000010,转换为十六进制为02h。上半部第二列完成后,继续扫描下半部的第二列,为了接线的方便,我们仍设计成由上往下扫描,即从P27向P20方向扫描,从图3可以看到,这一列P23亮,即为00001000,十六进制则为08h。依照这个方法转向第三列、第四列,……,直至第十六列的扫描,一共扫描32个8位,可以得出汉字“我”的扫描代码为:

00H,02H,08H,06H,28H,02H,24H,22H

0FCH,3FH,24H,21H,20H,10H,3CH,08H

0E2H,07H,20H,0AH,0E4H,11H,0A8H,20H

20H,30H,00H,00H,00H,00H,00H,00H

由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出他的扫描代码从而显示在屏幕上。上述方法虽然能够让我们弄清楚汉字点阵代码的获取过程,但是依靠人工方法获取汉字代码是一件非常繁琐的事情。为此,我们经常采用字库软件查找字符代码,软件打开后输入汉字,点“检取”,十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到程序中即可,如图3所示。

可见,汉字点阵显示一般有点扫描、行扫描和列扫描3种。为了符合视觉暂留要求,点扫描方法的扫描频率必须大于16×64—1024Hz,周期小于1ms即可。行扫描和列扫描方法的扫描频率必须大于16×8一128Hz,周期小于7.8ms即可,但是一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。

3在Keil环境中程序设计与调试

软件程序主要由开始、初始化、主程序、字库组成。其中主程序的流程图如图4所示。下面的程序能够用来实现滚动显示“我爱你一一祖国”。汉字的显示。程序清单如下:

时间:2021-05-0509:42:04来源:电子技术唐霞1谢利民21.上海交通大学2.江苏联合职业技术

在keil软件中完成程序编写、调试和编译之后,生成能让单片机运行的Hex文件,如图5所示。4元器件选择

本设计所需元器件如表1所示。5运用Proteus软件仿真LED汉字显示屏

Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机外围电路或没有单片机参与的其它电路的工作情况,也能仿真单片机CPU的工作情况。因此在仿真和程序调试时,是从工程的角度直接看程序运行和电路工作的过程和结果。从某种意义上讲Proteus仿真,基本接近与工程应用。本次基于AT89C51单片机16×16LED汉字滚动显示屏的设计已运用Proteus软件仿真实现,如图6所示。

虽然本设计只使用了一块16×16LED点阵,电路简单,但是已经包涵了LED汉字滚动显示屏的电路基本原理、基本程序和Proteus软件仿真,只要扩展单片机的10接口,并增加一些LED点阵和相关芯片,就能设计出更大面积、更多花样的LED显示屏。因此本文对同类设计具有一定的理论和实践参考价值。汉字显示屏广泛应用与汽车报站器,广告屏等。本文介绍一种实用的汉字显示屏的制作,考虑到电路元件的易购性,没有使用8*8的点阵发光管模块,而是直接使用了256个高量度发光管,组成了16行16列的发光点阵。同时为了降低制作难度,仅作了一个字的轮流显示,实际使用时可根据这个原理自行扩充显示的字数。1汉字显示的原理:我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。即国标汉字库中的每一个字均由256点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。一般我们把它拆分为上部和下部,上部由8*16点阵组成,下部也由8*16点阵组成。在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00---p07口。方向为p00到p07,显示汉字“大”时,p05点亮,由上往下排列,为p0.0灭,p0.1灭,p0.2灭p0.3灭,p0.4灭,p0.5亮,p0.6灭,p0.7灭。即二进制00000100,转换为16进制为04h.。上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从p27向p20方向扫描,从上图可以看到,这一列全部为不亮,即为00000000,16进制则为00h。然后单片机转向上半部第二列,仍为p05点亮,为00000100,即16进制04h.这一列完成后继续进行下半部分的扫描,p21点亮,为二进制00000010,即16进制02h.依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“大”的扫描代码为:04H,00H,04H,02H,04H,02H,04H,04H04H,08H,04H,30H,05H,0C0H,0FEH,00H05H,80H,04H,60H,04H,10H,04H,08H04H,04H,0CH,06H,04H,04H,00H,00H由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。不过现在有很多现成的汉字字模生成软件,我们就不必自己去画表格算代码了。软件打开后输入汉字,点“检取”,十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到我们的程序中即可。我们把行列总线接在单片机的i0口,然后把上面分析到的扫描代码送入总线,就可以得到显示的汉字了。在这个例子里,由于一共用到16行,16列,如果将其全部接入89c51单片机,一共使用32条io口,这样造成了io资源的耗尽,系统也再无扩充的余地。实际应用中我们使用4-16线译码器74ls154来完成列方向的显示。而行方向16条线则接在p0口和p2口。程序清单:ORG00HLOOP:MOVA,#0FFH;开机初始化,清除画面MOVP0,A;清除P0口ANLP2,#00;清除P2口MOVR2,#200D100MS:MOVR3,#250;延时100毫秒DJNZR3,$DJNZR2,D100MSMOV20H,#00H;取码指针的初值l100:MOVR1,#100;每个字的停留时间L16:MOVR6,#16;每个字16个码MOVR4,#00H;扫描指针清零MOVR0,20H;取码指针存入R0L3:MOVA,R4;扫描指针存入AMOVP1,A;扫描输出INCR4;扫描指针加1,扫描下一个MOVA,R0;取码指针存入AMOVDPTR,#TABLE;取数据表的上半部分的代码MOVCA,@A+DPTRMOVP0,A;输出到P0INCR0;取码指针加1,取下一个码。MOVA,R0MOVDPTR,#TABLE;取数据表下半部份的代码MOVCA

社会实践报告系别:班级:学号:姓名:作为祖国未来的事业的继承人,我们这些大学生应该及早树立自己的历史责任感,提高自己的社会适应能力。假期的社会实践就是很好的锻炼自己的机会。当下,挣钱早已不是打工的唯一目的,更多的人将其视为参加社会实践、提高自身能力的机会。许多学校也积极鼓励大学生多接触社会、了解社会,一方面可以把学到的理论知识应用到实践中去,提高各方面的能力;另一方面可以积累工作经验对日后的就业大有裨益。进行社会实践,最理想的就是找到与本专业对口单位进行实习,从而提高自己的实战水平,同时可以将课本知识在实践中得到运用,从而更好的指导自己今后的学习。但是作为一名尚未毕业的大学生,由于本身具备的专业知识还十分的有限,所以我选择了打散工作为第一次社会实践的方式。目的在于熟悉社会。就职业本身而言,并无高低贵贱之分,存在即为合理。通过短短几天的打工经历可以让长期处于校园的我们对社会有一种更直观的认识。实践过程:自从走进了大学,就业问题就似乎总是围绕在我们的身边,成了说不完的话题。在现今社会,招聘会上的大字报都总写着“有经验者优先”,可还在校园里面的我们这班学子社会经验又会拥有多少呢?为了拓展自身的知识面,扩大与社会的接触面,增加个人在社会竞争中的经验,锻炼和提高自己的能力,以便在以后毕业后能真正真正走入社会,能够适应国内外的经济形势的变化,并且能够在生活和工作中很好地处理各方面的问题,我开始了我这个假期的社会实践-走进天源休闲餐厅。实践,就是把我们在学校所学的理论知识,运用到客观实际中去,使自己所学的理论知识有用武之地。只学不实践,那么所学的就等于零。理论应该与实践相结合。另一方面,实践可为以后找工作打基础。通过这段时间的实习,学到一些在学校里学不到的东西。因为环境的不同,接触的人与事不同,从中所学的东西自然就不一样了。要学会从实践中学习,从学习中实践。而且在中国的经济飞速发展,又加入了世贸,国内外经济日趋变化,每天都不断有新的东西涌现,在拥有了越来越多的机会的同时,也有了更多的挑战,前天才刚学到的知识可能在今天就已经被淘汰掉了,中国的经济越和外面接轨,对于人才的要求就会越来越高,我们不只要学好学校里所学到的知识,还要不断从生活中,实践中学其他知识,不断地从各方面武装自已,才能在竞争中突出自已,表现自已。在餐厅里,别人一眼就能把我人出是一名正在读书的学生,我问他们为什么,他们总说从我的脸上就能看出来,也许没有经历过社会的人都有我这种不知名遭遇吧!我并没有因为我在他们面前没有经验而退后,我相信我也能做的像他们一样好.我的工作是在那做传菜生,每天9点钟-下午2点再从下午的4点-晚上8:30分上班,虽然时间长了点但,热情而年轻的我并没有丝毫的感到过累,我觉得这是一种激励,明白了人生,感悟了生活,接触了社会,了解了未来.在餐厅里虽然我是以传菜为主,但我不时还要做一些工作以外的事情,有时要做一些清洁的工作,在学校里也许有老师分配说今天做些什么,明天做些什么,但在这里,不一定有人会告诉你这些,你必须自觉地去做,而且要尽自已的努力做到最好,一件工作的效率就会得到别人不同的评价。在学校,只有学习的氛围,毕竟学校是学习的场所,每一个学生都在为取得更高的成绩而努力。而这里是工作的场所,每个人都会为了获得更多的报酬而努力,无论是学习还是工作,都存在着竞争,在竞争中就要不断学习别人先进的地方,也要不断学习别人怎样做人,以提高自已的能力!记得老师曾经说过大学是一个小社会,但我总觉得校园里总少不了那份纯真,那份真诚,尽管是大学高校,学生还终归保持着学生的身份。而走进企业,接触各种各样的客户、同事、上司等等,关系复杂,但我得去面对我从未面对过的一切。记得在我校举行的招聘会上所反映出来的其中一个问题是,学生的实际操作能力与在校理论学习有一定的差距。在这次实践中,这一点我感受很深。在学校,理论的学习很多,而且是多方面的,几乎是面面俱到;而在实际工作中,可能会遇到书本上没学到的,又可能是书本上的知识一点都用不上的情况。或许工作中运用到的只是很简单的问题,只要套公式似的就能完成一项任务。有时候我会埋怨,实际操作这么简单,但为什么书本上的知识让人学得这么吃力呢?这是社会与学校脱轨了吗?也许老师是正确的,虽然大学生生活不像踏入社会,但是总算是社会的一个部分,这是不可否认的事实。但是有时也要感谢老师孜孜不倦地教导,有些问题有了有课堂上地认真消化,有平时作业作补充,我比一部人具有更高的起点,有了更多的知识层面去应付各种工作上的问题,作为一名大学生,应该懂得与社会上各方面的人交往,处理社会上所发生的各方面的事情,这就意味着大学生要注意到社会实践,社会实践必不可少。毕竟,很快我就不再是一名大学生,而是社会中的一分子,要与社会交流,为社会做贡献。只懂得纸上谈兵是远远不及的,以后的人生旅途是漫长的,为了锻炼自己成为一名合格的、对社会有用的人才.很多在学校读书的人都说宁愿出去工作,不愿在校读书;而已在社会的人都宁愿回校读书。我们上学,学习先进的科学知识,为的都是将来走进社会,献出自己的一份力量,我们应该在今天努力掌握专业知识,明天才能更好地为社会服务。实践心得:虽然这次的实践只有短短的几天,而且从事的是比较简单的服务工作,但是通过与各种各样的人接触,还是让我学会了很多道理。首先是明白了守时的重要性。工作和上学是两种完全不同的概念,上学是不迟到很多时候是因为惧怕老师的责怪,而当你走上了工作岗位,这里更多的是由于自己内心的一种责任。这种责任是我学会客服自己的惰性,准时走上自己的岗位。这对我以后的学习生活也是一种鞭策,时刻牢记自己的责任,并努力加强自己的时间观念。其次让我真实的体会到了合作的重要性。虽然我工作的只是小小的一家餐厅,但是从点单到制作到递送到结帐这一环环的工作都是有分工的,只有这样才能使整家店的工作效率都大大的提高。以前虽然在书上看见过很多的团队合作的例子,但这一次是深刻的体会到了,正所谓“众人拾柴火焰高”,“团结就是力量”。在以后的学习和工作中,一定会要牢记这一点,将自己融入到集体中,和大家一起携手走向辉煌。再次,这次打

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论