XX大学
开发性实验结题报告
学
院:
电子工程学院
班
级:光信
姓
名:
学
号:
班
级:光信
姓
名:
学
号:
班
级:光信
姓
名:
学
号:
2014年X月X日
1632点阵LED电子显示屏
摘要:
本设计是一16×32点阵LED电子显示屏的设计。
整机以美国ATMEL
公司生产的40脚单片机AT89C52为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。通过该芯片控制两个行驱动器74HC573和四个列驱动器74HC573来驱动显示屏显示。该电子显示屏可以显示各种文字或单色图像,全屏采用8块8×8点阵LED显示模块来组成16×32点阵显示模式。文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。
单片机控制系统程序采用单片机C语言进行编辑,通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。LED显示以其组构方式灵活、显示稳定、功耗低、寿命长、技术成熟、成本低廉等特点得到广泛的应用。
关键词:AT89C51单片机;LED;点阵显示;动态显示;C语言。
一
绪论
LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的应用于公交汽车,码头,商店,学校和银行等公共场合的信息发布和广告宣传。LED显示屏经历了从单色,双色图文显示屏到现在的全彩色视频显示屏的发展过程,自20世纪八十年代开始,LED显示屏的应用领域已经遍布交通、电信、教育、证券、广告宣传等各方面。
LED点阵显示屏概述
LED点阵显示屏的构成型式有多种,其中典型的有两种。一种把所需展示的广告信息烧写固化到EPROM芯片内,能进行固定内容的多幅汉字显示,称为单显示型;另一种在机内设置了字库、程序库,具有程序编制能力,能进行内容可变的多幅汉字显示,称可编程序型。
目前,国内的LED点阵显示屏大部分是单显示型,其显示的内容相对较少,显示花样较单一。一般在产品出厂时,显示内容就已写入显示屏控制系统中的EPROM芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制。
国内的另一种LED显示屏——可编程序型LED显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点。随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富、信息量大、信息更换速度快等特点。因此传统的LED显示屏控制系统已经越来越不能满足现代广告宣传业的需要。而利用PC机通信技术控制LED显示屏,则具有显示内容丰富,信息更换灵活等优点。
LED显示屏控制技术状况
显示屏的控制系统包括输入接口电路、信号控制、转换和数字化处理电路及输出接口电路等,涉及的具体技术很多,其关键技术包括串行传输与并行传输技术、动态扫描与静态锁存技术、自动检测及远程控制技术等。
二
系统总体设计方案
需要实现的功能
设计一个室内用16×32点阵LED图文显示屏,要求在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形或文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。
LED显示特点
从理论上说,不论显示图形还是文字,都是控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光。通常事先把需要显示的图形文字转换成点阵图形,再按照显示控制的要求以一定的格式形成显示数据。对于只控制通断的图文显示屏来说,每个LED发光器件占据数据中的1位(1bit),在需要该LED器件发光的数据中相应的位填1,否则填0。当然,根据控制电路的安排,相反的定义同样是可行的。这样依照所需显示的图形文字,按显示屏的各行各列逐点填写显示数据,就可以构成一个显示数据文件。
显示图形的数据文件,其格式相对自由,只要能够满足显示控制的要求即可。文字的点阵格式比较规范,可以采用现行计算机通用的字库字模。组成一个字的点阵,其大小也可以有16×16、24×24、32×32、48×48等不同规格。汉字的点阵结构相应的显示数据是用16进制格式以字节为单位表示的。
用点阵方式构成图形或文字,是非常灵活的,可以根据需要任意组合和变化,只要设计好合适的数据文件,就可以得到满意的显示效果。因而采用点阵式图文显示屏显示经常需要变化的信息,是非常有效的。点阵显示方式适应信息变化的优点,是以点阵显示器的价格和其复杂的控制电路为代价的。点阵显示器在整个显示单元的所有位置上都布置了LED器件,而像数码管一类的显示器件只在需要发光的七段位置上布置LED器件,其它位置是空白的。因此,点阵显示器在相同面积情况下,价格要贵些。但是,数码管可显示的信息有限,只有0~9或单个的英文字符,由于组合形成的字符不多,所以其显示数据和控制电路都比较简单。点阵显示器则不然,它要对点阵上全部LED进行控制,并能生成所有可能显示的图形文字,其显示数据和控制电路自然要复杂得多。
设计方案论证:
3.1显示模式方案
为了吸引观众增强显示效果,可以有多种显示模式,最简单的显示模式是静态显示。这里所说的“静态显示模式”不同于静态驱动方式。与静态显示模式相对应,就有各种动态显示模式,它们所显示的图文都是能够动的。按照图文运动的特点又可以分为闪烁、平移、旋转、缩放等多种显示模式。产生不同显示模式的方法,并不意味着一定要重新编写显示数据,可以通过一定的算法从原来的显示数据直接生成。例如,按顺序调整行号,可以使显示图文产生上下平移;而顺序调整列显示数据的位置,就可以达到左右平移的目的;同时调整行列顺序,就能得到对角线平移的效果。其它模式的数据刷新,也可找到相应的算法。不过当算法太复杂,太浪费时间的话,也可以考虑预先生成刷新数据,存储备用。刷新的时间控制,要考虑运动图形文字的显示效果。刷新太慢,动感不显著;刷新太快了,中间过程看不清。一般刷新周期可控制在几十毫秒范围之内。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套列驱动器,每行有一个行驱动器,具体就16×32的点阵来说,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),由行译码器给出的行选通信号,从第一行开始,按顺序依次对各行进行扫描(把该行与电源的一端接通)。
另一方面,根据各列锁存的数据,确定相应的列驱动器是否将该列与电源的另一端接通。接通的列,就在该行该列燃亮相应的LED;未接通的列所对应的LED熄灭。当一行的扫描持续时间结束后,该行燃亮的LED也就熄灭;下一行又以同样的方法进行显示。全部各行都扫过一遍之后(一个扫描周期),又从第一行开始下一个周期的扫描。只要一个扫描轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就不容易感觉出闪烁现象,就能看到显示屏上稳定的图形了。而且动态扫描方式功耗低,硬件成本低,每个LED都不是连续工作,因而还有利于延长LED的使用寿命。
3.2
数据传输方案
采用扫描方式进行显示时,显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输方式的问题。从控制电路到列驱动器的数据传输可以采用并行方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并行传输的方案是不可取的。
采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据要经过并行到串行和串行到并行两次变换。首先,单片机从存储器中读出的8位并行数据要通过并串变换,按顺序一位一位地输出给列驱动器。与此同时,列驱动器中每一列都把当前数据传向后一列,并从前一列接收新数据,一直到全部列数据都传输完为止。只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解列数据准备(传输)和列数据显示两个部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以至影响到LED的亮度。
解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,准备下一行的列数据。为了达到重叠处理的目的,列数据的显示就需要具有锁存功能。
经过上述分析,可以归纳出列驱动器电路应具备的主要功能。对于列数据准备来说,它应能实现串入并出的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。图2-1为显示屏电路实现的结构框图。
单片机
列驱动器
四个74HC573
两个74HC573
列
LED显示点阵
16x32
电源
显示屏电路框图
三
硬件系统设计
元器件的选择
元件编号
规格参数
LED
16x32点阵
PCB板
20cm*20cm环氧板
U1~
U6
74HC573
U7
AT89C52
U8,U9
74HC02
R1~R33
330欧姆
C1、C2
22pF
晶振
1个
可行性分析:作品选用52做核心,相对于其他芯片52读取也很方便,价格低廉。选取138以及02选通74HC573做行、列驱动器。之所以选取138以及02是因为用138及02选通573是因为,当138选通573时其他573被默认关闭,这给软件编写提供了很大便利。用573而不用595做驱动是因为对573熟悉,对以前学过的硬件有一个复习巩固的作用。没有用2803做驱动是因为573提供的电压完全可以提供16x32LED灯的两端电压。
芯片简介
(1)AT89C52
AT89C52是美国ATMEL公司生产的8位Flash
ROM单片机。其最突出的优点是片内ROM为Flash
ROM,可擦写1000次以上,应用并不复杂的通用ROM写入器就能方便的擦写,读取也很方便,价格低廉,具有在片程序ROM二级保密系统。因此可灵活应用于各种控制领域。AT89C52包含以下一些功能部件:
(1)一个8位CPU;
(2)一个片内振荡器和时钟电路;
(3)4KB
Flash
ROM;
(4)128B
内RAM;
(5)可寻址64KB的外ROM和外RAM控制电路;
(6)两个16位定时/计数器;
(7)21个特殊功能寄存器;
(8)4个8位并行I/O口;
AT89C52单片机一般采用双列直插DIP封装,共40个引脚,图3-3为其引脚排列图。40个引脚大致可分为4类:电源、时钟、控制各I/O引脚。
电源
Vcc——芯片电源,接+5V;GND——接地端。
时钟
XTAL1、XTAL2——晶体振荡电路反相输入端和输出端。
单片机系统外围电路
(2)74HC573
编程时,先将使能端置1,此时输出数据和输入数据一致;为了将输出的数据锁定,防止误操作,可将使能端清0,此时,输出端保持原有值,不再变化。(1,使能置1;
2,数据输入到锁存器输入端(输出=输入);
3,使能置0(输
出恒定=先前输入);(达到锁存功能))
74HC系列的数字集成电路,当5V供电时,输出高电平接近5V,带负载后,能输出4.95V左右。
从你图上看,这里需要573输出高电平段码,138输出位码,进行动态显示。但是图上有错,为了LED安全使用,在573的输出端与7LED连接之间,应串联300Ω电阻。
附加:
锁存器的作用
锁存器(Latch)是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。锁存,就是把信号暂存以维持某种电平状态。锁存器的最主要作用是缓存,其次完成高速的控制其与慢速的外设的不同步问题,再其次是解决驱动的问题,最后是解决一个
I/O
口既能输出也能输入的问题。
(3)74HC02
74HC02
概述
74HC02是一款高速CMOS器件,74HC02遵循JEDEC标准no.7A。74HC02引脚兼容低功耗肖特基TTL(LSTTL)系列。
74HC02实现了4路2输入或非门功能。
74HC02
特性
·
输入电平
o
74HC02
CMOS电平
·
ESD保护
o
HBM
JESD22-A114E超过2000
V
o
MM
JESD22-A115-A超过200
V
·
可选多种封装类型
·
温度范围
o
-40~+85
℃
o
-40~+125
℃
(4)74HC138
CD74HC138,CD74HC238和CD74HCT138,CD74HCT238是高速硅栅CMOS解码器,适合内存地址解码或数据路由应用。74HC138
作用原理于高性能的存贮译码或要求传输延迟时间短的数据传输系统,在高性能存贮器系统中,用这种译码器可以提高译码系统的效率。将快速赋能电路用于高速存贮器时,译码器的延迟时间和存贮器的赋能时间通常小于存贮器的典型存取时间,这就是说由肖特基钳位的系统译码器所引起的有效系统延迟可以忽略不计。HC138
按照三位二进制输入码和赋能输入条件,从8
个输出端中译出一个
低电平输出。两个低电平有效的赋能输入端和一个高电平有效的赋能输入端减少了扩展所需要的外接门或倒相器,扩展成24
线译码器不需外接门;扩展成32
线译码器,只需要接一个外接倒相器。在解调器应用中,赋能输入端可用作数据输入端。
行、列驱动电路
行、列驱动电路由集成电路74HC573构成,它具有一个8位串行输入/输出或者并行输出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行各列数据的同时,传送下一行的列数据,即达到重叠处理的目的。
74HC系列的数字集成电路,当5V供电时,输出高电平接近5V,带负载后,能输出4.95V左右。
从你图上看,这里需要573输出高电平段码,138输出位码,进行动态显示。但是图上有错,为了LED安全使用,在573的输出端与7LED连接之间,应串联300Ω电阻。
行由两个573分别控制,列由四个573控制。行给高电平,列给低电平实现
点阵控制。
LED显示屏电路
LED显示屏是将发光二极管按行按列布置的,驱动时也就按行按列驱动。在扫描驱动方式下可以按行扫描按列控制,当然也可以按列扫描按行控制。LED显示屏现多采用多块8×8点阵显示单元拼接而成。本文就是使用8块SBM1388型号的实验模块组成16×32点阵,以满足汉字显示的要求。8×8
LED点阵是最基本的点阵显示模块,理解了8×8
LED点阵的工作原理就可以基本掌握LED点阵显示技术。8×8点阵LED结构如图3-10所示,其等效电路如图3-11所示:
图3-10
8×8点阵LED结构图
从图中(本图的LED阵列采用共阳的接法)可以看出,8×8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上。要实现显示图形或字体,只需考虑其显示方式,通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。当采用按行扫描按列控制的驱动方式时,LED显示屏8行的同名列共用一套列驱动器。行驱动器一行的行线连接到电源的一端,列驱动器一列的列线连接到电源的另一端。应用时还应在各条行线或列线上接上限流电阻。扫描中控制电路将行线的1到
8轮流接通高电位,使连接到各该行的全部LED器件接通正电源,但具体那一个LED导通,还要看它的负电源是否接通,这就是列控制的任务了。当对应的某一列置0电平,则相应的二极管就亮;反之则不亮。例如:如果想使屏幕左上角LED点亮,左下角LED熄灭的话,在扫描到第一行时,第一列的电位就应该为低,而扫描到第八行时第一列的电位就应该为高。这样行线上只管一行一行的轮流导通,列线上进行通断控制,实现了行扫描列控制的驱动方式。
四
系统软件设计
在单片机系统中,硬件是系统的基础,软件则是在硬件的基础上对其合理的调配和使用,从而完成应用系统所要完成的任务。软件的设计是设计控制系统的应用程序。其任务是在总体设计和硬件设计的基础上,确定程序结构,分配内RAM资源,划分功能模块,然后进行主程序和各模块程序的设计,最后连接起来成为一个完整的应用程序。
在进行系统总体设计时,曾经规划过软件结构,但由于硬件系统尚未仔细确定,软件结构框图十分粗糙,当硬件设计接口扩展及各功能模块与CPU连接关系确定后,就能够具体明确对软件设计的要求。本设计的LED显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。根据软件分层次设计的原理,可把显示屏的软件系统分成两大层:第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其它控制信号,配合完成LED显示屏的扫描显示工作。显示驱动程序由定时器T0中断程序实现。系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。
编程思路
根据以上硬件电路和单片机控制原理,编程思路为:
a先对相关变量进行初始化。
b调用显示程序
c装载汉字的第一行数据,并显示出来。
d依次显示汉字的第二行至第十六行。
e结束
程序见附录1
流程图:
调用显示程序序
扫描第1行并显示
显示汉字
延时
扫描第2行并显示
依次扫描3,4….16行
结束
开始
五
调试及性能分析
一个单片机系统经过总体设计,完成了硬件和软件设计开发。元器件安装后,在系统的程序存储器中写入编制好的应用程序,系统即可运行。但编制好的程序或焊接好的线路不能按预计的那样正常工作是常见的事,多少会出现一些硬件、软件上的错误。这就需要通过调试来发现错误并加以改正。调试可分为硬件调试和软件调试。在允许的条件下,根据本设计系统的需求性首先采用在PC机上用模拟开发软件进行检测和调试,然后进行硬件的组装与调试。
软件调试
软件调试采用脱机调试的方法,即完全用仿真器软件在PC机上对目标电路原理图和程序进行检测和调试。调试过程中单片机相应输入端由通用键盘和鼠标设定,运行状态、各寄存器状态、端口状态等都可以在CRT指定的窗口区域显示出来,以确定程序运行有无错误。调试可按下列步骤进行:
目标程序纠错
该阶段工作通常在目标程序编辑时就完成。一般来说,仿真器软件能给用户输入的程序指令纠错,包括书写格式、标号未定义或多重定义、转移地址溢出等错误。
整体程序综合调试
即把各子程序整体连起来进入到综合电路调试,看是否能实现预计的功能显示。在这阶段若发生故障,可以考虑各子程序在运行时是否破坏现场,数据缓冲单元是否发生冲突,标志位的建立和清除在设计上是否失误,堆栈是否溢出,输入输出状态是否正常等。
硬件调试
单片机应用系统的硬件调试和软件调试是分不开的,许多硬件故障在软件调试时才能发现,但通常要先排除系统中明显的硬件故障。调试工作可以分为四步:
目测检查
根据硬件逻辑设计图,仔细检查样机线路是否连接正确,并核对元器件的型号、规格和安装是否符合要求,必要时可用万用表检测线路通断情况。
电源调试
样机的第一次通电测试很重要,若样机中存在电源故障,则加电后将造成器件损坏。调试的方法有两种:一种是断开样机稳压电源的输出端检查空载时电源工作情况;另一种是拔下样机上的主要集成芯片,检查电源的负载能力(用假负载)。确保电源无故障并性能符合设计要求。
通电检查
在确保电源良好前提下,接通电源。最好在电源与其余电路之间串接一个电流表。若接通后电流很大,必须立即切断电源。电源大得超出正常范围,说明电路中有短路或故障。通电检查的主要目的是看系统是否存在短路或由元器件损坏、装配错误引起的电流异常。
检查相应芯片的逻辑关系
加电后检查各芯片插座上相关引脚的电位,仔细测量相应的输入输出电平是否正常。单片机系统大都是数字逻辑电路,使用电平检查法可首先查出逻辑设计是否正确,选用器件和连接关系是否符合要求等。
根据实践证明,这个方案设计的16×32点阵LED图文显示屏,结构合理,成本较低,且较容易扩展成更大的显示屏;显示屏各点亮度均匀、充足;显示图形或文字稳定、清晰无串扰;可用静止、移入移出等多种显示方式显示图形或文字。
心得:
以上仅对LED显示屏的结构和驱动、显示电路原理作一详细介绍和分析。LED点阵的应用很广,对于不同的应用环境和应用要求,可以有各种各样的应用方式,在这里就不做详尽叙述。由于自己知识水平的局限和时间的仓促,设计中或还存在着一些不足,我真诚的接受老师们的批评和指正。
从课题选择、方案论证到具体设计,每一步对我来说无疑是巨大的尝试和挑战,我不断地给自己提出新的问题,然后去论证、推翻,不懂就请教学长,再接着提出新的问题,在这个往复的过程中,我这篇稚嫩的设计日趋完善。每一次改进我都收获良多,虽然我的设计作品不是很成熟,而且借鉴了前人的很多资料,但我仍然心里有一种莫大的幸福感,因为我实实在在地走过了一个完整的设计所应该走的每一个过程,并且享受了每一个过程,更重要的是这个设计中我加入了自己鲜活的思想,而且在调试中积累了很多经验。
在做这次的设计过程中使我学到了很多,加深了对数子电路的理解,验证了所学理论知识,提高了基本的解决实际问题的能力,并增加了对电子设计方面的兴趣。更重要的是我体会到不论做什么事都要真真正正用心去做,才会使自己更好的成长,没有学习就不可能有实践的能力,实践才是最终的目的,没有实践就不会有自己的突破和创新,希望这次的经历能让我在以后的工作和生活中不断成长与进步。
在这里要特别感谢我们的学长,谢谢他们的悉心指导!
参考文献:马家辰.MCS-51单片机原理及接口技术.哈尔滨工业大学出版社,1997
胡汉才.单片机原理与应用.清华大学出版社
邱丽芳.单片机原理与应用
[M].北京:人民邮电出版社,2007
附录1
#include
#define
uchar
unsigned
char
#define
uint
unsigned
int
uchar
code
atable[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
;
uchar
code
btable[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void
delay(uint
i)
//延时1ms
{
uint
x,y;
for(x=i;x>0;x--)
for(y=115;y>0;y--);
}
void
clear()
//清屏
{
P2=0xa0;P0=0xff;
P2=0xc0;P0=0xff;
P2=0x00;P0=0xff;
P2=0x20;P0=0xff;
P2=0x40;P0=0xff;
P2=0x60;P0=0xff;
}
void
main(void)
{
uint
x;
clear();
WR
=
0;
while(1)
{
P2=0xa0;
P0=atable[0];
P2=0xe0;
P0=btable[0];
P2=0x60;
P0=0xf7;
P2=0x40;
P0=0x7f;
P2=0xc0;
P0=0xff;
P2=0x00;
P0=0xff;
delay(2);
//扫描第1行
P2=0xa0;
P0=atable[1];
P2=0xe0;
P0=btable[1];
P2=0x60;
P0=0xfb;
P2=0x40;
P0=0x07;
P2=0xc0;
P0=0xfe;
P2=0x00;
P0=0xff;
delay(2);
//2
P2=0xa0;
P0=atable[2];
P2=0xe0;
P0=btable[2];
P2=0x60;
P0=0xfd;
P2=0x40;
P0=0x7f;
P2=0xc0;
P0=0xff;
P2=0x00;
P0=0xff;
delay(2);
//3
P2=0xa0;
P0=atable[3];
P2=0xe0;
P0=btable[3];
P2=0x60;
P0=0xfe;
P2=0x40;
P0=0x7f;
P2=0xc0;
P0=0xff;
P2=0x00;
P0=0xff;
delay(2);
//4
P2=0xa0;
P0=atable[4];
P2=0xe0;
P0=btable[4];
P2=0x60;
P0=0xff;
P2=0x40;
P0=0x07;
P2=0xc0;
P0=0x01;
P2=0x00;
P0=0xff;
delay(2);
//5
P2=0xa0;
P0=atable[5];
P2=0xe0;
P0=btable[5];
P2=0x60;
P0=0xff;
P2=0x40;
P0=0x7f;
P2=0xc0;
P0=0x7f;
P2=0x00;
P0=0xff;
delay(2);
//6
P2=0xa0;
P0=atable[6];
P2=0xe0;
P0=btable[6];
P2=0x60;
P0=0xff;
P2=0x40;
P0=0x7f;
P2=0xc0;
P0=0xbf;
P2=0x00;
P0=0x93;
delay(2);
//7
P2=0xa0;
P0=atable[7];
P2=0xe0;
P0=btable[7];
P2=0x60;
P0=0x80;
P2=0x40;
P0=0x07;
P2=0xc0;
P0=0xbf;
P2=0x00;
P0=0x6d;
delay(2);
//8
P2=0xa0;
P0=atable[8];
P2=0xe0;
P0=btable[8];
P2=0x60;
P0=0xbf;
P2=0x40;
P0=0xff;
P2=0xc0;
P0=0xbf;
P2=0x00;
P0=0x7d;
delay(2);
//9
P2=0xa0;
P0=atable[9];
P2=0xe0;
P0=btable[9];
P2=0x60;
P0=0xbf;
P2=0x40;
P0=0xff;
P2=0xc0;
P0=0xbf;
P2=0x00;
P0=0xbb;
delay(2);
//10
P2=0xa0;
P0=atable[10];
P2=0xe0;
P0=btable[10];
P2=0x60;
P0=0x80;
P2=0x40;
P0=0x27;
P2=0xc0;
P0=0xbf;
P2=0x00;
P0=0xd7;
delay(2);
//11
P2=0xa0;
P0=atable[11];
P2=0xe0;
P0=btable[11];
P2=0x60;
P0=0xfe;
P2=0x40;
P0=0xdb;
P2=0xc0;
P0=0xbe;
P2=0x00;
P0=0xef;
delay(2);
//12
P2=0xa0;
P0=atable[12];
P2=0xe0;
P0=btable[12];
P2=0x60;
P0=0xfe;
P2=0x40;
P0=0xfb;
P2=0xc0;
P0=0xbe;
P2=0x00;
P0=0xff;
delay(2);
//13
P2=0xa0;
P0=atable[13];
P2=0xe0;
P0=btable[13];
P2=0x60;
P0=0x80;
P2=0x40;
P0=0x77;
P2=0xc0;
P0=0xbf;
P2=0x00;
P0=0xff;
delay(2);
//14
P2=0xa0;
P0=atable[14];
P2=0xe0;
P0=btable[14];
P2=0x60;
P0=0xff;
P2=0x40;
P0=0xaf;
P2=0xc0;
P0=0xbf;
P2=0x00;
P0=0xff;
delay(2);
//15
P2=0xa0;
P0=atable[15];
P2=0xe0;
P0=btable[15];
P2=0x60;
P0=0xff;
P2=0x40;
P0=0xdf;
P2=0xc0;
P0=0xbf;
P2=0x00;
P0=0xff;
delay(2);
//16
}
}