实验六 点阵LED的图形显示
6x6的点阵LED图文显示屏设计报告93

目录1.引言11.1.设计意义11.2.系统功能要求11.3.本组成员所做的工作12.方案设计13.硬件设计14.软件设计15.系统调试26.设计总结27.附录A;源程序28.附录B;作品实物图片29.参考文献216×16点阵LED室内电子显示屏的设计摘要:LED显示屏作为一种新型的显示器件,是由多个发光二极管按矩阵形式排列封装而成,通常用来显示时间、图文等信息。
本设计是基于ATS52单片机的16x16显示屏,其中包含了硬件、软件、调试等方案的设计。
此外、该设计只需简单的级联就能实现显示屏的拓展,但级联时要注意不要超过驱动负载范围。
关键词:Ats52;LED;单片机1引言1.1. 设计意义LED显示屏是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。
图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况。
LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
它的优点:亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。
1.2. 系统功能要求设计一个能显示16X16点阵图文LED显示屏,要求能显示图文或文字,显示图文或文字应稳定、清晰,图文或文字显示,以卷帘形式向上滚动显示。
1.3. 本组成员所做的工作方案原理论证:汪航,李如发,杜绍飞焊接:汪航调试:李如发设计报告:杜绍飞2方案设计2.1 总体设计2.2图文显示一般有静态和动态显示两种方案,静态方案虽然设计简单,但其使用的管脚太多,如本设计中16x16的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,16x16的点阵需要256/8=32个锁存器。
微机接口原理--实验一 LED点阵显示实验

② CPU与外设之间设臵接口的理由
CPU与外设两者的信号线不兼容,在信号线功能定义、逻 辑定义和时序关系上都不一致; 工作速度不一致,CPU速度高,外设速度低;
不通过接口,由CPU直接对外设操作实施控制,就会使 CPU处于应付与外设打交道之中,大大降低CPU效率;
若外部设备直接由CPU控制,也会使外设的硬件结构依赖 于CPU,对外设本身的发展不利。 因此,有必要设臵接口电路,作为CPU与外设之间的桥梁, 使数据信息传送之前能有“联络”,传递的信息有3方面内 容: 状态、数据及控制信息。
③选择F. 纯DOS模式&PURE DOS MODE ;
④选择盘符C盘,执行auto.bat批处理文件,启动BC; ⑤通过project菜单,打开已建立的工程文件,即可进行 程序的调试和运行等工作。 ⑥ 或者直接在DOS下,选择D盘,找到Led.EXE,执
行,即可在实验箱看到实验结果。
Borlandc 调试、运行界面
五、本单元实验要求
实验讲义中的程序1为 LED点阵显示汉字“实”的主程序; 本实验单元的要求为:
1. 修改该程序,让LED点阵从下至上滚动显示“实验室”字样;
2. 画出所编程序的流程图; 3. 给出程序修改部分的源代码;
4. 认真回答思考题,并附在实验报告里。
实验一 LED 点阵显示实验
主要内容
预备知识 锁存器(74LS273)的工作原理 汉字点阵取模的方法和原理 开发环境的设臵和使用方法
一、预备知识
1、计算机接口技术概述
① 意义
微机接口(Interface)就是微处理器CPU与各种外设之间的连接电路, 学习它需要掌握微机原理、汇编语言(或高级语言)程序设计、电 子技术、自控原理以及通信技术等多门课程的基础理论和专业知识。 随着集成电路集成化的不断增高,电子计算机向微型化方向发展, 已成为导弹、智能机器人、卫星等复杂系统必不可少的智能部件。 目前,微机不仅作为科学计算、实时监控、现代化通信和管理的手 段,而且也成为人类进行学习、看病、咨询、购物、旅游等生活服 务和娱乐的工具。 在微机系统中,微处理器的功能是通过外设得以实现,而外设与微 处理器之间的信息交换及通信又是靠接口来实现的。因此,微机应 用系统的研究和微机化产品的开发,从硬件角度来讲,就是接口电 路的研究和开发,接口技术已成为直接影响微机系统的功能和微机 推广应用的关键。微机的应用是随着外部设备的不断更新和接口技 术的发展而深入到各个领域的。因此,掌握微机接口技术就成为当 代的科技和工程技术人员应用微型计算机必不可少的基本技能。
点阵LED显示设计实验报告

