16-16点阵LED显示汉字总汇编语言
16×16点阵LED显示屏整个过程及C语言程序
16×16点阵LE D显示屏整个过程及C语言程序7.1功能要求设计一个室内用16×16点阵LE D图文显示屏,要求在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形或文字应稳定、清晰无串扰。
图形或文字显示有静止、移入移出等显示方式。
7.2方案论证从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。
16×16的点阵共有256个发光二极管,显然单片机没有这么多端口,如果我们采用锁存器来扩展端口,按8位的锁存器来计算,16×16的点阵需要256/8=32个锁存器。
这个数字很庞大,因为我们仅仅是16×16的点阵,在实际应用中的显示屏往往要大的多,这样在锁存器上花的成本将是一个很庞大的数字。
因此在实际应用中的显示屏几乎都不采用这种设计,而采用另一种称为动态扫描的显示方法。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套列驱动器。
具体就16×16的点阵来说,我们把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第一行使其燃亮一定的时间,然后熄灭;再送出第二行的数据并锁存,然后选通第二行使其燃亮相同的时间,然后熄灭;……第十六行之后又重新燃亮第一行,这样反复轮回。
当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,我们就能看到显示屏上稳定的图形了。
16×16点阵图文LED显示屏设计的源程序清单
6 控制源程序清单以下是4个16×16点阵LED电子显示屏的源程序,分别采用汇编及C语言编写,C 程序在Keil 51环境下调试。
(1)汇编源程序;********************************;4字16×16点阵电F屏字符显示器*;* AT89C52 12 MHz晶振*;*******************************;显示字用查表法,不占内存,用4个16×16共阳LED点阵显示;效果:向上滚动显示字,每次4个,重复循环;R2:行扫描地址(00H~0FH)。
;R3:滚动显示时控制移动速度,也可控制静止显示的时间;*******中断入口程序*********ORG 0000HLJMP STARTORG 0003HRETIORG 000BHLJMP INTT0ORG 0013HRETIORG 001BHRETIORG 0023HRETIORG 002BHRETI;*******主程序************START:MOV 20H,#00H ;清标志,00H为l帧扫描结束标志MOV A,#0FFH ;端口初始化MOV P1, AMOV P2, AMOV P3, AMOV P0,ACLR Pl.6 ;串行寄存器输入/输出端控制位MOV TMOD, #01H ;使用T0作16位定时器,行扫描用MOV TH0, #0FCH ;1ms初值(12 MHz)MOV TL0, #18HMOV SCON, #00H ;串口0方式传送显示字节MOV IE, #82H ;T0中断允许,总中断允许MOV SP, #70HLCALL DIS1 ;显示准备,黑屏,1.5 sMAIN:MOV DPTR,#TABLCALL MOVDISP ;逐排显示,每次4字)MOV DPTR,#TABLCALL MOVDISP1 ;滚动显示,每排4字)AJMP MAIN;***************4字逐排显示子程序*******;每次4字移入移出显示方式,入口时定义好DPTR值MOVDISP:MOV R1,#6 ;显示6排字,每排4字(R1=排数)DISLOOP:MOV R3,#100 ;每排显示时间为16 ms×100=1.6 sDISMOV:MOV R2,#00H ;第0行开始SETB TR0 ;开扫描(每次l帧)WAITMOV:JBC 00H,DISMOV1 ;标志为1,扫描l帧结束(16 ms为1帧,每行1 ms)AJMP W AITMOVDISMOV1:DJNZ R3,DISMOV ;1帧重复显示(控制显示时间)MOV A,#128 ;显示字指针移1排(每排4字×32= 128字)ADD A, DPLMOV DPL, AMOV A,#0ADDC A, DPHMOV DPH,ADEC R1 ;R1为0,显示完MOV A,R1JZ MOVOUTAJMP DISLOOPMOVOUT:RET ;移动显示结束;********************4字滚动显示子程序*****************;每排4字向上移出显示方式,入口时定义好DPTR值MOVDISP1:MOV R1,#255 ;向上移动显示6排字,每排4字(R1=排数×16)DISLOOP1:MOV R3,#10 ;移动速度为16 ms×10= 0.16 sDISMOV2:MOV R2,#00H :第0行开始SETB TR0 ;开扫描(每次1帧)WAITMOV1:JBC 00H,DISMOV3;标志为1扫描1帧结束(16 ms为1帧,每行1 ms)AJMP WAITMOV1DISMOV3:DJNZ R3,DISMOV2 ;1帧重复显示(控制移动速度)INC DPTR ;显示字指针移1行(2字节位置)INC DPTRDEC R1 ;R1为0,显示完MOV A,R1JZ MOVOUT1AJMP DISLOOP1MOVOUT1:RET ;移动显示结束;*****************4字显示子程序*****************;静止显示表中某4字DIS1:MOV R3,# 5AH :静止显示时间控制DIS11:MOV R2,#00H ;l帧扫描初始值(行地址00~0OFH)MOV DPTR,# TAB ;取表首址SETB TR0 ;开扫描(每次1帧)WAIT11:JBC 00H, DIS111 ;标志为l,扫描l帧结束AJMP W AIT11DISI111:DJNZ R3,DISI1RET;***********扫描程序************;1ms传送一行,每行显示l ms,一次传送4字的某行共8字节INTT0:PUSH ACCMOV TH0,# 0FCH ;1 ms初值重装MOV TL0,# 18HMOV A,#97 ;指向第4个字行右字节ADD A,DPLMOV DPL,AMOV A,#0ADDC A,DPHMOV DPH,AMOV A,#0MOVC A, @A+ DPTR ;查表MOV SBUF,A ;串口0方式发送WAIT:JBC TI, GO ;等待发送完毕AJMP W AITGO:MOV A,DPL ;指向第4个字行左字节SUBB A,#1MOV DPL,AMOV A,DPHSUBB A,#0MOV DPH,AMOV A, #0MOVC A,@A+ DPTRMOV SBUF,AWAIT1:JBC TI,GO1AJMP W AIT1GO1:MOV R0, #03HMLOOP:MOV A, DPL ;指向前3个字行右字节SUBB A, #31MOV DPL, AMOV A, DPHSUBB A, #0MOV DPH, AMOV A,#0MOVC A,@A+DPTR ;查表MOV SBUF,A ;串口0方式发送WAIT2:JBC TI,GO2 ;等待发送完毕AJMP W AIT2GO2:MOV A,DPL ;指向前3个字行左字节SUBB A,#1MOV DPL,AMOV A,DPHSUBB A,#0MOV DPH,AMOV A,#0MOVC A,@A+DPTRMOV SBUF, AWAIT3:JBC TI, GO3AJMP W AIT3G03:DJNZ R0O,MLOOP ;执行3次SETB Pl.7 ;关行显示,准备刷新NOP ;串口寄存器数据稳定SETB P1.6 ;产生上升沿,行数据输入输出端NOPNOPCLR Pl.6 ;恢复低电平MOV A,R2 ;修改显示行地址ORL A,#0F0H ;修改显示行地址MOV R2,A ;修改显示行地址MOV A,P1 ;修改显示行地址ORL A,#0FH ;修改显示行地址ANL A,R2 ;修改显示行地址MOV P1,A ;修改完成CLR Pl.7 ;开行显示INC R2 ;下一行扫描地址值INC DPTRINC DPTR ;下一行数据地址MOV A, R2ANL A,#0FHJNZ GO4SETB 00H ;R2为1I0H,现为末行扫描,置l帧结束标志MOV A,DPL ;指针修正为原帧初值SUBB A, #32MOV DPL, AMOV A,DPHSUBB A,#0MOV DPH, ACLR TR0 ;一帧扫描完,关扫描GO4:POP ACCRETI ;退出; *******扫描文字表********;共5排字.每排4个字,前后为黑屏TAB:DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;黑屏DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;黑屏DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;黑屏DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;黑屏DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;DB 0F7H,0DFH,0F9H,0CEH,0FBH,0BFH,0C0H,007H,0DEH,0E7H,0C0H,007H,0DEH,0F7H,0DEH,0F7H;--文字:单--DB 0C0H,007H,0DEH,0F7H,0FEH,0FFH,000H,001H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFHDB 0FEH,0BFH,0FFH,0BEH,0EFH,0BFH,0EFH,0EBH,0E0H,001H,0EFH,0FFH, 0EFH 0FFH, 0EFH,0FFH--文字:片--DB 0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0EFHDB 0EFH,0EFH,0FFH,007H,001H,077H,001H,077H,00EFH,077H,0EFH,077H,0C7H,077H,0CBH,077H;--文字:机--DB 0ABH,077H,0AFH,077H,06FH,0F7H,0EEH,0F5H,0EDH,0F5H,0FDH,0F5H,0EBH,0F9H,0EFH,0FFH;下面的DB表略去(2)C源程序/*--------------------------------------------------多个16×16 LED显示演示程序MCU AT89C52 XAL 24 MHz--------------------------------------------------*///以下程序能实现多个16×16 LED屏的多个字符显示,显示方式有整行上移、帘入帘出、左移、右移//# include “reg52.h”# define BLKN 8 //列锁存器数(为LED显示字数×2)# define TOTAL 20 //待显示字个数,本例共20个# define CONIO P1 //显示控制口sbit G=CONIO^7;//CONIO.7为154译码器显示允许控制信号端口,0时输出,l时输出全为高阻态sbit CLK= CONIO^6;//CONIO.6为595输出锁存器时钟信号端,l时输出数据,从l到0时锁存输出数据sbit SCLR= CONIO^5; //CONIO.5为595移位寄存器清0口,平时为l,为0时,输出全为0unsigned char idata dispram[ (BLKN/2)* 32]={o};//显示区缓存,4字共4×32单元//*******字模表1******************//unsigned char code Bmp[][32]={{0F7H,0DFH,0F9H,0CEH,0FBH,0BFH,0C0H,007H,0DEH,0E7H,0C0H,007H,0DEH,0F7H,0DEH,0F7H,0C0H,007H,0DEH,0F7H,0FEH,0FFH,000H,001H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH},//--文字:单--{0FEH,0BFH,0FFH,0BEH,0EFH,0BFH,0EFH,0EBH,0E0H,001H,0EFH,0FFH, 0EFH 0FFH, 0EFH,0FFH,0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0EFH},//--文字:片--{0EFH,0EFH,0FFH,007H,001H,077H,001H,077H,00EFH,077H,0EFH,077H,0C7H,077H,0CBH,077H,0ABH,077H,0AFH,077H,06FH,0F7H,0EEH,0F5H,0EDH,0F5H,0FDH,0F5H,0EBH,0F9H,0EFH,0FFH},//--文字:机--//下面的DB表略去};//*******字模表2******************//unsigned char code Bmp1[][32]={{0F7H,0DFH,0F9H,0CEH,0FBH,0BFH,0C0H,007H,0DEH,0E7H,0C0H,007H,0DEH,0F7H,0DEH,0F7H,0C0H,007H,0DEH,0F7H,0FEH,0FFH,000H,001H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH},//--文字:单--{0FEH,0BFH,0FFH,0BEH,0EFH,0BFH,0EFH,0EBH,0E0H,001H,0EFH,0FFH, 0EFH 0FFH, 0EFH,0FFH,0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0EFH},//--文字:片--{0EFH,0EFH,0FFH,007H,001H,077H,001H,077H,00EFH,077H,0EFH,077H,0C7H,077H,0CBH,077H,0ABH,077H,0AFH,077H,06FH,0F7H,0EEH,0F5H,0EDH,0F5H,0FDH,0F5H,0EBH,0F9H,0EFH,0FFH},//--文字:机--//下面的DB表略去};/**********延时函数(约1 ms)************/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= l;//启动定时器T0CONIO =0x3F;//CONIO端口初值IE =0x82; //允许定时器T0中断while(1){delay(2000);//2 s//第1种显示效果:卷帘出显示笑脸图案for (i= 0; i<32; i++){for(q= 0; q< BLKN/2; q++) {dispram[i+q*32]= Bmpl[5][i];}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++){dispram[i+q*32]= Bmp[q+w*BLKN/2][i];}if (i%2)delay(120);}delay(3000);}//第1种显示效果:卷帘出显示笑脸图案for (i= 0;i<32;i++){for(q=0;q<BLKN/2;q++){dispram[i+q*32]= Bmpl[5][i];)if(i%2)delay(120);}delay(1000);//第2种显示效果:向上滚屏,每次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++){ dispram[k*2+q* 32]= dispram[(k+1)*2+q*32]:dispram[k*2+l+q* 32]= dispram[(k+1)*2+1+q*32];}}for(q=0;q<BLKN/2;q++){dispram[30+ q* 32]= Bmp[q+i*BLKN/2][j*2]; dispram[31+q*32]= Bmp[q+i*BLKN/2][j*2+1];}delay(100);}delay(3000);//滚动暂停}// 第1种显示效果:卷帘出黑屏for(1=0:i<32;i++){for(q=0:q<BLKN/2;q++){dispram[i+q*32]= 0xff;}if (i%2) delay(120);}delay(1000);//第3种显示效果:左移出显示for (i=0;i<TOTAL; i++){for(j=0;j<2;j++)for(k=0;k<8;k++){for(1=0;1<16; 1++){for(q= 0;q<BLKN/2;q++){dispram[l*2+q”32]= dispram[l*2+q* 32]<<1 | dispram[l*2+1+q*32]>>7;if (q==BLKN/2 -1)dispram[l*2+l+q*32]= dispram[l*2+l+q* 32]<<1 | Bmp[i][1*2+j]>>(7- k);else dispram[l*2+l+q*32]= dispram[l*2+l+q* 32]<<1 | dispram[l*2+(q+1)*32]>>7;}}delay(100);}}delay(3000);//第1种显示效果:卷帘出黑屏for (i= 0;i<32;i++){for(q=0;q<BLKN/2;q十+){disprarn[i+ q* 32]= 0xFF;}if (i%2) delay(120);}delay(1000);//第3种显示效果:右移出显示for (i=0;i<TOTAL; i++){for(j=2;j>0; j--)for(k=0;k<8;k++){for(1=0;1<16; 1++){for(q= 0;q<BLKN/2; q++){Dispram[l*2+1+q* 32]= dispram[l*2+1+q*32]>>1 | dispram[l*2+q*32]<<7;if(q==0) dispram[l*2+q*32]= dispram[l*2+q*32]>>1 | Brnp[i][1*2+j-1]<<(7-k);else dispram[l*2+q* 32]= dispram[l*2+q*32] >>1 | dispram[l*2+l+(q -1)*32]<<7;}}delay(100);}}delay(3000);//第4种显示效果:卷帘人for(i=0;i<32;i++){for(q=0;q<BLKN/2;q++){ dispram[i+q*32]=0x00;}if(i%2) delay(100);}}}//主函数结束/***显示屏扫描(定时器T0中断)函数********/void leddisplay(void) interrupt l using 1{register unsigned char m,n=BLKN;TH0= 0xFC://设定显示屏刷新率每秒62.5帧(16 ms/帧)TL0= 0x18:m= CONIO://读取当前显示的行号m= ++m&0x0F; //行号加1,屏蔽高4位do{n--;SBUF= dispram[m*2+(n/2)* 30+n];//送显示数据while(!TI);TI=0;} while(n);//完成一行数据的发送G=1; //消隐(关闭显示)CONIO&=0xF0; //行号端口清0CLK=1; //显示数据输入/输出锁存器CONIO |=m; //写入行号CLK=0; //锁存显示数据G=0; //打开显示}。
16×16点阵显示汇编程序
ORG 0000HAJMP READYORG 000BHAJMP INT_0;只需更改点阵数据和要显示的总字数READY:MOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV SP,#70HMOV 36H,#2DMOV 37H,#00H;************************************************ MOV 3AH,#17D ;设置要显示的总字数;************************************************ LCALL DATA_CHUSHISETB EASETB ET0MOV TMOD,#01HMOV TH0,#0A6HMOV TL0,#00HSETB TR0;主程序MAIN:ACALL DISP_READYACALL KEYAJMP MAIN;*********************************************** DA TA_CHUSHI:MOV 35H,#00HMOV 38H,#00HMOV 39H,#01H ;初始化时已显示第一个字MOV 3BH,#0A0H ;暂存r0指向地址MOV DPTR,#DATA1MOV R0,#0A0H ;点阵数据存放地址MOV 30H,#32D ;数据字节数SEND_DATA0:MOV A,#00HMOVC A,@A+DPTRMOV @R0,AINC R0INC DPTRDJNZ 30H,SEND_DA TA0;*********************************************** MOV R0,#0C0H ;点阵数据存放地址MOV 30H,#32D ;数据字节数SEND_DATA1:MOV A,#00HMOVC A,@A+DPTRMOV @R0,AINC R0INC DPTRDJNZ 30H,SEND_DA TA1;*********************************************** MOV DPTR,#DATA1+32MOV R0,#80H ;点阵数据存放地址MOV 30H,#32D ;数据字节数SEND_DATA2:MOV A,#00HMOVC A,@A+DPTRMOV @R0,AINC R0INC DPTRDJNZ 30H,SEND_DA TA2RET;*********************************************** KEY:MOV P3,#0FFHMOV A,P3ANL A,#00000011BCJNE A,#00000011B,KEY_PANDUANRETKEY_PANDUAN:MOV 34H,AACALL KEY_DELAYMOV A,P3ANL A,#00000011BCJNE A,34H,KEY_EXITACALL KEY_CHULIKEY_EXIT: RET;***************************KEY_CHULI:JB ACC.0,KEY_2MOV A,37HADD A,#40HMOV 37H,ALCALL DATA_CHUSHIRETKEY_2: JB ACC.1,KEY_CHULI_EXITINC 36HINC 36HMOV A,36HCJNE A,#14D,CHANGE_36HMOV A,#2DCHANGE_36H:MOV 36H,AMOV 35H,#00HRETKEY_CHULI_EXIT:RET;*************************** KEY_DELAY:DL Y_LP1: MOV R1,#20MOV R6,#50DL Y_LP2:NOPNOPNOPDJNZ R6,DL Y_LP2DJNZ R7,DL Y_LP1END_DL YMS:RET;***************************;显示程序DISP_READY:MOV R0,3BHMOV 30H,#16DMOV 31H,#00HDISP:MOV A,@R0MOV P0,AINC R0MOV A,@R0MOV P2,AMOV P1,31HACALL DISP_DELAYMOV P0,#00HMOV P1,#0FFHMOV P2,#00HINC 31HINC R0DJNZ 30H,DISPDISP_EXIT:RET;显示延时DISP_DELAY:MOV 32H,#2D1:MOV 33H,#150DJNZ 33H,$DJNZ 32H,D1RET;中断处理程序INT_0:PUSH ACCMOV TH0,#0A6HMOV TL0,#00HINC 35HMOV A,35HCJNE A,36H,INT0_EXITMOV 35H,#00HACALL WHICH_WAYINT0_EXIT:POP ACCRETI;********************************************* WHICH_W AY:MOV A,37HCJNE A,#00H,WAY2ACALL YIDONG1RETWAY2: CJNE A,#40H,WAY3ACALL YIDONG2RETWAY3: CJNE A,#80H,WAY4ACALL YIDONG3RETWAY4: ACALL YIDONG4RET;********************************************* YIDONG1: MOV 50H,#0A1HMOV 51H,#0C1HMOV 3CH,#16DINC 38HMOV A,38HCJNE A,#16D,YIDONG1_THEN1MOV 38H,#00HINC 39HMOV A,39HCJNE A,3AH,YIDONG1_THENMOV 39H,#00HMOV DPTR,#DATA1YIDONG1_THEN:MOV 3CH,#32DMOV R1,#0C0HYIDONG1_SEND_DA TA:MOV A,#00HMOVC A,@A+DPTRMOV @R1,AINC R1INC DPTRDJNZ 3CH,YIDONG1_SEND_DA TAMOV 3CH,#16DYIDONG1_THEN1:MOV R1,51HMOV A,@R1RLC AMOV @R1,ADEC R1MOV A,@R1RLC AMOV @R1,AMOV R1,50HMOV A,@R1RLC AMOV @R1,ADEC R1MOV A,@R1RLC AMOV @R1,AINC 50HINC 50HINC 51HINC 51HDJNZ 3CH,YIDONG1_THEN1RET;********************************************* YIDONG2:MOV 50H,#0A0HMOV 51H,#80HMOV 3CH,#16DINC 38HMOV A,38HCJNE A,#16D,YIDONG2_THEN1MOV 38H,#00HINC 39HMOV A,39HCJNE A,3AH,YIDONG2_THENMOV 39H,#00HMOV DPTR,#DA TA1YIDONG2_THEN:MOV 3CH,#32DMOV R1,#80HYIDONG2_SEND_DA TA:MOV A,#00HMOVC A,@A+DPTRMOV @R1,AINC R1INC DPTRDJNZ 3CH,YIDONG2_SEND_DATAMOV 3CH,#16DYIDONG2_THEN1:MOV R1,51HMOV A,@R1RRC AMOV @R1,AINC R1MOV A,@R1RRC AMOV @R1,AMOV R1,50HMOV A,@R1RRC AMOV @R1,AINC R1MOV A,@R1RRC AMOV @R1,AINC 50HINC 50HINC 51HINC 51HDJNZ 3CH,YIDONG2_THEN1RET;********************************************* YIDONG3:INC 3BHINC 3BHMOV 30H,#01HINC 38HMOV A,38HCJNE A,#16D,YIDONG3_EXITMOV 3BH,#0A0HMOV 38H,#00HMOV 3CH,#32DMOV 50H,#0A0HMOV 51H,#0C0HYIDONG3_LOOP:MOV R1,51HMOV A,@R1MOV R1,50HMOV @R1,AINC 50HINC 51HDJNZ 3CH,YIDONG3_LOOPINC 39HMOV A,39HCJNE A,3AH,YIDONG3_THENMOV 39H,#00HMOV DPTR,#DATA1YIDONG3_THEN:MOV R1,#0C0HMOV 3CH,#32DYIDONG3_THEN2:MOV A,#00HMOVC A,@A+DPTRMOV @R1,AINC R1INC DPTRDJNZ 3CH,YIDONG3_THEN2 YIDONG3_EXIT:RET;********************************************* YIDONG4:DEC 3BHDEC 3BHMOV 30H,#01HINC 38HMOV A,38HCJNE A,#16D,YIDONG4_EXITMOV 3BH,#0A0HMOV 38H,#00HMOV 3CH,#32DMOV 50H,#0A0HMOV 51H,#80HYIDONG4_LOOP:MOV R1,51HMOV A,@R1MOV R1,50HMOV @R1,AINC 50HINC 51HDJNZ 3CH,YIDONG4_LOOPINC 39HMOV A,39HCJNE A,3AH,YIDONG4_THENMOV 39H,#00HMOV DPTR,#DATA1YIDONG4_THEN:MOV R1,#80HMOV 3CH,#32DYIDONG4_THEN2:MOV A,#00HMOVC A,@A+DPTRMOV @R1,AINC R1INC DPTRDJNZ 3CH,YIDONG4_THEN2YIDONG4_EXIT:RET;*********************************************DA TA1:DB00H,00H,03H,00H,73H,7EH,13H,66H,0FH,0E6H,4FH,0E6H,73H,7EH,17H,66H,07H,0E6H,37H ,0FEH,3FH,66H,2BH,66H,23H,66H,63H,7EH,63H,66H,00H,00HDB00H,00H,0FH,0FEH,7FH,0FEH,30H,0B0H,07H,0FEH,44H,0B6H,67H,0FEH,33H,0FCH,07H,0F CH,17H,0FCH,16H,04H,37H,0FCH,36H,62H,6FH,0FFH,20H,60H,00H,60HDB00H,00H,7EH,00H,7FH,0FCH,24H,84H,3CH,84H,3CH,84H,24H,84H,24H,84H,3CH,0FCH,24H ,00H,27H,48H,7FH,6CH,74H,0C6H,05H,86H,05H,02H,00H,00HDB00H,00H,06H,60H,06H,60H,06H,60H,66H,64H,26H,6CH,36H,6CH,36H,6CH,16H,68H,1EH,78 H,16H,60H,06H,60H,06H,60H,7FH,0FEH,7FH,0FEH,00H,00HDB00H,00H,18H,60H,18H,60H,1BH,0FEH,7DH,0FEH,7CH,60H,19H,60H,1BH,0FCH,3CH,8CH,7 8H,0C8H,18H,0D8H,18H,70H,18H,70H,3BH,0DEH,33H,06H,00H,00HDB00H,00H,01H,90H,01H,98H,01H,88H,7FH,0FEH,7FH,0FEH,03H,0C0H,07H,0C0H,05H,0E0H,0 DH,0B0H,19H,98H,31H,9CH,61H,8EH,01H,80H,01H,80H,00H,00HDB00H,00H,19H,98H,19H,98H,08H,30H,7FH,0FEH,60H,06H,60H,06H,1FH,0F8H,00H,0F0H,00H, 80H,7FH,0FEH,40H,80H,00H,80H,00H,80H,03H,80H,00H,00HDB00H,00H,00H,60H,7CH,20H,6BH,0FEH,6BH,02H,79H,04H,79H,0FCH,68H,00H,6FH,0FEH,64 H,0D0H,7CH,0D0H,78H,0D0H,60H,92H,63H,13H,66H,1EH,00H,00HDB00H,00H,18H,60H,18H,60H,17H,0FEH,30H,00H,33H,0FEH,70H,00H,53H,0FEH,12H,00H,10H,00H,13H,0FCH,13H,04H,13H,04H,13H,0FCH,13H,04H,00H,00HDB02H,00H,03H,00H,1FH,0F8H,10H,08H,1FH,0F8H,10H,08H,1FH,0F8H,10H,08H,1FH,0F8H,00 H,00H,0DH,88H,2CH,0CCH,6CH,16H,64H,30H,07H,0E0H,00H,00HDB00H,00H,00H,00H,3FH,0FCH,21H,84H,01H,80H,01H,80H,01H,80H,01H,80H,01H,80H,01H,80 H,01H,80H,01H,80H,41H,82H,7FH,0FEH,00H,00H,00H,00HDB00H,00H,0CH,00H,7DH,0FCH,19H,84H,19H,84H,7FH,0FCH,7CH,00H,19H,0FCH,3DH,0FEH, 3EH,20H,79H,0FCH,59H,0FCH,18H,20H,19H,0FEH,1BH,0FEH,00H,00HDB00H,00H,00H,7CH,3FH,0F0H,03H,80H,06H,38H,1FH,0E0H,1FH,90H,07H,18H,3DH,0FCH,1F H,0FEH,00H,90H,1CH,98H,30H,8CH,63H,86H,03H,80H,00H,00HDB00H,00H,00H,0C0H,00H,0C0H,7EH,0FEH,06H,0FEH,25H,84H,35H,2CH,1CH,20H,18H,60H,1 CH,70H,16H,70H,36H,0D8H,60H,0CCH,63H,86H,03H,02H,00H,00HDB00H,00H,20H,80H,33H,0BEH,32H,26H,12H,26H,02H,26H,72H,26H,12H,26H,12H,26H,13H,0A 6H,17H,0ACH,12H,20H,10H,20H,3FH,0FEH,41H,0FEH,00H,00HDB00H,00H,08H,0C0H,19H,0FCH,3BH,0FCH,3EH,6CH,58H,60H,19H,68H,1BH,64H,1EH,0E2H,1 8H,0C0H,04H,88H,34H,0CCH,34H,16H,27H,0F0H,27H,0F0H,00H,00HDB00H,00H,00H,00H,04H,00H,0EH,00H,0EH,00H,0EH,00H,0EH,00H,0EH,00H,0EH,00H,04H,00 H,00H,00H,0EH,00H,0EH,00H,00H,00H,00H,00H,00H,00HEND。
点阵16-16显示汉字
doc文档摘<br />要<br />LED 显示器由于其价格低廉,体积小,功耗低,可靠性好得到广泛使用, LED 点阵显示电子广告牌随处可见.现在市场上各类基于LED 的显示屏较多, 但大部分产品为单一模式的LED 显示屏,其在显示内容的更换及显示屏的重组等方面都存在不便之处.随着信息化社会的迅速发展,LED 显示屏正在向显示内容丰富,信息更改方便等方面发展.本系统基于单片机(AT89C51)控制显示汉字采用16×16 LED 点阵. 关键词: 关键词:LED 点阵;汉字; 信息;单片机<br />目<br />录<br />1 课题描述.................................................................................................1 2 设计过程.................................................................................................2 2.1 硬件电路设计...............................................................................2 2.12 硬件电路组成.......................................................................2 2.14 汉字显示原理及字库代码获取方法...................................3 2.2 程序设计.. (5)2.21 程序流程图..........................................................................5 2.22 程序清单...............................................................................6 3 测试.........................................................................................................9 4总结....................................................................................................10<br />参考文献................................................................................................... 11<br />1 课题描述<br />目前,国内的LED 点阵显示屏大部分是单显示型,其显示的内容相对较少, 显示花样较单一.一般在产品出厂时,显示内容就已写入显示屏控制系统中的EPROM 芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制.国内的另一种LED 显示屏——可编程序型LED 显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点.随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富,信息量大,信息更换速度快等特点.因此传统的LED 显示屏控制系统已经越来越不能满足现代广告宣传业的需要. 而利用PC 机通信技术控制LED 显示屏,则具有显示内容丰富,信息更换灵活等优点. 本课题基于单片机(A T89C51)控制汉字显示采用16×16 LED 点阵. 开发工具:DICE-51 仿真开发系统,Proteus 仿真软件.<br />1<br />2 设计过程<br />设计过程主要分为:硬件电路设计,程序设计<br />2.1 硬件电路设计2.12 硬件电路组成<br />本系统以AT89C51 单片机为核心芯片的电路来实现, 主要由AT89C51 芯片, 时钟电路,复位电路,列扫描驱动电路(74HC154),16×16 LED 点阵5 部分组成,如图1 所示.使用8×8 点阵构建16×16 点阵,构造方法如图 2.<br />图1<br />图2<br />2<br />2.13 基本电路工作原理<br />AT89C51 是一种带4 kB 闪烁可编程可擦除只读存储器(Falsh Programmable and Erasable Read OnlyMemory,FPEROM)的低电压,高性能CMOS 型8 位微处理器,俗称单片机.该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51 指令集和输出管脚相兼容. 由于将多功能8 位CPU 和闪烁存储器组合在单个芯片中, 能够进行 1 000 次写/擦循环, 数据保留时间为10 年. 他是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案.因此,在智能化电子设计与制作过程中经常用到AT89C51 芯片. 时钟电路由AT89C51 的18,19 脚的时钟端(XTALl 及XTAL2)以及12 MHz 晶振X1,电容C2,C3 组成,采用片内振荡方式. 复位电路采用简易的上电复位电路,主要由电阻R1,R2,电容C1,开关K1组成,分别接至AT89C51 的RST 复位输入端. LED 点阵显示屏采用16×16 共256 个象素的点阵.我们把行列总线接在单片机的IO 口,然后把上面分析到的扫描代码送人总线,就可以得到显示的汉字了.但是若将LED 点阵的行列端口全部直接接入89S51 单片机,则需要使用32 条IO 口,这样会造成IO 资源的耗尽,系统也再无扩充的余地.因此,我们在实际应用中只是将LED 点阵的16 条行线直接接在P2 口和P3 口, 至于列选扫描信号则是由4-16 线译码器74HC154 来选择控制, 这样一来列选控制只使用了单片机的4 个IO 口,节约了很多IO 资源,为单片机系统扩充使用功能提供了条件. 汉字扫描显示的基本过程是这样的:通电后由于电阻R1,电容C1 的作用, 使单片机的RST 复位脚电平先高后低,从而达到复位;之后,在C2,C3,X1 以及单片机内部时钟电路的作用下,单片机89C51 按照设定的程序在P2 和P3 接口输出与内部汉字对应的代码电平送至LED 点阵的行选线(高电平驱动),同时在P1.1,P1.2,P1.3,P1.4 接口输出列选扫描信号(低电平驱动),从而选中相应的象素LCD 发光,并利用人眼的视觉暂留特性合成整个汉字的显示.<br />2.14 汉字显示原理及字库代码获取方法<br />我们以UCDOS 中文宋体字库为例,每一个字由16 行16 列的点阵组成显示. 即国标汉字库中的每一个字均由256 点阵来表示.我们可以把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像.事实上这个汉字屏不仅可以显示汉字,也可以显示在256 象素范围内的任何图形.如查用8 位的AT89C51 单片机控制,由于单片机的总线为8 位,一个字需要拆分为2 个部分. 为了弄清楚汉字的点阵组成规律,首先通过列扫描方法获取汉字的代码. 汉字可拆分为上部和下部,上部由8×16 点阵组成,下部也由8×16 点阵组成. 本例通过列扫描方法首先显示左上角的第一列的上半部分,即第0 列的P2.0~<br />3<br />P2.7 口,方向为P2.0 到P2.7,显示汉字"大"时,P2.5 点亮,由上往下排列, 为:P2.0 灭,P2.1 灭,P2.2 灭P2.3 灭,P2.4 灭,P2.5 亮,P2.6 灭,P2.7 灭. 即二进制00000100,转换为十六进制为04h.上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从P3.7 向P3.0 方向扫描,这一列全部为不亮,即为00000000,十六进制则为00h.依照这个方法转向第二列, 第三列, …, 直至第十六列的扫描, 一共扫描32 个8 位, 可以得出汉字"大"的扫描代码,由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出他的扫描代码从而显示在屏幕上. 上述方法虽然能够让我们弄清楚汉字点阵代码的获取过程,但是依靠人工方法获取汉字代码是一件非常繁琐的事情.为此,我们经常采用字库软件查找字符代码,软件打开后输入汉字,点"检取",十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到程序中即可,如图 3 所示.<br />图2 可见,汉字点阵显示一般有点扫描,行扫描和列扫描 3 种.为了符合视觉暂留要求,点扫描方法的扫描频率必须大于16×64=1 024 Hz,周期小于1 ms 即可. 行扫描和列扫描方法的扫描频率必须大于16×8=128 Hz, 周期小于7.8 ms 即可,但是一次驱动一列或一行(8 颗LED)时需外加驱动电路提高电流,否则LED 亮度会不足.<br />4<br />2.2 程序设计2.21 程序流程图<br />软件程序主要由开始,初始化,主程序,字库组成.其中主程序和子程序的流程图如图 4 和图 5所示<br />图3 主程序流程图<br />5<br />图表4 子程序流程图<br />2.22 程序清单<br />ORG LJMP ORG MOV SETB MOV MOV LCALL CLR MOV ADD MOV MOV ADDC MOV DJNZ LJMP SETB 0000H MIN 0030H SP,#60H P1.0 30H,#10H DPTR,#TAB MIC C A, DPL A, #32 DPL,A A, DPH A, #00H DPH, A 30H,L1 MIX P1.0<br />6<br />MIN: MIX:<br />L1:<br />MIC:<br />LP: LOOP:<br />MOV MOV MOV MOV<br />31H, #80 32H,#16 R1,#1EH R2,#00H<br />EN: MOV A,R2 MOVC A, @A+DPTR MOV P2,A INC R2 MOV A,R2 MOVC A,@A+DPTR MOV P3,A INC R2 MOV A, R1 MOV P1,A LCALL DEL SETB P1.0 RR A DEC A RL A MOV R1,A DJNZ 32H,EN DJNZ 31H,LOOP RET MOV 34H,#2 MOV R4, #250 DJNZ R4,$ DJNZ 34H,DL0 RET TAB: ;计db 02H,00H,02H,00H,42H,00H,33H,0FEH db 00H,04H,02H,08H,02H,10H,02H,00H db 02H,00H,0FFH,0FFH,02H,00H,02H,00H db 02H,00H,06H,00H,02H,00H,00H,00H; ;算db10H,10H,20H,10H,0C0H,11H,5FH,0D2H db 75H,7CH,55H,50H,55H,50H,35H,50H db0D5H,50H,55H,50H,75H,7FH,5FH,0D0H db 40H,10H,40H,30H,00H,10H,00H,00H; ;机db08H,20H,08H,0C0H,0BH,00H,0FFH,0FFH db 09H,01H,08H,82H,00H,04H,3FH,0F8H<br />7<br />DEL : DL0:<br />db 20H,00H,20H,00H,20H,00H,7FH,0FCH db 20H,02H,00H,02H,00H,0EH,00H,00H; ;科db24H,08H,24H,10H,24H,60H,25H,80H db 7FH,0FFH,0C5H,00H,44H,80H,00H,40H db24H,40H,12H,40H,00H,40H,0FFH,0FFH db 00H,80H,01H,80H,00H,80H,00H,00H; ;学db02H,20H,0CH,20H,88H,20H,69H,20H db 09H,20H,09H,22H,89H,21H,69H,7EH db09H,60H,09H,0A0H,19H,20H,28H,20H db 0C8H,20H,0AH,60H,0CH,20H,00H,00H; ;与db00H,10H,00H,10H,00H,10H,0FFH,10H db 11H,10H,11H,10H,11H,10H,11H,10H db11H,10H,11H,32H,11H,11H,11H,02H db 33H,0FCH,11H,00H,00H,00H,00H,00H; ;机db08H,20H,08H,22H,08H,41H,0FFH,0FEH db 08H,80H,08H,01H,11H,81H,11H,62H db11H,14H,0FFH,08H,11H,14H,11H,64H db 31H,82H,10H,03H,00H,02H,00H,00H; ;术db04H,08H,04H,08H,04H,10H,04H,20H db 04H,40H,04H,80H,05H,00H,0FFH,0FFH db05H,00H,44H,80H,24H,40H,34H,20H db 04H,10H,0CH,18H,04H,10H,00H,00H; ;史db08H,10H,08H,20H,08H,0C0H,0BH,00H db 0FFH,0FFH,09H,00H,08H,90H,00H,20H db08H,0C0H,0BH,00H,0FFH,0FFH,09H,00H db 08H,0C0H,18H,60H,08H,40H,00H,00H; ;明db04H,44H,0CH,0C6H,35H,44H,0C6H,48H db 0CH,48H,00H,0FCH,3EH,80H,2AH,80H db6AH,80H,0ABH,0FFH,2AH,80H,2AH,88H db 7EH,84H,21H,0F8H,00H,80H,00H,00H; ;祥db04H,44H,0CH,0C6H,35H,44H,0C6H,48H db 0CH,48H,00H,0FCH,3EH,80H,2AH,80H db6AH,80H,0ABH,0FFH,2AH,80H,2AH,88H db 7EH,84H,21H,0F8H,00H,80H,00H,00H END<br /> 8<br />3 测试<br />在完成编写程序的编译和仿真之后,运行测试结果每个字显示完后向右移, 依次显示"陕西理工学院计算机科学与技术史明祥" ,如图6 显示"林"时的结果.<br />图5<br />9<br />4总<br />结<br />这次课程设计我从硬件,软件,仿真系统下应用以前学习的汇编语言编程基础以及微机原理和单片机的一些知识,综合起来才完成了这个基于单片机的汉字显示控制设计. 在本次的课程设计中,主要运用了我以前所学的汇编语言和微机原理方面的知识,通过对程序的不段修改和调试,最终,实现了所要达到的效果.并且的这次设计过程中对硬件设计有了更深的认识,获得了很大的收获. 最后,感谢老师的细心指导,希望这个关于16*16 点阵显示的设计和实现能够为他人所用和扩展.<br />10<br />参考文献<br />[1] 戴梅萼.《微型计算机技术及应用》清华大学出版社. [2] 李学礼.《基于Proteus 的8051 单片机实例教程》电子工业出版社. [3]李华.单片机实用接口技术北京航空航天工业出版社[4]张菊鹏.计算机硬件技术基础(第二版)清华大学出版社[5] 孙德文.微型计算机及其接口技术经济科学出版社<br />11。
16×16点阵LED显示屏整个过程及C语言程序(1).
16×16点阵LED显示屏整个过程及C语言程序7.1功能要求设计一个室内用16×16点阵LED图文显示屏,要求在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形或文字应稳定、清晰无串扰。
图形或文字显示有静止、移入移出等显示方式。
7.2方案论证从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。
16×16的点阵共有256个发光二极管,显然单片机没有这么多端口,如果我们采用锁存器来扩展端口,按8位的锁存器来计算,16×16的点阵需要256/8=32个锁存器。
这个数字很庞大,因为我们仅仅是16×16的点阵,在实际应用中的显示屏往往要大的多,这样在锁存器上花的成本将是一个很庞大的数字。
因此在实际应用中的显示屏几乎都不采用这种设计,而采用另一种称为动态扫描的显示方法。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套列驱动器。
具体就16×16的点阵来说,我们把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第一行使其燃亮一定的时间,然后熄灭;再送出第二行的数据并锁存,然后选通第二行使其燃亮相同的时间,然后熄灭;……第十六行之后又重新燃亮第一行,这样反复轮回。
当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,我们就能看到显示屏上稳定的图形了。
采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。
显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。
显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。
16-16点阵LED显示汉字总汇编语言
LED16X16点阵显示课程设计报告学院专业班级学生姓名指导老师二0一0年十二月一、设计目的本次课程设计目的剖析试验箱,利用微机接口芯片8255,并行控制LED点阵显示;其次就是掌握8088微机系统与LED点阵显示模块之间接口电路设计及编程,了解LED点阵显示的基本原理和如何来实现汉字的的循环左移显示。
二、设计内容利用598H试验系统扩展接口CZ7座,在控制板MC1上以并行通信的方式控制LED 点阵显示。
要求自建字库,编制程序实现点阵循环左移显示汉字,并要求通过protues仿真软件画出电路图,运行程序。
三、硬件电路设计整个电路由8088CPU,两片8255,1个74ls373,1个74LS138,1个16×16的LED,5个7407。
该电路可静态显示1个16*16位的汉字,也可循环显示。
1、8255Intel8255A是一种通用的可编程序并行I/O接口芯片,又称“可编程外设接口芯片”,是为Intel8080/8085系列微处理据设计的,也可用于其它系列的微机系统。
可由程序来改变其功能,通用性强、使用灵活。
通过8255A,CPU可直接同外设相连接,是应用最广的并行I/O接口芯片。
其中含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力。
可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。
2、138译码器译码器是组合逻辑电路的一个重要的器件,74LS138的输出是低电平有效,故实现逻辑功能时,输出端不可接或门及或非门,74LS138与前面不同,其有使能端,故使能端必须加以处理,否则无法实现需要的逻辑功能。
发光二极管点亮只须使其正向导通即可,根据LED的公共极是阳极还是阴极分为两类译码器,即针对共阳极的低电平有效的译码器;针对共阴极LED的高电平输出有效的译码器。
3、373锁存器74LS373是低功耗肖特基TTL8D锁存器,内有8个相同的D型(三态同相)锁存器,由两个控制端(11脚G或EN;1脚OUT、CONT、OE)控制。
51单片机驱动16×16LED点阵显示动画汉字总汇编程序
51单片机驱动16×16LED点阵显示动画汉字汇编程序这里提供一个完整的AT89S51单片机驱动驱动led点阵显示具有动画效果的汉字的汇编程序列子.ORG 0000HST: MOV A,#0FFH ;初始化MOV P1,AMOV P2,AMOV P3,AMOV P0,ACLR AMOV R0,#50H ;显示缓存清0MOV R1,#20H ;控制清0的次数ST0: MOV R0,AINC R0DJNZ R1,ST0;正文显示CHINESE: MOV DPTR,#TAB1 ;查表指针指向TAB1LCALL HZ;结束动画SCREE:MOV DPTR,#TAB2;查表指针指向TAB2ACALL DDMOV DPTR,#TAB3;查表指针指向TAB3ACALL DDMOV DPTR,#TAB4;查表指针指向TAB4ACALL DDLJMP CHINESE;显示8幅画面子程序,SCREE专用,用字模软件字要倒置(表必须深256字节)DD: MOV B,#00HMOV R0,#08H ;显示8幅画面AJMP CCCC0: MOV A,BADD A,#20H ;指向下一幅画面MOV B,ACC: MOV R7,#08H ;画面停留时间MOV R3,BMOV 37H,R0LCALL ENTERDIS00: LCALL DISPLAYDJNZ R7,DIS00MOV R0,37HDJNZ R0,CC0RET;汉字上移子程序,可显示8个汉字,(表必须深256字节)HZ: MOV R3,#00H ;查表偏移量MOV R5,#81H ;查表128次MOVBACK: MOV R4,#10H ;使显示完一个汉字MOVBACK0: MOV R7,#02H ;一桢画面显示时间MOV R0,#6DH ;低8位R0指向显示缓存倒数第3个字节,以备与最后1个字节交换MOV R1,#6CH ;高8位R1指向显示缓存倒数第4个字节,以备与倒数第2个字节交换MOV R2,#10H ;存后移的次数DJNZ R5,MOVBACK1RET ;显示完该表,返回MOVBACK1: MOV A,R0 ;低8位被后移的存单元数据暂存入AINC R0 ;后移两字节INC R0MOV R0,A ;放入要移的低8位数据MOV A,R0 ;R0指向下一个要后移的存单元SUBB A,#04HMOV A,R1 ;高8位被后移的存单元数据暂存入A INC R1 ;后移两字节INC R1MOV R1,A ;放入要移高8位的数据MOV A,R1 ;R1指向下一个要后移的存单元SUBB A,#04HMOV R1,A ;R1指向下一个要后移的存单元DJNZ R2,MOVBACK1 ;显示缓存数据依次后移MOV A,R3 ;从表TAB1读入要移进50H,51H的数据MOVC A,A+DPTR;先给50H读数据MOV 50H,AMOV A,R3 ;指向下一字节INC AMOV R3,AMOVC A,A+DPTR;再给51H读数据MOV 51H,AMOV A,R3 ;指向下一字节INC AMOV R3,AMOV 30H,R3 ;保护数据MOV 31H,R4MOV 32H,R5DISMOV: LCALL DISPLAY ;显示当前数据DJNZ R7,DISMOVMOV R3,30HMOV R4,31HMOV R5,32HDJNZ R4,MOVBACK0MOV 30H,R3 ;保护数据MOV R7,#24H ;显示当前数据延时DISMOV0: LCALL DISPLAYDJNZ R7,DISMOV0MOV R3,30HMOV R5,32HLJMP MOVBACK;放进一幅显示数据到显示缓存子程序,要先设好指针DPTR和R3,影响R1,R2,R3 ENTER: MOV R1,#50H ;从50H单元起把表存入MOV R2,#20H ;查表次数MOV A,R3CLLOOP_: MOVC A,A+DPTR ;查表MOV R1,A ;将表放进5X,6X单元INC R1 ;R1指向下一个地址空间MOV A,R3 ;查表指针后移INC AMOV R3,A ;将指针修改结果存入R3DJNZ R2,CLLOOP_;没查完转CLLOOP_RET;15MS,显示子程序,一桢32个字节,影响A,R0,R1,R3,R4,R5,R6;;.51hei./单片机网提供汉字取模工具,可显示任意汉字DISPLAY: MOV A,#0FFHMOV P0,AMOV P1,AMOV P2,AMOV P3,ASETB CMOV R6,#7FH ;赋扫描字初值,左移后初值为0FEHMOV R5,#00H ;列扫描低8位控制MOV R0,#50H ;行的高8(p1)位要显示的数据起始地址MOV R1,#10H ;扫描次数DISLOOP: MOV A,R0 ;从存读数据MOV P2,#0FFH ;装入数据时不显示任何东西MOV P3,#0FFHCPL A ;数据取反以适合显示MOV P1,A ;送入行的高8(p1)位要显示的数据INC R0 ;修改R0指向低8位要显示的数据MOV A,R0 ;读低8位要显示的数据CPL A ;数据取反以适合显示MOV P0,A ;送入行的低8(p0)位要显示的数据INC R0 ;R0指向下一个高8(p0)位要显示的数据LCALL NEXT ;调用列扫描程序LCALL DELAY1MS ;显示延时DJNZ R1,DISLOOP;一桢显示完返回MOV P3,#0FFH ;全灭RET;列扫描子程序DISLOOP专用NEXT: JNC NEXT1 ;C=0转扫描高8(p3)位行MOV A,R6 ;修改扫描字RL AMOV R6,AINC R5CJNE R5,#09H,NEXT0 ;R6=#0FEH时C=0 AJMP NEXT1BACK: RETNEXT0: MOV P2,R6 ;扫描低8(p2)位行AJMP BACKNEXT1: MOV P2,#0FFHMOV P3,R6 ;扫描高8(p3)位行MOV A,R6 ;修改扫描字RL AMOV R6,AAJMP BACK;延时1MS子程序DELAY1MS: MOV R3,#10D0: MOV R4,#50D1: DJNZ R4,D1DJNZ R3,D0RETTAB1:DB 01FH,0F8H,001H,000H,07FH,0FEH,041H,004H,01DH,070H,001H,000H,01DH,070H,000H,000H DB 01FH,0F0H,011H,010H,01FH,0F0H,011H,010H,01FH,0F2H,001H,002H,001H,002H,000H,0FEH;電DB 000H,000H,03FH,0F0H,000H,020H,000H,040H,000H,080H,001H,000H,001H,000H,001H,004HDB 0FFH,0FEH,001H,000H,001H,000H,001H,000H,001H,000H,001H,000H,005H,000H,002H,000H;子DB 008H,000H,008H,0FCH,07EH,084H,008H,084H,0FFH,094H,041H,088H,022H,080H,014H,0FEH DB 07EH,0A4H,008H,0A4H,008H,098H,0FFH,098H,008H,0A4H,008H,0A6H,008H,0C4H,008H,080H;報DB 000H,000H,000H,010H,03FH,0F8H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,000H,004H,07FH,0FEH,000H,000H,000H,000H,000H,000H;二DB 01FH,0F8H,001H,000H,07FH,0FEH,041H,004H,01DH,070H,001H,000H,01DH,070H,002H,080H DB 004H,060H,01AH,01EH,0E1H,008H,01FH,0E0H,000H,040H,002H,080H,001H,000H,001H,000H;零DB 01FH,0F8H,001H,000H,07FH,0FEH,041H,004H,01DH,070H,001H,000H,01DH,070H,002H,080H DB 004H,060H,01AH,01EH,0E1H,008H,01FH,0E0H,000H,040H,002H,080H,001H,000H,001H,000H;零DB 004H,000H,003H,000H,001H,080H,001H,000H,0FFH,0FEH,000H,000H,000H,000H,004H,080HDB 006H,040H,004H,020H,008H,010H,008H,018H,010H,00CH,020H,00CH,040H,008H,000H,000H;六DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H;(空) ;结束动画;-- 水纹-- ** 宋体, 12 **; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=128x16, 调整后为: 128x16TAB2:DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,080HDB 001H,080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,001H,080H,003H,0C0HDB 003H,0C0H,001H,080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,000H,000H,001H,080H,002H,040H,004H,020H,008H,010HDB 008H,010H,004H,020H,002H,040H,001H,080H,000H,000H,000H,000H,000H,000H,000H,000HDB 000H,000H,001H,0C0H,006H,030H,008H,008H,008H,008H,010H,004H,020H,002H,020H,002HDB 020H,002H,010H,004H,008H,008H,008H,008H,006H,030H,001H,0C0H,000H,000H,000H,000HDB 003H,0C0H,00CH,030H,010H,008H,010H,008H,060H,006H,040H,002H,080H,001H,080H,001HDB 080H,001H,080H,001H,040H,002H,060H,006H,010H,008H,010H,008H,00CH,030H,003H,0C0HDB 000H,000H,038H,01CH,046H,062H,081H,081H,080H,001H,040H,002H,040H,002H,020H,004HDB 020H,004H,040H,002H,040H,002H,080H,001H,081H,081H,046H,062H,038H,01CH,000H,000HDB 0C0H,003H,0A0H,005H,058H,01EH,024H,024H,024H,024H,01EH,078H,005H,0A0H,002H,040HDB 002H,040H,005H,0A0H,01AH,078H,024H,024H,024H,024H,058H,01AH,0A0H,005H,0C0H,003HDB 000H,000H,0C0H,003H,0B0H,00DH,088H,011H,044H,022H,025H,0A4H,012H,048H,00DH,0B0HDB 00DH,0B0H,012H,048H,025H,0A4H,044H,022H,088H,011H,0B0H,00DH,0C0H,003H,000H,000H;--福-- ** 宋体, 12 **; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=16x16, 调整后为: 16x16TAB3:DB 0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H,055H,0A AHDB 055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H DB 0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H,054H,02AH,0A8H,015H,050H,00AH DB 050H,00AH,0A8H,015H,054H,02AH,0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H DB 0AAH,055H,054H,02AH,0A8H,015H,050H,00AH,0A0H,005H,040H,002H,080H,001H,000H,000HDB 000H,000H,080H,001H,040H,002H,0A0H,005H,050H,00AH,0A8H,015H,054H,02AH,0AAH,055HDB 0A0H,005H,040H,002H,091H,0F9H,000H,000H,074H,0F0H,019H,008H,031H,008H,058H,0F0HDB 014H,000H,011H,0F8H,012H,044H,013H,0FCH,012H,044H,091H,0F9H,040H,002H,0A0H,005HDB 020H,000H,013H,0FEH,010H,000H,0FDH,0FCH,005H,004H,009H,004H,011H,0FCH,030H,000HDB 05BH,0FEH,096H,022H,012H,022H,013H,0FEH,012H,022H,012H,022H,013H,0FEH,012H,002HDB 000H,004H,07FH,0C8H,000H,008H,03FH,0BFH,020H,0A0H,020H,090H,03FH,088H,000H,00CHDB 07FH,0DAH,044H,069H,044H,048H,07FH,0C8H,044H,048H,044H,048H,07FH,0C8H,040H,048HDB 010H,040H,010H,080H,091H,000H,073H,0FFH,014H,080H,018H,040H,040H,0FFH,05EH,092HDB 052H,092H,052H,092H,052H,0FEH,052H,092H,052H,092H,05EH,092H,040H,0FFH,000H,000HDB 012H,002H,013H,0FEH,012H,022H,012H,022H,013H,0FEH,012H,022H,096H,022H,05BH,0FEHDB 030H,000H,011H,0FCH,009H,004H,005H,004H,0FDH,0FCH,010H,000H,013H,0FEH,020H,000HTAB4:DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F8H,0FFH,0F8H,0FFH,0C0H,0FFH,0C0H DB 0FEH,000H,0FEH,000H,0F0H,000H,0F0H,007H,0B0H,002H,0C8H,002H,048H,006H,030H,002H;STEP1 DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F8H,0FFH,0F8H,0FFH,0C0H,0FFH,0C0HDB 0FEH,000H,0FEH,000H,0F6H,000H,0F9H,007H,089H,002H,086H,001H,000H,005H,000H,002H;STEP2 DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F8H,0FFH,0F8H,0FFH,0C0H,0FFH,0C0HDB 0FEH,0C0H,0FFH,020H,0F1H,020H,0F0H,0C7H,080H,001H,080H,007H,000H,001H,000H,007H;STEP3 DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F8H,0FFH,0F8H,0FFH,0D8H,0FFH,0E4HDB 0FEH,024H,0FEH,018H,0F0H,000H,0F0H,001H,080H,001H,080H,007H,000H,005H,000H,005H;STEP4 DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FBH,0FFH,0FCH,0FFH,0C4H,0FFH,0C3HDB 0FEH,000H,0FEH,000H,0F0H,000H,0F0H,007H,080H,001H,080H,007H,000H,004H,000H,007H;STEP5 DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 000H,000H,0F4H,058H,084H,0D4H,085H,052H,0F5H,052H,085H,052H,086H,054H,0F4H,058HDB 000H,000H,022H,05EH,022H,050H,022H,050H,023H,0DEH,022H,050H,022H,050H,0FAH,05EHEND咕哝了很多天终于成功了,发出来供大家交流,没准儿还能对别人有些帮助,总之百利无一害……点阵大小是16*32的。
LED16×16点阵汉字显示设计(VHDL版)
毕业设计(论文)开题报告设计(论文)题基于FPGA的LED 16×16点阵汉字显示设计目一、选题的背景和意义:LED点阵显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。
它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。
受到体育场馆用LED显示屏需求快速增长的带动,近年来,中国 LED显示屏应用逐步增多。
目前,LED已经广泛应用在银行、火车站、广告、体育场馆之中。
而随着奥运会、世博会的临近,LED显示屏将广泛的应用在体育场馆以及道路交通指示中,LED显示屏在体育广场中的应用将出现快速增长。
因此,本设计是很有必要的,之所以基于FPGA设计是因为现场可编程门阵列(FPGA)设计周期小,灵活度高,适合用于小批量系统,提高系统的可靠性和集成度。
并且采用编写灵活的VHDL语言编写主程序。
本设计可以方便的应用到各类广告宣传中。
二、课题研究的主要内容:1. 实现16×16点阵的汉字显示;2. 实现有限汉字显示;4. 实现汉字的滚动显示;5. 完成方案论证。
三、主要研究(设计)方法论述:通过去图书馆查阅书籍收集资料,同时在搜索引擎上检索资料,分析借鉴已有类似产品、设计方案与成功经验,选择几种可行方案比对,最后确定最切实可行的方案展开设计。
通过Multisim或Quartus软件对系统进行模拟仿真,对电路功能进行改进与完善。
在EDA试验箱上进行调试。
四、设计(论文)进度安排:时间(迄止日期)工作内容2010.5.17-5.23理解并确认毕业设计任务书,撰写完成毕业设计开题报告(第1周)2010.5.24-5.30完成调研与资料收集、整理(第2周)2010.5.31-6.6设计方案及原理框图确定(第3周)2010.6.7-7.4电路资料收集,单元电路设计(第4、5、6、7周)2010.7.5-7.18电路仿真与改进、完善(第8、9周)2010.19-8.1资料整理(第10、11周)2010..8.2-8.8书写毕业设计报告(第12周)2010.8.9-8.16(第13周)修改毕业设计报告并整理装订五、指导教师意见:指导教师签名:年月日六、系部意见:系主任签名:年月日目录摘要ABSTRACT第一章前言 (1)1.1本设计的研究背景和研究目的 (1)1.2LED点阵显示特点 (2)1.3FPGA设计的特点 (2)第二章系统设计 (4)2.1设计任务与要求 (4)2.1.1设计任务 (4)2.1.2设计要求 (4)2.2设计原理 (4)2.2.1总体设计方案 (4)2.2.2方案的比较 (5)2.3扫描控制模块 (6)2.3.1 LED的显示原理 (6)2.3.2汉字的存储 (7)2.4汉字显示 (7)2.4.1列循环扫描 (8)2.4.2字符样式设计 (10)2.4.3字母循环扫描及期间的延时环节 (14)2.5整个完整的程序 (15)第三章系统调试与仿真 (22)3.1开发环境介绍 (22)3.2调试与仿真 (22)3.2.1 创建工程 (22)3.2.2 编译前设置 (23)3.2.3 全程编译 (25)3.2.4时序仿真 (26)第四章结束语 (29)答谢辞 (29)参考文献 (29)摘要主要研究基于VHDL的 Led点阵汉字滚动显示。
16x16LED汉字点阵总结报告
电子技术综合设计报告姓名及学号:黄天琦04091550、何俊04091549、李继越04091552、韩稳04081914专业与班级:电气与自动化09-9班设计题目:16*16LED汉字点阵显示系统设计时间:2011 ~2012 学年第(1)学期指导教师:冯小龙成绩:日期:一、课题任务基本要求:采用80C51单片机和LED点阵显示模块设计实现组合点阵信息显示。
提高要求:具有显示内容自动更新的功能以完成对任意存储的信息内容进行完整的显示。
二、方案比较与选择点阵LED显示器的结构和原理与七段LED数码显示器是一样的,均由发光二极管组成,但两者的排列结构不同。
LED点阵显示屏是由若干个显示单元拼接而成的。
方案一:显示接口采用静态驱动。
但点阵式LED显示器通常用在大面积汉字或图形显示的场合,因为点阵数很多,所以连接线也很多,如果采用静态驱动的方式,连线将会很复杂,硬件的成本将增加。
但软件开销小,而且显示不会出现闪烁现象。
方案二:显示接口采用动态驱动。
特点与静态驱动刚好相反,硬件成本小,但软件成本大,显示效果不如静态好。
方案三:不同于方案一与二中LED只采用一种基色,方案三中的LED显示屏中每个点阵单元又包括红、绿、蓝三种发光二极管,这三种发光二极管发出三种颜色的光混色后得到人眼所感觉到颜色,其优点为颜色丰富鲜活,能用来显示各种文字、图像,表现能力强。
缺点为,电路结构负责,软硬件成本高,且不好控制。
综合以上三种方案,从成本及实现的难易程度上来衡量,最终选择方案二。
三、电路设计我们选用的是显示接口采用动态驱动的只有一种基色的8×8点阵的LED显示模块。
用来显示单个汉字。
LED电子显示屏原理8×8点阵式LED显示器原理如图1所示为了减少引脚且便于封装,各种LED显示点阵模块都采用阵列形式排布,即在行列线的交点处接有显示LED。
因此,LED点阵显示模块的显示驱动只能采用动态驱动方式,每次最多只能点亮一行LED(共阳形式LED显示点阵模块)或一列LED(共阴形式LED显示点阵模块)。
16X16显示“汉字”
这是我玩LED点阵屏的第一块电路板,也是学习单片机入门的第一个实验器材。
它由4片30mm×30mm的8×8红色高亮点阵模块与两片74HC595、两片74HC138、16只8550晶体管、一片74HC244集装在一块宽高65mm×210mm的双面PCB板上,它应该是一组级联安装的LED屏的一个单元模块,拿到它时,我正在学习《无线电》杂志2007/11期刊上杜洋的一组文章,刚刚做好了ISP下载线,只做了“一个发光二极管的控制实验”,面对这个既好玩又陌生的玩意,真是无从下手,通过上网学习,解析研究,前后弄了两个多月,最后在《无线电》杂志2005/12期的配文程序的帮助下,终于踏进了点阵控制的门槛,两年过去了,我又玩了许多单片机控制器件,但这块屏却一直摆在我的桌案上,每当遇到难题时,看看它那稳定清晰的显示,我都能找到许多灵感;最近、在摆弄一块并行驱动的16×64点阵屏时(前几篇文章介绍了)时,因为用的还是这段程序,就又想起了它,虽然程序已经详解过了,但是,为了留记一段经历、一段回忆,决定还是“貂续狗尾”写在这里,留着自己欣赏吧。
一.原理图:二.汉字左右移动驱动程序/**************************************************************************************16×16LED点阵屏原理图及C源汉字左右移动显示驱动程序————wannenggong单片机:AT89S52引脚说明:P0.0/P0.1/P0.2/P0.3控制由两片74HC138组成的行驱动控制4-16译码器的A/B/C/D端P1.0/P1.1控制列驱动控制74HC595的OE/ST端***************************************************************************************/#include <AT89x51.H>#define uchar unsigned char#define uint unsigned int#define K 5 //移动速度控制变量。
16-16点阵LED显示汉字汇编语言
LED16X16点阵显示课程设计报告学院专业班级学生姓名指导老师二0一0年十二月一、设计目的本次课程设计目的剖析试验箱,利用微机接口芯片8255,并行控制LED点阵显示;其次就是掌握8088微机系统与LED点阵显示模块之间接口电路设计及编程,了解LED点阵显示的基本原理和如何来实现汉字的的循环左移显示。
二、设计内容利用598H试验系统扩展接口CZ7座,在控制板MC1上以并行通信的方式控制LED点阵显示。
要求自建字库,编制程序实现点阵循环左移显示汉字,并要求通过protues仿真软件画出电路图,运行程序。
三、硬件电路设计整个电路由8088CPU,两片8255,1个74ls373,1个74LS138,1个16×16的LED,5个7407。
该电路可静态显示1个16*16位的汉字,也可循环显示。
1、8255Intel8255A是一种通用的可编程序并行I/O接口芯片,又称“可编程外设接口芯片”,是为Intel8080/8085系列微处理据设计的,也可用于其它系列的微机系统。
可由程序来改变其功能,通用性强、使用灵活。
通过8255A,CPU可直接同外设相连接,是应用最广的并行I/O接口芯片。
其中含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力。
可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。
2、138译码器译码器是组合逻辑电路的一个重要的器件,74LS138的输出是低电平有效,故实现逻辑功能时,输出端不可接或门及或非门,74LS138与前面不同,其有使能端,故使能端必须加以处理,否则无法实现需要的逻辑功能。
发光二极管点亮只须使其正向导通即可,根据LED的公共极是阳极还是阴极分为两类译码器,即针对共阳极的低电平有效的译码器;针对共阴极LED的高电平输出有效的译码器。
3、373锁存器74LS373是低功耗肖特基TTL8D锁存器,内有8个相同的D型(三态同相)锁存器,由两个控制端(11脚G或EN;1脚OUT、CONT、OE)控制。
LED点阵显示仿真
16*16LED点阵汉字滚动显示设计目的:掌握单片机控制原理与光显示器件的应用熟悉汇编语言编程主要器件:AT89C51,RP1(100K*8), 16*16LED点阵(green共阴极),74H154,晶振(12M), 2个30PF电容, 0.01UF电容,R1(100K),按钮开关设计方案:通过AT89C51的P1.0—P1.3 连接4—16线译码器74LS154对16*16LED点阵的每一竖列进行逐列扫描,并将P0与P2端口作为数据输出端点亮数码管发光显示,实现“西安科技大学乔迺伟”字样,并依次左移循环显示设计原理:仿真示意图如下所示DB 060H,060H,066H,070H,0EEH,03FH,0ECH,01FH,000H,030H,0F6H,03FH,0F6H,06FH,03EH,06DH;DB 0FEH,06CH,036H,06CH,0FEH,06DH,03EH,06DH,0F6H,06FH,0F6H,06FH,000H,060H,000H,000H; "迺",7 DB 0C0H,000H,060H,000H,0F8H,07FH,0FFH,07FH,007H,000H,00CH,003H,06CH,003H,06CH,003H;DB 06CH,003H,0FFH,07FH,0FFH,07FH,06CH,003H,06CH,033H,06CH,03FH,00CH,01FH,000H,000H; "伟",8 END2)软件编译与调试设计心得体会:在这次光电子设计中,感触最深的就是查阅大量的设计资料了。
为了让自己的设计更加完善,查阅这方面的资料是十分必要的,同时也是必不可少的。
在这此设计中我们虽然可以抛开实际题目,任意发挥,但我们的一切都要有根据,有理可寻,不求实际的构想。
51单片机驱动16×16列点阵显示动画汉字汇编器.doc
51单片机驱动16×16列点阵显示动画汉字汇编器。
51单片机驱动16×16点阵显示动画汉字汇编器这是一个完整的汇编器列AT89S51单片机驱动led点阵显示动画汉字。
组织机构0000HST: MOV A,# 0FFH初始化movp1、amovp2、amovp3、amovp0、aclramovr0、# 50h。
显示缓存已清除0MOV R1,# 20H控制清零次数0 st0:mov @ r0,aincr0 djnzr1,st0。
文字显示中文: MOV DPTR,# TAB1查找表指针指向TAB1LCALL HZ。
结束动画屏幕: movdptr,# tab2查找表指针指向TAB 2呼叫DDMOV DPTR,# TAB3查找表指针指向TAB4呼叫DDMOV DPTR,# TAB4查找表指针指向TAB4ACALL DDLJMP中文;显示8个图片子程序,CREE专用,文字用字体软件反转(表格必须为256字节深)DD: MOV B,#00HMOV R0,# 08H显示8张BADD MOV A、20H指向下一张图片MOV乙,MOV R7,08H 屏幕停留时间movr3、bmov37h、r0lcallenter dis 003360lcall调用显示djnzr7、dis00movr0、37h djnzr0、cc0ret。
汉字向上子程序可以显示8个汉字(表必须是256字节深)HZ: MOV R3,# 00H查找表偏移MOV R5,# 81H查找表128次,MOV R4,邮编:# 10H在显示了汉字“MOVBACK0:”后,# 02H一帧显示时间MOV R0,# 6DH较低的8位R0指向显示缓冲器底部的第三个字节,用于用最后一个字节交换MOV R1,# 6CH高8位R1指向显示缓冲器底部的第4个字节,用于交换MOV·R2,#10H和底部的第2个字节;DJNZ R5、MOVBACK1RET的内存回移次数;显示表格后,返回movback1:mova。
单片机课程设计_16×16点阵式汉字显示
目录摘要 (1)Abstract (2)1设计原理 (3)1.1 MCS-51单片机的结构及编程方法 (3)1.2 16*16点阵LED原理 (5)1.3 3-8译码器原理 (6)2.设计方案介绍 (7)2.1 设计总体思路 (7)2.2 与题目相关的具体设计 (7)2.3程序设计流程图 (8)3.源程序,原理图和仿真图 (9)3.1程序清单(见附录) (9)3.2电路图 (9)3.2.1电路原理图 (9)3.2.2电路图分析 (9)3.3仿真图 (10)4性能分析 (11)5.总结和心得 (12)6.参考文献 (13)附录:程序代码 (14)摘要LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。
文章给出了一种基于MCS-51单片机的16×16 点阵LED显示屏的设计方案。
包括系统具体的硬件设计方案,软件流程图和部分汇编语言程序等方面。
在负载范围内, 只需通过简单的级联就可以对显示屏进行扩展,是一种成本低廉的图文显示方案。
关键词:MCS-51;LED;单片机AbstractAs a popular display device component, LED dot-matrix display board consists of several independent LED (Light Emitting Diode). The LED dot-matrix display board can display the number or sign, and it is usually used to show time, speed, the state of system etc. This paper introduces a kind of simple 16x16 LED display screen design process based on MCS-51 single chip minicomputer . The detail hardware scheme, software flow and assemble language programmer design and so on is followed. The display part can be cascaded to meet the need. The practice proves the design is low-cost and effective.Key words: MCS-51;LED;MCU1设计原理1.1 MCS-51单片机的结构及编程方法MCS-51单片机的组成: CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、I/O口(串口、并口)、内部总线和中断系统等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LED16X16点阵显示课程设计报告学院专业班级学生姓名指导老师二 0一0年十二月一、设计目的本次课程设计目的剖析试验箱,利用微机接口芯片8255,并行控制LED点阵显示;其次就是掌握8088微机系统与LED点阵显示模块之间接口电路设计及编程,了解LED点阵显示的基本原理和如何来实现汉字的的循环左移显示。
二、设计内容利用598H试验系统扩展接口CZ7座,在控制板MC1上以并行通信的方式控制LED点阵显示。
要求自建字库,编制程序实现点阵循环左移显示汉字,并要求通过protues仿真软件画出电路图,运行程序。
三、硬件电路设计整个电路由8088CPU,两片8255,1个74ls373,1个74LS138,1个16×16的LED,5个7407。
该电路可静态显示1个16*16位的汉字,也可循环显示。
1、8255Intel8255A是一种通用的可编程序并行I/O接口芯片,又称“可编程外设接口芯片”,是为Intel8080/8085系列微处理据设计的,也可用于其它系列的微机系统。
可由程序来改变其功能,通用性强、使用灵活。
通过8255A,CPU可直接同外设相连接,是应用最广的并行I/O接口芯片。
其中含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力。
可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。
2、138译码器译码器是组合逻辑电路的一个重要的器件,74LS138的输出是低电平有效,故实现逻辑功能时,输出端不可接或门及或非门,74LS138与前面不同,其有使能端,故使能端必须加以处理,否则无法实现需要的逻辑功能。
发光二极管点亮只须使其正向导通即可,根据LED的公共极是阳极还是阴极分为两类译码器,即针对共阳极的低电平有效的译码器;针对共阴极LED的高电平输出有效的译码器。
3、373锁存器74LS373是低功耗肖特基TTL8D锁存器,内有8个相同的D型(三态同相)锁存器,由两个控制端(11脚G或EN;1脚OUT、CONT、OE)控制。
当OE接地时,若G为高电平,74LS373接收由PPU输出的地址信号;如果G为低电平,则将地址信号锁存。
工作原理:74LS373的输出端O0—O7可直接与总线相连。
当三态允许控制端OE为低电平时,O0—O7为正常逻辑状态,可用来驱动负载或总线。
当OE为高电平时,O0—O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。
当锁存允许端LE为高电平时,O随数据D而变。
当LE为低电平时,O被锁存在已建立的数据电平。
4、LED 动态显示原理LED点阵显示系统中各模块的显示方式:有静态和动态显示两种。
静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲电压驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的列数据信号,反复循环以上操作,就可显示各种图形或文字信息。
点阵式LED绝大部分是采用动态扫描显示方式,这种显示方式巧妙地利用了人眼的视觉暂留特性。
将连续的几帧画面高速的循环显示,只要帧速率高于24帧/秒,人眼看起来就是一个完整的,相对静止的画面。
最典型的例子就是电影放映机。
在电子领域中,因为这种动态扫描显示方式极大的缩减了发光单元的信号线数量,因此在LED显示技术中被广泛使用。
以8×8点阵模块为例,说明一下其使用方法及控制过程。
图2.1中,红色水平线Y0、Y1……Y7叫做行线,接内部发光二极管的阳极,每一行8个LED的阳极都接在本行的行线上。
相邻两行线间绝缘。
同样,蓝色竖直线X0、X1……X7叫做列线,接内部每列8个LED 的阴极,相邻两列线间绝缘。
在这种形式的LED点阵模块中,若在某行线上施加高电平(用“1”表示),在某列线上施加低电平(用“0”表示)。
则行线和列线的交叉点处的LED就会有电流流过而发光。
比如,Y7为1,X0为0,则右下角的LED点亮。
再如Y0为1,X0到X7均为0,则最上面一行8个LED全点亮。
现描述一下用动态扫描显示的方式,显示字符“B”的过程。
其过程如图3.1图3.1 用动态扫描显示字符“B”的过程Proteus中只有5×7和8×8等LED点阵,并没有16×16LED点阵,而在实际应用中,要良好地显示一个汉字,则至少需要16×16点阵。
下面我们就首先介绍使用8×8点阵构建16×16点阵的方法,并构建一块16×16LED点阵,用于本次设计。
首先,从Proteus7.5的元件库中找到“MATRIX-8X8-RED”元器件,并将四块该元器件放入Proteus文档区编辑窗口中。
此时需要注意,如果该元器件保持初始的位置(没有转动方向),我们要首先将其左转90°,使其水平放置,那么此时它的左面8个引脚是其行线,右边8个引脚是其列线(当然,如果你是将右转,则右边8个引脚是行线)。
然后我们将四个元器件对应的行线和列线分别进行连接,使每一条行线引脚接一行16个LED,列线也相同。
并注意要将行线和列线引出一定长度的引脚,以便下面我们使用。
连接好的16×16点阵如图3.2所示。
成如上图的16×16点阵只是第一步,这样分开的数块并不能达到好的显示效果,下面我们要将其进一步组合。
组合实际上很简单,首先选中如上图中右侧的两块8×8点阵,然后拖动并使其与左侧的两块相并拢,如图3.3所示。
图3.3可以看到原来的连线已经自动隐藏了,至于线上的交点,我们不要去动。
然后,我们再来最后一步,选中下侧的两块点阵,并拖动使其与上侧的两块并拢,最后的效果如图3.4所示。
看到,原来杂乱的连线现在已经几乎全部隐藏了,一块16×16的LED点阵做成了。
需要注意,做成的LED点阵的行线为左侧的16个引脚,下侧的16个引脚为其列线,而且其行线为高电平有效,列线为低电平有效。
然后,我们将其保存,以便以后使用。
图3.45、整个系统的仿真电路图四、字模生成文字的字模是一组数字,但它的意义却与数字的意义有着根本的变化,它是用数字的各位信息来记载英文或汉字的形状[1。
在电脑硬件中,根本没有汉字这个概念,也没有英文的概念,其认识的概念只有——内码(将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。
而剩下的低128位则留给英文字符使用,即英文的内码)。
如果你用启动盘启动系统后用DIR命令可能得到一串串莫名其妙的字符,但那确确实实是汉字,如果你启动UCDOS或其他的汉字系统后,就会看到那是一个个熟悉的汉字。
在硬件系统内,英文的字模信息一般固化在ROM 里,即使在没有进入系统的CMOS里,也可以让你看到英文字符。
而在DOS下,中文的字模信息一般记录在汉字库文件里(将制作好的字模放到一个个标准的库中,这就是点阵字库文件)。
在通过软件实现的技术中,目前有许多字模生成软件,软件打开后输入汉字,点“检取”,十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到我们的程序中即可。
在通过硬件实现字模提取的技术中,有在系统中增加硬汉字库的方法,主控器发送的汉字是其机内码,用两个字节来表示一个汉字。
根据机内码,显示单元控制模块从汉字库中查取显示字模,实现汉字显示。
由于带有硬汉字库,进行动态文字显示时,通用智能显示单元仅接受汉字的机内码即可,这样数据通讯量大大减少。
因此,“动态文字显示速度快”。
五、程序设计1、程序设计总体思路用简短的汇编程序设计,实现LED点阵显示内容,并使显示的内容在屏幕上从左到右的滚动显示。
系统采用模块化结构,包括主程序、显示子程序和循环扫描显示子程序。
用8088、74LS373、74LS138、7407芯片和1个16×16LED点阵显示器构成一个完整的16位点阵LED显示系统。
2、程序流程图程序主要由开始、初始化、主程序、子程序、字库组成(源程序详见附录)。
其中主程序和子程序的流程图为:循环扫描显示子程序流程图字库为:DB 00H,00H,00H,00H,00H,00H,00H,00H, 00H,00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00HDB 01H,00H,00H,80H,00H,60H,0FFH,0F8H,00H,07H,00H,00H,00H,04H,79H,24H ;信DB 49H,24H,49H,25H,49H,26H,49H, 24H,49H,24H,79H,24H,00H,04H,00H,00HDB 40H,00H,30H,00H,00H,00H,03H,0FCH,39H,54H,41H,54H,41H,56H,45H,55H ;息DB 59H,54H,41H,54H,41H,54H,73H,0FCH,00H,00H,08H,00H,30H,00H,00H,00HDB 20H,00H,20H,04H,20H,04H,20H,04H,20H,04H,20H,04H,20H,04H,3FH,0FCH ;工DB 20H,04H,20H,04H,20H,04H,20H,04H,20H,04H,20H,04H,20H,00H,00H,00HDB 08H,24H,06H,24H,01H,0A4H,0FFH,0FEH,01H,23H,06H,22H,40H,00H,49H,3EH ;程DB 49H,22H,49H,22H,7FH,22H,49H,22H,49H,22H,49H,3EH,41H,00H,00H,00HDB 04H,40H,04H,30H,04H,11H,04H,96H,04H,90H,44H,90H,84H,91H,7EH,96H ;学DB 06H,90H,05H,90H,04H,98H,04H,14H,04H,13H,04H,50H,04H,30H,00H,00HDB 00H,00H,0FFH,0FEH,04H,22H,08H,5AH,07H,86H,80H,10H,41H,0CH,31H,24H ;院DB 0FH,24H,01H,25H,01H,26H,3FH,24H,41H,24H,41H,14H,71H,0CH,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00HDB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H六、系统功能测试1、实物测试通过分析程序,了解LED点阵汉字循环循环左移的显示方法,自建字库,很成功的完成了实物测试,达到了预期的要求。