资源描述
毕 业 设 计 (论 文)题 目:8*8点阵显示屏的设计院 系:电气信息工程系专 业:电气工程及其自动化班 级:姓 名:学 号:指导教师:2013年04月16日摘 要通过对P89C51单片机LED88点阵显示屏的设计的研究并运用Proteus软件进行原理图绘制,运用Keil软件进行仿真和调试。主要介绍了LED88点显示屏的硬件电路设计、汇编程序设计与调试、Proteus软件绘制原理图和实物制作等方面的内容,本显示屏的设计具有体积小、硬件少、电路结构简单及容易实现等优点。能帮助广大电子爱好者了解汉字的点阵显示原理,认识单片机的基本结构、工作原理及应用方法,并提高单片机知识技术的运用能力。利用单片机来设计的系统,既能实现系统所需的功能,也可以满足计数的准确性、迅速性,并且电路简单、操作简单、通用性强。【关键词】51单片机 Proteus软件 显示屏AbstractThis paper studies the design of P89C51 microcontroller LED8 * 8 dot matrix display screen and using Proteus software based on the schematic drawing, simulation and debugging using Keil software. Mainly introduces the drawing principle diagram and physical production, content design, hardware circuit of LED8 x 8 bit display design and debugging of Proteus software, assembler, has the advantages of small volume, less hardware, simple circuit structure and easy to realize the design of display screen. It can help the electronic enthusiasts to understand Chinese characters dot matrix display principle, understanding the basic structure of single-chip, working principle and application method, and improve the ability to use knowledge of SCM technology. System design using microcontroller, can achieve the required function of the system, but also can satisfy the counting accuracy, rapid, and simple circuit, simple operation, strong commonality.【Key Words】 51 single chip computer Proteus software display目 录1 绪论31.1 前言31.2 选题背景41.3设计要求41.4 国内外的研究概况41.5此次设计研究的主要内容应解决的问题42 总体设计方案52.1 硬件电路组成52.2 系统各单元电路设计62.2.1 P89C51单片机最小系统62.2.2 按键控制电路72.2.3 三极管驱动电路72.2.4 88 LED点阵介绍82.3 字符的点阵显示原理及字库代码获取方法93 程序设计103.1程序流程图103.2程序设计114 调试及性能分析124.1系统调试124.1.1软件调试124.1.2硬件调试124.2设计分析12总结13参考文献15附 录16附录1 原件清单16附录3程序清单1815石家庄学院毕业设计(论文)1 绪论1.1 前言LED点阵显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。同时也可广泛应用到军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业。目前大多数的LED点阵显示系统自带字库。其显示和动态效果(主要是显示内容的滚动)的实现主要依靠硬件扫描驱动,该方法虽然比较方便,但显示只能按照预先的设计进行。而实际上经常会遇到一些特殊要求的动态显示,比如电梯运行中指示箭头的上下移动、某些智能仪表幅值的条形显示、广告中厂家的商标显示等。这时一般的显示系统就很难达到要求。另外,由于受到存储器本身的局限,其特殊字符往往难以显示,同时显示内容也不能随意更改。因此就提出了一种利用PC机和单片机控制的LED显示系统通信方法。该方法可以对显示内容进行实时控制,从而实现诸如动态显示效果。同时用户也可以在PC机上进行显示效果的预览,显示内容亦可以即时修改。同时它具有发光率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的用于公交汽车、商店、体育场馆、车站、学校、银行、高速公路等公共场所的信息发布和广告宣传。LED 显示屏发展较快,本文讲述了基于P89C51单片机88 LED汉字点阵滚动显示的基本原理、硬件组成与设计、程序编写与调试、Proteus软件仿真等基本环节和相关技术。1.2 选题背景LED电子显示屏是随着计算机及相关的微电子光电子技术的迅猛发展而形成的一种新型信息显示媒体。它利用发光二极管构成的点阵模块或像素单元组成可变面积的显示屏幕,以可靠性高、使用寿命长、环境适应能力强、性能价格比高、使用成本低等特点,在短短的十来年中,迅速成长为平板显示的主流产品,在信息显示领域得到了广泛的应用。LED 点阵电子显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成 为众多显示媒体以及户外作业显示的理想选择。同时也可广泛应用到军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业。1.3设计要求利用一块点阵数码板,按编程者要求实现任意符号的显示。1.4 国内外的研究概况目前大多数的LED点阵显示系统自带字库。其显示和动态效果(主要是显示内容的滚动)的实现主要依靠硬件扫描驱动,该方法虽然比较方便,但显示只能按照预先的设计进行。而实际上经常会遇到一些特殊要求的动态显示,比如电梯运行中指示箭头的上下移动、某些智能仪表幅值的条形显示、广告中厂家的商标显示等。这时一般的显示系统就很难达到要求。另外,由于受到存储器本身的局限,其特殊字符或图案也往往难以显示,同时显示内容也不能随意更改。本文提出一种利用PC机和单片机控制的LED显示系统通讯方法。该方法可以对显示内容(包括汉字和特殊图符)进行实时控制,从而实现诸如闪动、滚动、打字等多种动态显示效果。该方法同时还可以调节动态显示的速度,同时用户也可以在PC机上进行显示效果的预览,显示内容亦可以即时修改。在我国改革开放之后,特别是进入90年代国民经济高速增长,对公众场合发布信息的需求日益强烈,LED显示屏的出现正好适应了这一市场形势,因而在LED显示屏的设计制造技术与应用水平上都得到了迅速的提高,生产也得到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。1.5此次设计研究的主要内容应解决的问题此次设计研究的主要内容是设计一个符号显示牌:通过程序控制符号显示牌,使符号显示牌,在无按键按下时,显示数字“0-9”,当第一次按下按键时,显示字母“”,当第二次按下按键时显示汉字“公”。应解决的问题:单片机P1口的输出电流不足以驱动二极管,需要加驱动,本次研究中以S8050作为驱动,同时在S8050NPN晶体管基极加4.7K的电阻。实验前要弄清晶体管三个引脚代表的极性,以免符号显示牌不亮导致而设计失败。2 总体设计方案2.1 硬件电路组成本产品采用以P89C51单片机为核心芯片的电路来实现,主要由P89C51芯片、晶振电路、三极管驱动电路、按键控制电路、88 LED点阵5部分组成,电路框图如图1所示。其中,P89C51是一种带4kB闪烁可编程可擦除只读存储器的低电压、高性能CMOS型8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,工业标准的MCS一51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,能够进行1 000次写擦循环,数据保留时间为10年。他是一种高效微控制器,为很多嵌人式控制系统提供了一种灵活性高且价廉的方案。因此,在智能化电子设计与制作过程中经常用到P89C51芯片。时钟电路由P89C51的18,19脚的时钟端(XTAI 1及XTAL2)以及12 MHz晶振X 、电容C2、C3组成,采用片内振荡方式。复位电路采用简易的上电复位电路,主要由电阻R ,R2,电容C ,开关K 组成,分别接至P89C51的RST复位输人端。LED点阵显示屏采用8x8共64个象素的点阵,可通过万用表检测发光二极管的方法测试判断出该点阵的引脚分布。我们把行列总线接在单片机的I/O口,然后把上面分析到的扫描代码送入总线,就可以得到显示的字符了。我们在实际应用中是将LED点阵的8条列线通过驱动电路接在P1口,8条行线通过限流电阻接在P0口。单片机89C51按照设定的程序在P1和P0接口输出与内部字符对应的代码电平送至LED点阵的行列线(高电平驱动),从而选中相应的象素LED发光,并利用人眼的视觉暂留特性合成整个字符的显示。再改变取表地址实现字符的滚动显示。硬件电路组成框图如图2-1所示。按键控制电路 P1P89C51P2.0 P0限流电阻三极管驱动电路88点阵LED显示屏图2-1 硬件电路组成框图2.2 系统各单元电路设计2.2.1 P89C51单片机最小系统最小系统包括晶体振荡电路、复位开关和电源部分。图2-2为P89C51单片机的最小系统。图2-2 P89C51单片机最小系统2.2.2 按键控制电路单片机开始工作时,P2.0是高电平。当按键按下时,检测到一个低电平信号,改变P0口输出信号,控制88 LED点阵显示屏显示不同字符。图2-3 按键控制电路2.2.3 三极管驱动电路扫描驱动电路的功能主要是有P1口输出高电平使三极管发射结导通,发射结输出足够大的电流使二极管导通。图2-4 三极管驱动电路2.2.4 88 LED点阵介绍图2-5为88点阵LED外观及引脚图,只要其对应的X、Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则电子模块中的0口为1,A口为0即可。应用时限流电阻可以放在横轴或列轴。图2-5 88点阵LED外观及引脚(1)把“单片机系统”区域中的P0端口用8芯排芯连接到“点阵模块”区域中的“AH”端口上;(2)把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“07”端口上;为了方便于单片机连接,我们在焊接的过程中特意将07接口排列出来作为列,将AH接口作为行,这样我们就可以直接将P89C51单片机的P0口与07接口一次连接,将P89C51单片机的P1口与AH接口一次连接。要使LED发亮即使给予数字端高电平,字母端给予低电平,就能使二极管发亮。2.3 字符的点阵显示原理及字库代码获取方法我们以UCDOS中文宋体字库为例,每一个字由8行8列的点阵组成显示。我们可以把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在64象素范围内的任何图形。如查用8位的P89C51单片机控制,如图所示图2-6 88点阵等效电路为了弄清楚汉字的点阵组成规律,首先通过列扫描方法获取汉字的代码。首先将8行分成4位的上、下两部分,把发光的象素位编为0不发光的象素位为1的十六进制代码。这样就把要显示的“公”字编为如下代码:0x7f,0xbf,0xc1,0xdf,0xdf,0xdf,0xc1,0xdf由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出他的扫描代码从而显示在屏幕上。上述方法虽然能够让我们弄清楚字符点阵代码的获取过程。字符点阵显示一般有点扫描、行扫描和列扫描3种。为了符合视觉暂留要求,点扫描方法的扫描频率必须大于16641024 Hz,周期小于1 ms即可。行扫描和列扫描方法的扫描频率必须大于168128 Hz,周期小于78 ms即可。3 程序设计3.1程序流程图NoYesNo开始初始化显示汉字公依次显示0-9依次显示0-9是否按键显示字符是否按键显示字符是否按键显示汉字公Yes 图3-1 主程序流程图3.2程序设计根据上述所说的程序流程图,设计程序如附录3。4 调试及性能分析4.1系统调试4.1.1软件调试首先根据各单元电路模块,利用Proteus软件将总的硬件原理图绘制好,设计好各模块要使用的I/O口,如:88点阵LED显示屏时候插反,先检测下,无硬件错误后,再进行程序编程。利用C语言的编程方式,将系统要求的基本功能,以及创新功能根据程序流程图编写出来,用Keil软件调试无误后,生成Hex文件。双击Proteus中的P89C51芯片,将Keil生成的Hex加载到芯片内,进行仿真,经调试后所编写的程序能够完美实现系统所需的各种功能。4.1.2硬件调试硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。具体步骤及测试结果如下:(1) 检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,对未连接的进行修复。(2) 参照原理图,检查各个器件之间的连接是否连接正确,是否存在虚焊,经测试,各连接不存在问题。(3) 以上两项检查并修复完后,给该硬件电路上电,电源指示灯点亮。(4) 将烧录好程序的最小单片机系统接入各模块后,各模块能过正常工作,如:数码管正常发光。4.2设计分析将烧录好程序的最小单片机系统与各模块连接好后,88点阵LED显示屏显示初始值。按键一次之后,显示屏显示滚动字符,再按键一次,显示屏显示汉字“公”。经软件调试和硬件调试后,所设计的系统完美实现了所需的控制要求和创新要求。总结本文设计一个88点阵LED图文显示屏。经过测试,LED各点亮度均匀,可显示图形和文字,且稳定清晰无串扰。本系统具有硬件少、结构简单、容易实现,性能稳定可靠等特点。通过查阅资料,了解了LED发光原理和LED显示技术的原理和现状。在 LED点阵显示屏的设计过程中,学到了很多东西,复习了Protel、Proteus、Keil等软件的基础应用。基本了解了整个嵌入式开发的流程。例如,在进行整个设计之前,应该先根据需求分析,对单片机进行选型,然后对各个硬件模块进行搭试。在画PCB电路板的时候,要注意基本的布板原则。在焊接电路板的时候,应该从最基本的最小系统开始,分模块,逐个进行焊接测试。在对各个硬件模块进行测试时,要保证软件正确的情况下去测试硬件,要不然发生错误时,不知道到底是哪一方出错了。总之,这次设计开发,我受益非浅,在以后的开发过程中一定总结经验,吸取教训,为以后的学习工作打好基础。致谢本论文是在刘老师的悉心指导下完成的,从课题的选择到论文的最终完成的每一个环节,自始至终得到刘老师的精心指导和帮助。老师渊博的学识、严谨的治学态度、求实创新的工作作风、对事业和科学的执着追求,以及对我们小组谆谆教诲给我留下了深刻的印象,使我受益终身。在课题的研究设计过程中,我不仅从刘老师那里学到许多专业知识,更重要的是学会了学习新知识并将其巩固的方法,这无疑是一把开启未来生活的钥匙,特此向刘老师表示衷心的感谢!在此,还要感谢我们的同学,感谢你们的无私奉献和热情的帮助,使我们克服了很多困难,最终完成了论文。在大学两年的学习生活中,还得到了许多领导和老师的热情关心和帮助,在此,向所有关心和帮助过我的领导、老师、同学和朋友们表示由衷的谢意!衷心的感谢在百忙之中评阅论文和参加答辩的各位老师!参考文献1 潘永雄.新编单片机原理与应用(第二版)M西安:西安电子科技大学出版社,2007 2 张志良.单片机原理及控制技术M北京:机械工业出版社,2005 3 李华.MCS-51单片机实用接口技术M北京:北京航空航天出版社,19974 诸昌钤.LED显示屏系统原理及工程技术M成都:电子科技大学出版社,20005 徐士良编著、C语言程序设计教程,北京:人民邮电出版社,2003年8月第二版附 录附录1 原件清单器件名称数量NPN(8050)88*8点阵数码管1电阻470欧8电阻4.7K8电阻10K1按钮1万能板140PIN2.54mm单排针20排插16连线(杜邦线)若干附录2硬件原理图附录3程序清单#include #define uchar unsigned char#define uint unsigned intuchar i,j,k,scan,num,count;sbit key=P20;uchar code table1=0x7f,0xbf,0xc1,0xdf,0xdf,0xdf,0xc1,0xdf; /uchar code table2=0xf7,0xdb,0xad,0xb7,0xbe,0xdd,0xbb,0xf7; /公uchar code table8=0xff,0xff,0xc3,0xbd,0xbd,0xc3,0xff,0xff, /00xff,0xbf,0xbb,0x81,0x80,0xbf,0xbf,0xff, /10xff,0xff,0xbb,0x9d,0xad,0xb3,0xff,0xff, /20xff,0xff,0xdd,0xbe,0xb6,0xc9,0xff,0xff, /30xff,0xef,0xe7,0xeb,0x81,0xef,0xef,0xff, /40xff,0xff,0xd1,0xb5,0xb5,0xcd,0xff,0xff, /50xff,0xff,0xc1,0xb6,0xb6,0xcd,0xff,0xff, /60xff,0xff,0xfd,0xfd,0x8d,0xf5,0xf9,0xff, /70xff,0xff,0xc9,0xb6,0xb6,0xc9,0xff,0xff, /80xff,0xff,0xd9,0xb6,0xb6,0xc1,0xff,0xff; /9void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void main()key=1;num=0;while(1)if(num=0)for(j=0;j10;j+)if(key=0)delay(10);if(key=0)num=1;while(!key);if(num!=0)break;for(k=0;k30;k+) scan=0x01;for(i=0;i8;i+)P0=tableji;P1=scan;delay(2);scan=1;if(num=1) for(j=0;j8;j+) /8组数据if(key=0)delay(10);if(key=0)num=2;while(!key);if(num!=1)break;for(k=0;k0;i-) /扫描周期if(ij)P0=table18+(j-i);else P0=table1j-i;P1=scan;delay(2);scan=1;if(num=2)if(key=0)delay(10);if(key=0)num=0;while(!key);scan=0x01;for(i=0;i8;i+)P0=table2count+;if(count=8)count=0;P1=scan;delay(2);scan=1;
展开阅读全文