点阵LED显示设计实验报告
姓名:刘根生1153530 贺晨曦
一:实验目的
1:了解实验器材以及学会连接实验电路和操作相关软件。
2:了解LED点阵显示的基本原理与方法。
3:掌握用CPU控制扫描的方式实现点阵LED显示器的字符,图形的显示。
4:掌握用单片机进行显式系统开发的方法。
5:掌握点阵汉字库的编码和从标准字库中提取汉字编码的方法。
二:实验内容与原理
三:实验结果
1:通过对取模字体的设置,确定点阵的大小为16*16;
2:通过对取模方式的设置,确定取点方式以及字节排序问题,使得汉字可以在显示屏上正常显示和阅读;
3:在软件的程序设计中,可以通过输出格式选出两种方式,可以为汇编格式或者C语言格式;
4:最终结果是在16*16点阵上显示我所在的学院,专业以及姓名,并且一一按顺序排布,字的长度覆盖16*16点阵,为“数学系统计专业刘根生贺晨曦”
四:实验体会
虽然本设计只使用16*16LED点阵,电路简单,但是已经包含了LED显示屏电路的基本原理和基本程序。
在设计过程中应该使
图形文字稳定,清晰无串扰。
图形或文字显示有静止或移入移出等显示方式,本系统具有硬件少,结构简单,容易操作,性能稳定可靠,成本低等特点,故具有非常大的科技以商业价值。
点阵LED上显示动态图形的设计与实现

