16x16点阵式汉字电子显示屏_第1页
16x16点阵式汉字电子显示屏_第2页
16x16点阵式汉字电子显示屏_第3页
16x16点阵式汉字电子显示屏_第4页
16x16点阵式汉字电子显示屏_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

...wd......wd......wd...郑州工程技术学院单片机原理及应用技术课程设计题目:点阵式电子显示屏的设计学号:201550180205姓名:潘阳同组人:石国夫专业:电气自动化班级:15电气对口二班指导教师:孙建延2016年12月27日点阵式汉字电子显示屏的设计设计内容:以MCS-51系单片机为核心器件,设计一个点阵式汉字电子显示屏。任务要求:〔1〕显示屏为16*16LED点阵显示器;〔2〕可以依次显示“教师,您辛苦了!〞8个汉字。设计要求:〔1〕设计方案选择合理,到达设计任务要求;〔2〕设计思路清晰,原理框图正确,元器件选择恰当,计算正确;软件流程图正确合理,源程序完整;说明书简明扼要,文字流畅,论点明确,书写工整;〔3〕图纸表达正确,符合制图标准;图面整洁,布局合理,图中电气连接和元器件符号符合要求。〔4〕设计的有关技术指标符合国家有关标准、标准和政策要求。〔5〕在设计过程中认真、按时完成各阶段的设计、计算、编程、绘图、调试任务。〔6〕原理图绘制在A1纸,要求用PROTEUS仿真正确后,焊接实物电路板,并能测试成功。摘要本设计使用AT89C51系列高速单片机作为主控制模块,利用简单的外围电路来驱动16×16的点阵LED显示屏。利用AT89C51系列高速单片机本身强大的功能,可以很方便的实现单片机与PC机间的数据传输及存储,并能利用软件方便的进展显示内容的多样变化,另一方面点阵显示屏广泛的应用于医院、机场、银行等公共场所,所以本设计具有很强的现实应用性。本LED显示屏能够以动态扫描的方式同时显示4个8×8点阵汉字,并能通过上位机软件修改显示内容和显示效果等等。把字符内码存储在空闲的单片机程序存储器空间,本文从LED的显示原理入手,详细阐述了LED动态显示的过程,以及硬件电路的设计、计算和软件仿真下载实现。关键词:动态显示;单片机;AbstractThisdesignUSESAT89C51serieshighspeedsinglechipmicrocomputerasthemaincontrolmodule,theuseofsimpleperipheralcircuittodrivethe16*16latticeLEDdisplay.UsingAT89C51serieshigh-speedmicrocontrolleritselfpowerfulfunction,caneasilyachievebetweenMCUandPCdatatransmissionandstorage,andconvenienttousesoftwaretodisplaycontentdiversitychange,ontheotherhanddotmatrixdisplayscreeniswidelyusedinhospitals,airports,Banksandotherpublicplaces,sothisdesignhasastrongpracticalapplicability.TheLEDdisplaycanbedisplayedinadynamicscanningwayandatthesametimefour8x8dotmatrixChinesecharacters,andcanpassthePCsoftwarerevisiondisplaycontentandeffect,andsoon.Storenamedcharacterinthefreemicrocontrollerprogrammemoryspace,thisarticleobtainsfromtheprincipleofLEDdisplay,LEDdynamicdisplayoftheprocesswereintroducedindetail,aswellasthehardwarecircuitdesign,calculationandsimulationsoftwaretodownload.\o""KeyWords:Dynamicdisplay;Singlechipmicrocomputer;目录TOC\o"1-3"\h\u2178摘要38686一绪论62413297201991822.2系统硬件电路的设计9150592.2.1单片机系统9217302.2.2行驱动电路11280612.2.3列驱动电路1291242.3软件设计1587322.3.1软件要求1685742.3.2程序代码1623976三电路安装与调试21148903.1单元模块电路测试22291343.2系统整体功能测试228918四总结222448五.参考文献233418六附录249571元件清单243342系统原理图25一绪论LED点阵总体框图如以下列图所示,点阵电路大体上可以分成微机本身的硬件、显示驱动电路、控制信号电路三局部。控制电路局部包括一个51CUP和一些外围电路。在整个电路当中单片机负责控制整个电路以及相应的程序的运行、与PC机的串行通讯、以及给屏体电路局部发送命令。点阵显示屏体、以及它的行和列的各个驱动电路。此显示电路采用扫描方式进展显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。由行译码器给出的行选通信号,从第一行开场,按顺序依次对各行进展扫描(把该行与电源的一端接通)。另一方而,根据各列锁存的数据,确定相应的列驱动器是否将该列与电源的另一端接通。接通的列,就在该行该列点燃相应的LED;未接通的列所对应的LED熄灭。可通过扫描输出口的控制实现颜色的转换。、2.2系统硬件电路的设计硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路三局部。2.2.1单片机系统单片机采用89C51或其兼容系列的芯片,采用24M或更高频率的晶振,以获得较高的刷新频率,使显示更稳定。单片机的串口与列驱动器相连,用来送显示数据。P1口低4位与行驱动器相连,送出行选信号;P1.5~P1.7口则用来发送控制信号。P0和P2口空着,在有必要时可以扩展系统的ROM和RAM。管脚说明P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进展校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1〞时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进展存取时,P2口输出地址的高八位。在给出地址“1〞时,它利用内部上拉优势,当对外部八位地址数据存储器进展读写时,P2口输出其特殊功能存放器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1〞后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流〔ILL〕这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0RXD〔串行输入口〕P3.1TXD〔串行输出口〕P3.2/INT0〔外部中断0〕P3.3/INT1〔外部中断1〕P3.4T0〔记时器0外部输入〕P3.5T1〔记时器1外部输入〕P3.6/WR〔外部数据存储器写选通〕P3.7/RD〔外部数据存储器读选通〕P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想制止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE制止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器〔0000H-FFFFH〕,不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源〔VPP〕。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.2.2行驱动电路单片机P1口低4位输出的行号经4/16线译码器74HC138译码后生成16条行选通信号线,再经过驱动器驱动对应的行线。一条行线上要带动16列的LED进展显示,按每一LED器件20mA电流计算,16个LED同时发光时,需要320mA电流,选用三极管8550作为驱动管可满足要求。2.2.3列驱动电路列驱动电路由集成电路74HC595构成,它具有一个8位串入并出的移位存放器和一个8位输出锁存器的构造,而且移位存放器和输出锁存器的控制是各自独立的,可以实现在显示本行各列数据的同时,传送下一行的列数据,即到达重叠处理的目的。概述:

