工程实训报告手摇式动态显示屏 本文关键词:手摇式,显示屏,实训,报告,动态
工程实训报告手摇式动态显示屏 本文简介:16X16LED手摇式动态显示屏工程实训报告手摇式动态显示屏-1-目录第一章引言21.1LED点阵显示屏概述21.2LED显示屏控制技术状况31.2.1串行传输与并行传输技术31.2.2动态扫描与静态锁存技术31.2.3自动检测及远程控制技术31.3预达设计目的4第二章总体方案论证与设计52.1LE
工程实训报告手摇式动态显示屏 本文内容:
16X16
LED手摇式动态显示屏
工程实训报告
手摇式动态显示屏
-
1
-
目
录
第一章
引
言2
1.1
LED点阵显示屏概述2
1.2
LED显示屏控制技术状况3
1.2.1
串行传输与并行传输技术3
1.2.2
动态扫描与静态锁存技术3
1.2.3
自动检测及远程控制技术3
1.3
预达设计目的4
第二章
总体方案论证与设计5
2.1
LED驱动功能的实现5
2.2
数据存储功能的实现6
2.3
总体硬件组成框图6
第三章
系统硬件设计7
3.1芯片的介绍——STC89C58RD+单片机7
3.2
复位电路的设计8
3.2.1
上电自动复位9
3.2.2
手动按键复位9
3.3
时钟电路的设计10
3.4
下载器电路的设计11
3.4.1
MAX232的特点如下:11
3.4.2
MAX232各管脚的工作条件如表3.211
3.4.3
MAX232引脚排列12
3.4.4基于MAX232电路编程器电路图12
第四章
系统的软件设计14
4.1
主程序14
4.2显示子程序15
4.3
汉字点阵码的生成15
4.3.1
汉字取模16
4.3.2
图形取模17
4.4
Keil
软件的介绍17
第五章
系统调试与测试结果分析19
5.1
系统的调试19
5.2
测试结果分析19
参考文献22
附录
123
1.实物图23
2.原理图24
3.PCB板25
附录
2
源程序26
第一章
引
言
LED显示屏的像素点采用LED发光二极管,将许多发光二极管以点阵方式排列起来,构成LED阵列,进而构成LED平面式显示屏幕。它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的应用于公交汽车,码头,商店,学校和银行等公共场合的信息发布和广告宣传。LED显示屏经历了从单色,双色图文显示屏到现在的全彩色视频显示屏的发展过程,自二十世纪八十年代开始,LED显示屏作为一项高科技产品引起了人们的高度重视。采用计算机控制,将光、电融为一体的大屏幕智能LED显示屏的应用领域已经遍布交通、电信、教育、证券、广告宣传等各方面。
1.1
LED点阵显示屏概述
LED点阵显示屏的构成型式有多种,其中典型的有两种。一种把所需展示的广告信息烧写固化到EPROM芯片内,能进行固定内容的多幅汉字显示,称为单显示型,其显示的内容相对较少,显示花样较单一且更换显示内容非常困难,这样就使该类型的显示屏使用范围受到了限制;另一种在机内设置了字库、程序库,具有程序编制能力,能进行内容可变的多幅汉字显示,称可编程序型LED显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点。随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富、信息量大、信息更换速度快等特点。因此传统的LED显示屏控制系统已经越来越不能满足现代广告宣传业的需要。而利用PC机通信技术控制LED显示屏,则具有显示内容丰富,信息更换灵活等优点。
现代社会已进入信息时代,信息传播占有越来越重要的地位,同时人们对视觉媒体的要求也愈来愈高,要求传播媒体反映迅速、现实(实时性)、醒目(色彩丰富、栩栩如生),画面超大型化,具有震撼力,近几年,随着微电子技术、自动化技术、计算机技术的迅速发展,半导体制作工艺日趋成熟,导致LED显示点尺寸越来越小,解析度越来越高,并可将显示光的三基色(红、绿、蓝)集成化为一体,达到全彩色效果,使得LED显示屏的应用范围日益扩大
1.2
LED显示屏控制技术状况
显示屏的控制系统包括输入接口电路、信号控制、转换和数字化处理电路及输出接口电路等,涉及的具体技术很多,其关键技术包括串行传输与并行传输技术、动态扫描与静态锁存技术、自动检测及远程控制技术等。
1.2.1
串行传输与并行传输技术
LED显示屏的数据传输方式主要有串行和并行两种。日前普遍采用串行控制技术,显示屏每个单元内部的不同驱动电路和各级联单元之间,每个时钟仅传送一位数据。采用这种方式的驱动IC种类较多,不同显示单元之间的联线较少,可减少显示单元的数据传输驱动元件,从而提高整个系统的可靠性和性价比,具体工程实现也较为容易。
1.2.2
动态扫描与静态锁存技术
LED显示屏控制系统实现显示信息的刷新技术有动态扫描和静态锁存两种方式。一般室内显示屏多采用动态扫描技术,即一行发光二极管共用一行驱动寄存器,根据共用一行驱动寄存器的发光二极管像素数目,分为1/4,1/16扫描等。室外显示屏基本上采用静态锁存技术,即每一个发光一极管都对应有一个驱动寄存器,无需时分工作,从而保证了每一个发光一极管的亮度占空比为100%。动态扫描法可以大大减少控制器的I/O口,因此应用较广。
1.2.3
自动检测及远程控制技术
LED显示屏的构成复杂,特别是室外显示屏,供电、环境亮度、环境温度条件等都直接影响显示屏的正常运行。在LED显示屏的控制系统中,因根据需要对温度、亮度、电源等进行自动检测控制,也可根据需要,远程实现对显示屏的亮度、色度调节、图像水平和垂直位置的调节以及工作方式的转换等。
1.3
预达设计目的
2008年北京奥运会开幕式上运用大量LED在一定程度上诠释了“科技奥运”的概念,它不仅反映出LED与现代生活的密切关系,也揭示了LED在高端科技领域的重要地位。
为了结合实际更好的了解LED相关知识,掌握LED显示技术,我们以奥运会中颇具匠心的LED荧光棒为原形,采用了16个LED,设计成一款以STC89C58RD+单片机为核心,
涉及了静态锁存技术和MAX232芯片应用并且拥有PC机通信功能的LED手摇式动态显示屏。
第二章
总体方案论证与设计
本系统采用单片机STC89C58RD+为LED显示屏的控制核心,其中主要涉及到实现LED驱动及数据存储功能的方案选择,以下内容将对各方案逐一进行论证比较,给出合理的设计方法。
2.1
LED驱动功能的实现
从理论上讲不论显示图形还是文字,只要控制这些组成图形或文字的各个点所在的位置相对应的LED器件发光,就可得到我们想要的显示结果。但在实际应用中考虑到各种方案的特点及其局限性,我们需根据情况来选择。
方案一:可同时控制各个发光点亮灭的方法称为静态驱动显示方式,它将每一个LED发光管的一端接至单片机的一个I/O口,另一端通过电阻接电源。这种方法可以直接驱动LED,原理简单,驱动能力强,LED的亮度也可以通过限流电阻调节,非常方便,但此种方法浪费单片机的I/O口,只适合于较小的系统。若LED点阵较大,所含发光二级管数量较多(仅1616点阵共有256个发光二极管),若我们用锁存器来扩展端口即采用静态锁存方式(按8位锁存器来计算需256/8=32个锁存器),这个数字很大,在实际应用中显示屏较1616点阵要大的多,这样在锁存器上花的成本将会很高。
方案二:采用动态扫描方式即逐行轮流点亮(反复轮回过程中,轮回速度足够快控制在每秒24次以上,由于人眼视觉暂留现象,形成看起来稳定的图形),这样扫描驱动电路可实现多行的同名列共用一套驱动器。通过三极管驱动并联在一起的LED发光管的一端(共阴或共2端),LED发光管的另一脚接通用I/O口,控制其亮灭。此扫描方式进行显示时,每行有一个行驱动器,各行同名列共用一个列驱动器,显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。
由于此次我们设计完成的手摇式动态显示屏只需16个发光二级管,属于较小的系统,单片机I/O口足够用,考虑到第一种方案原理简单,容易实现,而第二种方案涉及到行、列驱动器,数据传输中串、并联方式选择及重叠处理方法等内容的复杂性,所以我们选择静态驱动显示方式。
2.2
数据存储功能的实现
◎在独立的数据存储模块设计中:
方案一:采用静态RAM存储显示屏的显示内容,静态数据存储器具有存储容量大,传输速度快等优点。但其存储的数据掉电后会消失,因此不适合用于存储长时间不变的数据。
方案二:采用ROM芯片存储LED显示屏要显示的信息,采用ROM芯片可以长时间的存储信息,而且掉电数据不丢失,此种方式适合于存储不变的数据。
方案三:采用串行EEPROM(如24C256等)存储LED显示屏要显示的信息。串行EEPROM技术是一种非易失性存储技术,它几乎具有所有类型存储器的优点:不挥发性、可更新性、高密度、低功耗和高性价比,非常适合应用于各类工业测控系统。它克服了常用的2816、2817、2864等并行EEPROM器件价格高、体积大、可靠性低(这些器件如不采取措施,在上电、下电时常会丢失数据)等不足,在速度要求不是很高的情况下,该器件是最理想的选择。
◎在本次设计中由于我们以STC89C58RD+为核心,而它是STC(宏晶)公司开发的非常实用的一款芯片,因为它不仅和MCU-51系列单片机指令、管脚完全兼容,而且它支持ISP(在系统可编程),无需高价的编程器,可轻松通过串口实现程序下载和远程升级,加上其片内的32k程序存储器是Flash工艺的,这种工艺的存储器用户可以用电的方式瞬间擦除、改写。此外,它有1280字节的RAM,8K以上的
E2PROM,内置看门狗。在ISP下载编程时就可以任意设置6时钟/机器周期或12时钟/机器周期,STC单片机ISP引导码出厂时已有,不需要用户烧录,该单片机对开发设备要求很低,开发时间也大大缩短。所以我们直接使用了该芯片数据存储功能。
2.3
总体硬件组成框图
图2-1
总体硬件组成框图
第三章
系统硬件设计
本系统采用STC89C58RD+单片机为核心,制作一款可通过开关选择显示方式显示16X128点(最多显示汉字为8个)阵图形功能的LED动态显示屏。汉字或图形的显示程序可通过PC机的串口进行下载,可存储多组汉字或图形,通过开关进行选择。手动摇摆显示屏可显示“黑龙江”三个字并可重复显示。
3.1芯片的介绍——STC89C58RD+单片机
STC89C58RD
+是一种低功耗高性能的8位单片机,STC89C58RD+系列是全球第一片掉电模式时典型功耗小于0.1uA
的8051单片机。片内带有一个32k字节的F1ash可编擦除只读存储器(PEROM),它采用了CMOS工艺和STC(宏晶)公司的高密度非易失性存储器(NURAM)技术,而且其输出引脚和指令系统和MCU-51系列单片机兼容。片内的Flash存储器允许在系统内可改编程序或用常规的非易失性的存储器编程器来编程。同时它具有三级程序存储器保密的性能。
在众多的51系列单片机中,要算STC(宏晶)公司的STC89C58RD+最实用,因为它不仅和MCU-51系列单片机指令、管脚完全兼容,而且它支持ISP(在系统可编程),无需高价的编程器,可轻松通过串口实现程序下载和远程升级,加上其片内的32k程序存储器是Flash工艺的,这种工艺的存储器用户可以用电的方式瞬间擦除、改写。此外,它有1280字节的RAM,8K以上的
E2PROM,内置看门狗。在ISP下载编程时就可以任意设置6时钟/机器周期或12时钟/机器周期,STC单片机ISP引导码出厂时已有,不需要用户烧录。该单片机对开发设备要求很低,开发时间也大大缩短。STC89C58RD+引脚排列如图3.1所示:
图3.1
STC89C58RD+引脚排列
管脚名称
功能
P0、P2
I/O接口(发光LED)
RXD
串行输入口
TXD
串行输出口
XTAL1、XTAL2
接石英晶体振荡器
EA
CPU读取内部程序存储器
RST
将CPU复位
VSS
接地
VCC
电源+5V
表3.1
STC89C58RD+
引脚功能描述
(注:机器周期=石英晶体×12,
22.1184MHz石英晶体/12=1.8432us)
3.2
复位电路的设计
任何单片机在启动运行前都需要复位,其目的是使中央处理器(CPU)和系统中的其他器件都处于一个确定的初始状态,并从这个状态开始工作。在单片机应用系统工作时,也会由于种种原因如外界干扰所造成的死循环状态,要求进入复位工作状态,而单片机的复位状态与应用系统的复位状态是密切相关的,因此熟悉单片机的复位状态非常必要。
通过STC89C58RD+单片机上的复位引脚RST,引入两个机器周期(24个振当周期)以上的高电平,即可是器件复位,只要RSE一直保持高电平,那么CPU就一直处于复位状态。当RST由高变低后复位结束,CPU从初始状态开始工作。复位以后CPU内部寄存器初始状态除(SP)=07H,P0、P1、P2、P3为0FFH外,其他寄存器都为0。单片机的复位都是靠外部电路实现的,分为上电自动复位和手动按键复位,本次设计采用上电复位。
3.2.1
上电自动复位
对于NMOS型单片机,在RST复位接一个电容至VCC和一个电阻至地,就能实现上电自动复位,如图3.2(a)所示。对于CMOS型单片机只要接一个电容至VCC即可。在加电瞬间,电容通过电阻充电,就在RST端出现一定时间的高电平,只要高电平持续时间足够长,就可使单片机有效复位。RST端在加电时应保持的高电平时间包括VCC的上升时间和震荡器的起振时间。
3.2.2
手动按键复位
除上电复位以外,在系统运行时有时还需要在不关闭电源的情况下对单片机进行复位操作,此时,一般是通过一个手动复位按钮,如图3.2(b)所示。在需要复位时只要按一下复位按钮即可使单片机复位。
(a)上电自动复位
(b)手动复位
图3.2
上电复位与手动复位电路
3.3
时钟电路的设计
在单片机内部有一个振荡器,可用两种方式为单片机提供时钟信号:一种是内部时钟方式;另一种是外部时钟方式,本次设计采用内部时钟方式。采用内部时钟方式时,我们只需要提供振荡源,通常以石英晶体振荡器和两个片电容组成外部振荡源。片内的高增益反向放大器通过XTAL、XTAL2外接,作为反馈元件的片外晶体振荡器与电容组成的并联谐振回路构成一个自激振荡器,向内部时钟电路提供振荡时钟。振荡器的频率取决于晶振的振荡频率,振荡频率可在案。电容C1、C2可在案10~30PF之间选择,电容的大小对振荡频率有微小的影响,可起频率微调作用,本次设计取30PF。内部时钟电路如图3.3所示:
图3.3
内部时钟电路
3.4
下载器电路的设计
该部分电路主要由芯片MAX232组成,主要完成与主电路的连接并进行程序的下载工作。MAX232是一种双组驱动器/接收器,片内含有一个电容性电压发生器以便在单5V电源供电时提供EIA/TIA-232-E电平。每个接收器将EIA/TIA-232-E电平输入转换为5V
TTL/CMOS电平。这些接收器具有1.3V的典型门限值及0.5V的典型迟滞,而且可以接收±30V的输入。每个驱动器将TTL/CMOS输入电平转换为EIA/TIA-232-E电平。MAX232的工作温度范围为0℃至70℃,MAX232I的工作温度范围为-40℃至85℃。
3.4.1
MAX232的特点如下:
(1)单5V电源工作
(2)TM
(3)LinBiCMOS
工艺技术
(4)两个驱动器及两个接收器
(5)±30V输入电平
(6)低电源电流:典型值是8mA
(7)符合甚至优于ANSI标准EIA/TIA-232-E及ITU推荐标准V.28
(8)可与Maxim公司的MAX232互换
(9)ESD保护大于MIL-STD-883(方法3015)标准的2000
3.4.2
MAX232各管脚的工作条件如表3.2
表3.2
MAX232各管脚的工作条件
管脚名称
工作条件
VCC
电源电压
4.5V
T1IN、T2IN
高电平输入电压
T1IN、T2IN
低电平输入电压
R1IN、R2IN
接收器输入电压
3.4.3
MAX232引脚排列
图3.4
MAX232引脚图
3.4.4基于MAX232电路编程器电路图
MAX232是电荷泵芯片,可以完成两路TTL/RS-232电平的转换,它的的9、10、11、12引脚是TTL电平端,用来连接单片机的。
图3.5
MAX232芯片应用电路
MAX232在单片机控制系统中获得正负电源,我们时常要用到数/模(D/A)或者模/数(A/D)变换以及其它的模拟接口电路,这里面要经常用到正负电源,例如:
9V,-9V;
12V,-12V.这些电源仅仅作为数字和模拟控制转换接口部件的小功率电源。
在控制板上,我们有的只是5V电源,可又有很多方法获得非5V电源。
1.外接;2.DC-DC变换。按照芯片的推荐电路,取振荡电容为uF的时候,若输入为5V,输出可以达到-14V左右,输入为0V,输出可以达到14V,在扇出电流为20mA的时候,处处电压可以稳定在
12V和-12V.因此,在功耗不是很大的情况下,可以将MAX232的输出信号经稳压块后作电源使用。
图3.6
下载器原理图
第四章
系统的软件设计
软件是该LED显示屏控制系统的重要组成部分,在系统的软件设计中我们采用了模块化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。系统软件主要包括主程序、显示子程序、延时子程序及汉字点阵码的生成等。
4.1
主程序
本系统CPU(单片机STC89C58RD+)的主要功能就是实现LED显示屏上字样的移位、显示、数据的读取等功能。系统主程序开始以后首先是对系统环境初始化。然后选择显示的内容,包括汉字和图形,如果选择汉字,摇动LED显示屏,则循环显示出“黑龙江”三个字;如果选择图形,则循环显示CPU内所存储的图形。其主程序流程如图4.1所示:
开始
系统初始化
显示汉字
显示图形
判断显示汉字还是图形
Y
N
图4.1
主程序流程图
4.2
显示子程序
显示子程序disp的作用是定义P0口为列码上半部分的输出口,
P2口为此列码下半部分的输出口,当P0、P2口输出为低电平时,发光二极管亮,当输出为高电平时,发光二极管灭。取模方式为纵向取模,其显示的顺序为自上向下、自左向右显示,即先显示最左边的一列,每显示16列为一个字,延时后再显示下一个,显示完毕后再返回第一个字继续循环,直到电源断开为止。显示子程序流程如图4.2所示:
N
进入disp
定义P0、P2口
循环扫描16列,显示1个汉字
延时
循环次数≤3
返回
Y
图4.2
显示子程序流程图
4.3
汉字点阵码的生成
在手摇式动态显示系统的软件设计中,通常要将所显示的汉字或图形转换成二进制代码并存储在内部存储器中,系统通过扫描逐一送到LED显示屏显示。简单的字符或图形的二进制编码容易写出,若是复杂的图形或符号,用手工来完成编码是十分困难的,需要使用专用的字模提取软件。在本次设计中我们使用Zimo221字模提取软件,利用该软件可以很容易地写出需要显示的字符和图形的全部编码,并有多种格式可供选择,该软件不仅可取汉字的字模,也可对图像取模。
Zimo221字模提取软件支持图像、文本、自定义等多种输入。软件界面分操作区、LED显示模拟屏、输入/显示区等。操作区包含了所有的控制命令菜单,调入的图形或字符将在LED模拟屏中显示,经软件转换后的代码显示在显示框中。Zimo221字模提取软件的使用如下。
4.3.1
汉字取模
在文字输入文本框中输入要显示的文本信息,单击鼠标右键选择“选择字体”,因为本次设计的是16×16LED点阵显示屏,所以字体选择“宋体,小四”显示效果最佳。在操作区中选择“参数设置”,单击“其他选项”,在取模方式一栏中选择“纵向取模”,其他取系统默认参数。
文字输入文本框中输入“黑龙江”3个汉字后,按Ctrl+Enter键,“黑龙江”这3个字便出现在LED显示模拟屏中,单击“取模方式”,在这一栏中选择“C51格式”,就能生成汉字的点阵码。汉字取模如图4.3所示:
图4.3
汉字取模
4.3.2
图形取模
在Word文档的自选图形一栏中选择“五角星”图形,将这个图形剪切到画图板中并保存,然后将这幅图片用图形处理软件打开,并另存为单色位图文件,图像的大小应根据点阵屏大小来调整像素,如16×16的点阵屏其像素应调整为小于16×16。文件名可另取,如23.bmp。启动Zimo221软件,单击“打开图像图标”的快捷按钮。打开23.bmp图像。在“取模方式”菜单中,选择“C51格式”,就能在下方的“点阵数据输出区”生成数据。图形取模如图4.4所示:
图4.4
图形取模
4.4
Keil
软件的介绍
Keil
IDE(Uvision2)集成开发环境是Keil
Software
Inc/Keil
Elektronik
GmbH开发的基于MCS
8051内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具,可以完成从工程建立和管理、编译、连接、目标代码的生成到软件仿真等完整的开发流程。尤其是C语言编译工具在生产代码的准确性和效率方面达到了较高的水平,而且可以附加灵活的控制选项,在开发项目时是非常理想的工具。
Keil
软件的开发流程:
(1)
建立工程;
(2)
为工程选择目标器件,例如选择Philips公司的P89C58;
(3)
设置工程的配置参数;
(4)
打开/建立程序文件;
(5)
编译和连接工程;
(6)
纠正程序中的书写和语法错误并重新编译、连接;
(7)
将程序文件生成HEX文件,使用STC-ISP-V3.97软件将程序下载到STC89C58RD+单片机中,STC-ISP-V3.97软件界面如图4.5所示:
图4.5
STC-ISP-V3.97软件界面
第五章
系统调试与测试结果分析
单片机应用系统的调试是系统开发的重要环节。当系统软硬件设计后,首先要进行硬件的组装工作,然后便可进入单片机应用系统调试阶段。系统调试的任务是要查出硬、软件设计中存在的错误及缺陷,以便修改设计,最终达到要求。根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。
5.1
系统的调试
◎调试工具及功能:
(1)数字式万用表——硬件电路调试过程中,主要用于测通断、两点间阻值、测试点的电压等。
(2)示波器——测试信号各参数,估计信号非线性失真。
(3)PC机——通过对应用软件的汇编、连接执行来验校程序。
◎各部分调试:
通电前应认真检查焊接质量,确认无短路、断路、焊接等故障。由于本机电路比较简单,其功能主要靠软件完成,因此,一般情况下无需调试即可正常工作。本机的工作电源由4节AA电池提供。
5.2
测试结果分析
此次系统设计结果较好,达到了任务书要求,16个发光二极管亮度适合,LED显示屏能很好的显示信息,通过按钮可实现图文的转换且视觉效果非常理想。
在软件设计方面,我们采用了模块化的C语言编程,使得程序的可读性较高,便于检查更改。其中在确定延迟时间上需根据实际进行调节(其中我们分别试用了delay(60)/
delay(300)/delay(320)三种情况),以delay(320)效果最好。而在程序设计的过程中,取模软件也给我们带来很大的便利,大大简化了字模的提取过程的繁杂。
在硬件方面,我们自己设计制作了电路板外形。在焊接过程中,要注意避免短路和虚焊。尤其要注意STC89C58RD+I/O口的管脚顺序(P0.0~P0.7,P2.7~P2.0),防止部分反接。
参考文献
【l】
谢子殿.范立南.单片机原理及应用教程.北京大学出版社.
2006年
【2】
李光飞
.单片机C程序设计实例指导.北京航空航天大学出版社.
2005年
【3】
张大明.单片机控制实训指导及综合应用实例.
机械工业出版社.
2007年
【4】
周兴华.单片机智能化产品C语言设计实例详解.
北京航空航天大学出版社.
2006年
【5】
蔡明文.冯先成.单片机课程设计.华中科技大学出版社.
2007年
【6】
张义和.陈敌北.例说8051.
人民邮电出版社.
2006年
【7】
胡汉才.单片机原理及接口技术.清华大学出版社.
2006年
【8】
魏泽鼎.单片机应用技术与实例.电子工业出版社.2005年
附录
1
1.实物图
2.原理图
3.PCB板
附录
2
源程序清单:
#include
#include
#include
#include
char
code
HH0[]={/*--
文字:
黑
--*/
/*--
宋体12;
此字体下对应的点阵为:宽x高=16x16
--*/
0x00,0x00,0xFC,0x84,0xA4,0x9C,0x84,0xFF,0x8C,0x94,0xA4,0x84,0xFC,0x00,0x00,0x00,0x22,0x2C,0xA0,0xA0,0xA8,0xA6,0xA0,0xE0,0xA8,0xA6,0xA0,0xA0,0xA0,0x28,0x26,0x00,};
char
code
HH1[]={/*--
文字:
龙
--*/
/*--
宋体12;
此字体下对应的点阵为:宽x高=16x16
--*/
0x00,0x08,0x08,0x08,0x08,0x08,0xFF,0x08,0x0F,0x48,0x38,0x0B,0x08,0x08,0x08,0x00,0x00,0x02,0x04,0x08,0x30,0xC0,0x08,0x10,0xFC,0x42,0x82,0x02,0x02,0x02,0x0E,0x00,};
char
code
HH2[]={/*--
文字:
江
--*/
/*--
宋体12;
此字体下对应的点阵为:宽x高=16x16
--*/
0x08,0x06,0x80,0x63,0x0C,0x00,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x00,0x00,0x20,0x20,0x7E,0x80,0x04,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x04,0x00,};
char
code
DD0[]={/*--
调入了一幅图像:C:/Documents
and
Settings/JUJUMAO.COMPUTER/桌面/23.BMP
--*/
/*--
宽度x高度=16x16
--*/
0x0C,0x0C,0x0E,0x0F,0x0F,0x3D,0xF8,0xF8,0x3D,0x0F,0x0F,0x0E,0x0C,0x0C,0x00,0x00,0x00,0x00,0x10,0xF0,0xF0,0x60,0xC0,0xC0,0x60,0xF0,0xF0,0x10,0x00,0x00,0x00,0x00,};
char
code
DD1[]={/*--
调入了一幅图像:C:/Documents
and
Settings/JUJUMAO.COMPUTER/桌面/26.BMP
--*/
/*--
宽度x高度=16x16
--*/
0x00,0x1C,0x7E,0x67,0x63,0x41,0x60,0x60,0x60,0x60,0x41,0x63,0x67,0x7E,0x1C,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x70,0x38,0x38,0x70,0xC0,0x80,0x00,0x00,0x00,0x00,};
delay()
{
int
i;
for(i=0;i<320;i++);
}
disp0()
{
char
idata
i,k;
for(i=0;i<16;i++)
{
k=HH0[i];
k=~k;
/
取反*
/
P0=k;
/P0口输出上半部列码
/
k=HH0[i+16];
k=~k;
P2=k;
/P2口输出下半部列码
/
delay();
/延时
/
}
for(i=0;i<16;i++)
{
k=HH1[i];
k=~k;
P0=k;
k=HH1[i+16];
k=~k;
P2=k;
delay();
}
for(i=0;i<16;i++)
{
k=HH2[i];
k=~k;
P0=k;
k=HH2[i+16];
k=~k;
P2=k;
delay();
}
}
disp1()
{
char
idata
i,k;
for(i=0;i<16;i++)
{
k=DD0[i];
k=~k;
P0=k;
k=DD0[i+16];
k=~k;
P2=k;
delay();
}
for(i=0;i<16;i++)
{
k=DD1[i];
k=~k;
P0=k;
k=DD1[i+16];
k=~k;
P2=k;
delay();
}
}
sbit
T11=P1^0;
sbit
T21=P1^1;
void
main()
{
while(1)
{
if
(!T11)
{
disp0();
}
else
if(!T21)
{
disp1();
}
}
}
28