相 应的 L D发 光。为了实现 动态 的效果 , E 在输入数据时 ,0口 P
作 为扫描信 号端 口, 2口作为数据信号端 口。 P
3 4 图形 显 示字 符 .
方案 :采 用 A 8 S 1 T 9 5 单片 机作为控制器 , 8×8点阵 L ED 显示器。充分利 用单片机 的 内部资 源并辅 助一些简 单外 围硬
套 系统 由控 制系统模块 、 驱动电路 , 显示 电路三部分组成。
:■
{
一
0 {
卜—。j
l
图 1
31 控 制 系 统模 块 .
主控制器采用 AT 9 5 , 8 S 1 它是 功能强大 、 低功耗 、 高性能 、
低 价位 的 C MOS8 位单 片机 , 可灵活应用 于各 种控制领域。单
件, 并利用 软件对其实施控 制。整个显示 系统有 电路简单 , 设计 方便 , 耗电较少 , 可靠性高等 特点。
3 系统硬 件 电路 的设计
如 图 1为 点 阵 L ED上 显 示 动 态 图 形 的总 电路 原 理 图 。整
一一■一
图 2 图形 显 示 运 行 状 态过 程 图
【 者简 介 】 作 蒋玲艳(9 5 )女, 17 一 , 广西全州人, 中学一级, 研究方向: 电子专业教育教学改革。
受控。 ( 要 求 显 示 的字 符 或 内 容 能 够 从 某 一 方 向 进行 移 动 , 2) 并 循环显示。
为了提高显示字符 的亮度 , 电路在 8 C 1的 P 本 95 0口与显 示 电路之间增加 了由八个 P P型组成的驱动放大 电路。 由于 N P O口的内部 电路结构是漏极 开路型 ,因此在输 出接上一个上
《嵌入式接口技术》实验报告4-LED点阵显示

六、教师评语
签名:
日期:
日期:
成绩
PINSEL0=0x00000000;
IO0DIR=0x3f;
while(1)
{
screen();
}
return 0;
}
效果图:
五、分析与讨论
这个实验和实验二数码管的实验差不多,只是把接受数据的一段换成了led点阵,所以难度不是很大,复一下实验二就能够做出来。
这个实验和实验二数码管的实验差不多,只是把接受数据的一段换成了led点阵,所以难度不是很大,复习一下实验二就能够做出来。
Senddata_Row(ROW[j+1]);
Senddata_Line(LINE[j+1]);
Delay(50);
Senddata_Row(0xff);
Senddata_Line(0x00);
j=j+2;
Delay(1000);
}
}
int main (void)
{// add user source code
#define DS2 0x08
#define SH_CP1 0x02
#define ST_CP1 0x04
#define SH_CP2 0x10
#define ST_CP2 0x20
uint32 const ROW[]={0xc3,0xdb,0x87,0xb7,0x0f,0x6f,0x87,0xb7,0xc3,0xdb,0xe1,0xed,0xf0,0xf6,0xe1,0xed};
else
IO0SET=DS1;
实验六 LED点阵显示驱动电路设计

实验六LED16×16 汉字图形点阵显示电路一、实验目的1、掌握计数器设计。
2、掌握点阵LED显示模块的工作原理。
3、掌握VHDL基本逻辑电路的综合设计应用。
二、实验原理LED 点阵的行为扫描选通信号、列为数据输入。
显示采用逐行扫描方式,数据端不断输入数据,行扫描按一定顺序逐行选通,扫描一个周期(16次)产生一帧画面。
图1以4×4 共阴LED 阵列为例,给出了LED 阵列的组合方式,行选通低有效,数据高有效;数据端输入数据,选通行根据相应数据亮灯,接着送入第二行数据,选通第二行,依次完成一屏的扫描。
图1 LED阵列结构所要显示的点阵数据可存储在可编程芯片中的存储器中,电路结构框图如下所示:点阵显示驱动电路CLK_ROW为点阵扫描时钟;DIR[1..0]为点阵显示方式控制信号,00时左滚动显示,01时右滚动显示,10时闪烁显示。
DZ[15..0]为16位点阵数据输出,ADD_SCAN[3..0]为点阵扫描地址输出。
ROM用于存储点阵数据。
三、实验设备计算机软件:Quartus IIEDA实验箱。
主芯片:EPM7128SLC84-15或EP1K100QC208-3。
下载电缆,导线等。
四、实验内容及步骤1、制作ROM初始化文件,即mif文件。
方法如下:首先使用字模软件提取要显示的点阵信息。
然后在quartusII中新建一个256×16的mif文件,并输入上面提取的点阵数据,如下图2、使用宏功能向导定制一个LPM_ROM,元件名为ROM_DOT,用于存储点阵数据. ROM 位宽16位,深度8位。
3、输入以下参考代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY test_wait ISPORT (CLK_ROW: IN STD_LOGIC;DIR : IN STD_LOGIC_VECTOR(1 DOWNTO 0 );DZ: OUT STD_LOGIC_VECTOR(15 DOWNTO 0);ADD_SCAN: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY test_wait;ARCHITECTURE ART OF test_wait ISCOMPONENT ROM_DOT ISPORT(ADDRESS : IN STD_LOGIC_VECTOR (7 DOWNTO 0);Q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0));END COMPONENT ROM_DOT;SIGNAL ADD_ROM: STD_LOGIC_VECTOR(7 DOWNTO 0);ATTRIBUTE KEEP : BOOLEAN;ATTRIBUTE KEEP OF ADD_ROM:SIGNAL IS TRUE;SIGNAL CNT0 : STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINPROCESS(CLK_ROW)BEGINIF CLK_ROW'EVENT AND CLK_ROW='1' THENCNT0<=CNT0+1;END IF;END PROCESS;ADD_SCAN<=CNT0(3 DOWNTO 0);PROCESS(CNT0,DIR) ISBEGINCASE DIR ISWHEN "00" => --左滚动ADD_ROM <= ("0000" & CNT0(3 DOWNTO 0)) + CNT0(15 DOWNTO 8); WHEN "01" => --右滚动ADD_ROM(3 DOWNTO 0) <=CNT0(3 DOWNTO 0)-CNT0(11 DOWNTO 8);IF CNT0(3 DOWNTO 0) < CNT0(11 DOWNTO 8) THENADD_ROM(7 DOWNTO 4) <= CNT0(15 DOWNTO 12) + 1;ELSEADD_ROM(7 DOWNTO 4) <= CNT0(15 DOWNTO 12) ;END IF;WHEN OTHERS => --闪烁显示ADD_ROM(3 DOWNTO 0) <= CNT0(3 DOWNTO 0);ADD_ROM(7 DOWNTO 4) <= CNT0(14 DOWNTO 11);END CASE;END PROCESS;U1: ROM_DOT PORT MAP(ADDRESS=>ADD_ROM,Q=>DZ);END ARCHITECTURE ART;4、选择恰当的CPLD/FPGA芯片,并按如下要求进行引脚锁定。
点阵-LED-显示设计实验

点阵L ED 显示设计实验4.13.1 实验目的1. 了解L E D点阵的基本结构。
2. 学习L E D点阵扫描显示程序的设计方法。
4.13.2 实验设备PC机一台,TD-PIT或TD-PIT++实验装置一套。
4.13.3 实验内容及原理(1)在T D-P I T上使用基本输入输出单元中的两路输出O A[7:0]、O B[7:0]分别控制点阵LED的行控制R[7:0]和列控制L[7:0]。
编写程序,使点阵LED的每一行和每一列依次循环显示。
(2)在T D-P I T上使用32 位I/O接口单元的 32 位输出O0~O31控制点阵LED单元R0~R15和L0~L15。
编写程序,在16×16 点阵上循环显示汉字。
8×8 点阵L ED相当于8×8 个发光管组成的阵列,对于共阳极L ED来说,其中每一行共用一个阳极(行控制),每一列共用一个阴极(列控制)。
行控制和列控制满足正确的电平就可使相应行列的发光管点亮。
实验平台上点阵L ED的管脚及相应的行、列控制位如图4-13-1 所示。
图4-13-1 点阵L ED管脚图共阳极和共阴极L ED的内部结构分别如图4-13-2 和4-13-3 所示。
I/O 接口单元............. ... ..............系 统 总 线图 4-13-2 共阳极 L ED 内部结构图图 4-13-3 共阴极 L ED 内部结构图TD-PIT 实验系统上的L E D 点阵单元使用了一片Φ 的共阳极L E D 点阵,利用基本输入 输出单元的两路输出分别控制点阵LED 的行和列,编写一个简单的程序,使每一行和每一列依 次循环显示。
实验参考接线如图 4-13-4 所示。
8×8 点阵显示实验参考接线图(Pit+)在TD-PIT 实验系统上的LED 点阵单元采用了4 片Φ 的共阴极LED 点阵组成 16×16 的点阵。
利用取字模软件得到汉字字符数组,设计 程序,在点阵上滚动显示“西安唐都科教仪器公司”。
点阵实验报告 LED点阵字符驱动显示实验报告_图文

点阵实验报告 LED点阵字符驱动显示实验报告_图文LED点阵字符驱动显示实验郑家贵110800533陈鹤110800524一实验目的1、掌握用CPU控制扫描的方法实现点阵LED显示器的字符、图形的显示。
2、掌握用单片机进行显示系统开发的方法。
3、了解大容量显示器点阵图形显示驱动扩展的一般方法。
二实验仪器单片机最小系统,电源模块,8*8点阵LED显示器四块,AT89C51单片机,74HC154N两片,HD74LSO4P一片,100?排阻等。
三设计思想用单片机的P1.0-P1.4和P2.0-P2.7共13个输出口来传递数据码,其中P1.0-P1.3分别接4线-16线译码器的四个数据输入端(A、B、C、D),P1.4作为片选输出信号,当P1.4为高电平时,U2工作,U3不工作;当P1.4为低电平输出,U2不工作,U3工作。
信号经过74HC154N译码后输出,再接至4片点阵LED的行信号输入端,而列信号由单片机的P2口直接控制。
1、系统框图:图1:16X16点阵硬件电路图2、单片机最小系统:上图是51单片机的最小系统。
将程序烧写进单片机后,便可以实现对硬件系统的控制。
3、LED点阵显示屏:上图即显示屏,是由4块8*8LED点阵级联,成为16*16 LED 点阵。
由单片机控制,按照程序中的控制命令和字模数据表输出相应汉字,同时按一定速率流动,显示多个汉字。
4、74HC154N工作原理:74HC154N为4线—16线译码器,可以实现地址的扩展。
引脚说明:1-11,3-17 :输出端(outputs)12:Gnd电源地(ground)18-19:使能输入端、低电平有效(enable inputs)20-23地址输入端(address inputs)24:VCC电源正(positive supply voltage)四设计的电路样品的照片如图下图所示五实验结论及心得:通过和同伴的一致努力,最终完成了整个电路的设计。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六点阵LED的图形显示一、实验目的1.了解点阵的显示原理,掌握数模软件的使用方法。
2.进一步巩固单片机定时和中断原理在C51程序设计中的运用。
二、实验内容通过对单片机编程来实现LED点阵的图形显示。
三、实验参考原理3.1 点阵LED的初步认识点阵LED显示屏作为一种现代电子媒体,具有灵活的显示面积(可分割、任意拼装)、高亮度、长寿命、数字化、实时性等特点,应用非常广泛。
一个数码管是8个LED组成,同理,一个8*8的点阵是由64个LED小灯组成。
图3-1就是一个点阵LED最小单元,一个8*8的点阵LED,图3-2是它的内部结构图。
图3-1 8*8点阵LED3-2 8*8点阵LED结构原理图点阵LED内部原理图如图3-2所示,图上蓝色方框外侧的就是点阵LED的引脚号,左侧的8个引脚是接的内部LED的阳极,上侧的8个引脚接的是内部LED的阴极。
如果9脚是高电平,13脚是低电平的话,最左上角的那个LED小灯就会亮,用程序来实现一下,特别注意,我们现在用的74HC138是原理图上的U4。
#include <reg52.h> //包含寄存器的库文件sbit LED = P0^0;sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;void main(){ENLED = 0;ADDR0 = 0;ADDR1 = 0;ADDR2 = 0;ADDR3 = 0; //74HC138开启三极管LED = 0; //点亮点阵的一个点while(1); //程序停止在这里}同样的方法,可以点亮点阵的任意一行,74HC 138的导通点阵所用的三极管的方法和数码管很类似,那我们现在来点亮第二行整行的LED。
#include <reg52.h> //包含寄存器的库文件sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;void main(){ENLED = 0;ADDR0 = 1;ADDR1 = 0;ADDR2 = 0;ADDR3 = 0; //74HC138开启三极管P0 = 0x00; //向P0写入0来点亮一行while(1); //程序停止在这里}从这里可以发现,讲一个数码管就是8个LED小灯,一个点阵是64个LED小灯。
同样的道理,还可以把一个点阵理解成8个数码管。
上节课掌握了6个数码管的同时显示方法,那8个数码管,也就是点阵的8行也应该轻轻松松了,先把这个点阵全部点亮。
#include <reg52.h> //包含寄存器的库文件sbit LED = P0^0;sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;void main(){ENLED = 0;ADDR3 = 0;TMOD = 0x01; //设置定时器0为模式1TH0 = 0xFC;TL0 = 0x67; //定时值初值,定时1msTR0 = 1; //打开定时器0EA = 1; //打开中中断ET0 = 1; //打开定时器0中断while(1); //程序停止在这里,定时器运行,等待定时器中断}void InterruptTimer0() interrupt 1 //中断函数{static unsigned char j = 0;TH0 = 0xFC; //溢出后进入中断重新赋值TL0 = 0x67;P0 = 0xFF; //消隐switch(j){case 0: ADDR0=0; ADDR1=0; ADDR2=0; j++; P0=0x00;break;case 1: ADDR0=1; ADDR1=0; ADDR2=0; j++; P0=0x00;break;case 2: ADDR0=0; ADDR1=1; ADDR2=0; j++; P0=0x00; break;case 3: ADDR0=1; ADDR1=1; ADDR2=0; j++; P0=0x00;break;case 4: ADDR0=0; ADDR1=0; ADDR2=1; j++; P0=0x00;break;case 5: ADDR0=1; ADDR1=0; ADDR2=1; j++; P0=0x00;break;case 6: ADDR0=0; ADDR1=1; ADDR2=1; j++; P0=0x00;break;case 7: ADDR0=1; ADDR1=1; ADDR2=1; j=0; P0=0x00;break;default: break;} //动态刷新}3.2 点阵LED图形显示LED小灯可以实现流水灯,数码管可以显示数字,那点阵LED就得来显示点花样了。
要显示花样的时候,往往要做出来一些小图形,这些小图形的数据要转换到我们的程序当中去,这个时候就需要取模软件。
来给大家介绍一款简单的取模软件,这种取模软件在网上都可以下载到,大家来了解一下如何用,先看一下操作界面,如图3-3所示。
图3-3 字模提取软件界面鼠标点一下“新建图形”,根据我们板子上的点阵,把宽度和高度分别改成8,然后点确定,如图3-4所示。
图3-4 新建图像我们点左侧的“模拟动画”菜单,点击“放大格点”选项,一直放大到最大,就可以在8*8的点阵图形中用鼠标填充黑点,就可以来画图形,如图3-5所示。
图3-5 字模提取软件画图经过我们一番设计,画出来一个心形图形,并且填充满,最终出现我们想要的效果图,如图3-6所示。
图3-6 字模软件心形显示由于取模软件是把黑色取为1,白色取为0,但我们点阵是1对应LED熄灭,0对应LED 点亮,而我们需要的是一颗点亮的“心”,所以我们要选“修改图像”菜单里的“黑白反显图像”这个选项,并且点击“基本操作”菜单里边的“保存图像”可以把我们设计好的图片进行保存,如图3-7所示。
图3-7 保存图像保存图像只是为了你下次使用打开方便,你也可以不保存。
操作完了这一步后,点一下“参数设置”菜单里的“其他选项”,如图3-8所示。
图3-8 选项设置这个选项设置,要根据我们的图3-2对照来看,大家可以看到单片机的P0总线,控制的是一行,所以我们用的是“横向取模”,如果控制的是一列,就要选“纵向取模”。
“字节倒序”这个选项,我们选上是因为图3-2中,我们左边是低位DB0,右边是高位DB7,所以必须选上字节倒序,其他两个选项大家自己了解,点确定后,选择“取模方式”这个菜单,点一下“C51格式”后,在“点阵生成区”自动产生了8个字节的数据,这8个字节的数据就是对应取出来的“模”。
图3-9 取模结果用软件取模,在这个图片里,黑色的一个格子表示一个二进制的1,白色的一个格子表示一个二进制的0。
第一个字节是0xFF,其实就是这个8*8图形的第一行,全黑就是0xFF;第二个字节是0x99,低位在左边,高位在右边,大家注意看,黑色的表示1,白色的表示0,就组成了0x99这个数字。
同理其他的数据大家也就知道怎么来的了。
我们把这个数据送到我们的点阵上去,大家看看什么效果。
对于8*8的点阵来说,我们可以显示一些简单的图形,字符等。
一个汉字正常占的点数是16*16的,8*8的点阵只能显示一些简单笔画的汉字,大家可以自己取模做出来试试。
四、实验参考源程序#include <reg52.h> //包含寄存器的库文件sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;unsigned char code image[] = {0xFF,0x99,0x00,0x00,0x00,0x81,0xc3,0xE7}; //心形图案的取模数据void main() //主函数{ENLED = 0;ADDR3 = 0;TMOD = 0x01; //设置定时器0为模式1TH0 = 0xFC;TL0 = 0x67; //定时值初值,定时1msTR0 = 1; //打开定时器0EA = 1; //打开总中断ET0 = 1; //打开定时器0中断while(1); //程序停止在这里,定时器运行,等待定时器中断}void InterruptTimer0() interrupt 1 //中断函数,T0一旦定时溢出,自动进入中断函数内执行{static unsigned char i = 0;TH0 = 0xFC; //溢出后进入中断重新赋值TL0 = 0x67;P0 = 0xFF; //消隐switch(i){case 0: ADDR0=0; ADDR1=0; ADDR2=0;i++; P0=image[0];break;case 1: ADDR0=1; ADDR1=0; ADDR2=0; i++; P0=image[1];break;case 2: ADDR0=0; ADDR1=1; ADDR2=0;i++;P0=image[2];break;case 3: ADDR0=1; ADDR1=1; ADDR2=0;i++; P0=image[3];break; //动态刷新case 4: ADDR0=0; ADDR1=0; ADDR2=1;i++; P0=image[4];break;case 5: ADDR0=1; ADDR1=0; ADDR2=1;i++;P0=image[5];break;case 6: ADDR0=0; ADDR1=1; ADDR2=1;i++; P0=image[6];break;case 7: ADDR0=1; ADDR1=1; ADDR2=1;i=0;P0=image[7];break;default: break;}}。