74HC595是一款漏极开路输出的CMOS移位存放器,输出端口为可控的三态输出端,亦能串行输出控制下一级级联芯片。

特点:

�速移位时钟频率Fmax>25MHz

�标准串行〔SPI〕接口

CMOS串行输出,可用于多个设备的级联

低功耗:TA=25℃时,Icc=4μA〔MAX〕引脚功能表:管脚编号管脚名管脚定义功能1、2、3、4、5、6、7、15QA—QH三态输出管脚8GND电源地9SQH串行数据输出管脚10SCLR移位存放器清零端11SCK数据输入时钟线12RCK输出存储器锁存时钟线13OE输出使能14SI数据线15VCC电源端图174HC595引脚图图274HC595逻辑图真值表:输入管脚输出管脚SISCKSCLRRCKOEXXXXHQA—QH输出高阻XXXXLQA—QH输出有效值XXLXX移位存放器清零L上沿HXX移位存放器存储LH上沿HXX移位存放器存储HX下沿HXX移位存放器状态保持XXX上沿X输出存储器锁存移位存放器中的状态值XXX下沿X输出存储器状态保持它的输入侧有8个串行移位存放器,每个移位存放器的输出都连接一个输出锁存器。引脚SI是串行数据的输入端。引脚SCK是移位存放器的移位时钟脉冲,在其上升沿发生移位,并将SI的下一个数据打入最低位。移位后的各位信号出现在各移位存放器的输出端,也就是输出锁存器的输入端。RCK是输出锁存器的打入信号,其上升沿将移位存放器的输出打入到输出锁存器。引脚G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高阻态。SCLR信号是移位存放器的清零输入端,当其为低时移位存放器的输出全部为零。由于SCK和RCK两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰。芯片的输出端为QA~QH,最高位QH可作为多片74HC595级联应用时,向上一级的级联输出。但因QH受输出锁存器打入控制,所以还从输出锁存器前引出了QH’,作为与移位存放器完全同步的级联输出。74HC595外形及内部逻辑构造图2.3软件设计2.3.1软件要求汉字要稳定、明亮并且文字要以一定速度上升滚动显示。显示屏软件模块:初始化程序、主程序、多字滚动、显示程序、扫描程序。显示程序的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。软件设计中,显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。显示驱动器程序由定时器T0中断程序实现。系统应用程序完成系统环境设置〔初始化〕、显示效果处理等工作,由主程序来实现。1显示驱动程序显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率〔帧频〕计算公式如下:刷频率〔帧频〕=1/16×T0溢=1/16×f/12〔65536-t〕其中f位晶振频率,t为定时器T0初值〔工作在16位定时器模式〕。然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位存放器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新翻开显示。图六为显示驱动程序〔显示屏扫描函数〕流程图2.3.2程序代码#include<reg51.h>//头文件sbitshcp=P1^2;//数据输入时钟线595的11脚sbitstcp=P1^1;//输出存储器锁存时钟线595的12脚sbitds=P1^0;//数据线595的14脚sbits1=P3^1;//按下暂停再暂按继续sbits2=P3^2;//按下方向取反bitfx;//方向切换unsignedcharalt;//数据移动定时时间unsignedintnet;//控制显示的字符unsignedcharzi=8;unsignedintzong;//总字符〔所有的字数+1〕*32字数指的是汉字,字母、数字两个算一个数字unsignedcharcodetab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//老(0)师(1),(2)您(3)辛(4)苦(5)了(6)!(7)0x04,0x08,0x04,0x10,0x24,0x20,0x24,0x40,0x24,0xFC,0x24,0xA2,0xFD,0x22,0x26,0x22,0x24,0x42,0x2C,0x42,0x14,0x42,0x24,0x82,0x44,0x1E,0x04,0x00,0x04,0x00,0x00,0x00,/*"老",0*/0x00,0x00,0x3F,0xE1,0x00,0x02,0x00,0x0C,0xFF,0xF0,0x00,0x00,0x40,0x00,0x47,0xF8,0x44,0x00,0x44,0x00,0x7F,0xFF,0x44,0x10,0x44,0x08,0x47,0xF0,0x40,0x00,0x00,0x00,/*"师",1*/0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*",",2*/0x04,0x02,0x08,0x0C,0x10,0x00,0x3F,0xEE,0xC4,0x01,0x08,0x81,0x11,0x11,0xE6,0x4D,0x20,0x21,0x2F,0xC1,0x20,0x01,0x24,0x07,0x2A,0x00,0x31,0x88,0x00,0x06,0x00,0x00,/*"您",3*/0x02,0x00,0x02,0x20,0x22,0x20,0x22,0x20,0x2A,0x20,0x26,0x20,0xA2,0x20,0x63,0xFF,0x22,0x20,0x26,0x20,0x2A,0x20,0x22,0x20,0x22,0x20,0x02,0x20,0x02,0x00,0x00,0x00,/*"辛",4*/0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x3F,0xF9,0x22,0x21,0x22,0x21,0x22,0x2F,0xE2,0x21,0x22,0x21,0x22,0xF9,0x22,0x21,0x3F,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,/*"苦",5*/0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x02,0x40,0x01,0x47,0xFE,0x44,0x00,0x48,0x00,0x50,0x00,0x60,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"了",6*/0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"!",7*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};unsignedcharcodetab1[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//老(0)师(1),(2)您(3)辛(4)苦(5)了(6)!(7)0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"!",7*/0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x02,0x40,0x01,0x47,0xFE,0x44,0x00,0x48,0x00,0x50,0x00,0x60,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"了",6*/0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x3F,0xF9,0x22,0x21,0x22,0x21,0x22,0x2F,0xE2,0x21,0x22,0x21,0x22,0xF9,0x22,0x21,0x3F,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,/*"辛",5*/0x02,0x00,0x02,0x20,0x22,0x20,0x22,0x20,0x2A,0x20,0x26,0x20,0xA2,0x20,0x63,0xFF,0x22,0x20,0x26,0x20,0x2A,0x20,0x22,0x20,0x22,0x20,0x02,0x20,0x02,0x00,0x00,0x00,/*"",苦4*/0x04,0x02,0x08,0x0C,0x10,0x00,0x3F,0xEE,0xC4,0x01,0x08,0x81,0x11,0x11,0xE6,0x4D,0x20,0x21,0x2F,0xC1,0x20,0x01,0x24,0x07,0x2A,0x00,0x31,0x88,0x00,0x06,0x00,0x00,/*"您",3*/0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*",",2*/0x00,0x00,0x3F,0xE1,0x00,0x02,0x00,0x0C,0xFF,0xF0,0x00,0x00,0x40,0x00,0x47,0xF8,0x44,0x00,0x44,0x00,0x7F,0xFF,0x44,0x10,0x44,0x08,0x47,0xF0,0x40,0x00,0x00,0x00,/*"师",1*/0x04,0x08,0x04,0x10,0x24,0x20,0x24,0x40,0x24,0xFC,0x24,0xA2,0xFD,0x22,0x26,0x22,0x24,0x42,0x2C,0x42,0x14,0x42,0x24,0x82,0x44,0x1E,0x04,0x00,0x04,0x00,0x00,0x00,/*"老",0*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,师};voiddelay(unsignedintz)//延时子函数{unsignedcharx;for(;z>0;z--)for(x=110;x>0;x--);}voidwritedata(unsignedchardat1,unsignedchardat2) //595显示子函数{ unsignedchari; //CY存储移位之后的数据CY进位标志位,单片机内部的存放器移位之后的数据就存在CY里面 for(i=0;i<8;i++)//循环八次 { dat1=dat1<<1;//数据左移 ds=CY;//数据发送 shcp=1;//上升沿发生移位 shcp=0; } for(i=0;i<8;i++)//循环八次 { dat2=dat2<<1;//数据左移 ds=CY;//数据发送 shcp=1;//上升沿发生移位 shcp=0; } stcp=0; stcp=1;//上升沿将数据送到输出锁存器 stcp=0;}voidmain() //主函数{ chari,aa; TMOD=0x01;//定时器0模式116位定时模式 TH0=(65536-10000)/256;//定时10.000ms TL0=(65536-10000)%256; ET0=1;//使能定时器0 EA=1;//开启总中断 TR0=1;//开场计数 zong=(zi+1)*32; while(1) //无限循环 { if(s1==0)//检测按键 { delay(30);//延时消除按键抖动 if(s1==0) { TR0=~TR0;//按下暂停暂按继续 while(s1==0);//等待按键松手 } } if(s2==0)//检测按键 { delay(30);//延时消除按键抖动 if(s2==0) { fx=~fx;//方向取反 aa=0; if(fx==0)net=0;//正向移动 if(fx==1)net=zong;//反向移动 while(s2==0);//等待按键松手 } } for(i=0;i<16;i++)//循环移位 { //两片138组成的4-16线译码器 P2=i;//列数据驱动,138的驱动端口 if(fx==0)writedata(tab[net+aa],tab[net+aa+1]);//显示数据的数字位置 if(fx==1)writedata(tab1[net+aa],tab1[net+aa+1]);//显示数据的数字位置 delay(3);//延时 writedata(0,0);//清屏 aa+=2;//数据加实现扫描 if

温馨提示

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

评论

0/150

提交评论