8 8LED点阵显示实验
8X8点阵逐点扫描实验
8X8点阵逐点扫描实验郑家贵110800533陈鹤110800524实验要求:1、采用分立的逻辑器件驱动8X8点阵显示屏2、扫描效果要能够清晰地体现逐点扫描及全屏显示(视觉上看为所有的LED灯都发亮)3、记录逐点扫描时的驱动脉冲频率及全屏显示时的驱动脉冲频率4、逐点扫描时必须从第一个点开始扫描5、全屏显示时,要求亮度尽可能高,并且不闪烁。
6、记录最佳的驱动时钟实验目的:1.测试LED伏安特性,了解LED发光特性及驱动特性;2.掌握LED点阵的显示器的逐点扫描驱动原理;3.掌握平板显示器驱动电路的一般设计方法。
所用仪器:1.830B 31/2位数字万用表。
2.单个红、绿双色8×8点阵LED显示器。
3.单个红、绿、(蓝)发光二极管。
4.BS-601型双综示波器。
5.可调直流稳压电源。
实验原理:用硬件实现8×8点阵LED逐点扫描,主要包括时钟电路和分频电路的设计、制作、以及行、列扫描译码电路的设计、制作。
原理图如下:系统硬件设计与分析本系统从经济性,电路结构,系统性能等多方面考虑,选用如下主要元器件:单片机AT89S51、电阻10K和100欧、三极管8550、按钮开关、共阳8*8LED 点阵显示块、稳压块7805。
电源电路本设计实验所需电源为直流五伏电压源,采用的是固定式三端稳压器7805还实现。
其线路接线图如图1所示:图1 电源电路2.2 复位电路单片机在启动运行时需要复位,使CPU以及其他功能部件处于一个确定的初始状态,并从这个状态开始工作,另外,在单片机工作过程中,如果出现死机时,也必须对单片机进行复位,使其重新开始工作。
本设计中采用按键复位电路,复位电路如图2所示:图2 复位电路目前大多数的LED 显示都采用静态显示。
在显示点阵面积较大时,这种方法不但体积大,重量重,而且成本也很高。
采用动态扫描显示控制,就能解决上述问题。
动态扫描方式显示的关键在于解决显示亮度和显示的特性。
《嵌入式接口技术》实验报告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;
8X8 LED点阵显示技术
上海电力学院智能仪器原理与设计课程设计题目: 8*8LED点阵显示技术院系:国际交流学院专业年级:测控技术与仪器 2007级学生姓名:顾怡雯、王隶沉、翁素婷、童竫竫、虞天宙学号:20073569、20073575、20073605、20073611、20073613 指导教师:黄云峰2010年12月15日8*8 LED点阵显示技术一、实验任务在8*8 LED点阵上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。
二、实验原理图三、硬件电路连线(1).把“单片机系统”区域中的P3(原文P1,因为执行P3=taba[i]; P1=0xff; 时,各二极管正负接反!)端口用8芯排芯连接到“点阵模块”区域中的“DR1-DR8”端口上;(2).把“单片机系统”区域中的P1(原文P3)端口用8芯排芯连接到“点阵模块”区域中的“DC1-DC8”端口上;四、程序设计内容(1).8X8点阵LED工作原理说明8×8 点阵LED的工作原理下图为8×8点阵LED外观及引脚图,其等效电路如图(2)所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。
例如如果想使左上角LED点亮,则Y0=1,X0=0即可。
应用时限流电阻可以放在X轴或Y轴。
8X8点阵LED结构如下图所示从上图中可以看出,8*8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:一根竖柱:对应的列置1,而行则采用扫描的方法来实现。
一根横柱:对应的行置0,而列则采用扫描的方法来实现。
LED电路原理图点阵LED扫描法介绍LED一般采用扫描式显示,实际运用分为三种方式:(1)点扫描;(2)行扫描;(3)列扫描。
8X8 LED点阵显示原理与编程技术(精选.)
1.实验任务在8X8 LED点阵上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。
2.电路原理图图4.24.13.硬件电路连线(1).把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“DR1-DR8”端口上;(2).把“单片机系统”区域中的P3端口用8芯排芯连接到“点阵模块”区域中的“DC1-DC8”端口上;4.程序设计内容(1). 8X8 点阵LED工作原理说明8X8点阵LED结构如下图所示图4.24.2从图4.24.2中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图49所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:一根竖柱:对应的列置1,而行则采用扫描的方法来实现。
一根横柱:对应的行置0,而列则采用扫描的方法来实现。
5.汇编源程序ORG 00HSTART: NOPMOV R3,#3LOP2: MOV R4,#8MOV R2,#0LOP1: MOV P1,#0FFHMOV DPTR,#TABAMOV A,R2MOVC A,@A+DPTRMOV P3,AINC R2LCALL DELAYDJNZ R4,LOP1DJNZ R3,LOP2MOV R3,#3LOP4: MOV R4,#8MOV R2,#7LOP3: MOV P1,#0FFHMOV DPTR,#TABAMOV A,R2MOVC A,@A+DPTRMOV P3,ADEC R2LCALL DELAYDJNZ R4,LOP3 DJNZ R3,LOP4MOV R3,#3LOP6: MOV R4,#8 MOV R2,#0LOP5: MOV P3,#00H MOV DPTR,#TABB MOV A,R2MOVC A,@A+DPTR MOV P1,AINC R2LCALL DELAYDJNZ R4,LOP5 DJNZ R3,LOP6MOV R3,#3LOP8: MOV R4,#8 MOV R2,#7LOP7: MOV P3,#00H MOV DPTR,#TABB MOV A,R2MOVC A,@A+DPTR MOV P1,ADEC R2LCALL DELAYDJNZ R4,LOP7DJNZ R3,LOP8LJMP STARTDELAY: MOV R5,#10D2: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1DJNZ R5,D2RETTABA: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FHTABB: DB 01H,02H,04H,08H,10H,20H,40H,80HEND6. C语言源程序#include <AT89X52.H>unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};void delay(void){unsigned char i,j;for(i=10;i>0;i--)for(j=248;j>0;j--);}void delay1(void){unsigned char i,j,k;for(k=10;k>0;k--)for(i=20;i>0;i--)for(j=248;j>0;j--);}void main(void){unsigned char i,j;while(1){for(j=0;j<3;j++) //from left to right 3 time {for(i=0;i<8;i++){P3=taba[i];P1=0xff;delay1();}}for(j=0;j<3;j++) //from right to left 3 time {for(i=0;i<8;i++){P3=taba[7-i];P1=0xff;delay1();}}for(j=0;j<3;j++) //from top to bottom 3 time {for(i=0;i<8;i++){P3=0x00;P1=tabb[7-i];delay1();}}for(j=0;j<3;j++) //from bottom to top 3 time {for(i=0;i<8;i++){P3=0x00;P1=tabb[i];delay1();}}} }。
8.8点阵实验报告
2016年电子工程专业2014级卓越工程师班《单片机与微机原理及应用》课程设计报告设计题目: 8*8LED点阵设计专业班级:电子卓越1401班学生姓名:林晓强学生学号:5120141478指导教师:聂诗良、许超(助教)答辩日期:第13周周六上午9点答辩地点:综合楼4-311实验室西南科技大学信息工程学院制2016年5月目录1.摘要 (1)1.1课程设计制作题目及要求 (2)2.系统方案设计 (2)2.1设计思路 (2)2.2总体设计框图 (3)3.硬件设计 (4)3.1 硬件选型 (4)3.2 系统硬件电路原理详图 (5)3.2.1复位电路原理图以及时钟电路原理图 (5)3.3 实际连线详图 (6)3.3.1 8*8LED点阵AD原理图 (7)3.3.2 8*8LED点阵AD PCB图 (7)3.3.3 8*8LED点阵原理仿真 (8)3.3.4 51单片机主控实物图以及原理图 (9)4.软件设计 (9)4.1 软件功能设计 (9)4.2 软件流程设计 (10)4.2.1主流程图 (10)5.软件调试 (11)5.1 单元调试 (11)5.1.1 LED点阵模块测试 (11)5.2 总体测试 (11)6.心得体会 (11)7.参考文献 (12)附录1 (13)附录2 (28)8*8LED点阵设计1摘要(1)近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
(2) LED点阵是由发光二极管排列组成的显示器件, 在我们日常生活的电器中随处可见,极为普通也广为人知。
特别是它的发光类型属于冷光源,效率及发热量是普通发光器件难以比拟的,它采用低电压扫描驱动,具有:耗电少、使用寿命长、成本低、亮度高、故障少、视角大、可视距离远、规格品、可靠耐用、应用灵活、安全、响应时间短、绿色环保、控制灵活种等特点。
LED点阵实验
8*8LED点阵实验一、实验目的:掌握LED点阵实验原理,并能熟练操作,编程实现点阵循环显示数字0~9;二、实验器件:单片机AT89S52最小实验系统,74LS138,74LS595,导线若干;三、实验原理:1、芯片简介:74LS138 为3 线-8 线译码器,原理:当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出,Y0-Y7为输出端。
74LS595:QA--QH: 八位并行输出端。
QH': 级联输出端。
可接下一个595的SI端也可不使用。
SI: 串行数据输入端。
74595的控制端说明:/SRCLR(10脚): 低点平时将移位寄存器的数据清零。
通常将它接Vcc。
SRCK(11脚):上升沿时数据寄存器的数据移位。
QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据不变。
RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。
当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了,通常都选微秒级),更新显示数据。
/G(13脚): 高电平时禁止输出(高阻态)。
如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。
比通过数据端移位控制要省时省力。
2、通过编程控制单片机的I/O口,两个芯片串行输入,并行输出,通过高低电平控制点阵中各个二极管的亮与灭,显示数字。
四、编程与说明:源程序:#include<reg52.h> //头文件#include<intrins.h>#define uchar unsigned char //宏定义#define uint unsigned intsbit SCK=P0^0; //芯片端口连线定义sbit RCK=P0^1;sbit SER=P0^2;sbit D138_A=P0^5;sbit D138_B=P0^6;sbit D138_C=P0^7;uchar code hang[8]={1,2,3,4,5,6,7,8}; //点阵行数组定义uchar code lie[10][8]={ //数字0~9列代码{0x00,0x7c,0x82,0x82,0x82,0x7c,0x00,0x00}, //0{0x00,0x00,0x84,0xfe,0x80,0x00,0x00,0x00}, //1{0x00,0xe4,0x92,0x92,0x92,0x8c,0x00,0x00}, //2{0x00,0x44,0x92,0x92,0x92,0x6c,0x00,0x00}, //3{0x00,0x10,0x18,0x14,0xfe,0x10,0x10,0x00}, //4{0x00,0x4e,0x8a,0x8a,0x8a,0x72,0x00,0x00}, //5{0x00,0x7c,0x92,0x92,0x92,0x64,0x00,0x00}, //6{0x00,0x02,0x02,0xfa,0x06,0x02,0x00,0x00}, //7{0x00,0x6c,0x92,0x92,0x92,0x6c,0x00,0x00}, //8{0x00,0x4c,0x92,0x92,0x92,0x7c,0x00,0x00} //9};uint timecount;uchar a,b;void Delay(uchar time)//延时函数{uchar i,j;for(i=time;i>0;i--)for(j=320;j>0;j--);}void Set595(unsigned char Data){unsigned char i;for(i = 0; i < 8; i++){SCK = 0; //先置为低SER = Data & 0x80; //取数据的最高位Data <<= 1; //将数据的次高位移到最高位,为下一次取数据做准备SCK = 1; //再置为高,产生移位时钟上升沿,上升沿时数据寄存器的数据移位}RCK=0;_nop_();RCK=1;}void Set138(unsigned char Data) //138芯片二进制译码选择行输出{switch(Data){case 0:D138_A = 0;D138_B = 0;D138_C = 0;Delay(1); break;case 1:D138_A = 1;D138_B = 0;D138_C = 0;Delay(1); break;case 2:D138_A = 0;D138_B = 1;D138_C = 0;Delay(1); break;case 3:D138_A = 1;D138_B = 1;D138_C = 0;Delay(1); break;case 4:D138_A = 0;D138_B = 0;D138_C = 1;Delay(1); break;case 5:D138_A = 1;D138_B = 0;D138_C = 1;Delay(1); break;case 6:D138_A = 0;D138_B = 1;D138_C = 1;Delay(1); break;case 7:D138_A = 1;D138_B = 1;D138_C = 1;Delay(1); break;}}void main(void){TMOD=0x01; //设置定时器的工作方式;TH0=(65536-3000)/256;TL0=(65536-3000)%256; //设置初值;每次定时中断3ms;EA=1; //开启总中断;ET0=1; //开启定时器0中断;TR0=1; //启动定时器;P0=0x00;while(1){;}}void extern0() interrupt 1{TH0=(65536-3000)/256;TL0=(65536-3000)%256;Set138(hang[a]);Set595(lie[b][a]);_nop_(); _nop_();a++;if(a==8){a=0;}timecount++;if(timecount==330) //每次到了330次中断后,又重新开始计时,每次差不多1s;即每隔1s显示一个数字;{timecount=0;b++;if(b==10){b=0;}}}这个程序包含三个子函数,一个是驱动74LS595芯片的,一个是驱动74LS138芯片的,还有一个是延时函数。
实验三 LED点阵显示实验
实验三LED点阵显示实验一、实验目的1、了解8X8矩阵LED显示的基本原理和功能。
2、掌握8X8矩阵LED的软件设计方法及字符编码的原理。
二、实验说明:8X8矩阵LED 为共阳极,显示任意字符或数字。
三、实验内容及步骤:1、使用最小应用系统1模块。
单片机最小应用系统1的RXD接Din,TXD接CLK,INT0接RCLK。
2、安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,打开仿真器电源。
3、启动计算机,打开伟福仿真软件,进入仿真环境。
选择仿真器型号、仿真头型号、CPU类型;选择通信端口,测试串行口。
4、打开点阵.ASM源程序,编译无误后,全速运行程序,观察点阵显示。
四、源程序;文字静止;RXD----Din;TXD----CLK;INT0---RCLKORG 0JMP MAINORG 32HMAIN:MOV SCON,#00H ;串行口工作模式为0CLR P3.2MOV SP,#60HMOV R2,#08H ;八行MOV R0,#0LOOP:MOV DPTR,#TAB ;字符首地址MOV A,#0MOV R1,#3 ;三个字节A1: MOV A,R0MOVC A,@A+DPTRMOV SBUF,A ;发送WAIT: JNB TI,WAIT ;等待一帧发送完CLR TIINC R0DJNZ R1,A1SETB P3.2 ;显示一行CLR P3.2DJNZ R2,LOOP ;下一行JMP MAINJMP $TAB: DB 80H,07DH,001H ;第一行DB 40H,07DH,0EFH ;第二行DB 20H,07DH,0EFH ;第三行DB 10H,001H,0EFH ;第四行DB 08H,07DH,0EFH ;第五行DB 04H,07DH,0EFH ;第六行DB 02H,07DH,0EFH ;第七行DB 01H,0FFH,0FFH ;第八行END五、原理图六、作业请在实验中修改源程序,以达到在LED点阵上显示自己编程设置的字符。
8×8LED点阵显示数字与字符
5. C 语言程序:
#include "AT89X52.H" unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code digittab[][8]={ {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0*/ {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0*/ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF},/*"_",0*/ {0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF},/*"_",0*/ {0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF},/*"_",0*/ {0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"_",0*/ {0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF},/*"_",0*/ {0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"_",0*/ {0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"_",0*/ {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"_",0*/ {0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01},/*"|",0*/ {0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02},/*"|",0*/ {0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04},/*"|",0*/ {0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},/*"|",0*/ {0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10},/*"|",0*/ {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20},/*"|",0*/ {0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40},/*"|",0*/ {0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80},/*"|",0*/ {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0*/ //图形 1 {0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00},/*"未命名文件",0*/ {0x00,0x00,0x3C,0x24,0x24,0x3C,0x00,0x00},/*"未命名文件",0*/ {0x00,0x7E,0x42,0x42,0x42,0x42,0x7E,0x00},/*"未命名文件",0*/ {0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0xFF},/*"未命名文件",0*/ //图形 2 {0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00},/*"未命名文件",0*/ {0x00,0x00,0x24,0x18,0x18,0x24,0x00,0x00},/*"未命名文件",0*/ {0x00,0x42,0x24,0x18,0x18,0x24,0x42,0x00},/*"未命名文件",0*/ {0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81},/*"未命名文件",0*/ //图形 3 {0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00},/*"未命名文件",0*/ {0x00,0x00,0x24,0x18,0x18,0x24,0x00,0x00},/*"未命名文件",0*/ {0x00,0x10,0x24,0x1A,0x58,0x24,0x08,0x00},/*"未命名文件",0*/ {0x08,0x10,0x24,0x9A,0x59,0x24,0x08,0x10},/*"未命名文件",0*/ {0x0C,0x10,0xA4,0x9A,0x59,0x25,0x08,0x30},/*"未命名文件",0*/ {0x0E,0x90,0xA4,0x9A,0x59,0x25,0x09,0x70},/*"未命名文件",0*/ {0x8F,0x90,0xA4,0x9A,0x59,0x25,0x09,0xF1},/*"未命名文件",0*/
LED点阵显示屏实验报告
LED点阵显示屏实验报告一、实验目的通过实验了解LED点阵显示屏的结构和工作原理,掌握其使用方法和调试技巧,并能够设计简单的图案和文字在屏幕上显示。
二、实验器材和原理1.实验器材:(1)LED点阵显示屏;(2)电子元器件:电阻、导线、开关等;(3)单片机模块和调试工具。
2.原理说明:LED点阵显示屏是由许多个LED灯组成的,可以按照不同的点亮组合来显示各种图案、文字。
点阵显示屏上通常有行和列两个方向的引脚。
每一行的LED灯引脚连接到同一个引脚上,每一列的引脚也连接到同一个引脚上。
通过控制每一行和每一列引脚的电平状态,来点亮指定的LED灯,以显示特定的图案。
三、实验步骤1.连接电路:(1)将LED点阵显示屏的引脚与单片机模块相连接,根据引脚对应关系连接相应的引脚。
(2)接入适当的电阻和开关,用于控制点阵显示屏的亮度和开关状态。
2.编程调试:(1)在单片机模块中编写相应的程序,控制LED点阵显示屏的点亮和熄灭。
(2)调试程序,检查点阵显示屏的点亮情况和亮度效果。
3.设计图案和文字:(1)根据需要,设计出要在点阵显示屏上显示的图案和文字。
(2)根据设计的图案和文字,编写程序实现点阵显示屏的显示效果。
四、实验结果和分析经过调试,LED点阵显示屏能够按照设计要求显示出特定的图案和文字。
通过改变程序中的参数,可以实现不同图案和文字的显示效果。
在实验过程中,我们发现LED点阵显示屏的亮度和显示效果受到电阻和电平控制的影响较大。
适当选择合适的电阻值可以调节点阵显示屏的亮度,使得显示效果更加清晰明亮。
五、实验心得体会通过这次实验,我们对LED点阵显示屏有了更深入的了解。
通过编程控制,我们可以通过点阵显示屏来显示各种图案和文字,具有一定的实用性和娱乐性。
在实验过程中,我们遇到了一些问题,例如点阵显示屏的亮度不够明亮、图案显示效果不够清晰等。
通过针对性的调试和调整,我们解决了这些问题,并取得了满意的实验结果。
总之,LED点阵显示屏实验能够帮助我们更好地理解和掌握其工作原理和使用方法,并且拓宽了我们的实验技能。
EDA实验 大屏幕(8乘8点阵)LED显示
大屏幕(8*8点阵)显示实验队系:九系五队组长:牛金辉 20075301446 组员:高阳 20075301343 白保军 20075301419贾昕辉 20075301385麻俊伟 20075301447预习报告一、实验目的设计制作一个大屏幕显示器,了解其构成和基本原理。
二、基本要求(1)显示器点阵数目至少8*8,能够多显示汉字。
(2)能够用多种扫描方式进行显示。
(3)显示器的亮点可以调节。
三、实验内容1、硬件部分:硬件实现框图:各部分说明:1.晶振电路:由51单片机本身时钟段和晶振提供,提供时钟频率。
2.复位电路:由电阻,电容以及开关构成的电路接至51单片机的复位端,起到复位作用。
3.51单片机:存储和处理程序。
4.显示电路:其中8*8LED点阵用于显示输出,限流电阻用于保护8*8LED。
5.驱动电路:用于驱动8*8点阵LED显示设备,使51单片机所发出的信号的电压相对稳定,增加负载能力。
6.5V电源:提供设备所需的电压,功耗。
2、软件部分:1、汉字的点阵显示:把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像。
因而可以对汉字进行拆分,使8*8中与汉字对应的象素(二极管)进行点亮,就可以达到显示汉字的目的,并以发光的象素位编为0不发光的象素位为1进行编码,就可以得知每个汉字对应的代码,将其存储,通过时钟的控制并加以中断延迟,而后依次传输给8*8LED进行显示,就可以实现最终的汉字显示效果。
2.规划的编程流程:四、实验步骤:1.依据硬件实现的方法,准备好实验所需的设备。
2.确定出各器件引脚的分布,并对汉字进行适当的显示编码,做好实验前的准备工作。
3.根据元器件的参数完成PCB设计与元件装配4.依据规划的编程流程,进行编程、调试,完成程序的设计。
5.对设计好的程序进行下载、烧录,并对最终的成品进行调试,直至正常完成实验要求。
实验报告一、实验主要元器件二、实验步骤1、实验前准备:8*8点阵的测量:把电压源调到1.5V,经测量,可知8*8点阵右边的阵脚正负和行列控制情况:上排阵脚为正且控制行,从左到右依次对应8*8点阵从下到上的点;下排为负且控制列,从左到右依次对应8*8点阵从右到左;同时最终测得屏幕上6个坏点的位置。
2 综合实验 8X8LED点阵
2
字模提取软件
要在 8X8LED 点阵中显示一个字或图形,就得先获得与其 对应的点阵数据,点阵数 据可以自行编写(即直接点阵画 图),也可用汉字取模软件如 PCtoLCD2002 等提取。 具体使用方法是运行上述可执行程序,依据提示输入所需 字符,程序将该字符的码表提取出来,显示在下面的空白区 域。用户只需将该文件中内容拷贝、粘贴到自己的程序中即 可。但需要注意字节排列顺序、字节中每一位与具体显示点的 一一对应关系,可以通过 PCtoLCD2002 的选项设置需要D点阵的单片机控制原理图如下:
4
程序示例
1.在8*8LED点阵上显示一个英文字符H 2.在8×8LED点阵上循环显示数字0~9
5
1
右图是8×8 点阵的原理 图。其实就是64 个发光 二极管,以8×8 矩阵的 形式连接在一起。该点阵 是共阳连接,即将每一行 的发光二极管阳极连接在 一起,而将每一列的阴极 连接在一起。(共阴连接 则相反)显然,将相应的 阳极输入高电平,而阴极 输入低电平,则该发光二 极管被点亮。不同位置的 发光管被控制点亮与熄灭, 就显示出不同字符或图案。
8X8LED点阵
随着LED技术的快速发展,大街小巷到处都可见到行行色 色LED广告屏。它以其高亮度,低功耗,显示内容易改等特点 备受青睐,而LED点阵广告屏的显示控制系统和驱动系统是一 个典型的单片机应用系统。 所谓 LED点阵显示,就是将很多LED按行列顺序排列组合 起来,每个LED构成点阵中的一个像素。把每个LED的阴极和阳 极都引出来,就可以对点阵中的任何一个LED加以控制,达到 要显示的效果。 目前市面上的LED点阵是列输入线接至内部LED的阴极端, 行输入线接至内部LED的阳极端(若阳极端输入为高电平,阴 极端输入低电平,则该LED点亮)。发光点的分布如图所示。
LED点阵屏上文字显示实验
LED点阵屏上文字显示实验李宇 pb09013011实验要求:在试验板的8×8的LED点阵屏上分别显示“PLD电子技术”。
编程思想:1.首先定义控制LED点阵屏的端口组a,b,及时钟和复位端口Port ( a : inout STD_LOGIC_VECTOR (7 downto 0);b : inout STD_LOGIC_VECTOR (7 downto 0);clk : in STD_LOGIC;reset : in STD_LOGIC);2.字的跳变显示是通过改变整型变量m的值来选择扫描的程序段3.对LED点阵屏的工作方式清楚,XUP板子上采用的是共阴极8x8点阵LED。
8X8点阵LED结构如下图所示从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置0电平,某一行置0电平,则相应的二极管就亮;本程序中是通过对行扫描,并对当前行中需要亮灯的列置0来实现显示过程。
示例程序段如下:if(count=N/8) thena<="11111111";b<="01111111";count<=count+1;elsif(count=N/4) thena<="11101111";b<="10111111";count<=count+1;elsif(count=3*N/8) thena<="11101111";b<="11011111";count<=count+1;elsif(count=N/2)thena<="11101111";b<="11101111";count<=count+1;elsif(count=N*5/8) thena<="11101111";b<="11110111";count<=count+1;elsif(count=N*3/4) thena<="11101111";b<="11111011";count<=count+1;elsif(count=7*N/8) thena<="11101111";b<="11111101";count<=count+1;elsif(count=N)thena<="11100011";b<="11111110";count<=0;VHDL代码:------------------------------------------------------------------------------------ Company:-- Engineer:---- Create Date: 10:09:58 05/24/2012-- Design Name:-- Module Name: expp8 - Behavioral-- Project Name:-- Target Devices:-- Tool versions:-- Description:-- Dependencies:-- Revision:-- Revision 0.01 - File Created-- Additional Comments:------------------------------------------------------------------------------------library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating---- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity expp8 isgeneric(N: integer :=16000);Port ( a : inout STD_LOGIC_VECTOR (7 downto 0);b : inout STD_LOGIC_VECTOR (7 downto 0);clk : in STD_LOGIC;reset : in STD_LOGIC);end expp8;architecture Behavioral of expp8 issignal count:INTEGER RANGE 0 to N:=0;--count用来对LED扫描分频用 --count1用来产生1HZ的分频信号signal count1:INTEGER RANGE 0 to 49999999:=0;signal m:integer:=0;--用m的数值来选择该扫描显示那个字beginprocess(reset,clk)begin--复位时的表现为屏上的灯全部点亮if(reset='0') thena<="00000000";b<="00000000";count<=0;m<=0;count1<=0;elseif(rising_edge(clk)) thenif count1=49999999 then --一赫兹的分频信号产生m<=m+1;count1<=0;else count1<=count1+1;end if;--m=0时采用扫描的方式显示第一个字母“P”if m=0 then--所选行中点亮的灯的时间为N/8个周期 if(count=N/8) thena<="11111111";b<="01111111";count<=count+1;elsif(count=N/4) thena<="11100111";b<="10111111";count<=count+1;elsif(count=3*N/8) thena<="11101011";b<="11011111";count<=count+1;elsif(count=N/2)thena<="11101011";b<="11101111";count<=count+1;elsif(count=N*5/8) thena<="11100111";b<="11110111";count<=count+1;elsif(count=N*3/4) thena<="11101111";b<="11111011";count<=count+1;elsif(count=7*N/8) thena<="11101111";b<="11111101";count<=count+1;elsif(count=N)thena<="11101111";b<="11111110";count<=0;elsecount<=count+1;end if;--m=1时显示“L”,时长同样为1秒elsif m=1 thenif(count=N/8) thena<="11111111";b<="01111111";count<=count+1;elsif(count=N/4) thena<="11101111";count<=count+1;elsif(count=3*N/8) thena<="11101111";b<="11011111";count<=count+1;elsif(count=N/2)thena<="11101111";b<="11101111";count<=count+1;elsif(count=N*5/8) thena<="11101111";b<="11110111";count<=count+1;elsif(count=N*3/4) thena<="11101111";b<="11111011";count<=count+1;elsif(count=7*N/8) thena<="11101111";b<="11111101";count<=count+1;elsif(count=N)thena<="11100011";b<="11111110";count<=0;elsecount<=count+1;end if;--m=2显示“D”,时长为一秒 elsif m=2 thenif(count=N/8) thena<="11111111";b<="01111111";count<=count+1;elsif(count=N/4) thena<="11100111";b<="10111111";count<=count+1;elsif(count=3*N/8) thena<="11101011";b<="11011111";count<=count+1;elsif(count=N/2)thenb<="11101111";count<=count+1;elsif(count=N*5/8) thena<="11101101";b<="11110111";count<=count+1;elsif(count=N*3/4) thena<="11101101";b<="11111011";count<=count+1;elsif(count=7*N/8) thena<="11101011";b<="11111101";count<=count+1;elsif(count=N)thena<="11100111";b<="11111110";count<=0;elsecount<=count+1;end if;--m=3显示“电”,时长为一秒elsif m=3 thenif(count=N/8) thena<="11111111";b<="01111111";count<=count+1;elsif(count=N/4) thena<="11101111";b<="10111111";count<=count+1;elsif(count=3*N/8) thena<="10000011";b<="11011111";count<=count+1;elsif(count=N/2)thena<="10000011";b<="11101111";count<=count+1;elsif(count=N*5/8) thena<="10000011";b<="11110111";count<=count+1;elsif(count=N*3/4) thena<="11101111";b<="11111011";count<=count+1;elsif(count=7*N/8) thena<="11101011";b<="11111101";count<=count+1;elsif(count=N)thena<="11100011";b<="11111110";count<=0;elsecount<=count+1;end if;--m=4显示“子”,时长为一秒 elsif m=4 thenif(count=N/8) thena<="11111111";b<="01111111";count<=count+1;elsif(count=N/4) thena<="11100011";b<="10111111";count<=count+1;elsif(count=3*N/8) thena<="11111011";b<="11011111";count<=count+1;elsif(count=N/2)thena<="11000001";b<="11101111";count<=count+1;elsif(count=N*5/8) thena<="11110111";b<="11110111";count<=count+1;elsif(count=N*3/4) thena<="11110111";b<="11111011";count<=count+1;elsif(count=7*N/8) thena<="11100111";b<="11111101";count<=count+1;elsif(count=N)thena<="11110111";b<="11111110";count<=0;elsecount<=count+1;end if;--m=5显示“技”,时长为一秒elsif m=5 thenif(count=N/8) thena<="11111111";b<="01111111";count<=count+1;elsif(count=N/4) thena<="11011011";b<="10111111";count<=count+1;elsif(count=3*N/8) thena<="10000001";b<="11011111";count<=count+1;elsif(count=N/2)thena<="11000001";b<="11101111";count<=count+1;elsif(count=N*5/8) thena<="11010101";b<="11110111";count<=count+1;elsif(count=N*3/4) thena<="10011111";b<="11111011";count<=count+1;elsif(count=7*N/8) thena<="10011011";b<="11111101";count<=count+1;elsif(count=N)thena<="11010101";b<="11111110";count<=0;elsecount<=count+1;end if;--m=6显示“术”,时长为一秒elsif m=6 thenif(count=N/8) thena<="11111111";b<="01111111";count<=count+1;elsif(count=N/4) thena<="11110011";b<="10111111";count<=count+1;elsif(count=3*N/8) thena<="11000001";b<="11011111";count<=count+1;elsif(count=N/2)thena<="11110111";b<="11101111";count<=count+1;elsif(count=N*5/8) thena<="11100011";b<="11110111";count<=count+1;elsif(count=N*3/4) thena<="11110111";b<="11111011";count<=count+1;elsif(count=7*N/8) thena<="11010101";b<="11111101";count<=count+1;elsif(count=N)thena<="10110110";b<="11111110";count<=0;m<=0;--一次循环完成,循环计数变量m归零 elsecount<=count+1;end if;end if;end if;end if;end process;end Behavioral;设计思路:本实验的目的是要在LED点阵屏上显示字符,基本思想是用扫描的方式使整个屏上需要的灯点亮,并通过计数整型变量m使LED屏上的字每秒钟变换一次,其中扫描频率和m的变化频率都是通过分频实现的。
8×8LED点阵屏显示数字(韩余)详解
目录1 设计目的 (1)1.1设计目的 (1)1.2设计内容和要求 (1)1.3设计思路 (1)2 设计原理分析 (2)2.1定时器控制8×8LED点阵屏显示数字系统设计 (2)2.2定时器控制8×8LED点阵屏显示数字系统的功能要求 (2)2.2.1计时显示 (2)2.2.2中断设置 (2)2.38×8LED点阵屏显示数字系统的基本构成及原理 (2)3 系统硬件电路的设计 (3)3.1系统硬件总电路构成及原理 (3)3.2主控制部分――AT89C51单片机简介 (3)3.2.1 AT89C51的内部结构功能 (4)3.2.2 51单片机的串行接口工作方式 (5)3.3其它器件 (6)3.4定时器控制8×8LED点阵屏显示数字系统原理图 (7)3.5设计的连线图: (8)3.5.1单片机实物图: (8)3.6硬件资源及其分配 (8)3.7运行步骤 (8)3.8检测与调试 (9)3.8.1硬件调试: (9)3.8.2软件调试: (10)4 系统软件程序的简单设计 (11)4.1程序框图 (11)4.2程序流程图及程序 (12)4.2.1程序流程图: (12)4.2.2程序清单: (12)4.2.3仿真结果图: (14)结论 (15)参考文献 (16)1 设计目的1.1设计目的1、通过单片机课程设计,熟练掌握C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
2、通过8×8LED点阵屏显示数字系统的设计,掌握数码管的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。
1.2设计内容和要求内容:设计一个8×8LED点阵屏显示数字。
要求:利用单片机的中断系统,令8×8LED点阵屏循环显示数字0—9。
1.3 设计思路1.先熟悉实验原理,了解8×8LED点阵屏显示数字的工作过程,以及所需要的组件。
2.通过单片机的各个引脚的输出控制8×8LED点阵屏显示数字。
实验十八 8X8三色点阵显示器设计
实验十八 8X8三色点阵显示器设计
一、工作原理
8×8点阵由八行八列总共64个双色LED组成。每一条行线 是这一行LED的共阳极端点,列线根据所连接的针脚的不 同分为红色共阴极端点和绿色共阴极端点。当连接红色共 阴极时LED显示红色,连接绿色共阴极时显示绿色。当两 者同时连通时则显示黄色。
二、双色发光二极光工作原理图
三、设计功能要求
1、根据键盘输入数字显示该数字的汉字。
2、能根据选择颜色,显示该颜色的汉字。
四、说明
虽然说列线是阴极共点端,但在设计中,通过3-8译码器 将扫描列信号输入到8*8点阵列。所以,对于输入而言列 线和行线一样也是高电平有效。即在PLD引脚输出到3-8译 码器为高电平时,X0~X7上轮流输出低电平,同时在 Y0~Y7上输入数据。左边的数据线Y[0:7]输入的是键码。 它是从键码移位寄存器的引过来的。键码是4位二进制数。 在译码电路模块中,键码被翻译成适合显示8组八位的二 进制数,并且存储其中。
ቤተ መጻሕፍቲ ባይዱ
五、设计方框图
六、实验硬件验证及实验报告
总体仿真通过后,根据实际需要在演示板上进行部分联线, 将程序通过数据电缆由电脑下载到芯片,在演示板上进行 设计功能硬件验证。 实验报告要求: 1、点阵显示设计功能和工作原理说明。 2、画出设计框图和原理图。 3、画出设计输入(原理图、VHDL、状态图)。 4、记录仿真波形图。
对于这样矩阵式显示的器件,应该采用扫描的方式。对于 8×8点阵采用行扫描或者列扫描都可以。但为了使8×8点 阵能具有根据输入显示红、绿、黄三色功能。因此基于设 计简便的考虑,把列线(即共阴极点) 作为扫描线,而把行 线作为数据输入线。
双色8 ×8点阵LED的动态显示
收稿日期:2008-01-31作者简介:陈文彬(1968-),男,副教授,博士,研究方向:光电材料与器件。
双色8×8点阵LE D 的动态显示陈文彬,蒋 泉,吴援明,饶海波,杨 刚,张 磊,钟 建(电子科技大学光电信息学院,成都 610054)摘要:双色8×8点阵LE D 矩阵发光屏采用逐行扫描方式驱动,以8031单片机为核心,MAX7219作为行、列驱动器,完成了双色8×8点阵LE D 矩阵发光屏驱动板设计与制作,实现了LE D 显示器件的动态驱动。
通过对驱动波形的测试与分析,加深了学生对显示像素4种状态(全选点,行、列半选点和非选点)的理解。
通过对该实验系统功能的扩展,可以强化学生平板显示器件驱动技术方面的训练。
关 键 词:发光二极管;动态驱动;扫描;驱动波形;实验中图分类号:T N383102;G424131 文献标识码:B 文章编号:1672-4550(2008)04-0003-03Dynam i c D ispl ay of Two 2color 8×8LE D Matri xCHEN W en 2bin,J I A NG Quan,WU Yuan 2m ing,RAO Hai 2bo,Y ANG Gang,Z HANG Lei,ZHONG J ian(School of Op t oelectr onic I nfor mati on,University of Electr onic Science and Technol ogy of China,Chengdu 610054,China )Abstract:T wo 2col or 8×8LE D matrix is driven by scanning one line at a ti m e 1U sing 8031as contr oller andMAX7219as the r ow and colu mn driver,the LE D panel is de monstrated,and the dyna m ic dis p lay is obtained 1The driving wave f or m can be measured and ana 2lyzed 1The selected p ixel,half 2selected p ixel and nonselected p ixel are clearly indicated by the driving wave f or m 1This experi m ent syste m can be extended t o further intensify the technical training of the flat panel dis p lay driver 1Key words:LE D;dynam ic dis p lay;scan;driving wave f or m;experi m ent1 引 言LED 显示器件种类繁多,从简单的单个LE D到LED 光柱显示,字符显示再到大面积的平板显示,应有尽有。
8_8点阵实验(程序+仿真)
//主程序
void main()
{
TMOD=0x00; //T0方式0
TH0=(8192-2000)/32; //2ms定时
TL0=(8192-2000)%32;
IE=0x82;
TR0=1; //启动T0
while(1);
}
//T0中断函数
void LED_Screen_Display() interrupt 1
//主程序
void main()
{
P3=0x80;
Num_Index=0; //从0开始显示
TMOD=0x00; //T0方式0
TH0=(8192-2000)/32; //2ms定时
TL0=(8192-2000)%32;
IE=0x82;
TR0=1; //启动T0
while(1);
}
//T0中断函数
void LED_Screen_Display() interrupt 1
{0x00,0x20,0x30,0x38,0x3c,0x3e,0x00,0x00} //图3
};
uchar i,j;
//主程序
void main()
{
P0=0xff;
P1=0xff;
TMOD=0x01; //T0方式1
TH0=(65536-2000)/256; //2ms定时
TL0=(65536-2000)%256;
uchar code table1[]=
{0x10,0x10,0x38,0x54,0x18,0x28,0x24,0x00};
uchar code table3[]=
{0x10,0x50,0x3C,0x14,0x10,0x28,0x14,0x00
8×8点阵屏显示-心形
利用8×8 LED点阵屏显示心型图形实验目的掌握LED点阵显示屏显示图形或汉字的编程控制方法。
实验要求1)了解8×8 LED点阵显示屏的基本工作原理;2)掌握LED点阵屏显示数据的编码方式;3)掌握利用查表法获取8×8点阵显示数据的行、列编码,通过MCU相应的I/O口,送8×8 LED点阵屏显示的编程控制方法。
MCU实验开发板使用注意事项1)本实验用到MCU实验开发板上的8×8 LED点阵显示屏和4位拨码开关CS2;2)将4位拨码开关CS2设置为1234→0001(ON为1);3)8×8 LED点阵显示屏的行位X0~X7(由下至上)分别连接MCU的P0.0~P0.7,高电平有效;4)8×8 LED点阵显示屏的列位Y0~Y7(从右至左)分别连接MCU的P2.0~P2.7,低电平有效。
实验内容和参考程序ST_ADDR EQU 0030HORG ST_ADDRLJMP STARTORG ST_ADDR+30HSTART: MOV R0,#00H ;设置显示数据编码表下标初值DISP: MOV A,R0 ;行编码表下标放入AMOV DPTR,#XTAB ;取行编码表首地址放入DPTRMOVC A,@A+DPTR ;取行显示数据放入AMOV P0,A ;行显示数据送P0口输出MOV A,R0 ;列编码表下标放入AMOV DPTR,#YTAB ;取列编码表首地址放入DPTRMOVC A,@A+DPTR ;取列显示数据放入AMOV P2,A ;列显示数据送P2口输出INC R0 ;下标值加1,指向下一个显示数据CJNE R0,#08H,DISP ;行/列下标是否为8?否,则送出显示 AJMP START ;是,则从表首重新开始取数XTAB: DB 30H,48H,44H,22H,22H,44H,48H,30H ;行编码表YTAB: DB 7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH ;列编码表END。
8×8LED 扫描输出实验
8×8LED 扫描输出实验一.实验目的使用户学会利用单片机的IO 口进行LED 点阵的扫描显示。
二.实验设备及器件IBM PC 机一台DP-51PRO 单片机综合仿真实验仪一台三.实验原理1 8*8led点阵有64个led,需要8个行控制和8个列控制,要点亮某个led,需要对应的行和列同时工作。
在本试验箱的led点阵中,是类似PNP三极管的原理,行,列控制分别对应基极和集电极,需要两者同时设置低电平,才能导通电流,点亮对应的led。
2.本实验中,用P1口的8位做行控制,分别控制8行,dispbit[]数组作为行扫描数据,有8个数组元素,每个数组元素是8位的,都是只有某一位是0,别的是1,对应于每次只打开某一行led,别的行关闭。
0的位置从低位到高位,对应于从第1行开始扫描最后到第8行。
3.用P3口作为列扫描数据的输出端口,但是经过164串并转换芯片做了串并转换,至于串并转换的原理见81页的实验7,里面有164芯片的电路图和真值表。
164芯片把从P3口每次送来的8位串行数据做了串并转换以后,得到8位并行输出数据,8位并行数据从低位到高位的排列顺序是和接收到的串行数据的时间先后顺序一致的。
然后用跳线连接到led点阵的列扫描端口,作为列控制信号。
4. 8*8led点阵的扫描顺序是从第1行开始到第8行,每次送一个行扫描数据,就是dispbit[]的元素,然后送这一行对应的列扫描数据,就是dispdata[]的元素,这个列数组总共8个元素,其中每个元素是8位的,其中0的位对应的列打开,1的位对应的列关闭。
5. 列扫描调用了void sendto(unsigned char dat)函数,dat是列数组dispdata[]中的某一个元素,这个函数是实现P3口串行输出数据到164芯片的功能,调用一次发一个列数据,共调用8次发完8个列数据。
每次调用,从最低位开始发数据,每次发1位,发完1位以后,高位往低位移动1位,继续发最低位数据,循环8次以后发完8位数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8 8LED点阵显示实验一.实验要求利用实验系统提供的实验模块点阵显示,编程实现中英文字符的显示。
二.实验目的1.了解LED点阵显示的基本原理和实现方法。
2.掌握点阵汉字库的编码和从标准字库中提取汉字编码的方法。
三.实验电路及连线点阵显示模块WTD3088的(红色)列输入线接至内部LED的阴极端,行输入线接至内部LED 的阳极端(若阳极端输入为高电平,阴极端输入低电平,则该LED点亮)。
发光点的分布如图22-0所示。
Fig 22-0 WTD3088 LED分布如图22-1示,本实验模块使用74LS374来控制列输入线的电平值。
将74LS374的某输出置0,则对应的LED阴极端被置低。
如图22-2示,本实验模块使用74LS273来控制行输入线,并通过9013提供电流驱动。
将74LS273的某输出置1,则对应的LED阳极端被置高。
每次系统重新开启或总清后,74LS273输出为全0,LED显示被关闭。
通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。
Fig 22-1 LED模块及列扫描电路Fig 22-2 行扫描电路Fig 22-3地址译码电路本实验模块使用4块WTD3088组成16×16点阵,以满足汉字显示的要求。
为了方便的控制四个单元,使用了一片74LS139译码,产生四个地址片选信号:CLKR1= CSLED,CLKR2= CSLED+1,用于行控制的两片74LS273;CLKC1= CSLED+2,CLKC2= CSLED+3,用于列控制的两片74LS374。
实验接线:按示例程序,模块的CSLED接51/96地址的8000H。
四.实验说明使用高亮度LED发光管构成点阵,通过编程控制可以显示中英文字符、图形及视频动态图形。
LED显示以其组构方式灵活、亮度高、技术成熟、成本低廉等特点在证券、运动场馆及各种室内/外显示场合得到广泛的应用。
所显示字符的点阵数据可以自行编写(即直接点阵画图),也可从标准字库(如ASC16、HZ16)中提取。
后者需要正确掌握字库的编码方法和字符定位的计算。
实验盘片中“字符转换”子目录下提供的Basc16.exe,BHz16.exe可方便的将单个字符的码表从标准字库Asc16,Hzk16中提取出来。
具体使用方法是运行上述可执行程序,根据提示输入所需字符(如是汉字还需要先启动dos下的汉字环境,如ucdos,pdos95等)。
程序将该字符的码表提取出来,存放在该字符ASC或区位码为文件名称的.dat文件中。
用户只需将该文件中内容拷贝、粘贴到自己的程序中即可。
但需要注意字节排列顺序、字节中每一位与具体显示点的一一对应关系,必要时还要对码表稍作修改。
同一目录下还提供了上述可执行程序的源文件,使用BC3.1编写,供用户参考。
五.实验程序框图用户应留心其中行扫描的实现及码表的处理。
六.实验程序:(一)提供LEDA51演示Asc16字符的简单点阵显示。
;*********LED 点阵显示示例程序***********************;** 该程序显示Asc16字符**;** 为了简单起见,程序只显示一个字符**;** 该程序针对T598实验机的模块14 **;****************************************************CSLED EQU 8000HCSR1 EQU CSLED ;行1 273CSR2 EQU CSLED+1H ;行2 273CSC1 EQU CSLED+2H ;列1 374CSC2 EQU CSLED+3H ;列2 374ORG 0000HMOV SP,#60HINIT: MOV A,#0H ;关闭行MOV DPTR,#CSR1MOVX @DPTR,AMOV DPTR,#CSR2MOVX @DPTR,AMOV A,#0FFH ;关闭列MOV DPTR,#CSC1MOVX @DPTR,AMOV DPTR,#CSC2MOVX @DPTR,AD: MOV R5,#00HMOV R4,#01H ;每次为单行扫描DISP:MOV A,R5MOV DPTR,#ASCE ;此处设定所要显示的字符MOVC A,@A+DPTRCPL ACC ;代码取反,决定显示的阴阳MOV DPTR,#CSC2MOVX @DPTR,AMOV DPTR,#CSR1MOV A,R4MOVX @DPTR,ARL ACCMOV R4,ACCINC R5LCALL DELAYCJNE R5,#8H,DISPMOV A,#0HMOVX @DPTR,AMOV R5,#08HMOV R4,#01HDISP2:MOV A,R5MOV DPTR,#ASCEMOVC A,@A+DPTRCPL ACCMOV DPTR,#CSC2MOVX @DPTR,AMOV DPTR,#CSR2MOV A,R4MOVX @DPTR,ARL ACCMOV R4,ACCINC R5LCALL DELAYCJNE R5,#10H,DISP2MOV A,#0HMOVX @DPTR,ASJMP D;******** 延时子程序,协调字符显示速度************* DELAY: MOV R7,#1HDL1: MOV R6,#00HDL2: DJNZ R6,DL2DJNZ R7,DL1RET;******** 字符点阵字库***************; ASC16 字符编码排列; 0; 1; |; |; 14; 15; 高位D7--D0; 请注意编码的排列次序和实际显示点阵分布的关系ASCA:DB 00H,00H,10H,38H,6CH,0C6H,0C6H,0FEHDB 0C6H,0C6H,0C6H,0C6H,00H,00H,00H,00HASCE:DB 00H,00H,0FEH,66H,62H,68H,78H,68HDB 60H,62H,66H,0FEH,00H,00H,00H,00HASCD:DB 00H,00H,0F8H,6CH,66H,66H,66H,66HDB 66H,66H,6CH,0F8H,00H,00H,00H,00HASCK:DB 00H,00H,0E6H,66H,66H,6CH,78H,78HDB 6CH,66H,66H,0E6H,00H,00H,00H,00H;**************************************************** END(二)LEDHZ51两个示例程序。
和Hz16字符的简单点阵显示。
;*********LED 点阵显示示例程序*********************** ;** 该程序显示hz16字符**;** 为了简单起见,程序只显示一个字符**;** 该程序针对T598实验机的模块14 **;****************************************************CSLED EQU 8000HCSR1 EQU CSLED ;行1 273CSR2 EQU CSLED+1H ;行2 273CSC1 EQU CSLED+2H ;列1 374CSC2 EQU CSLED+3H ;列2 374ORG 0000HMOV SP,#60HINIT: MOV A,#0H ;关闭LED显示MOV DPTR,#CSR1MOVX @DPTR,AMOV DPTR,#CSR2MOVX @DPTR,AMOV A,#0FFH ;关闭LED显示MOV DPTR,#CSC1MOVX @DPTR,AMOV DPTR,#CSC2MOVX @DPTR,AD: MOV R5,#00HMOV R4,#01HDISP:MOV A,R5RL ACCMOV DPTR,#HZAIMOVC A,@A+DPTRCPL ACCMOV DPTR,#CSC2MOVX @DPTR,AMOV A,R5RL ACCMOV DPTR,#HZAI MOVC A,@A+DPTR CPL ACCMOV DPTR,#CSC1 MOVX @DPTR,AMOV DPTR,#CSR1 MOV A,R4MOVX @DPTR,A RL ACCMOV R4,ACCINC R5LCALL DELAY CJNE R5,#8H,DISPMOV A,#0HMOVX @DPTR,AMOV R5,#08H MOV R4,#01H DISP2:MOV A,R5RL ACCMOV DPTR,#HZAI MOVC A,@A+DPTR CPL ACCMOV DPTR,#CSC2 MOVX @DPTR,AMOV A,R5RL ACCINC ACCMOV DPTR,#HZAI MOVC A,@A+DPTR CPL ACCMOV DPTR,#CSC1 MOVX @DPTR,AMOV DPTR,#CSR2 MOV A,R4MOVX @DPTR,A RL ACCMOV R4,ACCLCALL DELAYCJNE R5,#10H,DISP2MOV A,#0HMOVX @DPTR,ASJMP D;******** 延时子程序,协调字符显示速度************* DELAY: MOV R7,#1HDL1: MOV R6,#00HDL2: DJNZ R6,DL2DJNZ R7,DL1RET;******** 字符点阵字库***************; HZ16 字符编码排列; 0 1; 2 3; |; |; 28 29; 30 31; 高位D7--D0HZAI:DB 00H,78H,3FH,80H,11H,10H,09H,20HDB 7FH,0FEH,42H,02H,82H,04H,7FH,0F8HDB 04H,00H,07H,0F0H,0AH,20H,09H,40HDB 10H,80H,11H,60H,22H,1CH,0CH,08HHZDI:DB 00H,80H,40H,80H,20H,88H,2FH,0FCHDB 08H,88H,08H,88H,0E8H,88H,2FH,0F8HDB 28H,88H,28H,88H,28H,88H,2FH,0F8HDB 28H,08H,50H,06H,8FH,0FCH,00H,00HHZKE:DB 01H,00H,01H,04H,0FFH,0FEH,01H,00HDB 01H,10H,1FH,0F8H,10H,10H,10H,10HDB 10H,10H,1FH,0F0H,14H,50H,04H,40HDB 04H,40H,08H,42H,10H,42H,60H,3EH;**************************************************** END。