精编基于LED点阵显示屏驱动器的设计与实现毕业设计论文.docx
《精编基于LED点阵显示屏驱动器的设计与实现毕业设计论文.docx》由会员分享,可在线阅读,更多相关《精编基于LED点阵显示屏驱动器的设计与实现毕业设计论文.docx(26页珍藏版)》请在冰豆网上搜索。
精编基于LED点阵显示屏驱动器的设计与实现毕业设计论文
(此文档为word格式,下载后您可任意编辑修改!
)
本科生毕业论文(设计)
题目(中文):
LED点阵显示屏驱动器的设计与实现
(英文):
TheDesignandImplementationof
LEDDotMatrixDisplayDriver
本科毕业论文(设计)诚信声明
作者郑重声明:
所呈交的本科生论文(设计),是在指导老师的指导下,独立进行研究所取得的成果,成果不存在知识产权争议。
除文中已近注明引用的内容外,论文不含任何其他个人或集体已经发表或撰写过的成果。
对论文的研究做出重要贡献的个人和集体均已在文中以明确的方式标明。
本声明的法律结果由作者承担。
本科生论文(设计)作者签名:
年月日
LED点阵显示屏驱动器的设计与实现
摘要
本文设计了一个以整机为美国ATMEL公司生产的40脚单片机AT89S52[1]为控制核心,以一个64*32点阵模块控制器,根据标准的08控制接口要求,可以驱动市面上常见的16扫单色显示屏,显示汉字、英文、阿拉伯数字及其他信息等。
同时通过调用HZK16*16标准汉字库文件读取字模的方法,把汉字从上位机发送到LED显示屏控制卡上。
整个系统提供外部扩展,包括常规点阵控制器模块。
该系统实现了1/16扫描驱动电路等功能,并能通过PC机串口修改程序对显示信息进行控制更新,具有刷新速度快、亮度高、功耗低等特点。
关键词
LED点阵控制器;AT89S52;1/16扫;08接口
TheDesignandImplementationofLEDDotMatrixDisplayDriver
Abstract
ThispaperhasdesignedamachinebasedonthemodelwhichisproducedbyATMELcompanyintheUnitedStateswitha40feetMCUAT89S52asthecontrolcore,[1]anda64*32dotmatrixmodulecontroller,soaccordingtotherequirementsofthestandard08controlinterface,italsocandrivethecommononthemarketof16monochromedisplay,displayChinesecharacter,English,ArabicNumbers,andotherinformation,etc.Atthesametime,byadoptingthemethodofreadingChinesecharactersfromtheHZK16*16standarddocuments,andtheChinesecharactersfromtheuppermachinesenttoLEDdisplaycontrolcard,theentiresystemalsoprovidestheexternalexpansion,includingregularlatticecontrollermodule.Thissystemhasrealizedthefunctionofupdatingthecontrollingof1/16scandrivercircuit,anditalsoobtainsotherfunctions,suchas,andwithafastershuabing,ahigherbrighterandalowerenergy-needandwaste,etc.
Keywords
LEDdotmatrixcontroller;89S52;1/16sweep;08Interface
1引言
LED(light emitting diode,发光二极管)是六十年代末发展起来的一种半导体显示器件。
七十年代,随着半导体材料合成技术、单晶制造技术和P一结形成技术的研究进展,发光二极管在发光颜色、亮度等性能方面得以提高,并迅速进入批量化和实用化。
进入八十年代后,LED在发光波长范围和性能方面大大提高,并开始形成平面显示产品即LED显示屏。
由于LED具有发光率高、使用寿命长、组态灵活、工作性能稳定以及在室内室外适应力强等优点,且LED显示屏的最大特点是不受面积的限制,可以达到几十甚至几百平方米以上,应用于室内外各种公共场所显示文字、图形、动画、视频图像等各种信息。
LED显示屏的应用涉及到社会经济的许多领域,主要包括:
机场、港口、车站旅客引导信息显示;证券交易、金融信息显示;邮政、电信、商场购物中心等服务领域的业务宣传及信息显示;道路交通信息显示;高校教学管理信息发布显示;文艺演出和体育比赛;室外产品广告及信息发布。
除单一大型户内、户外显示屏作为广告媒体外,国内一些城市还出现了集群LED显示屏广告系统。
另外,自2000年后随着高亮度LED产品亮度与效率增进,可携式产品(如手机、PDA、数字相机等)大量使用作为产品屏幕或按键光源,配合可携式产品市场成长,使得可携式产品成为LED最大应用市场。
随着电子技术的发展,LED点阵书写显示屏是信息传播一种重要手段,成为现代化社会的一个闪亮标志,它的广泛应用将是一种趋势。
因此,在科技以日新月异的速度向前发展,经济全球一体化的社会中,LED点阵显示技术发展前景乐观。
作为一种新型的发光体,LED自诞生以来就倍受关注。
特别是进入21世纪后,世界面临严重的能源、环境危机,在发达国家,照明用电占总用电量的20%;我国的照明用电约占总用电量的12%,至2010年,我国照明用电将高达3000亿度,相当于三峡水电站完工后的年发电量的3倍以上。
而目前我国的发电主要还是依靠火力,对于环境的污染非常严重,这就需要改进现有的照明设备,提高其效率。
而半导体照明作为新兴的发光体,具有电光效率高、体积小、寿命长、电压低、节能和环保等优点,是下一代照明的不二之选。
根据各种照明器件的效率,可以得出,LED与传统的白炽灯、日光灯相比,在电光效率、寿命上占有绝对的优势,一旦在成本、光效上取得突破,将很快占领照明市场。
因而,现今不管是国内还是国外我们都是围绕先进的LED技术做进一步研究。
目前我国的信息行业发展迅速,作为主要平面显示媒介的LED显示屏的作用也越练越广泛,相关的从业人员也会越来越紧缺。
但同时应该清楚的认识到我国的LED技术虽然发展迅速但和世界先进水平还有一定的差距。
因此本设计课题不论是对自己的就业还是对我国LED显示技术的发展都有非常现实与积极的意义。
在设计本课题时本人查阅了大量的书籍和相关知识使我能够掌握LED点阵显示驱动的基本显示原理和设计方法,对LED显示屏这个行业有了较为深刻的了解和认识。
并且对大学期间所学习的一些理论进行了实践,使我对所学过的理论知识有了新的认识。
并且通过本设计课题学习掌握AT89S52单片机的控制功能和用它作为主控单元完成许多设计目标的方法。
熟悉AT89S52单片机软件编程。
且能掌握使用AD进行电路设计和制图的方法步骤。
为以后从事相关行业的工作积累了实际工作经验。
因此,学习LED点阵显示驱动与工程技术很有必要。
本文通过设计一个可显示文字与图形的64*32点阵控制器来学习和熟悉LED的使用。
本文采用89S52单片机为核心,在软件编程中采用C语言,显示时采用点阵显示。
讲述了LED点阵显示驱动的基本原理、硬件组成与设计、程序编译与下载等基本环节和相关技术。
2总体设计方案
2.1设计任务与要求
本系统由AT89S52、16个74HC595[2]、16个74HC138[3]及LED显示屏为核心组成的点阵式LED汉字显示屏,主要由24MHZ晶振电路、复位电路、89S52单片机、点阵阳极驱动电路、点阵阴极驱动电路、64*32显示屏6部分组成。
采用的AT89S52单片机最小化应用设计,P1口作为I/O口,输出行数据和控制信号,P2口作为I/O口,与“写”控制信号配合,输出列控制信号。
LED显示采用动态扫描方式实现,控制电路部分由4片74HC138和2片74HC595传输信号,传输出来的信号通过74HC595输出,再通过编译最终达到依次显示汉字的目的。
而接口部分,一般采用08接口,如果需要不同的接口类型,可以根据08接口为基础进行转接,这也是本系统采用08接口的原因之一。
2.2设计要求
2.2.1基本要求
(1)显示区域:
64点*32点,单色;
(2)通过上位机修改显示内容;
(3)能存储16*16点阵汉字数不少于64个;
(4)按键可改变显示内容;
(5)可兼容T12和T08显示屏单元板。
2.2.2发挥部分
(1)LED显示屏亮度连续可调;
(2)实现信息的左右滚屏显示,预存信息的的定时循环。
3系统硬件设计
3.1整体电路
本系统由AT89S52、16个74HC595及LED显示屏为核心组成的点阵式LED汉字显示屏,主要由24MHZ晶振电路、复位电路、单片机、点阵阳极驱动电路、点阵阴极驱动电路、64*32显示屏6部分组成。
采用的AT89S52单片机最小系统设计,P1口作为I/O口,输出行数据和控制信号,P2口作为I/O口,与“写”控制信号配合,输出列控制信号。
LED显示采用动态扫描方式实现,控制电路部分由4片74HC138和2片74HC595传输信号,传输出来的信号通过74HC595输出,再通过编译最终达到依次显示汉字的目的。
系统整体电路如图3.1所示:
图3.1整体电路
本设计一般使用的是开关电源,220V输入,5V直流输出。
需要指出,由于LED显示屏幕属于精密电子设备,所以要采用开关电源[4],不能采用变压器。
对于1个单红色户内64*32的单元板,全亮的时候,电流为2A。
选用的是条屏控制卡,可以控制1/16扫的64*32个点的单色屏幕,可以组装出最有成本优势的LED屏幕。
该控制卡属于异步卡,就是说,该卡可以断电保存信息,不需要连接PC都可以显示储存在里面的信息。
其中注意的问题是16PIN、08接口的接口顺序为:
ABCD为行选信号,STB(LT)为锁存信号,CLK(CK)为时钟信号,R1,R2,G1,G2为显示数据,EN为显示使能,N为地(GND)。
只有当单元板和控制卡的接口一致时,才可以直接连接起来。
如果不一致,就需要利用转换线转换一下线的顺序。
3.2AT89S52单片机最小系统
单片机[5]也被称作“单片机微型计算机”、“微控制器”,国际上采用“MCU”(MicroControllerUnit)称呼单片机。
单片机的发展的历史大致可以分为4个阶段。
第一阶段是单片机探索阶段,主要探索如何把计算机的主要部件集成在单芯上;第二阶段是单片机完善阶段,完善了8位单片机的并行总线结构、外围功能单元由CPU集中管理模式、体现控制特性的位地址空间和位操作方式、指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令;第三阶段是向微控制器发展的阶段,说的是在51系列的基本结构的基础上,加强了外围电路的功能,突出了单片机的控制功能,将一些用测控对象的模数转换器、数模转换器、程序运行监视器、脉宽调制器等纳入芯片中,体现单片机的微控制器特征;第四阶段是单片机的全面发展阶段,很多大半导体和电气厂商都开始加入单片机的研制和生产,单片机世界出现了百花齐放,欣欣向荣的景象。
随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位、16位、32位通用型单片机,以及小型谦价的专用型单片机。
目前,单片机正朝着高性能和多品种方向发展,今后单片机的发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装等方面发展。
最小系统包括AT89S52、晶体振荡电路、复位开关。
其中晶体振荡电路[6]采用24MHZ,图3.2为AT89S52单片机最小系统。
图3.2最小系统电路图
3.3标准08接口
单元板输入08接口[7]的接口定义如图3.3所示:
图3.308接口
ABCD是4个行选信号,实际上是用4个二进制位计数来实现的。
A为最低位,D为最高位,从0记录到15,板子上的2个138组成一个4-16译码器,会自动选通第0行和第15行。
R0、R1、G0、G1分别是红色和不亮的595的数据,SCK和LT分别是595的时钟和锁存,OE是整个单元板的显示时能,OE为0时单元板暗亮,为1时高亮。
OE是为了适应不同厂家的单元板信号的。
一个单元板的宽和高的点数是64*32点,分上下两个半屏,两个半屏共用时钟、锁存和OE、R0、G0是上半屏数据,R1、G1是下半屏数据。
从单元板的显示面看,数据是从右侧向左输入,一行是64个点,也就是通过8个595控制,因为是单色,每个半屏是两行595,整个屏是4行595。
单元板控制卡工作顺序:
把显示缓冲里的第一行红色数据送往R0,显缓的第8行红色数据送往R1,每行是8个数据——>关闭OE使能——>行选选中第0行、LT锁存——>开启OE使能,9数据显示。
间隔一定时间3-5ms,重复以上循环,行选第1行,送第1行和第9行数据...间隔一定时间3-5ms,重复以上循环,行选第2行,送第2行和第10行数据...以此类推。
3.4键盘模块
键盘、状态显示模块:
为了使软件编程简单,本设计利用可编程芯片8255。
接法如图一所示,PA口接按键,PC口则用用于控制状态显示所用LED点阵。
每个按键都通过一个10K的上拉电阻接+VCC,按键的另一端接地。
当有键按下时,与该键相连的PA口的相应位变为低电平,单片机检测到该变化后即转到相应是键处理程序,同时在程序中点亮LED点阵模块电路如图3.4。
图3.4键盘电路
3.5LED显示模块
点阵系统串行输入,器件为移位寄存器TPIC6B595595[8],门控和扫描信号常以16点阵为一行进行并行处理。
在点阵显示中以4*8个LED点阵构成一个LED显示单元,采用行共阳阴共列的编排方式。
其驱动分为行列两部分,分别来自于行、列移位寄存器,行数据是扫描数据,16行中每次只有一行被驱动,采用逐行扫描方式,列数据则为汉子的点阵码。
对于字符和图形显示也可以用点阵处理。
其显示原理和方法相同,如图3.5。
图3.5LED显示电路
3.6列驱动模块
本设计采用了74HC595是LED列驱动芯片,8位移位锁存器用于驱动显示列,每片74HC595可以驱动8列,多片74HC595串接在一起,串行列数据信号RI(DATA)、锁存信号STB、串行时钟信号CLK都在这个芯片上。
第8脚:
GND,电源地。
第16脚:
VCC,电源正极。
第14脚:
DATA,串行数据输入口,显示数据由此进入,必须有时钟信号的配合才能移入。
第13脚:
EN,始能口,当该引脚上为“1”时QA~QH口全部为“1”,为“0”时QA~QH的输出由输入的数据控制。
第12脚:
STB,锁存口,当输入的数据在传入寄存器后,只有供给一个锁存信号才能将移入的数据送QA~QH口输出。
第11脚:
CLK,时钟口,每一个时钟信号将移入一位数据到寄存器。
由于要显示64*32个单元,必须采用74HC595级联的方式来实现,本设计两片74HC595列驱动模块级联如下图3.6所示:
图3.6两片74HC595级联
3.7行驱动模块
32*64点阵屏共用16片138级联,通过总线驱动芯片74LS254驱动行/列信号,从总线上的低4位输出的行号经两片138级联后形成4/16线译码器后生成16条行选信号,再经过驱动管驱动对应的行线。
一条线上要带动32列的LED灯同时发光时,按每一LED器件15MA电流计算,32个LED同时发光时,需要480MA的电流,选用三极管8550作为驱动管可以满足要求。
74LS138为3线—8线译码器,其工作原理为:
当一个选通端(E1)为高电平,另外两个选通端E2和E3为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出,当数据超过8位之后,电平拉高后可对16数据操作。
四片级联后的138电路如下图3.7所示:
图3.7四片74HC138级联
4系统软件设计
4.1显示驱动程序
显示驱动程序在进入中断后,首先要对定时器T0重新赋值,以保证显示刷屏新率的稳定,1/32扫描显示屏的刷新率(帧频)计算公式如下:
刷新率(帧频)=
(式4.1)
溢出率
(式4.2)
其中为fosc晶振频率[9],t0为定时器T0初值(工作在32位定时器模式)。
由公式可知,显示屏刷频新率由定时器T0的溢出率和单片机的晶振频率决定,因此,我们调试时首先选定晶振频率,然后给定不同的初值T0,只要能获得24MHz以上的刷新频率,就能连续稳定的显示,而且刷新率越高,显示越稳定,但会过多的占用CPU时间,实验证明,24MHz晶振时刷新率达到50MHz以上,目测画面基本无闪烁发生。
4.2汉字字模的提取方法
l6*16点阵汉字字库可以在中文操作软件(UCDOS)中找到现成的文件。
一般汉字字库均符合国家标准GB2312-80的规定。
在汉字系统中使用机内码形式存储汉字,国标码的最高位置l作为汉字的机内码。
而国标码由两个字节组成,其中高字节表示区,低字节表示位。
国标码和区位码都有94个区,每个区又都有94个位。
1-9区为图形区,10-15区未规定,16-87区存放一、二级汉字库。
国标码和区位码的关系是:
国标码高字节=区码+20H;国标码低字节=位码+20H。
所以,机内码与国标码和区位码的关系是:
机内码高字节=国标码高字节+80H=区码+A0H;机内码低字节=国标码低字节+80H=位码+A0H。
字模代码按照区位码的顺序在字库中以二进制格式存储,每个汉字占用32个字节。
因此只要找到汉字代码的起始位置,就可正确提取汉字点阵信息。
对于不同的字库,汉字代码起始位置的计算方法可能存在差异,例如HZK16若以ADDRESS表示首地址,Q表示区码,W表示位码,经分析和实践得出HZK16中汉字首地址计算公式为:
ADDRESS=32×[(Q-1)×94+(w-1)](式4.3)
在VB.NET中,获取汉字区位码可以用ASC()函数和HEX()函数,函数ASC()返回一个Integer数据[10],代表字符串中首字母的字符代码。
HEX()函数返回代表十六进制数值的字符串。
当汉字作为ASC()函数的参数时,返回的是汉字机内码,经HEX()函数转换即可得到汉字机内码的十六进制数,再通过公式就可以得到汉字的首地址,有了汉字的首地址再从字库中提取汉字代码,而经过扩展取两次字模得到32*64的点阵字模。
4.3程序流程图
显示屏的程序流程图如下所示:
N
Y
图5.2程序流程图
首先程序输入进来的时候进行初始化,然后接着中断程序初始化,将中断配置成需要的模式,用户就可以实现初始配置的功能,然后用if语句进行判断,如果判断为正确就传入参数为移动速度,设定显示所需要的参数,如果参数不正确显示就会有错误,如果不是就执行左移或闪烁命令,再进行串口发送显示命令,用于配置相应显示的功能,RAM将显示缓存输入到显示屏进行扫描显示,显示用户配置的信息,扫描完成后程序返回中断程序初始化进行下一次的扫描显示。
具体的程序代码如下所示:
voidSend_one_line(void)
{
chars;
ucharTEMP0;
ucharTEMP1;
uchari;
ucharinc;
bite1,e2;
if(col<8)
inc=0;//判断是否闪烁显示
if(8<=col&&col<16)
inc=1;
if(16<=col&&col<24)
inc=2;
if(24<=col&&col<32)
inc=3;
for(s=0+inc;s<=8+inc;s++)
{
TEMP0=Combine_2byte(BUFFDOWN[s],BUFFDOWN[s+1]);
TEMP1=Combine_2byte(BUFF__UP[s],BUFF__UP[s+1]);
for(i=0;i<8;i++)
{
e1=~(TEMP1>>i)&0x01;//取出最高位
e2=~(TEMP0>>i)&0x01;//取出最高位
R1=e1;
R2=e2;
CLK=0;
CLK=1;//移位时钟
}
}
}
4.4显示子程序
图5.3显示子程序流程
首先初始化,将查找显示汉字数据导入RAM中,然后将RAM中的汉字编码数据传入TPIC6B595中,先进行上半屏的16行扫描,再接着把数据装载入下半屏的16行进行扫描,用while语句判断是否扫描完成,当32行全部扫完时返回子程序进行下一次扫描。
具体程序代码如下所示:
voidLoad_one_line(void)
{
BUFF__UP[0]=Table[word][disrow*4+0];//装载上半数据串行放在TPIC6B59中
BUFF__UP[1]=Table[word][disrow*4+1];
BUFF__UP[2]=Table[word][disrow*4+2];
BUFF__UP[3]=Table[word][disrow*4+3];
BUFF__UP[4]=Table[word+1][disrow*4+0];
BUFF__UP[5]=Table[word+1][disrow*4+1];
BUFF__UP[6]=Table[word+1][disrow*4+2];
BUFF__UP[7]=Table[word+1][disrow*4+3];
BUFF__UP[8]=Table[word+2][disrow*4+0];
BUFF__UP[9]=Table[word+2][disrow*4+1];
BUFF__UP[10]=Table[word+2][disrow*4+2];
BUFF__UP[11]=Table[word+2][disrow*4+3];
BUFF__UP[12]=Table[word+3][disrow*4+0];
BUFF__UP[13]=Table[word+3][disrow*4+1];
BUFF__UP[14]=Table[word+3][disrow*4+2];
BUFF__UP[15]=Table[word+3][disrow*4+3];
BUFF__UP[16]=Table[word+4][disrow*4+3];
BUFFDOWN[0]=Table[word][64+disrow*4+0];//装载下半屏数据
BUFFDOWN[1]=Table[word][64+disrow*4+1];
BUFFDOWN[2]=Table[word][64+disrow*4+2];
BUFFDOWN[3]=Table[word][64+disrow*4+3];
BUFFDOWN[4]=Table[wor