LED电子显示屏的设计报告书要点(共18页).doc
精选优质文档-倾情为你奉上清远职业技术学院课程设计报告课程性质:专业必修课课程名称:单片机原理与应用(二)课程代码:任课教师:李祖明LED电子显示屏的设计姓 名 黄婉姬 学 号 班 级 07电子(2)班 院 系 机电工程学院 专 业 电子信息工程技术 课程设计报告提交时间:2009年6月20日1616点阵LED电子显示屏的设计引言 LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。在实际应用中的显示屏由于成本和可靠性的因素常采用一种称为动态扫描的显示方法。本文设计的是一个室内用1616的点阵LED图文显示屏,图形或文字显示有静止、移入移出等显示方式。1.背景介绍1.1 LED及LED显示屏 LED 就是Light Emitting Diode(发光二极管)的缩写。在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。发光二极管是由p 型和n 型半导体组成的二极管。在LED 的p - n 结附近,n 型材料中多数载流子是电子,p 型材料中多数载流子是空穴。p -n 结上未加电压时构成一定的势垒,当加正向偏压时,在外电场作用下,p 区的空穴和n 区的电子就向对方扩散运动,构成少数载流子的注入,从而在p - n结附近产生导带电子和价带空穴的复合,同时释放出相对应的能量h(h 为普朗克常数,为光子频率)而发光。该能量相当于半导体材料的带隙能量Eg(Ev) ,其与发光波长(nm) 的关系为= 1239. 6PEg。LED显示屏是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。LED显示屏分为图文显示屏和视频显示屏,均由LED矩阵块组成。图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况。LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。它的优点:亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。3.功能要求设计一个室内用1616的点阵LED图文显示屏,要求在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。4.方案实现 从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在的位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。1616的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,1616的点阵需要256/8=32个锁存器。这个数字很庞大,因为我们仅仅是1616的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。具体就1616的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并列传输的方案是不可取的。采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一列数据。为了达到重叠处理的目的,列数据的显示就需要具有所存功能。经过上述分析,就可以归纳出列驱动器电路应具有的功能。对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。图1为显示屏电路实现的结构框图列驱动器 单片机电源 行驱动器LED显示点阵 图1,显示屏电路框图4.1 系统硬件电路的设计硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路三部分。4.1.1单片机系统及外围电路单片机采用MSC-51或其兼容系列芯片,采用24MHZ或更高频率晶振,以获得较高的刷新频率,时期显示更稳定。单片机的串口与列驱动器相连,用来显示数据。P1口低4位与行驱动器相连,送出行选信号;P1.5P1.7口则用来发送控制信号。P0口和P2口空着,在有必要的时候可以扩展系统的ROM和RAM。1616的点阵显示屏的硬件原理图如图2所示(在附录A)。4.1.2列驱动电路列驱动电路有集成电路74HC595构成。它具有一个8位串入并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行列数据的同时,传送下一行的列数据,既达到重叠处理的目的。74HC595的外形及内部结构如图3所示。它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。引脚SI是串行数据的输入端。引脚SCK是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SI的下一个数据打入最低位。移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端。RCK是输出锁存器的打入信号,其上升沿将移位寄存器的输出打入输出锁存器。引脚G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高组态。SCLR信号是移位寄存器清零输入端,当其为低时移位寄存器的输出全部为零。由于SCK和RCK两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰。芯片的输出端为QAQH,最高位QH可作为多片74HC595级联应用时,向上一级的级联输出。但因为QH受输出锁存器的打入控制,所以还从输出锁存器前引出QH,作为与移位寄存器完全同步的级联输出。 74HC595 QB 1 16 Vcc QC 2 15 QA QD 3 14 SI QE 4 13 G QF 5 12 RCK QG 6 11 SCK QH 7 10 SCLR GND 8 9 QH 图3. 74HC595外形及引脚4.1.3行驱动器单片机P1口低4位输出的行号经4/16线译码器74LS154译码后生成16条行选通信号线,再经过驱动器驱动对应的行线。一条行线上要带动16列的LED进行显示,按每一LED器件20MA电流计算,16个LED同时发光时,需要320MA电流,选通三极管8550作为驱动管可满足要求。4.2.系统程序的设计显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。根据软件分层次设计的原理,可以把显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。显示驱动器程序由定时器T0中断程序实现。系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用C语言编写。4.2.1显示驱动程序显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下: 刷频率(帧频)=1/16×T0溢出率 =1/16×f/12(65536-t) 其中f位晶振频率,t为定时器T0初值(工作在16位定时器模式)。然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。图4为显示驱动程序(显示屏扫描函数)流程图。进入中断定时器赋初值 读取行号并增加1 送新行显示数据 消 隐 切换显示数据 发送新行号,打开显示 退出中断 图 4 显示驱动程序流程图4.2.2系统主程序本文设计的系统软件能使系统在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后以“卷帘出”效果显示图形,停留约3s;接着向上滚动显示“我爱单片机”这5个汉字及一个图形,然后以“卷帘入”效果隐去图形。由于单片机没有停机指令,所以可以设置系统程序不断的循环执行上述显示效果。单元显示屏可以接收来自控制器(主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容。图5是系统主程序流程图。开始 系统初始化 “卷帘出”显示效果 “上滚屏”显示效果 “左跑马”显示效果 “卷帘入”显示效果 图 5 系统主程序流程图5性能分析与总结5.1 性能分析LED显示屏硬件电路只要硬件质量可靠,引脚焊接正确,一般无需调试即可 正常工作。软件部分需要调试的主要有显示屏刷新频率及显示效果两部分。显示屏刷新率由定时器T0的溢出率和单片机的晶振频率决定,表5.1给出了实验调试时采用的频率及其对应的定时器T0初值。 表5.1 显示平刷新率与T0初值关系表(24MHz晶振)刷新率255062.57585100120T0初值0Xec780Xf63C0Xf8300xF97E0XFA420XFB1E0xFBEE从理论上来说,24Hz以上的刷新频率就能看到稳定的连续的显示,刷新率越高,显示越稳定,同时刷新频率越高,显示驱动程序占用的CPU时间越多。试验证明,在目测条件下刷新频率40Hz一下的画面看起来闪烁较严重,刷新频率50Hz以上的已基本察觉不出画面的闪烁,刷新频率达到85Hz以上时再增加画面闪烁没有明显的改善。5.2收获、体会、建议通过这个电路设计实验,我们体会到原来我们开始以为十分简单的电路竟然使我们失败了数次之后才获得成功。购买元件时我们了解了市场的行情,为以后进行实验购买元件打下了基础。而电路焊接又进一步提高了我们的动手能力,让我们认识到,理论和实践的结合,并不是一件简单的事。这次实验使我们认识到,做任何事都要有一丝不苟的精神,不能马马虎虎。另外,动手能力不同于一般的课堂学习,是必须经过一个比较艰苦的训练过程。是提高我们水平的可行方法之一。参考文献1 楼然苗、李光飞 .单片机课程设计指导北京航空航天大学出版社,20072 魏立峰、王宝兴.单片机原理与应用技术.北京大学出版社,2006附件 .元件列表名称型号规格数量单片机AT89C521LED显示屏8*8点阵16集成芯片74LS5958集成芯片74LS1541电阻47064电阻1K16三极管855016电解电容10uF1晶体振荡器12MHz1附录A 1616的点阵LED图文显示屏的硬件原理图附录 B 主要汇编程序清单 /以下程序能实现多个16*16LED屏的多个字符显示,显示方式有整行上移、帘入帘出、左移、右移/ /*- 多个16*16LED显示演示程序 MCU AT89C52 XAL 24MHz 2005年5月18日 /以下程序能实现多个16*16LED屏的多个字符显示,显示方式有整行上移、帘入帘出、左移、右移/#include "reg52.h"#define BLKN 8 /列锁存器数(=LED显示字数*2)#define TOTAL 20 /待显示字个数,本例共20个#define CONIO P1 /显示控制口sbit G=CONIO7; /CONIO.7为154译码器显示允许控制信号端口,0时输出,1时输出全为高阻态.sbit CLK=CONIO6; /CONIO.6为595输出锁存器时钟信号端,1时输出数据,从1到0时锁存输出数据.sbit SCLR=CONIO5; /CONIO.5为595移位寄存器清零口,平时为1,为0时,输出全为0.unsigned char idata dispram(BLKN/2)*32=0; /显示区缓存,四字共4*32单元/*字模表*/unsigned char code Bmp32=0xFF,0xF7,0xF6,0x03,0x02,0xF7,0xEE,0xD7,0xEE,0xD7,0xEE,0xD7,0xEE,0xD7,0x82,0xB7,0xEE,0xB7,0xEE,0xB7,0xEF,0xBF,0xE3,0x5F,0x0F,0x5F,0xBE,0xDD,0xFD,0xDD,0xF3,0xE1,/*- 文字: 现 -*/0xFD,0xFF,0xFD,0xFF,0xFD,0xFB,0x00,0x01,0xFB,0xFF,0xFB,0xBF,0xF7,0xBF,0xF7,0xAF,0xEC,0x07,0xCF,0xBF,0xAF,0xBF,0x6F,0xBF,0xEF,0xBF,0xEF,0xBB,0xE8,0x01,0xEF,0xFF,/*- 文字: 在 -*/0xEF,0xBF,0xEF,0xBF,0xDD,0xBB,0x80,0x81,0xBD,0x7B,0xBC,0xFB,0xBD,0xFB,0xBD,0x7B,0x81,0x9B,0xBD,0xDB,0xBD,0xFB,0xBD,0xFB,0xBD,0xFB,0x81,0xFB,0xBD,0xD7,0xFF,0xEF,/*- 文字: 的 -*/0xDF,0x7F,0xDF,0xB7,0xD8,0x03,0xDF,0xFF,0xDE,0xEF,0x07,0x5F,0xDF,0xFB,0xD0,0x01,0xDF,0xF7,0xDC,0x03,0xDD,0xF7,0xDD,0xF7,0xC5,0xF7,0x1D,0xF7,0xBC,0x07,0xFD,0xF7,/*- 文字: 培 -*/0xFE,0xFB,0xBE,0xFB,0xCE,0xDB,0xEE,0xDB,0xFE,0xDB,0xFE,0xDB,0x0E,0xDB,0xEE,0xDB,0xEE,0xDB,0xEE,0xDB,0xEE,0xDB,0xEE,0xDB,0xE9,0xDB,0xE5,0xFB,0xEB,0xFB,0xF7,0xFB,/*- 文字: 训 -*/0xFE,0xFF,0xFE,0xFF,0xFE,0xF7,0x80,0x03,0xFE,0xFF,0xFE,0xFF,0xFE,0xFB,0x00,0x01,0xFC,0x7F,0xFA,0xBF,0xF6,0xDF,0xEE,0xEF,0xDE,0xF1,0xBE,0xFB,0xFE,0xFF,0xFE,0xFF,/*- 文字: 未 -*/0xFE,0xFF,0xFE,0xFF,0xFE,0xF7,0x80,0x03,0xFE,0xFF,0xDE,0xEF,0xE6,0xCF,0xF6,0xBB,0x00,0x01,0xFC,0x7F,0xFA,0xBF,0xF6,0xCF,0xCE,0xE1,0x3E,0xFB,0xFE,0xFF,0xFE,0xFF,/*- 文字: 来 -*/0xEF,0xBF,0xEF,0xBF,0xDD,0xBB,0x80,0x81,0xBD,0x7B,0xBC,0xFB,0xBD,0xFB,0xBD,0x7B,0x81,0x9B,0xBD,0xDB,0xBD,0xFB,0xBD,0xFB,0xBD,0xFB,0x81,0xFB,0xBD,0xD7,0xFF,0xEF,/*- 文字: 的 -*/0xFE,0xFF,0xEE,0xDF,0xEE,0xEF,0xDE,0xFB,0x80,0x01,0xFD,0xFF,0xFD,0xFF,0xF8,0x0F,0xF9,0xEF,0xF5,0xDF,0xF6,0xBF,0xEF,0x7F,0xDE,0xBF,0xBD,0xCF,0x73,0xF1,0xCF,0xFB,/*- 文字: 发 -*/0xFF,0xF7,0xC0,0x03,0xDF,0xF7,0xC0,0x07,0xDD,0xDF,0xDD,0xDF,0xD0,0x07,0xDD,0xDF,0xDD,0xDB,0xC0,0x01,0xDB,0x77,0xDB,0xAF,0xDB,0xCF,0xBA,0xF1,0x79,0xFB,0xFB,0xFF,/*- 文字: 展 -*/0xFE,0xFF,0xFE,0xFF,0xFD,0x7F,0xFB,0xBF,0xF7,0xDF,0xED,0xEF,0xDE,0x71,0x3F,0x7B,0xFF,0xFF,0xE0,0x0F,0xFF,0xEF,0xFF,0xDF,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0xFE,0xFF,/*- 文字: 今 -*/0xFF,0xF7,0x80,0x03,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFB,0x00,0x01,0xFE,0xFF,0xFD,0x7F,0xFD,0x7F,0xFB,0xBF,0xFB,0xBF,0xF7,0xDF,0xEF,0xEF,0xDF,0xF1,0x3F,0xFB,/*- 文字: 天 -*/0xEF,0xBF,0xEF,0xBF,0xDD,0xBB,0x80,0x81,0xBD,0x7B,0xBC,0xFB,0xBD,0xFB,0xBD,0x7B,0x81,0x9B,0xBD,0xDB,0xBD,0xFB,0xBD,0xFB,0xBD,0xFB,0x81,0xFB,0xBD,0xD7,0xFF,0xEF,/*- 文字: 的 -*/0xF7,0xBF,0xF7,0xBF,0x80,0xBF,0xF6,0xBB,0xF5,0x81,0x00,0x77,0xF7,0xF7,0xE0,0xB7,0xDD,0xAF,0x33,0xAF,0xF7,0xDF,0xF1,0xAF,0x87,0xAF,0xF7,0x77,0xD6,0xF1,0xED,0xFB,/*- 文字: 教 -*/0xFD,0xFF,0xFE,0xFB,0x00,0x01,0xFB,0xFF,0xF7,0xEF,0xC0,0x07,0xFF,0xF7,0xE0,0x0F,0xEF,0xEF,0xE0,0x0F,0xEF,0xEF,0xE0,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xAF,0xEF,0xDF,/*- 文字: 育 -*/0xFF,0xFB,0xFB,0x01,0x81,0x7B,0xBB,0x7B,0xBB,0x7B,0xBB,0x03,0x83,0x7B,0xBB,0x7B,0xBB,0x7B,0xBB,0x03,0x83,0x7B,0xBB,0x7B,0xFE,0xFB,0xFE,0xFB,0xFD,0xEB,0xFB,0xF7,/*- 文字: 明 -*/0xFF,0xF7,0x80,0x03,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFB,0x00,0x01,0xFE,0xFF,0xFD,0x7F,0xFD,0x7F,0xFB,0xBF,0xFB,0xBF,0xF7,0xDF,0xEF,0xEF,0xDF,0xF1,0x3F,0xFB,/*- 文字: 天 -*/0xEF,0xBF,0xEF,0xBF,0xDD,0xBB,0x80,0x81,0xBD,0x7B,0xBC,0xFB,0xBD,0xFB,0xBD,0x7B,0x81,0x9B,0xBD,0xDB,0xBD,0xFB,0xBD,0xFB,0xBD,0xFB,0x81,0xFB,0xBD,0xD7,0xFF,0xEF,/*- 文字: 的 -*/0xFF,0x7F,0xFF,0x5F,0xFF,0x6F,0xC0,0x03,0xDF,0x7F,0xDF,0x7F,0xDF,0x7B,0xC1,0xBB,0xDD,0xB7,0xDD,0xB7,0xDD,0xCF,0xD5,0xDF,0xDB,0x9D,0xBF,0x6D,0x7E,0xF5,0xFF,0xF9,/*- 文字: 成 -*/0xFF,0x7F,0xFF,0x7F,0xF7,0x7F,0x03,0x7F,0xEF,0x7B,0xE8,0x01,0xEF,0x7B,0xEF,0x7B,0xEF,0x7B,0xEF,0x7B,0xE2,0xFB,0x0E,0xFB,0xBE,0xFB,0xFD,0xBB,0xFB,0xD7,0xF7,0xEF,/*- 文字: 功 -*/;/*字模表*/unsigned char code Bmp132= 0xF9,0xBF,0xC7,0xAF,0xF7,0xB7,0xF7,0xB7,0xF7,0xBF,0x00,0x01,0xF7,0xBF,0xF7,0xB7, 0xF1,0xD7,0xC7,0xCF,0x37,0xDF,0xF7,0xAF,0xF6,0x6D,0xF7,0xF5,0xD7,0xF9,0xEF,0xFD /*我*/, 0xFF,0x07,0xC0,0x6F,0xED,0xEF,0xF6,0xDF,0xC0,0x01,0xDD,0xFD,0xBD,0xFF,0xC0,0x03, 0xFB,0xFF,0xF8,0x0F,0xF3,0xDF,0xF4,0xBF,0xEF,0x3F,0x9C,0xCF,0x73,0xF1,0xCF,0xFB /*爱*/, 0xF7,0xDF,0xF9,0xCF,0xFB,0xBF,0xC0,0x07,0xDE,0xF7,0xC0,0x07,0xDE,0xF7,0xDE,0xF7, 0xC0,0x07,0xDE,0xF7,0xFE,0xFF,0x00,0x01,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF /*单*/, 0xFF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBB,0xE0,0x01,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF, 0xE0,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xDF,0xEF,0xDF,0xEF,0xBF,0xEF,0x7F,0xEF /*片*/, 0xEF,0xFF,0xEF,0x07,0xEF,0x77,0x01,0x77,0xEF,0x77,0xEF,0x77,0xC7,0x77,0xCB,0x77, 0xAB,0x77,0xAF,0x77,0x6E,0xF7,0xEE,0xF5,0xED,0xF5,0xED,0xF5,0xEB,0xF9,0xEF,0xFF /*机*/, 0xF8,0x3F,0xE7,0xCF,0xDF,0xF7,0xBF,0xFB,0xB3,0x9B,0x73,0x9D,0x7F,0xFD,0x7F,0xFD, 0x6F,0xED,0x67,0xCD,0xB3,0x9B,0xB8,0x3B,0xDF,0xF7,0xE7,0xCF,0xF8,0x3F,0xFF,0xFF /*:)*/;/*延时函数(约1毫秒)*/void delay(unsigned int dt)register unsigned char bt;for (; dt; dt-) for (bt=0; bt<255; bt+);/*主函数 */void main(void) register unsigned char i,j,k,l,q,w;/初始化SCON = 0x00; /串口工作模式0:移位寄存器方式TMOD = 0x01; /定时器T0工作方式1:16位方式TR0 = 1; /启动定时器T0CONIO = 0x3f; /CONIO端口初值IE = 0x82; /允许定时器T0中断/while (1) delay(2000); /2秒/第一种显示效果:卷帘出显示笑脸图案 for (i=0;i<32;i+) for(q=0;q<BLKN/2;q+) disprami+q*32=Bmp15i; if (i%2) delay(120); delay(1000);/卷帘出显示文字,每次字数为BLKN/2,共显示TOTAL*2/BLKN次for (w=0;w<TOTAL*2/BLKN;w+)for (i=0;i<32;i+) for(q=0;q<BLKN/2;q+) disprami+q*32=Bmpq+w*BLKN/2i; if (i%2) delay(120); delay(3000);/第一种显示效果:卷帘出显示笑脸图案 for (i=0;i<32;i+) for(q=0;q<BLKN/2;q+) disprami+q*32=Bmp15i; if (i%2) delay(120); delay(1000);/第二种显示效果:向上滚屏,每次BLKN/2个字 for (i=0; i<TOTAL*2/BLKN; i+) for (j=0; j<16; j+) for (k=0; k<15; k+) for(q=0;q<BLKN/2;q+) dispramk*2+q*32 = dispram(k+1)*2+q*32;dispramk*2+1+q*32 = dispram(k+1)*2+1+q*32; for(q=0;q<BLKN/2;q+) dispram30+q*32 = Bmpq+i*BLKN/2j*2;dispram31+q*32 = Bmpq+i*BLKN/2j*2+1; delay(100); delay(3000);/滚动暂停 /第一种显示效果:卷帘出黑屏 for (i=0;i<32;i+) for(q=0;q<BLKN/2;q+) disprami+q*32=0xff; if (i%2) delay(120); delay(1000);/第三种显示效果:左移出显示 for (i=0; i<TOTAL; i+) for (j=0; j<2; j+) for (k=0; k<8; k+) for (l=0; l<16; l+) for(q=0;q<BLKN/2;q+) dispraml*2+q*32 = dispraml*2+q*32<<1 | dispraml*2+1+q*32>>7; if(q=BLKN/2-1) dispraml*2+1+q*32 = dispraml*2+1+q*32<<1 | Bmpil*2+j>>(7-k); else dispraml*2+1+q*32 = dispraml*2+1+q*32<<1 | dispraml*2+(q+1)*32>>7; delay(100); delay(3000);/第一种显示效果:卷帘出黑屏 for (i=0;i<32;i+) for(q=0;q<BLKN/2;q+) disprami+q*32=0xff; if (i%2) delay(120);