版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于单片机的16*16led点阵显示屏的设计随着单片机在各个领域的广泛应用,许多用单片机作控制驱动led显示屏也应运产生。本系统设计使用单片机mcs-51控制扫描方法实现led点阵显示器的字符的显示,介绍了用单片机进行显示系统开发的方法,单片机软件、硬件调试技术,还有点阵显示驱动扩展的一般方法。1.引言1.1 研究的目的、意义led因其体积小,耗电量低,亮度及环保等优点而被广泛应用于公共场所的大屏显示上,led点阵大屏可应用于户外广告,交通导航,大厅公告,比赛的多媒体实时显示等领域。本设计作品的用途正是在于实现大屏显示的核心功能,即汉字的显示,可实际应用于简单的显示系统中,如简单的排队叫号显示
2、屏,电梯显示屏等。通过此次设计将单片机软硬件结合起来对程序进行编辑,校验,锻炼实践能力和理论联系实际的能力。 1.2 本设计所要做的工作为了完成该设计实现,经过考虑论证,决定分为以下几个阶段进行:(1)对课题进行全面的分析,明确系统要实现的功能,大致了解要解决的问题,制定总的设计方案;(2)根据论证设计硬件系统并画出电路图,并根据电路图制电路板;(3)在硬件的基础上设计软件程序;(4)利用仿真器编译软件程序,进行调试仿真;(5)把调试成功的程序利用烧入器烧入到芯片中去;(6)把固化好程序的芯片插入到实际应用系统,投入到实际使用。2系统设计方案2.1系统构成框图 cpu晶振复位74hc15474
3、ls37374ls373 16*16led点阵显示屏 行列3 硬件电路设计3.1 主要器件介绍3.1.1 led点阵led点阵显示屏采用4个8*8共256个象素的点阵,通过万用表检测发光二极管的方法测试判断出该点阵的引脚分布,如图3.1所示。8*8的led点阵为双色共阳模块,单点的工作电压为正向(vf)=1.8v,正向电流(if)=8-10ma。静态点亮器件时(64点全亮)总电流为640ma。总电压为1.8v,总功率为1.15w.动态时取决于扫描频率(1/8或1/16秒),单点瞬间电流可达80-160ma。点阵16 15 14 13 12 11 10 91 2 3 4 5 6 7 8图3.1
4、点阵led扫描法介绍点阵led一般采用扫描式显示,实际运用分为三种方式:(1) 点扫描(2) 行扫描(3) 列扫描若使用第一种方式,其扫描频率必须大于16*64=1024hz,周期小于1ms即可。若使用第二和第三种方式,则频率必须大于16*8=128hz,周期小于7.8ms即可符合视觉暂留要求。此外一次驱动一列或一行(8颗led)时需外加驱动电路提高电流,否则led亮度会不足。 我们把行列总线接在单片机的io口,然后把上面分析到的扫描代码送人总线,就可以得到显示的汉字了。但是若将led点阵的行列端口全部直接接入at89s52单片机,则需要使用32条io口,这样会造成io资源的耗尽,系统也再无扩
5、充的余地。因此,我们在实际应用中只是将led点阵的16条行线直接接在p2口,至于列选扫描信号则是由4-16线译码器74hc154来选择控制,这样一来列选控制只使用了单片机的4个io口,节约了很多io资源,为单片机系统扩充使用功能提供了条件。汉字扫描显示的基本过程是这样的:通电后由于电阻r1,电容c1的作用,使单片机的rst复位脚电平先高后低,从而达到复位;之后,在c2,c3,x1以及单片机内部时钟电路的作用下,单片机at89s52按照设定的程序在接口输出与内部汉字对应的代码电平送至led点阵的行选线,同时在p1.0,p1.1,p1.2,p1.3接口输出列选扫描信号,从而选中相应的象素led发光
6、,并利用人眼的视觉暂留特性合成整个汉字的显示。3.1.2锁存器74ls37374ls373是常用的地址锁存器芯片,它实质是一个是带三态缓冲输出的8d触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片,其内部结构图如图3.2所示。 图3.2 74ls373内部结构图(1).1脚是输出使能(oe),是低电平有效,当1脚是高电平时,不管输入3、4、7、8、13、14、17、18如何,也不管11脚(锁存控制端,g)如何,输出2(q0)、5(q1)、6(q2)、9(q3)、12(q4)15(q5)、16(q6)、19(q7)全部呈现高阻状态(或者叫浮空状态);(2).当1脚是低电平
7、时,只要11脚(锁存控制端,g)上出现一个下降沿,输出2(q0)、5(q1)、6(q2)、9(q3)、12(q4)、15(q5)、16(q6)、19(q7)立即呈现输入脚3、4、7、8、13、14、17、18的状态.锁存端le 由高变低时,输出端8 位信息被锁存,直到le 端再次有效。 当三态门使能信号oe为低电平时,三态门导通,允许q0q7输出,oe为高电平时,输出悬空。当74ls373用作地址锁存器时,应使oe为低电平,此时锁存使能端c为高电平时,输出q0q7 状态与输入端d1d7状态相同;当c发生负的跳变时,输入端d0d7 数据锁入q0q7。51单片机的ale信号可以直接与74ls373
8、的c连接。3.1.3 译码器74hc15474hc154为4线16线译码器,其管脚图如图3.3所示: 图3.3 74hc154管脚图其逻辑图如图3.4所示:图3.4 74hc154逻辑图其功能表如表3.1所示:说明: h高电平 l低电平 x任意 表3.1 74hc154功能表3.2硬件设计思想及电路图 3.2.1硬件设计思想由单片机进行处理,并将行列信号分别通过显示驱动输入点阵大屏,控制点阵的显示。 (1) 单片机: 采用at89s52单片机芯片作为中控,控制led点阵显示。 (2)显示:考虑到标准地显示一个汉字至少需要16*16led点阵屏,而我们也只需要实现大屏显示的基本功能,并不需要太大
9、的显示屏,因此决定采用16x16 led点阵屏显示汉字。 (3)显示驱动:考虑到设计所需端口较多的问题,为减少资源占用,使用74hc154 416译码器作为列驱动芯片,采用74hc373串入并出8位锁存器作行驱动芯片。但由于两种芯片的最大输出电流均不够大(虽然74hc373输出电流已经较大了),为让led显示亮度够强,采用pnp型三极管来进行电流的放大,同时为保护芯片,我们又采用1k电阻来进行限流。3.2.2硬件电路图 本设计16x16系统的制作主要在于扩展用户i/o口,最终系统实现的关键在于扫描电路的扩展及程序的编写。系统i/o口的扩展是采用了4-16译码器74hc154来实现的,74hc1
10、54作为16*16系统的列扫描脉冲产生电路,其地址线连接到at89s52的p1口的低4位上。利用p2口为8个行数据端口传送数据。由于p口的驱动力不强,因此在p2的每个输出端都加上三极管,以加大驱动电流,提高点阵的显示亮度。设计原理图如图3.5所示: 图3.5 设计原理图其中芯片74hc154为4线-16线译码器,有四个地址输入(a0-a3)、两个选通输入(sts、stb)和十六个输出(y0-y15)。当sts和stb均为低电平时器件被选通,a0-a3可确定y0-y15中的一个以低电平呈现,当sts或stb为高电平时,y0-y15均为高电平。 at89s52单片机p1口与74hc154的输入端(
11、a,b,c,d)连接,74hc154的16个输出端与1616led的列线相连,p2口与行线相连。由于单片机端口输出的电流较小,不足以驱动led。故在led的每个列线上加上一个三极管,对电流进行放大,如图3.6。通过74hc154对1616led进行逐列扫描,选中一列时通过p2口选中列即点亮行上的led,快速的逐列扫描即可实现文字信息显示。由上可知,可采用逐列扫描的方法实现led的字符显示。 图3.6 led驱动电路图系统各个部分的原理图:图3.7 单片机控制电路图图3.8列驱动电路与行驱动电路图 图3.9 点阵显示电路图4.软件设计4.1汉字的点阵显示原理及字库代码获取方法我们先以简单的汉字显
12、示为例,每一个字由16行16列的点阵组成显示。即国标汉字库中的每一个字均由256点阵来表示。我们可以把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在256象素范围内的任何图形。如用8位的at89s52单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分,如图4.1所示。 图4.1 汉字“龙”为了弄清楚汉字的点阵组成规律,首先通过列扫描方法获取汉字的代码。汉字可拆分为上部和下部,上部由816点阵组成,下部也由816点阵组成。通过列扫描方法首先显示左上角的第1列的上半部分,显示汉字“龙”时,p2.4点亮,由上往下排列,为:p2.0灭
13、,p2.1灭,p2.2灭p2.3灭,p2.4亮,p2.5灭,p2.6灭,p2.7灭。即二进制00001000,转换为十六进制为08h。上半部一列完成后,继续扫描下半部的一列,为了方便,我们仍设计成由上往下扫描,从图4.1可以看到,这一列全部为不亮,即为00000000,十六进制则为00h。依照这个方法扫描16列,一共扫描32个8位,可以得出汉字“龙”的扫描代码为:00h,08h,08h,08h,08h,08h,0ffh,08h0fh,48h,28h,08h,08h,18h,08h,00h00h,00h,02h,06h,30h,0c4h,04h,08h0fch,24h,44h,84h,04h,0
14、4h,3ch,00h由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出他的扫描代码从而显示在屏幕上。本系统是设计龙岩学院字体的显示,使用这个方法可以分析出龙岩学院这几个字的代码。4.2 程序流程图软件程序主要由开始、初始化、主程序、字库组成。其中主程序和子程序的流程图如图4-2和图4-3所示。 开始系统初始化r0=16,扫描16列r7=16,一个字扫描16次载入第1个字的地址调用显示子程序载入第2个字的地址调用显示子程序载入第3个字的地址调用显示子程序载入第4个字的地址调用显示子程序 图4-2 主程序流程图 p1=0,列扫描计数r1=0,查表指针查表,送数据到p2口显示一列上
15、边8位r1r1+1查表,送数据到p2口显示一列下边8位r1r1+1p1p1+116位是否扫描完重置r016一个字是否扫描16次重置r716帧延时返回主程序开始nonoyesyes图4-3子程序流程图4.3程序清单:column equ p1 ;列扫描信号输出端口row equ p2 ;显示信号输出端口latch_h equ p3.0 ;上锁存信号输出端口latch_l equ p3.1 ;下锁存信号输出端口scancode equ 0 ;扫描信号speed equ 10 ;0.5s延迟s_time_h equ 0fdh ;2.5ms扫描时间s_time_l equ 0d0h ;2.5ms扫描时
16、间 org 00h ;程序从0地址开始 jmp start ;跳至start org 0bh ;timer0中断向量 jmp timer0 ;跳至timer0中断子程序;=start: mov ie,#10000010b ;设定timer0中断 mov tmod,#1 ;设定timer0为mode1 mov sp,#60h ;移开堆栈指针 setb rs0 ;切换到rb1 mov r0,#20h ;上面部分开始存放地址 mov r1,#30h ;下面部分开始存放地址 mov r2,#16 ; 扫描16列 mov r3,#scancode ;载入扫描码 clr rs0 ;切换回rs0 mov t
17、h0,#s_time_h ;设定每列扫描时间 mov tl0,#s_time_l ;设定每列扫描时间 setb tr0 ;启动timer0 mov dptr,#table ;将常数指针指向table地址 mov 41h,#4 ;4次加载字型 mov r0,#20h ; 上面部分开始存放地址 mov r1,#30h ;下面部分开始存放地址;=loop: call loading ;加载字型 call delay ;稍等一下 clr c mov a,dpl add a,#32 mov dpl,a mov a,dph addc a,#0 mov dph,a mov r0,#20h ; 上面部分开始存
18、放地址 mov r1,#30h djnz 41h,loop ;跳至loop形成一个循环(一次写1字) jmp start ;跳至start形成一个循环;=loading: push acc ;存储acc push psw ;存储pswmov r2,#16 ;加载各16笔数据 mov r3,#0 ;间距 mov r4,#10h ;间距load_1: mov a,r3 ;将间距放入acc movc a,a+dptr ;读入数据 mov r0,a ;将上面部分数据存入存储器 inc r0 ;指向下一个地址 inc r3 ;指向下一个地址,相对dptr地址加1、 mov a,r4 ;将间距放入acc
19、movc a,a+dptr ;读入数据 mov r1,a ;将上面部分数据存入存储器 inc r1 ;指向下一个地址 inc r4 ;指向下一个地址 djnz r2,load_1 ;跳至load_1形成一个循环(1上字节1下字节) pop psw ;取回psw pop acc ;取回acc资料 ret;=delay: mov r7,#speedd2: mov r6,#200d1: mov r5,#250 djnz r5,$ djnz r6,d1 djnz r7,d2 ret;=delay1: mov r7,#1d22: mov r6,#1d11: mov r5,#100 djnz r5,$ d
20、jnz r6,d11 djnz r7,d22 rettimer0: clr tr0 ;关闭timer0 push acc ;存储acc setb rs0 ;切换到rb1 mov a,r3 ;载入扫描码 mov column,a ;输出扫描码(显示一列) inc r3 ;下一个扫描码 mov a,r0 ;取出显示信号;=;使用共阳极式led阵列,则加入下一行指令; ;= cpl a mov row,a ;输出显示信号 setb latch_h ;打开锁存器 nop clr latch_h ;关闭锁存器 inc r0 mov a,r1 ;取出显示信号;=;使用共阳极式led阵列,则加入下一行指令;
21、=cpl a mov row,a ;输出显示信号 setb latch_l ;打开锁存器 nop clr latch_l ;关闭锁存器 inc r1 call delay1 mov a,#0ffh mov p2,a djnz r2,next_c ;未超过16行则跳至next_c mov r2,#16 ;从新开始扫描 mov r0,#20h ;从第一列开始 mov r1,#30h ;从第一列开始next_c: mov th0,#s_time_h ;设定每列扫描时间 mov tl0,#s_time_l ;设定每列扫描时间 setb tr0 ;启动timer0 clr rs0 ;切换回rb0 pop
22、 acc ;取回acc retitable: db 00h,10h,10h,10h,10h,10h,0ffh,10hdb 0f0h,12h,1ch,0d0h,10h,10h,10h,00hdb 00h,40h,20h,10h,0ch,03h,10h,08hdb 3fh,42h,41h,40h,40h,40h,70h,00hdb 00h,40h,5eh,50h,50h,0d0h,50h,5fhdb 50h,50h,50h,50h,5eh,40h,40h,00hdb 10h,08h,04h,02h,7fh,22h,22h,22hdb 22h,22h,22h,22h,7eh,00h,00h,00hdb 40h,30h,10h,12h,5ch,54h,50h,51hdb 5eh,0d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论