计算机接口程序设计16X16点阵LED显示.docx
- 文档编号:15539996
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:42
- 大小:270.72KB
计算机接口程序设计16X16点阵LED显示.docx
《计算机接口程序设计16X16点阵LED显示.docx》由会员分享,可在线阅读,更多相关《计算机接口程序设计16X16点阵LED显示.docx(42页珍藏版)》请在冰点文库上搜索。
计算机接口程序设计16X16点阵LED显示
信息工程学院
接口技术课程设计论文
(2008~2009学年第2学期)
论文题目:
_点阵LED显示系统设计_
姓名:
学号:
专业:
计算机科学与技术
年级班级:
06级3班
指导教师:
蒲攀
完成日期:
2009年7月10日
成绩:
摘要
本论文主要介绍的是16×16点阵LED显示系统。
硬件部分主要使用星研ES598PCI实验箱中的可编程并行接口芯片8155,可编程并行接口芯片8255,16×16点阵LED,8位开关等连接组成点阵LED显示控制系统的基本电路。
软件部分采用了汇编语言编写程序代码,通过判断、跳转、循环等基本技术实现LED显示点阵汉字,汉字的滚动显示;并用8位开关结合8155,实现汉字滚动显示速度和方向的控制等。
该系统显示直观,工作稳定,操作简单,与商用LED显示具有类似的显示和滚动原理,具备较强的实用价值。
关键词:
点阵LED显示,16×16LED,星研ES598PCI,8155,8255
Summary
ThisthesismainlydescribetheLEDsystemwith16×16.Thehardwaresrelyonprogrammableparallelinterfacechip8155and8255,LEDsystemwith16×16,8-bitswitchesofSTARES598PCItocomposethebasicelectrocircuitofLEDcontrolsystem.Thesoftwareiswritteninassemblelanguage.TheChinesecharacterrollingdisplayisrealizedthroughdetermination,jumpingandlooping.Thespeedanddirectionofrollingiscontrolledwith8155alongwiththe8-bitswitch.Thissystemisintuitionistic,workssteadily,andiseasytomanipulate.ItsharesthesametheoryofdisplayingandrollingwiththecommercialLEDsystem,whichmeansithaveastrongusevalue.
Keyword:
LEDdisplaysystem,16×16LED,STARES598PCI,8155,8255
1.引言
LED(LightEmittingDiode),发光二极管,简称LED,,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。
LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极使整个晶片被环氧树脂封装起来。
半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。
但这两种半导体连接起来的时候,它们之间就形成一个“P-N结”。
当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。
多个LED发光灯组成固定的字符或图形进行显示,即形成LED点阵图文显示屏。
其主要特征是只控制LED点阵中各发光器件的通断(发光或熄灭),而不控制LED的发光强弱。
LED点阵的汉字显示方式是先根据所需要的汉字提取汉字点阵(如16×16点阵),将点阵文件存入ROM,形成新的汉字编码;而在使用时则需要先根据新的汉字编码组成语句,再由MCU根据新编码提取相应的点阵进行汉字显示。
LED点阵显示具有如下特点:
(1)电压:
LED使用低压电源,供电电压在6-24V之间,根据产品不同而异,所以它是一种比使用高压电源更安全的电源。
(2)效能:
消耗能量比同光效的白炽灯减少80%。
(3)适用性:
每个单元LED小片是3-5mm的正方形,所以可以制备成各种形状的器件,并且适合于易变的环境。
(4)稳定性:
10万小时,光衰为初始的50%。
(5)响应时间:
其白炽灯的响应时间为毫秒级,LED灯的响应时间为纳秒级。
(6)对环境污染:
无有害金属汞。
(7)颜色:
改变电流可以变色,发光二极管方便地通过化学修饰方法,调整材料的能带结构和带隙,实现红黄绿兰橙多色发光。
由于LED的众多优势,在市场中得到了广泛的应用,主要应用领域有:
(1)、信号指示应用:
信号照明是LED单色光应用比较广泛也是比较早的一个领域,约占LED应用市场的4%左右。
(2)、显示应用:
指示牌、广告牌、大屏幕显示等,LED用于显示屏幕的应用约占LED应用的20%—25%,显示屏幕可分为单色和彩色。
(3)、照明应用:
便携灯具,汽车用灯,特殊照明。
由于LED尺寸小,便于动态的亮度和颜色控制,因此比较适合用于建筑装饰照明。
背光照明:
普通电子设备功能显示背光源、笔记本电脑背光源、大尺寸超大尺寸LCD显示器背光源等。
以及投影仪用RGB光源。
2.设计环境
本次设计采用了STARES598PCI实验仪,它提供了众多实用、新颖的接口实验,提供了一些模块的汇编例子程序、使用说明,可以满足单片机、微机原理课程的开放式实验教学,各种实时控制实验。
它布局合理,清晰明了,模块化设计,可以升级,兼容性
强,使用方便,易于维护。
3.设计要求
利用STARES598PCI试验仪设计一个点阵式LED显示系统。
具有滚屏显示功能,可以选择滚屏速度和方向。
具体设计、调试基本要求有:
(1)、通过8255和点阵LED显示屏显示“努力学习,振兴中华”滚动字样。
(2)、设定3种不同的滚动速度,分别由“1”、“2”、“3”键选择。
(3)、设定从右到左和从上到下的滚动方向,分别由“L”、“R”选择。
(4)、滚动速度要有明显差异,两种滚动方向上都可实现3种速度。
4.总体设计
根据设计要求,在16×16点阵LED上实现汉字的滚动显示,并结合STARES598PCI试验仪自带的关于8255,8155,16×16LED显示等例题程序,初步作出如下设计:
利用并行接口芯片8155和8255控制16×16点阵LED的行和列,以及控制速度方向的输入,8位开关手动控制速度和方向的改变,程序中查询开关变化的频率要足够高,使控制能在很短的时间内得到响应。
检测到方向改变后,直接退出当前显示程序,重新开始即可。
程序中需要预先填入要输出汉字的字模,由于需要改变方向输出,不同输出所需的字模也不一样,故需要多种字模。
LED点阵显示汉字的原理是:
每次只输出一行或一列,然后清空输出下一行或下一列,16行或列都输出之后才将字模移动一行或一列,重新按行列输出;每次变化的时间非常短,肉眼无法识别出来,以为显示的是整个汉字。
故控制显示速度的变化实际上就是控制每行或列输出后延迟的时间。
5.硬件设计
本次设计点阵LED显示需要的硬件模块有16×16点阵LED,可编程并行接口芯片8155,8255,8位开关等。
下面简要介绍相关芯片。
5.1.16×16点阵LED
图5.116×16点阵LED硬件电路图
JP23、JP24组成16根行扫描线;JP33、JP34组成16根列扫描线。
行扫描线是低电平有效,列扫描线是高电平有效。
实际连线的时候需注意,行线跟8255的PA口,PB口要高低位对应,不可接反。
而16×16点阵LED的两根列线编号跟点阵是相反的,故连线的时候两根列线要与8255的PC口,8155的PA口高低位反接。
5.2.可编程并行接口芯片8255
图5.28255硬件电路图
8255A可编程并行输入/输出接口芯片由Intel公司生产的外围接口电路。
它采用NMOS工艺制造,用单一的正5伏电源,具有40引脚,采用双列直插式封装。
它有A、B、C三个端口,24条I/O线,可以通过编程的方法来设定各种I/O功能。
从功能上讲,8255A的内部三个八位的锁存器和一个八位的控制寄存器组成。
分别为A、B、C口,其中C口的高四位与低四位可分开使用,也可以按位操作。
芯片片选信号有效时,通过A0A1来对内部寄存器寻址。
CPU能过向控制寄存器写入控制器,可以管理三个端口的工作。
8255A有三种工作方式:
分别称为方式0、方式1、方式2。
工作方式0是一种基本的输入/输出工作方式,各端口视为彼此独立的端口;工作方式1是一种选通式输入/输出工作方式,可用来实现CPU与外设间的查询传送或中断传送;工作方式2只限于A口采用,这种方式下,端口A成为双向传输的端口。
5.3.可编程并行接口芯片8155
图5.38155硬件电路图
图5.38155硬件电路图
8155采用40脚双列直插式封装,单一+5v电源。
RESET:
复位信号线,高电平有效,在该输入端加一脉冲宽度为600ns的高电平信号,就可使8155可靠复位,复位时三个输入/输出口预置为输入方式。
CE:
片选端,8155为低电平有效,8156为高电平有效,当8155上加上一个低电平时,芯片被选中,可以与单片机交换信息。
AD0~AD7:
三态地址/数据总线,在ALE的下降沿把8位地址锁存于内部地址锁存器,地址可代RAM或输入/输出用,由IO/M信号的极性而定,8位数据的流向取决于RD或WR信号的状态。
PA0~PA7:
输入/输出口A的信号线,通用8位输入/输出口,输入/输出的方向通过对命令/状态寄存器的编程来选择。
PB0~PB7:
输入/输出口B的信号线,通用8位输入/输出口,输入/输出的方向通过对命令/状态寄存器的编程来选择。
PC0~PC5:
输入/输出口C的信号线,6位可编程输入/输出口,也可用作A和B口的控制信号线,通过对命令/状态寄存器编程来选择。
5.4.总体电路构架
图5.4总体电路连接图
由于16×16LED的行列线分别为16根,而8155和8255的PA,PB,PC口均为8位;因此用8255的PA口控制16×16LED上面8行,PB口控制16×16LED下面8行,PC口控制16×16LED左边8列,用8155的PA口控制16×16LED右边8列。
8155的PB口用于输入,接收按键的改变。
8155的PB口可接收8位输入,所以可以对设计进行简单的扩展,4位用于检测方向,4位用于检测速度。
这样可以实现4个方向上4种速度的改变。
注意试验仪上的8位开关往下才是高电平,8位开关的左四位用于滚动方向的控制,分别是:
1(从右往左滚动),2(从左往右滚动),3(从下往上滚动),4(从上往下滚动)。
同时只允许一位开关向下。
8位开关的右四位用于滚动速度的控制,分别是:
5(非常慢),6(慢),7(快),8(非常快)。
同时也只允许一位开关向下。
其他8255的片选端CS,A0,A1分别接A3区CS1,A0,A1。
8155的片选端CS,IO/M分别接A3区CS2,A8。
6.软件设计
本次设计采用的语言为汇编语言,大量使用了模块化程序。
所有功能都是通过调用子程序实现,使得整个程序层次有序,结构清晰,易于维护。
完整程序见附录。
6.1.主程序流程
图6.1主程序流程图
主程序初始化8155和8255之后,需要测试LED,就是点亮所有LED并维持一段时间,检测有没有坏掉的灯管;然后熄灭所有LED灯。
为提高程序运行速度,主程序只负责判断方向,忽略具体的显示过程。
按照显示方向的不同分为4个子程序,改变方向或者汉字显示完毕之后退出重新比较。
6.2.显示子程序流程
不同方向的显示子程序是相似的,但是为了避免比较显示方向,提高运行速度,用4个不同方向的显示子程序实现;每个显示子程序又再次调用自己重复显示的子程序。
这个显示子程序中并没有实际的显示程序,它的功能是控制显示汉字的数量和提供显示点阵字模的首地址。
字模首地址每次改变两个字节,可以显示出不同汉字的不同部分,连续变化即可产生滚动效果。
6.3.重复显示流程
此程序的子程序才是真正用于显示点阵汉字的程序部分,被重复调用8次。
为什么要重复调用显示子程序呢?
因为前面说过,点阵LED显示汉字的方法是每次显示一行或一列,然后清空显示下一行或下一列,循环16次后整个点阵都显示出汉字的不同部分。
由于显示变换非常快,肉眼分辨不出,给人整个点阵显示出整个汉字的错觉。
但是由于显示每一行或列显示的时间非常短,不同行或列显示的时间又不相同,只显示一次的话汉字会变化非常快,同时又给人不断闪烁的感觉,无法看清汉字,重复显
示几次则可比较好的解决这个问题。
同时,此程序还有根据方向变化不再继续执行,也不返回上一级程序,直接跳回主程序重新开始的功能;可以加快方向改变后的响应速度。
图6.3重复显示流程图
6.4.横/纵向显示流程
这才是真正控制LED点阵显示汉字的主要程序。
横向显示和纵向显示的流程是一样的,但是具体实现方法又不一样,所以是由两个独立的程序分别完成横向显示和纵向显示功能。
无论是横向显示还是纵向显示,控制LED的顺序都是上面8行,下面8行,左边8列,右边8列;然后改变字模地址,循环移位输出下一行或下一列。
不同之处在于横向显示的字模不是从上往下计算出来的,这样每次字模的改变就不能自加两个字节。
见下表:
表6.4横向显示字模顺序表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
实际在LED点阵显示时,每次滚动消失的是上面和下面的最左列,如第一次消失1和17,第二次消失2和18….这样读取字模的时候需要分别控制上面8行在字模和下面8行的字模。
在整个16列都输出一遍后,返回之前调用按键测试子程序,测试有没有速度和方向的改变。
这样在返回之后可以直接对方向改变做出响应,在下次进入这个程序时,也
可以对速度变化作出响应。
6.5.按键测试流程
按键测试子程序在每次控制点阵LED显示汉字时都会被调用,频率很高,可以较快的测试出按键的变化。
按键测试分为方向测试和速度测试两部分,每部分可以测试4个按键的值,但同时只能有一个按键变化,多个按键被认为是错误而忽略。
为加快测试速度,方向测试和速度测试之前会先测试有没有按键被按下,如果没有直接跳过4次测试。
图6.5按键测试流程图
6.6.延时流程
延时调用在每行或每列显示并清空之后都会调用,根据延时的不同形成不同的滚动速度。
程序中并没有实际的延时程序,真正造成延时的程序是不同数量的循环,作为这个程序的子程序在程序中被调用。
为防止出现速度错误无法延迟的情况的发生,在4钟速度都被否定之后,默认会调
用一档延迟。
图6.6延时流程图
7.系统测试
按照设计思路完成软硬件设计并连好线路,编写程序代码之后,运行程序并测试效果。
开始时LED点阵需按照默认值显示汉字并滚动,通过控制按键开关,滚动速度和方向需即时做出改变。
8.总结
通过两周的实习,对LED点阵显示的原理和方法有了很深刻的认识。
例题中LED
点阵显示的硬件并不复杂,线路连接也不多,程序相对比较长,特别是模块化思想运用得相当多,一层套一层的子程序,需要很长的时间才完全看懂。
在此基础上我添加了按键测试,延时比较等模块,并在显示时加上比较语句,基本可以实现不同方向和不同速度的显示。
但是大量的比较语句影响了程序运行的速度,也不符合程序模块化的思想。
所以我放弃了原来的程序,遵照源程序模块化的思想重新编写。
整个程序都是为了提高运行速度而生成的,4个方向的显示子程序以及下面嵌套的子程序各自独立开来,虽然有许多重复的代码,但是避免了不必要的比较。
另外,为了提高方向改变后的响应速度,在每次显示完整个点阵之后,都会查询方向是否改变,如果改变,直接清空堆栈,重新输出。
避免了从子程序返回,堆栈一个个弹出耗费的时间。
最终显示的效果还是比较满意的,响应速度也比较快。
这次实习我不仅对LED点阵显示,对接口课程设计,对汇编语言有了更加深入的了解,也树立了我编写较为复杂代码的层次化和模块化思想,受益良多,收获颇丰。
致谢
感谢蒲攀老师,在我按键测试没有效果的时候,花费数小时跟我一起检查程序,检查按键电路;最后证明是按键电压过低无法驱动,改用8位开关解决。
感谢张志勇老师,在我代码出现错误时给我分析原因;虽然张志勇老师没有汇编语言的经验,但是他用程序的思想跟我一步一步分析问题,找出错误的源头,最后将跳转模块改为子程序解决。
感谢孟凡驰同学,在我忘记一些汇编语言时,不厌其烦的给我讲。
参考文献
[1]狄恒山等编著《微机原理与接口》中国水利水电出版社2005
[2]沈美明,温冬婵编著《IBM-PC汇编语言程序设计(第2版)》清华大学出版社2007
[3]《STARE8688使用说明》星研电子2009
附录
;16×16点阵LED显示源程序
.MODELTINY
ADDR_8255_PAEQU0F000H;8255PA口
ADDR_8255_PBEQU0F001H;8255PB口
ADDR_8255_PCEQU0F002H;8255PC口
ADDR_8255_CEQU0F003H;8255控制口
ADDR_8155_PAEQU0E101H;8155PA口
ADDR_8155_PBEQU0E102H;8155PB口
ADDR_8155_CEQU0E100H;8155控制口
LINE1EQUADDR_8255_PA;行线1
LINE2EQUADDR_8255_PB;行线2
ROW1EQUADDR_8255_PC;列线1
ROW2EQUADDR_8155_PA;列线2
.STACK100
;------------------------------------------------------------
.DATA
NUMDW11;汉字数量
SPEEDDB4
;显示速度(1,2,3,4,越来越快)
WAYDB5
;显示方向(5从右到左,6从左到右,7从下到上,8从上到下)
;从下到上的字模
UP_TOUDB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H;空白
DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB010H,000H,010H,0FCH,07EH,044H,022H,044H,022H,028H,014H,010H,00CH,028H,032H,046H;努
DB0C1H,000H,03FH,0F8H,001H,008H,002H,008H,002H,008H,004H,008H,008H,028H,010H,010H
DB001H,000H,001H,000H,001H,000H,001H,000H,07FH,0FCH,001H,004H,001H,004H,001H,004H;力
DB001H,004H,002H,004H,002H,004H,004H,004H,004H,004H,008H,004H,010H,028H,020H,010H
DB001H,008H,010H,08CH,00CH,0C8H,008H,090H,07FH,0FEH,040H,004H,08FH,0E8H,000H,040H;学
DB000H,080H,07FH,0FEH,000H,080H,000H,080H,000H,080H,000H,080H,002H,080H,001H,000H
DB000H,000H,03FH,0FCH,000H,004H,008H,004H,004H,004H,003H,004H,001H,014H,000H,064H;习
DB001H,084H,006H,004H,038H,004H,010H,004H,000H,004H,000H,024H,000H,014H,000H,008H
DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H;,
DB
000H,000H,000H,000H,000H,000H,030H,000H,030H,000H,010H,000H,020H,000H,000H,000H
DB010H,000H,013H,0FEH,012H,000H,0FEH,000H,012H,0FCH,016H,000H,01BH,0FEH,012H,0C0H;振
DB032H,0A4H,0D2H,0A6H,012H,098H,012H,088H,014H,088H,014H,0A6H,058H,0C4H,020H,080H
DB000H,000H,044H,008H,022H,00CH,033H,008H,019H,098H,011H,010H,000H,020H,07FH,0FEH;兴
DB000H,000H,008H,040H,00CH,020H,018H,010H,030H,018H,040H,00CH,080H,008H,000H,000H
DB001H,000H,001H,000H,021H,008H,03FH,0FCH,021H,008H,021H,008H,021H,008H,021H,008H;中
DB021H,008H,03FH,0F8H,021H,008H,001H,000H,001H,000H,001H,000H,001H,000H,001H,000H
DB008H,080H,00CH,088H,010H,09CH,030H,0E0H,053H,080H,090H,084H,010H,084H,010H,07CH;华
DB011H,000H,001H,000H,07FH,0FEH,001H,000H,001H,000H,001H,000H,001H,000H,001H,000H
DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H;空白
DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
;从上到下的字模
DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H;空白
DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,00
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 接口 程序设计 16 X16 点阵 LED 显示