基于单片机的单色LED点阵系统毕业设计.doc_第1页
基于单片机的单色LED点阵系统毕业设计.doc_第2页
基于单片机的单色LED点阵系统毕业设计.doc_第3页
基于单片机的单色LED点阵系统毕业设计.doc_第4页
基于单片机的单色LED点阵系统毕业设计.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

河南机电高等专科学校毕业设计论文基于单片机的单色LED点阵系统毕业设计第1章 概述1.1 单片微型计算机简介随着大规模集成电路技术的发展可以将中央处理器(CPU)、存储器(ROM、RAM)、I/O接口电路、定时器/计数器等,制作在一块集成电路芯片中,这样所组成的芯片级的微型计算机称为单片微型计算机(Single Chip Mirco-computer),直译为单片微机或单片机。由于单片机从功能和形态来说都是为满足控制领域应用的要求,在过程控制、智能仪表、机电一体化和家用电器等领域中发挥着重要的控制作用。因此,单片机也称微控制器(Micro-Controller),或称为嵌入式微控制器的(Embedded-Microcontroller)。单片机自问世以来,应用日趋广泛,性能不断提高和完善,能在很多使用场台取代现有的多片微处理机系统,而其性能价格比更为优越,体积、重量大为减小。尤其是MCS-51系列尤为智能仪表和控制器中的理想部件.单片机的潜在能力也越来越为人们所注意用CMOS工艺制成的各型单片机由于功耗低,使用温度范围大,能满足一些特殊的应用要求。正因为单片机具有一系列的优越条件,目前国内外单片机的应用正在飞速发展。1.1.1 单片机的特点(1)集成度高、功能强与微型计算机进行比较,单片机不仅体积大大减小,而且功能大为增强。MCS-51系列单片机内的定时/计数器为16位,而Z80微型计算机只有8位:MCS-51系列单片机中不但有4个并行I/O接口,而且还有串行接口,且时钟频率可达12Mz。(2)结构合理目前单片机大多采用哈佛(Harvard)结构。即是数据存储器与程序存储器相互独立的一种结构。采用16位地址总线的8位单片机可寻址外部64KBRAM和64KBROM。此外还有内部RAM和内部ROM。(3)抗干扰性强由于单片机的各种功能部件都集成在一个芯片上,特别是存储器也集成在芯片内部,布线短,数据大都在芯片内部传送,不易受到外部的干扰,增强了抗干扰能力,使系统运行更可靠。(4)指令丰富单片机一般都有传送指令,逻辑运算指令,转移指令,加、减法运算指令等,有些单片机还具有乘法及除法运算指令,特别是位操作指令十分丰富。因而单片机能在逻辑控制、开关量控制以及顺序控制中得以广泛应用。1.1.2 单片机的起源及发展过程与趋势自从1974年12月美国仙童(Fairchild)公司第一个推出8位单片机F8以来以惊人的速度发展:从最初的1位机,4位机阶段发展到低、中档8位机阶段(19761978年,此阶段8位机一股不带有I/O接口,寻址范围通常为4K代表作如Intel公司的MCS48系列单片机,Mostek公司的3870);再到高档8位机阶段(19781982年这一类单片机常有串行I/O接口,有多级中断处理,定时/计数器为16位,片内的RAM和ROM的容量相对增大,且寻址范围可达64KB,有的片内还带有A/D转换接口。其代表作有Intel公司的MCS-51、Motorola公司的6801和Zilog公司的Z8);到现在的16位单片机和超8位单片机阶段(此阶段的主要特征是,一方面不断完善高档8位机,改善其结构,以满足不同用户的需要;另一方面发展16位单片机及专用单片机。16位单片机除了CPU为16位外,片内RAM和ROM的容量也进一步增大,片内RAM为232字节,ROM为8KB,片内带有高速输入输出部件,多通道10位A/D转换部件,中断处理为8级,其实时处理能力更强)集成度越来越高,功能越来越强。随着技术的发展,单片机的发展趋势将是:向着大容量、高性能化,小容量、低价格化和外围电路内装化等几个方面发展。1.1.3 单片机的应用单片机的应用,打破了人们的传统设计思想,原来很多用模拟电路、脉冲数字电路、逻辑部件来实现的功能,现在无需增加硬件设备,可通过软件来完成。由于单片机集成度高、功能强、可靠性高、体积小、功耗低、使用方便、价格低廉等一系列优点,目前己渗入到人们工作和生活的各个角落,几乎“是无处不在,无所不为”。(1)工业过程控制中的应用由于单片机的I/O接口线多,位操作指令丰富,逻辑操作功能强,因此,特别适用于工业过程控制。 (2)生活中的应用由丁单片机价格低廉、体积小、逻辑判断及控制功能强,因此广泛地应用于人类生活的各个方面。如:洗衣机、电冰箱、电子玩具、立体声音响、家用防盗系统等。(3)智能仪表中的应用单片机广泛地应用于各种仪器仪表中,使仪器仪表智能化,提高测试的自动化程度和精度,简化其硬件结构,提高其性能价格比。(4)计算机网络及通信技术中的应用单片机中集成了通信接口,因而使其在计算机网络及通信设备中得以广泛应用。1.2 LED电子显示屏概述1.2.1 显示技术简介显示技术是一种反映外界客观事物的信息(光学的、电学的、声学的、化学的等),经过变换处理,以适当的形式(主要有图像、图形、数码、字符)加以显示,供人观看、分析、利用的一种技术。现在所谓的显示技术,可以称作电子信息显示技术,它是建立在光学、化学、电子学、机械学、声学、信息学、网络技术、计算机等科学技术基础上的具有某种程度综合性的技术。随着科学技术、经济、政治、军事、社会的发展 ,信息的种类和数量不断增加。人们生活在信息社会中,每时每刻都在获得信息。研究表明,人获得的信息中有近2/3是通过眼睛的。而显示技术,正是为人们提供各种各样重要信息的一个窗口 ,可以想象,显示技术有极其广阔的发展天地。现在显示技术的应用已经十分广泛,在体育场馆,大屏幕显示系统可以显示比赛实况以及比赛成绩、时间等;在交通运输行业,可以显示运行情况;在金融行业,可以实时显示金融信息,如股票、汇率等;在商业邮电系统,可以向广大顾客显示通知、消息、广告等等。显示技术还可以广泛应用于工农业生产、军事、医疗单位、公安系统乃至宇航事业等国民经济,社会生活和军事领域中,并起着重要作用1.2.2 LED的简介和显示应用1923年,罗塞夫(Lossen.o.w)发现了半导体炭化硅(Sic)PN结的整流与发光现象,研究出发光二极管(Light Emitting Diode)此后,对注入形发光现象、机理和化合物半导体如GaP、GaAs等半导体发光材料与PN结形成技术进行了深入研究,特别是80年代以来随着社会高度信息化进程加快,光通讯、光信息处理急速发展,使LED应用研究迅速发展并走上了实用化阶段。近年来,由于半导体的制作和加工工艺逐步成熟和完善,发光二极管已日趋在固体显示中占主导地位。 LED之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。这些优点概括起来是:亮度高、工作电压低、功耗小、小型化而易与集成电路匹配、驱动简单、寿命长、耐冲击和性能稳定。LED主要有以下几种应用:(1)单色LED照明做指示灯做指示灯与局部照明是LED最早的应用。目前在家用电器、音像装置、汽车、飞机仪表板及许多其他仪器仪表上,LED越来越多地被用作照明灯和指示灯。(2)LED的字符与数字显示在一块基片上做多个LED或将多个LED芯片组装成数字、字母、符号、或简单的图形,可以用于电子手表、仪器数字串、交通指挥牌、机场车站内信息牌等,其中最用的最多就是7段LED数码管显示器。(3)LED显示屏的字符与数字显示将单色和彩色LED排列成矩阵板可做大型字符与图形显示。可用于显示文字、文本、图形、图像、动画、行情等各种信息。由于其亮度高,显示内容多样,故障少,能耗低,使用寿命长,性能价格比高等优点,被广泛应用在银行、证券、电信、车站、机场、码头、海关、体育场馆以及在室外做告示牌和广告牌。LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性、可靠性、全色化方向发展。1.2.3 LED电子显示屏简介传统的LED数码管只能显示09的数字,用途仅限于数字显示,不能显示汉字及各种复杂的图像,若将许多发光二极管按照点阵(行、列)形式排列起来,显示方式就非常灵活,显示功能亦大大增强。但是若用分立的发光二极管构成大屏幕显示屏,就需要成千上万只LED,其接线和焊接工作将不胜其繁,而且显示屏的可靠性较差,近年来,随着LED点阵显示屏的问世,上述问题可迎刃而解。LED点阵显示器亦称LED矩阵板或LED阵列是以发光二极管作为基本发光单元像素(亦称像元),再按行与列的顺序排列而成的显示器件。它具有发光亮度高、参数一致性好、可靠性高、接线简单、拼装方便等优点,能构成各种尺寸的大屏幕显示屏。因此,它被广泛用于由计算机控制的大型LED智能显示屏、智能仪器和机电一体化设备中,利用先进的智能显示技术来取代传统的数显技术。LED显示屏以其亮度高、动态影像显示效果好、故障低、能耗少、使用寿命长、显示内容多样、显示方式丰富、性能价格比高等优势,作为新一代的显示媒体,已广泛应用于各行各业。在短短的十来年中,迅速成长为平板显示的主流产品,在信息显示领域得到了广泛的应用。现代信息社会中,作为人一机信息视觉传播媒体的显示产品和技术得到迅速发展,进入二十一世纪的显示技术将是平板显示的时代,LED显示屏作为平板显示的主导产品之一无疑会有更大的发展,并有可能成为二十一世纪平板显示的代表性主流产品。目前其正朝着高亮度、全彩化、标准化、规范化、产品结构多样化发展。第2章 硬件的分析本系统利用实验室现有的DICE-5103H增强型单片机开发实验仪及所带扩展实验卡MC1( LED16*16点阵块显示实验板)来实现对LED点阵显示的分析研究。DICE-5103H与MC1扩展板接线如图3.1所示,用扁平电缆连接Z1座(MC1板)到CZ7座(主板扩展接口),J1座(MC1板)到JX9座(主板PA口),采用并行口进行控制,显示方式为逐列扫描。H774077407740774075369835626734333231302928275968132412345678123456781210131142314321403938371819202122232425141516171312111012345678910111213141516171819201234567891011121314151617181920VCCD 0D 1D 2D 3D 4D 5D 6D 7 R DW RA 0A 1RESETC SVCCGND P B 0P B 1P B 2P B 3P B 4P B 5P B 6P B 7 P C 0P C 1P C 2P C 3P C 4P C 5P C 6P C 7 P A 0P A 1P A 2P A 3P A 4P A 5P A 6P A 7 V C C8000HD 0D 1D 2D 3D 4D 5D 6D 7A L EW RR DA 2A 1A 0R S TT X DR X D9000H P A 7P A 6P A 5P A 4P A 3P A 3P A1P A 0R:470*16LED 16167407740774077407图2-1 MC1与DICE-5103H接线及其内部接线图L0L7L7L0H0H7J 18 P I NJX 98 P I NZ 120 P I NCZ 720 P I NU 1 8255A现分析各模块和芯片功能及彼此连接2.1 1616点阵显示部分LED点阵显示屏结构模块化,整屏尺寸可以根据实际需要进行调整。不论多大的LED显示屏都是由多个小的点阵显示模块拼接而成。本设计中所用的1616点阵显示部分由4块88点阵拼接而成。显示方法采用列扫描。每个88点阵模块的外观与尺寸如图2-2所示图2-2 88点阵模块外观其内部LED接线采用行共阳、列共阴的编排方式如下图(图2-3)所示在外部图中COL(共阳极)接收行数据,ROW(共阴极)接收列数据,当行信号(阳极)为“1”,列信号(阴极)为“0”时,对应当LED灯亮。图2-3 88点阵电路板4块88点阵模块接法如下图(图2-4)具体为:1与2的行信号接口接在一起用于显示字形的下半部分;3与4的行信号接口接在一起用于显示字形的上半部分;1与4列信号接口接在一起作为列扫描1;2与3列信号接口接在一起作为列扫描2。由此构成1块1616点阵显示屏1432图2-4 4块88点阵模块拼接图字形行代码1由MC1上的8255的PC口输出到1616点阵显示屏的上半部,字形行代码2则由主板的8255PA口输出到1616点阵的下半部,列扫描信号1由MC1上的8255的PA口送到1616点阵作为点阵左半边扫描信号,列扫描信号2由MC1上的8255的PB口送到1616点阵作为点阵右半边扫描信号。2.2 8255A作为数据输出部分本系统中有两块8255A芯片一块在DICE-5103H实验仪主板上自带,另一块在MC1扩展板上,下面对8255A的功能做一番简介,并说明其在本设计中的作用。2.2.1 8255A功能介绍8255A为Intel公司生产,是一块可编程通用并行接口芯片。所谓可编程,实际上就是具有可选择性。例如,选择芯片中的哪一个或哪几个数据端口与外设连接;选择端口中的哪一位或哪几位作输入,哪一位或哪几位作输出;选择端口与CPU之间采用哪种方式传送数据等,均可由用户在程序中写入方式字或控制字来进行指定。因此它们具有广泛的适应性及很高的灵活性,在微机、单片系统中得到广泛应用。8255A就是这样一种可以进行编程的芯片,它有三个8位并行接口,分别是PA口、PB口和PC口,其中PC口又分为高4位口(PC7PC4)和低4位口(PC3PC0),他们都可以通过软件编程来改变I/O口的工作方式。8255A引脚如图3.1所示:(1)PA0PA7为PA口,PB0PB7为PB口,PC0PC7为PC口,每个端口都有一个数据输入寄存器和一个数据输出寄存器,输入时有端口有三态缓冲器的功能,输出时端口有数据锁存器功能。(2)DOD7它是 8255A与CPU系统数据总线的接口。所有的数据的发送与接收,以及CPU发出的控制字和从8255A来的状态信息都是通过该接口传送。(3):片选信号,低电平有效,A1,A0为内部端口地址选择信号,一般与系统地址总线低位相连,、为8255A的读写控制信号,这些线与MCS-51的地址线和读写信号线相连接,实现CPU对8255A口选择和数据传送。CPU对8255A口、B口、C口和控制口的寻址如表2-1所示表2-1 8255A端口选择表A1A0操作001010000111000输入操作(读)端口A数据总线端口B数据总线端口C数据总线00110101111100000000输出操作(写)数据总线端口A数据总线端口B数据总线端口C数据总线控制寄存器110111100断开功能数据总线为三态非法状态数据总线为三态(4)RESET为复位控制信号,复位时,它把控制寄存器清零和置所有端口(PA、PB、PC)为输入方式。8255A有3种基本工作方式:方式0基本输入输出;方式1选通输入输出;方式2双向传送(仅PA口)。8255A的工作方式控制字:8255A的工作方式,它由CPU发送出一个控制字到8255A的控制字寄存器来选择。这个控制字的格式如表3-2所示,它用于选择端口A和端口B的工作方式,而端口C分成两部分,上半部分随端口A,下半部随端口B。并指定三个端口是作输出还是输入口。表2-2 8255A控制字1D6D5D4D3D2D1D0特征位A组方式A口C7C4B组方式B口C3C000=方式00输出0输出0方式00输出0输出01方式11输入1输入1方式11输入1输入10方式22.2.2 8255A在本系统中的接线与作用在本设计系统中,主板上的8255A作为CPU的扩展并行I/O接口连线出厂时是固化好,其片选信号与CPU的地址总线经过I/O地址译码器产生的信号相连,A1、A0与地址总线地位相连,、与CPU读写信号相连,DOD7与数据总线相连;A口与点阵显示屏下半边行信号接口相连。而扩展板MC1上的8255A与CPU连接见图3.1,其通过Z1座用扁平电缆连接到到主板扩展接口CZ7座,其片选信号与CPU扩展总线8000H信号相连,A1、A0与地址总线地位A1、A0相连,与CPU读写信号相连,DOD7与数据总线相连;A口与显示屏左半边列信号接口相连,B口与显示屏右半边列信号接口相连,C口与显示屏上半边行信号接口相连。其各自的扩展名称、端口地址及用途如表2-3表2-3 两片8255A的I/O地址分配及用途扩展名称口地址用途XPA8000H列扫描1XPB8001H列扫描2XPC8002H行代码1XPCTL8003H8255AMC1控制口PA0FF28H行代码2PCTL0FF2B8255A主板控制口在本系统中,根据设计需要,两块8255A的工作方式都应为方式0,即选用基本输入输出工作方式,主板上的8255A的A口作为输出口,而扩展板上8255A 的A口、B口、C口均作为输出口。因此,根据表3-2所示的控制字格式,两块8255A的工作方式字都应为10000000即80H。其中PA(主板8255A的A口)与1616点阵显示屏的下半边行信号接口相连,字型行代码2通过PA口输出到显示屏下半边;XPC(MC1上8255A的C口)与1616点阵显示屏的上半边行信号接口相连,字型行代码1通过XPC口输出到显示屏上半边;XPA(MC1上8255A的A口)与1616点阵显示屏的左半边列信号接口相连,列扫描信号1通过XPA口输出到显示屏作为字型左半边的扫描信号。XPB(MC1上8255A的B口)与1616点阵显示屏的右半边列信号接口相连,列扫描信号2通过XPB口输出到显示屏作为字型右半边的扫描信号。有关行代码与列扫描的具体说明分析,将后面说明。第3章 字库的剖析与建立所谓字库,即将要在LED点阵显示屏上显示的汉字根据一定编码规则把它转换为16进制编码放在单片机扩展存储器中,当要显示该汉字时,单片机执行程序将要显示的汉字编码送到硬件电路上通过点阵显示屏上显示,根据LED点阵显示方式的不同,字库有不同建立方法。在本系统中,因在本系统中采用逐列扫描的方法显示内容,所以,下面以“集”字为说明本系统中字库的建立规则。如图3-1所示,在16X16点阵显示屏上“集”被分为1616(256)个小格子,每个格子代表一个LED灯,其中黑色的格子表示对应的LED灯亮(对应汉字编码中该位为1),白色的格子表示对应的LED灯灭(对应汉字编码中该位为0),这样由这256LED灯亮、灭的组合在显示屏上显现出汉字“集”字。本系统中字库具体编写方法为:先把一个“集”字按如图3-1分为16行, 16列,对应第一列,照着从上到下位顺序写编码,其中黑点(表示灯亮)写为“1”,白点(表示灯灭)写为“0”(应先下半部分,再写上半部,因为在程序中指定送编码的顺序为先送下一半,再送上一半)。然后再写第二列的编码。L0L7L8L15H0H7H8H155先写下半边再写下半边从左到右写第二列编码黑点为“1”白点为“0”图 3-1按照这种方式是“集”字的字库编码应为:第1列:下半边00000000B=00H,上半边00000000B=00H;第2列:下半边00100010B=22H,上半边00001000B=08H;第3列:下半边00100010B=22H,上半边00010000B=10H;第4列:下半边10100100B=A4H,上半边00111111B=3FH;第5列:下半边10100100B=A4H,上半边11101010B=EAH;第6列:下半边10101000B=A8H,上半边00101010B=2AH;第7列:下半边10110000B=B0H,上半边00101010B=2AH;第8列:下半边11111111B=FFH,上半边00101010B=2AH;第9列:下半边10100000B=A0H,上半边10111111B=BFH;第10列:下半边10110000B=B0H,上半边01101010B=6AH;第11列:下半边10101000B=A8H,上半边00101010B=2AH;第12列:下半边10100100B=A4H,上半边00101010B=2AH;第13列:下半边10100110B=A6H,上半边00101010B=2AH;第14列:下半边10100100B=A4H,上半边00000000B=00H;第15列:下半边00100000B=20H,上半边00000000B=00H;第16列:下半边00000000B=00H,上半边00000000B=00H。汉字下半边的编码由1616LED点阵显示屏下半边的行信号口输入,所以称为行代码1,汉字上半边的编码由1616LED点阵显示屏下半边的行信号口输入,所以称为行代码2;转换后的编码依次放在单片机的存储器中,这样一个汉字在存储器中占用16232个存储单元,将要显示的汉字内容按照要显示的先后顺序,依次放在存储器中,即构成要显示的字库。本系统自建了一个的字库,包含了10个汉字,这10个汉字分别是“河南机电高等专科学校”,字库内容根据需要可以进行增加扩充。第4章 系统的软件设计4.1 所用寄存器、存储单元、辅助子程序说明首先说明软件程序中,所使用的各寄存器、存储单元、辅助子程序及它们的作用:寄存器:R1,R0:合起来作为取字库用的16位地址指针;R2: 由存储单元35H与存储单元34H相减得到,表示的是显示内容的长度,程序中当R2内容为0时,表示开始要开始显示最后一个字,程序转到DISP3显示最后一个字;R3: 显示内容显示速度并起稳定画面的作用;R4: 判断一个字是否全部左移显示完毕;R5: 列扫描信号; R7,R6:列扫描端口地址,R7=#80H,R6=#00H时表示XPA的端口地址,R7=#80H,R6=#00H时表示XPB的端口地址。存储单元:31H,30H: 合起来作为第二个16地址指针,在左移显示最后一字时,因第一个字要同步左移进到屏幕中,而地址指针仍在使用,固用31H,30H来作为第二个地址指针;34H: 表示显示内容第一个字的在整个字库(28个字)的中位置;35H: 表示显示内容最后一个字的在整个字库(28个字)的中位置;38H,37H:要显示的最后一个字最后一列的地址指针;39H: 显示速度(时间常数),;3BH,3AH: 要显示的第一个字第一列的地址指针。辅助子程序:AD: TAB+R1,R0DPTR; POINT:R1,R0+1R1,R0; AD2: TAB+31H,30HDPTR; POINT2:31H,30H+131H,30H; CHF1: 计算显示的最后一个字最后一列的地址指针4.2 程序流程图 图4-1图4-2 图 43 程序设计本系统采用8255A可编程并行接口芯片对LED点阵显示屏进行控制,汉字编码数据及列扫描信号数据由8255A并行口(A、B、C)输出到显示屏。 本系统自建了一个字库,内容是“河南机电高等专科学校”10个字,字库可进行扩展,在本系统中可以实现,在这10个字中动态(左移)循环显示从第m个字开始到n个字结束。m与n都可以根据用户要求自行设定。同时用户还可设定显示速度。程序的大致流程如下:431 定义端口名称、地址与显示内容长度、速度的设定ORG 2D00HXPAEQU8000HXPBEQU8001HPAEQU0FF28HXPC EQU8002HXPCTLEQU8003HPCTLEQU0FF2BHLENG1:DB01HLENG2:DB1CHSPD:DB03H程序一开始,先定义各端口名称和地址,下表(表4-1)及显示内容的显示速度(SPD),和显示内容首(LENG1)、尾(LENG2)(即设定要显示的第一个字在字库中的位置和要显示的最后一个字在字库中的位置)。例如:要改变显示内容长度(系统默认显示全部内容)若要改成从“机”开始显示到“科”字结束,“机”字在字库里是第3个字,“校”字在字库里是第8个字,则指令改为为:LENG1DB 03HLENG2 DB 08H 因此,在此即可对显示内容速度与长度进行设定(控制);表4-1 I/O地址名称与用途扩展名称口地址用途XPA8000H列扫描1XPB8001H列扫描2XPC8002H行代码1XPCTL8003H8255AMC1控制口PA0FF28H行代码2PCTL0FF2B8255A主板控制口432 初始化8255A定义好端口地址名称后,要对硬件进行初始化,给两片8255A送控制字,指定其工作方式,由前面第三章分析所得,两片8255A均采用工作方式0,三个端口都是输出口,其控制字为80H,将80H送到两片8255A的控制口,完成对硬件的初始化;MOVDPTR,#XPCTLMOVA,#80HMOVXDPTR,AMOVDPTR,#PCTLMOVXDPTR,A433 显示内容长度、速度放入存储单元 这样做的目的是,为了方便后面程序对速度、长度的提取。将显示速度(SPD)放入39H存储单元,LENG1(要显示的第一个字在字库中的位置)放入34H存储单元,LENG2(要显示的最后一个字在字库中的位置)放入35H存储单元;并由35H单元内容减34H单元内容得到显示内容的长度,结果放入R2;L3: MOVDPTR,#SPDMOVA,#00HMOVCA,A+DPTRMOV39H,AMOVDPTR,#LENG1MOVA,#00HMOVCA,A+DPTRMOV34H,AMOVDPTR,#LENG2MOVA,#00HMOVCA,A+DPTRMOV35H,ACLR CMOVA,35HSUBBA,34HMOVR2,A434第一个要显示的字的起始地址指针放入存这是解决可以选择从任意一个字开始显示的关键,即计算出要显示的第一个字的第一列编码的地址指针,结果放入3BH,3A存储单元。因为一个字在字库中占用32个字节的存储单元,所以将34H内容(要显示的第一个字在字库中的位置)放入累加器A中,减一后放入DPTR,左移五位(即乘上32)可得第一列编码的地址指针,例如,从 “机”开始显示,“机”字在字库里是第3个字,则将(31)32640040H,放入3BH,3AH存储单元; CLRCMOV36H,#05HMOVDPH,#00HMOVA,34HDECAMOVDPL,AC2:CLRCMOVA,DPLRLCAMOVDPL,AMOVA,DPHRLCAMOVDPH,ADJNZ36H,C2MOV3AH,DPLMOV3BH,DPH435 初始化地址指针R1,R0将3BH,3AH内容放入地址指针R1,R0,即给地址指针R1,R0初始值;MOVR0,3AHMOVR1,3BH436 每字左移完毕判断标志放入寄存器#10H送入R4,作用是判断一个字是否左移16列完毕;L2:MOVR4,#10H437 显示速度放入寄存器39H内容放入R3,做为延时显示的参数。L1:MOVR3,39H438 地址指针进栈保护将R1,R0地址指针进栈保护L4:PUSH00HPUSH01H;然后调用子程序DISP1,子程序DISP1的作用是在显示屏上显示出汉字。这是本系统中一个重要环节,下面详细说明如何把放在字库中的汉字编码去出来,并在显示屏上显示出内容。439 在显示屏上显示出字要在一个显示器(屏)上显示一个汉字、字符或图象时,要采用一定的显示方式把汉字或字符图形等的代码(编码)数据按顺序送到显示器(屏)上,显示方式有很多,常用的显示方式有:直接式寻址显示:例如7段LED数码管(把显示的数字代码直接送到数码管上);扫描式寻址显示:一般分为行扫描或列扫描,即把汉字或图形分成N行(或列),一行行(或一列列)把汉字(或图形)的编码送到显示屏上,利用人的视觉暂留功能使人看到整个汉字或图形; LED点阵显示屏就是采用这种显示方法。矩阵式寻址显示:把图象分成X行Y列,采用点扫描,一个个点亮显示屏上的点。下面详细说明显示屏如何工作显示一个画面的汉字在本LED点阵显示系统中,采用的是列扫描方式即:将CPU将字库中的汉字第一列编码取出来,送到点阵显示屏的行信号接口上,其中先送下半边的编码(由主板上8255A的A口输出,其端口名称为PA,端口地址为0FF28H),再送上半边的编码(通过扩展板MC1上8255A的C口输出,其端口名称为XPC,端口地址为8002H)。然后在把列扫描信号通过扩展板MC1上8255A的A口输出送到点阵显示屏,点亮第一列上该亮的点。列扫描信号放在寄存器R5中,初始值为01H即00000001送到累加器A,求反后为11111110,然后送到扩展板MC1上8255A的A口(其端口名称为XPA,端口地址为8000H)由A口输出到显示屏的左半边列信号接口,因为点阵显示板结构是列共阴的,即送低电平“0”即可点亮第一列上阳极为高电平的点(因为汉字编码已由行信号口送入各LED的阳极), 然后R5内容左移(为点亮下一列做准备);延时,取第二列编码,送到PA,XPC,R5送A,求反,由XPA 输出到显示屏的左半边列信号接口,点亮第二列,R5内容左移;延时,取第三列编码当点亮第八列时,完成点阵左半边扫描显示;此时把R5复位为01,取第九列编码,送到PA,XPC,把列扫描信号R5送A,求反,从扩展板MC1上8255A的B口(其端口名称为XPB,端口地址为8001H)送入显示屏的右半边列信号接口,点亮第九列,R5内容左移;延时,取第十列编码送到PA,XPC,R5送A,求反,由XPB 输出到显示屏的右半边列信号接口,点亮第十列,R5内容左移;延时,取第十一列编码当点亮第十六列时,完成点阵右半边扫描显示,至此,完成整个汉字在显示屏上的显示。在系统中用寄存器R7,R6来表示列扫描端口的地址:当R7=#80H,R6=#00H,表示列扫描信号由XPA口输出,进行显示屏左半边的扫描显示;当R7=#80H,R6=#01H,表示列扫描信号由XPB口输出,进行显示屏右半边的扫描显示。在程序中,使用查表指令来提取字库编码,取出的汉字编码放在累加器A中,再由A送到PA,XPC端口,首先取下半边的编码,送到PA口,地址指针加一后,取上半边的编码,送到XPC口,字库内容放在“TAB”开始的存储器地址,系统中用寄存器R1,R0合起来做字库的地址指针;子程序POINT作用是:把“TAB”的地址即表头地址(16位)与R1,R0表示的指针相加即得到要取汉字编码的地址;而子程序AD作用则是:地址指针1,DISP1主要是指定列扫描端口地址,而DISP2才是主要子程序,功能是把字库编码取出并送到显示电路显示。其流程图如图5.2所示,程序如下:DISP1:MOVR5,#01HMOVR6,#00HMOVR7,#80HCLRCLCALLDISP2MOVR5,#01HMOVR6,#01HCLRCLCALLDISP2DISP2:LCALLADMOVA,#00HMOVCA,A+DPTRMOVDPTR,#PAMOVXDPTR,ALCALLPOINTLCALLADMOVA,#00HMOVCA,A+DPTRMOVDPTR,#XPCMOVXDPTR,AMOVDPL,R6MOVDPH,R7MOVA,R5CPLAMOVXDPTR,APUSH03HMOVR3,#80HDJNZR3,$POP03HLCALLOFFLEDLCALLPOINTMOVA,R5RLCAMOVR5,AJNCDISP2。4310 使显示画面稳定如果程序只到这里就结束,则会因为总的扫描显示太短,在人眼看来可能觉得画面一闪而过,从而看不清显示内容,固在程序中使用寄存器R3,结合减一不为零则转移指令来解决这个问题, R3内放的是由39H单元送入的时间常数,若R3内容未为零则程序回转到L4,反复显示该屏幕的显示内容,这样利用人的视觉暂留功能可以使人看起来画面是稳定的。DJNZR3,L44311 动态显示显示内容(左移显示)在本系统要求显示内容是动态的,本系统可做动态左移显示,由于在显示内容的编码是按顺序由低到高放在存储单元中,因此要实现左移显示,要显示完第一个屏幕内容后,地址指针回到刚才开始显示该屏幕内容第一列的位置并使指针加2,使第二个屏幕内容从第二列开始显示,重复做以上步骤,就能实现左移显示,具体如下:在显示完第一屏幕的内容后,地址指针R1,R0要从堆栈中取出,然后R1,R0地址指针加2,程序回转至L1,将R1,R0进栈,这样使CPU从显示内容的第二列开始提取字库编码送到显示屏作为第二屏幕的显示内容;显示完第二屏幕后,再将R1,R0从堆栈中取出,然后R1,R0地址指针加2,程序回转至L1,将R1,R0进栈,这样使CPU从显示内容的第三列开始提取字库编码送到显示屏作为第三屏幕的显示内容这样重复上面的步骤,就可以实现显示内容左移显示。在这里面,用R3和减一不为零则转移指令还可以解决显示速度控制问题,原因就是,如果重复显示一个屏幕的内容的时间越长,则显示速度越慢。而R4里开始放的是一个字要做左移显示的列数(16列),一个字在显示屏上每左移1列后,寄存器的内容减一,程序回转移到L1,开始显示第二列开始的内容,当寄存器的内容为0时,表示一个字显示完毕。R2里放的显示内容的长度,由35H单元内容减34H单元内容得到,程序用R2来做判断,每当一个字左移16列完毕,R2内容减一,程序转到L2,开始显示第二个字,当R2内容为0,表示开始显示最后一个字,程序跳转到DISP3,显示最后一个字。显示完最后一字后,程序回转到L3,程序开始循环显示。其流程图如图5.1所示,程序如下L2:MOVR4,#10HL1:MOVR3,39HL4:PUSH00HPUSH01HLCALLDISP1POP01HPOP00HDJNZR3,L4LCALLPOINTLCALLPOINTDJNZR4,L1DJNZR2,L2LCALLDISP3SJMPL34312 显示最后一个要显示的字显示最后一个字的原理与前面相同,仍是进行列扫描和用查表指令来提取字库,与前面所不同的是在这里为了解决循环显示在最后一个字在左移显示时,第一个字同时要同步的进入到显示屏中,因此,在这里要用到第二个地址指针31H,30H,来解决,同时,在这里,主要要解决判断两个地址指针的选择问题,即什么时候使用R1,R0做指针提取字库,什么时候使用31H,30H做指针提取字库。首先,要调用子程序CHF1,用于计算出要显示的最后一个字最后一列的地址指针,用来与地址指针R1,R0比较,判断什么时候第一个字同步的进入到显示屏,由于在字库中一个汉字占用32个字节的存储单元。要计算最后一列的地址指针,先把35H内容(要显示的最后一个字在字库中的位置)放入DPTR中 ,使DPTR内容左移五位(即乘上32)得到要显示的最后一个字最后一列的地址指针,放入38H,37H存储单元。程序如下:CHF1:MOV36H,#05HMOVDPH,#00HMOVDPL,35HC1:CLRCMOVA,DPLRLCAMOVDPL,AMOVA,DPHRLCAMOVDPH,ADJNZ36H,C1MOV37H,DPLMOV38H,DPH 接着与前面相似要把每字左移完毕判断标志与显示速度分别放入寄存器R4与R3中。给31H,30H赋予初始值,由于31H,30H是作为第二地址指针,用来放取要显示的第一个字编码的地址指针,所以把3BH,3AH内容(要显示的第一个字第一列的地址指针)放入31H,30H,完成对31H,30H初始化。将R1,R0进栈后,调用子程序DISP4,DISP4功能与DISP1相似,也是用来指定列扫描端口地址;在这里,与前面不同的地方就是:根据要求系统能够进行循环显示即在左移显示最后一个字时,要显示的第一个字要同步左移进入显示屏。因此,要多用一个地址指针31H,30H来要取显示的第一个字地址指针。由于有两个地址指针,固在这里要解决什么时候用R1,R0做地址指针取字库编码,什么时候用31H,30H做地址指针取字库编码的问题。为了解决这个问题,程序采用判断的方法:在调用显示子程序后,先将R1,R0与38H,37H内容(要显示的最后一个字最后一列的地址指针)做比较,若R1,R038H,37H说明此时最后一个字仍未显示完,地址指针仍用R1,R0来取要显示的最后一个字的的编码,程序

温馨提示

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

评论

0/150

提交评论