16×16点阵LED显示屏整个过程及C语言程序(1)
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次以上),由于人眼的视觉暂留现象,我们就能看到显示屏上稳定的图形了。
《嵌入式技术应用开发项目教程》项目10 16x16的LED点阵显示设计
任务25 8×8的LED点阵显示设计
3.8×8的LED点阵显示设计与实现
3) 移植任务9工程
移植工程模板
(1)复制“任务9 OLED显示设计”文件夹。 (2)修改文件夹名为“任务25 8×8的LED点阵显示设计。 (3)USER文件夹下的“M0_ OLED.uvprojx”工程名修改为 “8×8LED0.uvprojx。
2.移植任务25工程
(1)复制“任务25 8×8的LED点阵显示设计”文件夹。 (2)修改文件夹名为“【技能训练10-1】8×8LED点阵循环显示0~9”。 (3)USER文件夹下的“8×8LED0.uvprojx”工程名修改为“8×8LED.uvprojx”。
【技能训练10-1】8×8LED点阵循环显示0~9
4) 程序设计
字形库代码
任务26 16×16的LED点阵显示设计
3.16×16的LED点阵显示设计与实现
5) 硬件和软件联调
(1)编写好C语言程序后,我们就可以直接对工程进行编译了,生成相 应的hex文件,即目标代码文件。若编译发生错误,要进行分析检查,直到编 译正确。
1)静态显示方式
同时控制各个LED亮灭的方式称为静态显示方式。8×8LED点阵共有64个LED,这就需要64 个单片机I/O引脚。而实际应用中的显示屏往往要比8×8点阵大得多,如果采用静态显示方式,则 需要更多的单片机I/O引脚,这显然是不现实的,所以在实际中大多采用动态显示方式。
认识LED点阵显示模块
1.LED点阵显示模块结构
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点阵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位一个字节的形式顺序排放。
显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。
单片机课程设计--+16x16点阵LED电子显示屏的设计
单片机课程设计-- 16x16点阵LED电子显示屏的设计第一章系统总体方案设计LED驱动显示采用动态扫描方法, 动态扫描方式是逐行轮流点亮, 这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。
以16×16点阵为例, 把所有同一行的发光管的阳极连在一起, 把所有同一列的发光管的阴极连在一起(共阳的接法), 先送出对应第1行发光管亮灭的数据并锁存, 然后选通第1行使其燃亮一定的时间, 然后熄灭;再送出第2行的数据并锁存, 然后选通第2行使其燃亮相同的时间, 然后熄灭;…第16行之后, 又重新燃亮第1行, 反复轮回。
当这样轮回的速度足够快(每秒24次以上), 由于人眼的视觉暂留现象, 就能看到显示屏上稳定的图形。
该方法能驱动较多的LED, 控制方式较灵活, 而且节省单片机的资源。
显示数据传输采用串行传输的方法, 控制电路可以只用一根信号线, 将列数据一位一位传往列驱动器, 在硬件方面无疑是十分经济的。
但串行传输过程较长, 数据按顺序一位一位地输出给列驱动器, 只有当一行的各列数据都已传输到位之后, 这一行的各列才能并行地进行显示。
对于串行传输方式来说, 列数据准备时间可能相当长, 在行扫描周期确定的情况下, 留给行显示的时间就太少了, 以致影响到LED的亮度。
采用串行传输中列数据准备和列数据显示的时间矛盾, 可以采用重叠处理的方法。
即在显示本行各列数据的同时, 传送下一行的列数据。
为了达到重叠处理的目的, 列数据的显示就需要有锁存功能。
对于列数据准备来说, 它应能实现串入并出的移位功能。
这样, 本行已准备好的数据打入并行锁存器进行显示时, 串行移位寄存器就可以准备下一行的列数据, 而不会影响本行的显示。
系统框图如图一图一点阵显示器硬件系统框图第二章系统硬件电路的设计硬件电路大致上可以分为单片机系统及外围电路、列驱动电路和行驱动电路三部分。
一. 单片机系统及外围电路单片机采用89C51或更高频率的晶振, 以获得较高的刷新频率, 使得显示更稳定。
16x16 LED点阵实验
实验名称:16x16 LED点阵实验实验目的:利用单片机I/O口实现LED点阵的行扫描动态显示。
实验原理:1、LED显示器的基本结构:七段显示器:将发光二极管封装成数码显示的形式。
共阳七段显示器:共阴七段显示器:点阵式显示器:发光二极管封装成点阵形式,构成不同的字符甚至汉字、图形。
发光二极管排列成矩阵,由亮与暗来产生字符或图形。
每一行的阳极连在一起,每一列的阴极连在一起。
2、点阵显示的原理:点阵显示器每一列的阴极连在一起,对每一列而言相当于一个共阴显示器。
同时每一行的阳极连在一起,相当于七段显示器的笔划。
这样,可以把5X7的发光二极管点阵看作一个五位显示器。
可采用动态显示电路,以笔划锁存器控制行信号,以位锁存器控制列信号。
3、实验原理图使用两片8位输出锁存移位寄存器74HC595(三态输出、串入并出),将单片机I/O口发出的串行数据转换为并行数据LD_QA~LD_QP,作为16×16 LED点阵显示器的行线,使用另外两片8位74HC595作为 16×16 LED点阵显示器的列线LD_1~LD_16。
当行输出高电平、列输出低电平时,可以点亮点阵。
74HC595:LD-QA~LD-QP:点阵行控制信号LD-1~LD-16:点阵列控制信号SER(14脚):串行数据输入端-SCLR(10脚):低电平时将移位寄存器的数据清零。
通常将它接Vcc。
SCK(11脚):上升沿时将串行数据移入移位寄存器。
RCK(12脚):上升沿时移位寄存器的数据锁存入数据寄存器。
-G(13脚): 高电平时禁止输出(高阻态)时序图:实验内容:在16×16LED点阵上分别用静态方式和滚屏方式显示自己的姓(行扫描)。
实验步骤:使用导线将A2区的P10~P14与C3区的L_DAT_H 、L_DAT_L、L_CLK、L_OE 、 L_STR实验设计:电路图:(修改后加上了74HC595输出端口与LED点阵相连的端口名称)1、静态方式:流程图:代码及注释:HL EQU 70H ;行信号低位内存地址LL EQU 72H ;列信号低位内存地址HD EQU P1.0 ;p1.0口连行信号输入端LD EQU P1.1 ;P1.1口连列信号输入端SCK EQU P1.2 ;P1.2口连移位寄存器OE EQU P1.3 ;P1.3口连使能端RCK EQU P1.4 ;P1.4口连锁存器ORG 8000H ;硬件仿真程序LJMP MAINORG 8100H ;硬件仿真程序MAIN:MOV DPTR,#DISPLAY ;字模表地址MOV R1,#00H ;字模表起始地址偏移量MOV HL,#01H ;行扫描信号的初值0001HMOV HL+1,#00HLOOP:MOV A,R1MOVC A,@A+DPTRMOV LL,A ;找到列低位数据,存入内存地址中INC R1MOV A,R1MOVC A,@A+DPTRMOV LL+1,A ;找到列高位数据,存入内存地址中LCALL SENDD ;调用传输数据的程序LCALL DELAY ;调用延时程序CLR C ;位处理累加器清零MOV A,HLRLC A ;左移行扫描信号低8位MOV HL,AMOV A,HL+1RLC A ;左移行扫描信号高8位MOV HL+1,AINC R1CJNE R1,#20H,LOOP ;判断一轮扫描是否结束LJMP MAINSENDD:CLR OE ;使能信号低电平有效CLR RCK ;RCK信号置0MOV R2,#08HMOV R3,LL+1 ;列信号高八位地址MOV R4,HL+1 ;行信号高八位地址BACK:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK ;判断高8位信号是否传输完毕MOV R2,#08HMOV R3,LL ;列信号低8位地址MOV R4,HL ;行信号低8位地址BACK1:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK1 ;判断低8位信号是否传输完毕SETB RCK ;RCK信号上升沿到来,移位寄存器的数据锁存入数据寄存器RETDELAY: ;延时子程序MOV R7,#50DELAY1:MOV R6,#10DELAY2:DJNZ R6,$DJNZ R7,DELAY1RETDISPLAY:DB 0xFF,0xFE,0xE0,0xEE,0xEF,0xCE,0xEF,0xF6,0xE1,0xFA,0xFD,0xFC,0xFD,0xFE,0x3D,0x80;DB 0xE0,0xFA,0xED,0xFA,0xEF,0xF6,0xEF,0xF6,0xEF,0xEE,0xEF,0x9A,0x6B,0xDC,0xF7,0xFE;"张" END2、滚屏方式流程图:代码及注释:HL EQU 70H ;行信号低位内存地址LL EQU 72H ;列信号低位内存地址HD EQU P1.0 ;p1.0口连行信号输入端LD EQU P1.1 ;P1.1口连列信号输入端SCK EQU P1.2 ;P1.2口连移位寄存器OE EQU P1.3 ;P1.3口连使能端RCK EQU P1.4 ;P1.4口连锁存器ORG 8000H ;硬件仿真程序LJMP MAINORG 8100H ;硬件仿真程序MAIN:MOV DPTR,#DISPLAY ;字模表地址MOV R1,#00HMOV R7,#00H ;R7用来表示字模表起始位置偏移量LOOP:MOV R5,#20 ;R5用来表示延时,改变R5的值可改变滚屏速度LOOP1:MOV R6,#10H ;R6用来判断是否扫描完一轮MOV A,R7 ;将R7的值赋值给R1MOV R1,AMOV HL,#01H ;行扫描信号的初值0001HMOV HL+1,#00HLOOP2:MOV A,R1MOVC A,@A+DPTRMOV LL,A ;找到列低位数据,存入内存地址中INC R1MOV A,R1MOVC A,@A+DPTRMOV LL+1,A ;找到列高位数据,存入内存地址中LCALL SENDD ;调用传输数据的程序LCALL DELAY ;调用延时程序CLR C ;位处理累加器清零MOV A,HLRLC A ;左移行扫描信号低八位MOV HL,AMOV A,HL+1RLC A ;左移行扫描信号高八位MOV HL+1,AINC R1DEC R6CJNE R6,#00H,LOOP2 ;通过R6判断是否扫描完一轮,R6减为0,一轮扫描结束DJNZ R5,LOOP1 ;通过R5判断一帧的延时是否达到INC R7 ;改变字模表的偏移量INC R7 ;R7连续加2,相当于换行CJNE R7,#40H,LOOP ;判断字模表是否结束LJMP MAINSENDD:CLR OE ;使能信号低电平有效CLR RCK ;RCK信号置0MOV R2,#08HMOV R3,LL+1 ;列信号高8位地址MOV R4,HL+1 ;行信号高8位地址BACK:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK ;判断高八位信号是否传输完毕MOV R2,#08HMOV R3,LL ;列信号低八位地址MOV R4,HL ;行信号低八位地址BACK1:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK1 ;判断低八位信号是否传输完毕SETB RCK ;RCK信号上升沿到来,移位寄存器的数据锁存入数据寄存器RETDELAY: ;延时子程序MOV R2,#50DELAY1:MOV R3,#10DELAY2:DJNZ R3,$DJNZ R2,DELAY1RETDISPLAY:DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFFDB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF;预留空白DB 0xFF,0xFE,0xE0,0xEE,0xEF,0xCE,0xEF,0xF6,0xE1,0xFA,0xFD,0xFC,0xFD,0xFE,0x3D,0x80;DB 0xE0,0xFA,0xED,0xFA,0xEF,0xF6,0xEF,0xF6,0xEF,0xEE,0xEF,0x9A,0x6B,0xDC,0xF7,0xFE;"张" END实验结果与分析:1、程序正确运行后,可看到16x16 LED点阵显示屏上显示“张”,LED灯的亮暗程度有些不均匀。
基于51单片机的16乘16点阵汉字显示设计
SendLeft(chinese[i+k]);
SendRight(chinese[num*16+i+k+15]);
ChooseColumn(i+1);
//
ChooseColumn(16-i);
DelayMs_12M(1); } } } }
//不需修改代码 只需前后加空格代码 //流动显示 需补充代码 //speed200 大概是 4 秒 一般取 4 //num<2000 void FlowDisplayBetter(uchar chinese[],uchar num,uchar speed) {
sbit upa=P2^1; sbit upb=P2^2; sbit upc=P2^3; sbit upg=P2^0;
sbit downa=P0^6; sbit downb=P0^7; sbit downc=P2^7; sbit downg=P1^0;
uchar code chinese1[]; uchar code chinese2[]; uchar code chinese3[]; uchar code title[]; uchar code collectiveShow1[]; uchar code testCode[];
main() {
Init(); while(1) {
//
SendLed(0x00);
DisplayChinese(chinese2,3,60);
FlowDisplay(title,14,3);
FlowDisplayBetter(testCode,3,3);
DelayMs_12M(10);
//
SendLed(0xff);
16乘16点阵显示屏
16x16 LED点阵显示屏设计说明书作者:摘要本文介绍了我们完成的基于AT89C51单片机控制的16x16点阵显示屏的组成原理、实际电路以及设计步骤。
我们通过查阅大量文献资料并经过分析论证比较,设计出了实现LED点阵动态左移,右移,上移,下移显示汉字功能。
在了解单片机的工作原理和相应的各种接口电路的基础上,选择了比较好的控制方案,然后根据方案,设计各部分电路。
由于普通LED点阵显示屏动态显示通常采用硬件扫描驱动,这在一些需要特殊显示的场合显得不够灵活。
我们的设计采取软硬件结合,实现了显示文字的上,下,左,右方向的移动,使得显示屏的文字显示方式多种多样,实现灵活显示。
关键字:LED点阵、单片机、驱动一、绪论:实用型LED 点阵电子显示屏是集微电子技术、计算机技术、信息处理技术于一体的显示屏系统。
它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。
同时也可广泛应用到军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业。
我们小组设计的LED点阵显示屏具有文字的上,下,左,右移动显示,人们可以根据自己的需要选择具体的显示方式。
二、总体设计方案:利用LED点阵显示所需结果有两种方式:静态驱动显示方式和动态扫描的显示方法。
16x16的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果采用扩展其端口,需要硬件多,成本大。
采用动态扫描显示方式就是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套驱动器。
具体就16x16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起,先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。
当这样轮回的速度足够快,由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。
16乘16点阵LED电子显示屏的设计
邢台职业技术学校Xingtai Polytechnic Institute 毕业设计(论文)题目16×16点阵LED电子显示屏的设计班级应电081姓名杨艳德指导教师唐俊英16×16点阵LED电子显示屏的设计目录摘要 (3)关键词 (3)前言 (4)1.背景介绍 (5)1.1 LED及LED显示屏 (5)1.2 MCS-51系列单片机简介 (6)1.2.1 MCS-51系列单片机及其特点 (6)1.2.2 单片机的发展历史简介 (6)3.功能要求 (7)4.方案实现 (7)4.1 系统硬件电路的设计 (8)4.1.1单片机系统及外围电路 (9)4.1.2列驱动电路 (9)4.2.系统程序的设计 (11)4.2.1显示驱动程序 (11)4.2.2系统主程序 (12)5性能分析 (19)5.1 性能分析 (19)总结 (20)摘要LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。
文章给出了一种基于MCS-51单片机的16×16 点阵LED显示屏的设计方案。
包括系统具体的硬件设计方案,软件流程图和部分汇编语言程序等方面。
在负载范围内, 只需通过简单的级联就可以对显示屏进行扩展,是一种成本低廉的图文显示方案。
关键词:MCS-51;LED;单片机前言LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
在实际应用中的显示屏由于成本和可靠性的因素常采用一种称为动态扫描的显示方法。
本文设计的是一个室内用16x16的点阵LED图文显示屏,图形或文字显示有静止、移入移出等显示方式。
LED显示屏分为数码显示屏、图文显示屏和视频显示屏,均由LED矩阵块组成。
LED数码显示屏的显示器件为7段码数码管,适于制作时钟屏、利率屏等,显示数字的电子显示屏。
16乘16LED点阵电子显示屏课程设计
目录1任务和要求 (1)2设计思想与原理 (1)2.1设计思想 (1)2.2 设计原理 (1)3 流程图 (3)4硬件电路图 (4)5仿真图 (5)6课程设计心得 (8)7参考文献 (8)8致谢 (8)9附录: (9)1任务和要求1.设计一个可供6-8组参赛队的智力竞赛抢答器,每组设置一个抢答按钮。
2.电路具有第一抢答信号的鉴别和锁存功能。
即保持该信号不变,同时使后输入的信号无效。
3.在发出“抢答开始”命令后计时,规定的抢答时间到后无人抢答,发出“抢答时间到”信号,并锁定输入电路,使各路抢答信号无法再输入。
4.设置计分电路,每组预置为100分或其他,答对一次加10分,答错减10分(此项可选)。
2设计思想与原理2.1设计思想我的设计思路是竞赛抢答器要有报警系统,要是在规定时间内还没有参赛者抢答或回答出问题时就会发出报警声,倒计时为设定为30S。
并且如果出现犯规抢答时也会发出报警并且显示该犯规选手的编号。
这个抢答器可同时供不大于8名选手或8个代表队参加比赛,各用一个抢答按钮,按钮的编号与选手的编号是相对应的,分别是S1、S2、S3、S4、S5、S6、S7、S8;给节目主持人设置二个控制按钮开关,用来控制系统的清零和抢答的开始;该八路抢答器具有程序存储、数据锁存和显示功能,抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在数码管上显示出选手的编号,参赛选手在设定的时间内抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零;如果定时抢答30S后,却没有选手抢答时,系统持续报警,直到定时抢答的时间为零,本次抢答无效,并封锁输入电路,禁止选手超时后抢答,时间显示器上显示FFF 犯规处理:如果主持人没按"开始"键,就有选手抢答,则显示选手编码,并持续报警。
如果已经有选手抢答了,别的选手则按键无效。
直到主持人重新复位按下开始键为止。
主持人可以根据不同的问答方式设定不同的抢答时间和回答时间。
16×16LED点阵屏原理图及驱动程序
{
uchar temp,tempcol;
if(col<8) tempcol=col;
else tempcol=col-8;
temp=(h1>>tempcol)|(h2<<(8-tempcol)); //右移显示
temp=255-temp;
}
/**************************************************************************
右移显示数据生成模块:
***************************************************************************/
void delay(uint p){
uint i,j;
for(i=0;i<p;i++){
for(j=0;j<5;j++)
{;}}
}
/**************************************************************************************
void loadoneline_L(void)
{
char s; //此处不要用uchar定义s
for(s=0;s<2;s++) //s值为屏数加1(16*16为一屏)
{
BUFF[2*s]=HZ[word+32*s+2*disrow];
BUFF[2*s+1]=HZ[word+1+32*s+2*disrow]; //左移显示
16215;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位一个字节的形式顺序排放。
显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。
16X16点阵显示实验
实验报告实验名称: [16X16点阵显示实验]姓名:学号:指导教师:实验时间: [2013年6月15日]信息与通信工程学院16X16点阵显示实验1、实验要求:理解并掌握点阵显示符号的原理,理解原有程序,会使用动态扫描的方式使点阵显示汉字,明白点阵滚动显示的原理。
根据原有程序,掌握LPM_ROM的应用,会应用LPM_ROM存储需要显示的内容。
参照液晶显示程序,编写16*16点阵显示程序。
任务一:实现点阵列扫描。
点亮点阵的一列,并让其不断的向右移动。
任务二:在点阵上循环滚动显示“嵌入式系统设计”。
2、实验原理:2.1点阵基本原理本实验对点阵的扫描使用列扫描的方式。
就是将要显示的数据分成16列,在某一时刻只选中一列,并向点阵传送该列需要显示的数据,那么如果从左往右依次循环选中所有列,并且循环的速度足够快,因为视觉停留效应,我们就能看到完整的显示了。
如果要显示大于16列的信息,比如要显示多个汉字,由于只能同时显示16列,那么就需要在一个比较慢的时钟的指挥下,不断更新要显示的连续的16列数据,使用这样的方法就能实现滚动显示。
2.2任务原理8*8LED点阵共由64个发光二极管组成,每个发光二极管放置在行线和列线的交叉点上,当对应的某一行高电平(置1),且某一列低电平(置0),则相应的发光二极管就亮;因此要用8*8LED点阵来显示一个字符或汉字,只需要根据字符或汉字图形中的线条或笔画,通过点亮多个发光二极管来勾勒出字符或汉字的线条或笔画就行了。
当要比较完美的显示一般的汉字,单个8*8LED点阵模块很难做到,因为LED的点数(也称为像素点)不够多,因此要显示汉字的话,需要多个8*8LED点阵拼合成一个显示屏。
假如用4个8*8LED点阵模块拼成16*16的点阵,即能满足一般汉字的显示。
16×16扫描LED点阵的工作原理同8位扫描数码管类似。
它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯,所以其扫描译码地址需4位信号线(SEL0-SEL3),其汉字扫描码由16位段地址(0-15)输入。
16×16点阵LED电子显示屏的设计
16×16点阵LED电子显示屏的设计The 16×16 lattice LED electron displaymonitor design摘要本设计是一16×16点阵LED电子显示屏的设计。
整机以美国ATMEL 公司生产的40脚单片机AT89C51为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。
通过该芯片控制一个行驱动器74HC154和两个列驱动器74HC595来驱动显示屏显示。
该电子显示屏可以显示各种文字或单色图像,全屏能显示1个汉字,采用16*16点阵LED显示模块来组成16×16点阵显示模式。
显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。
文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。
单片机控制系统程序采用单片机汇编语言进行编辑,通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。
所显示字符的点阵数据可以自行编写(即直接点阵画图),也可从标准字库中提取。
LED显示以其组构方式灵活、显示稳定、功耗低、寿命长、技术成熟、成本低廉等特点在车站、证券所、运动场馆、交通干道及各种室内/外显示场合的信息发布,公益宣传,环境参数实时,重大活动倒计时等等得到广泛的应用。
经实践证明,该系统显示误差小,性能稳定,结构合理,扩展能力强。
关键词:AT89C51单片机;LED;点阵显示;动态显示;汇编语言。
AbstractThis design is a 16 ×16 lattice LED electron display monitor design.The whole equipment is with the 40-pin AT89C51 MCU (Micro Controller Unit) produced by the American ATMEL company at the core, introduced take it as the control system LED lattice electron display monitor dynamic design and the development process. Controls good driver 74HC154 and two row driver 74HC595 through this chip actuates the display monitor demonstration. The electronic screen can show all kinds of written or monochrome images, one full screen display Chinese characters, four pieces of 8×8 dot-matrix LED display modules to form the 16×16 dot matrix display mode. Show dynamic show that makes static graphic or text can be achieved, shifted out of various formats. This paper describes the hardware design of the LED dot matrix display, and the principle function of the various parts of the circuit, the corresponding software program design and the use of some such.SCM process control system used for editing MCU assembly language, Programming control points indicated by the corresponding LED anode and overcast extreme level. We can effectively control the defense showed bright spots. The lattice data shows characters can prepare themselves (that is, direct lattice Painting), which can also be extracted from the standard font.LED display with fabric means flexibility, stability, low power consumption, long life, mature technology, low-cost features at the station, securities, sports venues, transportation corridors and various indoor / dissemination of information on foreign shows occasions, good publicity, real-time environmental parameters, etc. countdown major activities are widely used.As the practice proves, the system possesses advantages in low shows errors, stable, rational structure and strong extensible abilities.Key words: AT89C51 Micro Controller Unit;LED;Lattice display;Dynamic display;Assembly language.目录摘要................................................................................................................................. 一ABSTRACT.................................................................................................................. 三第一章前言................................................................................................................. 六第二章系统整体设计方案 ......................................................................................... 七2.1需要实现的功能............................................................................................... 七2.2LED显示特点 .................................................................................................. 七2.3设计方案论证................................................................................................... 八2.3.1 显示模式方案....................................................................................... 八2.3.2 数据传输方案....................................................................................... 九第三章系统硬件部分设计 ......................................................................................... 十3.1电源设计........................................................................................................... 十3.2单片机系统及外围电路 ............................................................................... 十一3.2.1 单片机的选择................................................................................... 十一3.2.2 AT89C51芯片介绍........................................................................... 十一3.2.3 单片机系统外围电路 ....................................................................... 十四3.3列驱动电路................................................................................................... 十五3.4行驱动电路................................................................................................... 十七3.4.1 行驱动芯片74HC154 介绍............................................................. 十七3.4.2 行驱动电路....................................................................................... 十八3.5LED显示屏电路 .......................................................................................... 二十第四章系统软件部分设计 ................................................................................. 二十二4.1系统主程序............................................................................................... 二十二4.2显示驱动程序........................................................................................... 二十三第五章调试及性能分析 ..................................................................................... 二十五5.1软件调试................................................................................................... 二十五5.2硬件调试................................................................................................... 二十五5.3性能分析................................................................................................... 二十六结束语..................................................................................................................... 二十七致谢......................................................................................................................... 二十八附录一系统综合电路原理图 . (24)附录二系统程序清单 ............................................................................................. 三十主要参考文献......................................................................................................... 四十七第一章前言单片机自20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,发展很快。
16x16 LED点阵实验
实验名称:16x16 LED点阵实验实验目的:利用单片机I/O口实现LED点阵的行扫描动态显示。
实验原理:1、LED显示器的基本结构:七段显示器:将发光二极管封装成数码显示的形式。
共阳七段显示器:共阴七段显示器:点阵式显示器:发光二极管封装成点阵形式,构成不同的字符甚至汉字、图形。
发光二极管排列成矩阵,由亮与暗来产生字符或图形。
每一行的阳极连在一起,每一列的阴极连在一起。
2、点阵显示的原理:点阵显示器每一列的阴极连在一起,对每一列而言相当于一个共阴显示器。
同时每一行的阳极连在一起,相当于七段显示器的笔划。
这样,可以把5X7的发光二极管点阵看作一个五位显示器。
可采用动态显示电路,以笔划锁存器控制行信号,以位锁存器控制列信号。
3、实验原理图使用两片8位输出锁存移位寄存器74HC595(三态输出、串入并出),将单片机I/O口发出的串行数据转换为并行数据LD_QA~LD_QP,作为16×16 LED点阵显示器的行线,使用另外两片8位74HC595作为 16×16 LED点阵显示器的列线LD_1~LD_16。
当行输出高电平、列输出低电平时,可以点亮点阵。
74HC595:LD-QA~LD-QP:点阵行控制信号LD-1~LD-16:点阵列控制信号SER(14脚):串行数据输入端-SCLR(10脚):低电平时将移位寄存器的数据清零。
通常将它接Vcc。
SCK(11脚):上升沿时将串行数据移入移位寄存器。
RCK(12脚):上升沿时移位寄存器的数据锁存入数据寄存器。
-G(13脚): 高电平时禁止输出(高阻态)时序图:实验内容:在16×16LED点阵上分别用静态方式和滚屏方式显示自己的姓(行扫描)。
实验步骤:使用导线将A2区的P10~P14与C3区的L_DAT_H 、L_DAT_L、L_CLK、L_OE 、 L_STR实验设计:电路图:(修改后加上了74HC595输出端口与LED点阵相连的端口名称)1、静态方式:流程图:代码及注释:HL EQU 70H ;行信号低位内存地址LL EQU 72H ;列信号低位内存地址HD EQU P1.0 ;p1.0口连行信号输入端LD EQU P1.1 ;P1.1口连列信号输入端SCK EQU P1.2 ;P1.2口连移位寄存器OE EQU P1.3 ;P1.3口连使能端RCK EQU P1.4 ;P1.4口连锁存器ORG 8000H ;硬件仿真程序LJMP MAINORG 8100H ;硬件仿真程序MAIN:MOV DPTR,#DISPLAY ;字模表地址MOV R1,#00H ;字模表起始地址偏移量MOV HL,#01H ;行扫描信号的初值0001HMOV HL+1,#00HLOOP:MOV A,R1MOVC A,@A+DPTRMOV LL,A ;找到列低位数据,存入内存地址中INC R1MOV A,R1MOVC A,@A+DPTRMOV LL+1,A ;找到列高位数据,存入内存地址中LCALL SENDD ;调用传输数据的程序LCALL DELAY ;调用延时程序CLR C ;位处理累加器清零MOV A,HLRLC A ;左移行扫描信号低8位MOV HL,AMOV A,HL+1RLC A ;左移行扫描信号高8位MOV HL+1,AINC R1CJNE R1,#20H,LOOP ;判断一轮扫描是否结束LJMP MAINSENDD:CLR OE ;使能信号低电平有效CLR RCK ;RCK信号置0MOV R2,#08HMOV R3,LL+1 ;列信号高八位地址MOV R4,HL+1 ;行信号高八位地址BACK:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK ;判断高8位信号是否传输完毕MOV R2,#08HMOV R3,LL ;列信号低8位地址MOV R4,HL ;行信号低8位地址BACK1:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK1 ;判断低8位信号是否传输完毕SETB RCK ;RCK信号上升沿到来,移位寄存器的数据锁存入数据寄存器RETDELAY: ;延时子程序MOV R7,#50DELAY1:MOV R6,#10DELAY2:DJNZ R6,$DJNZ R7,DELAY1RETDISPLAY:DB 0xFF,0xFE,0xE0,0xEE,0xEF,0xCE,0xEF,0xF6,0xE1,0xFA,0xFD,0xFC,0xFD,0xFE,0x3D,0x80;DB 0xE0,0xFA,0xED,0xFA,0xEF,0xF6,0xEF,0xF6,0xEF,0xEE,0xEF,0x9A,0x6B,0xDC,0xF7,0xFE;"张" END2、滚屏方式流程图:代码及注释:HL EQU 70H ;行信号低位内存地址LL EQU 72H ;列信号低位内存地址HD EQU P1.0 ;p1.0口连行信号输入端LD EQU P1.1 ;P1.1口连列信号输入端SCK EQU P1.2 ;P1.2口连移位寄存器OE EQU P1.3 ;P1.3口连使能端RCK EQU P1.4 ;P1.4口连锁存器ORG 8000H ;硬件仿真程序LJMP MAINORG 8100H ;硬件仿真程序MAIN:MOV DPTR,#DISPLAY ;字模表地址MOV R1,#00HMOV R7,#00H ;R7用来表示字模表起始位置偏移量LOOP:MOV R5,#20 ;R5用来表示延时,改变R5的值可改变滚屏速度LOOP1:MOV R6,#10H ;R6用来判断是否扫描完一轮MOV A,R7 ;将R7的值赋值给R1MOV R1,AMOV HL,#01H ;行扫描信号的初值0001HMOV HL+1,#00HLOOP2:MOV A,R1MOVC A,@A+DPTRMOV LL,A ;找到列低位数据,存入内存地址中INC R1MOV A,R1MOVC A,@A+DPTRMOV LL+1,A ;找到列高位数据,存入内存地址中LCALL SENDD ;调用传输数据的程序LCALL DELAY ;调用延时程序CLR C ;位处理累加器清零MOV A,HLRLC A ;左移行扫描信号低八位MOV HL,AMOV A,HL+1RLC A ;左移行扫描信号高八位MOV HL+1,AINC R1DEC R6CJNE R6,#00H,LOOP2 ;通过R6判断是否扫描完一轮,R6减为0,一轮扫描结束DJNZ R5,LOOP1 ;通过R5判断一帧的延时是否达到INC R7 ;改变字模表的偏移量INC R7 ;R7连续加2,相当于换行CJNE R7,#40H,LOOP ;判断字模表是否结束LJMP MAINSENDD:CLR OE ;使能信号低电平有效CLR RCK ;RCK信号置0MOV R2,#08HMOV R3,LL+1 ;列信号高8位地址MOV R4,HL+1 ;行信号高8位地址BACK:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK ;判断高八位信号是否传输完毕MOV R2,#08HMOV R3,LL ;列信号低八位地址MOV R4,HL ;行信号低八位地址BACK1:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK1 ;判断低八位信号是否传输完毕SETB RCK ;RCK信号上升沿到来,移位寄存器的数据锁存入数据寄存器RETDELAY: ;延时子程序MOV R2,#50DELAY1:MOV R3,#10DELAY2:DJNZ R3,$DJNZ R2,DELAY1RETDISPLAY:DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFFDB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF;预留空白DB 0xFF,0xFE,0xE0,0xEE,0xEF,0xCE,0xEF,0xF6,0xE1,0xFA,0xFD,0xFC,0xFD,0xFE,0x3D,0x80;DB 0xE0,0xFA,0xED,0xFA,0xEF,0xF6,0xEF,0xF6,0xEF,0xEE,0xEF,0x9A,0x6B,0xDC,0xF7,0xFE;"张" END实验结果与分析:1、程序正确运行后,可看到16x16 LED点阵显示屏上显示“张”,LED灯的亮暗程度有些不均匀。
16×16点阵滚动显示汉字c51程序
16×16点阵滚动显示汉字c51程序给大家共享一个51单片机驱动的16×16点阵滚动显示汉字的程序,是公车上用的。
下载源代码#include#define int8 unsigned char#define int16 unsigned int#define int32 unsigned longint8 flag;int8 n;int8 code table[][32]={欢迎您乘坐广州三汽公司公共汽车大学城2线开往大学城请您坐好扶稳具体的字码省略,请点此处下载本列16×16点阵汉字滚动显示源代码};void delay(void);int16 offset;void main(void){int8 i;int8 *p;flag=0x10;n=0;TMOD=0x01;TH0=0xb1;TL0=0xe0;ET0=1;EA=1;TR0=1;p=&table[0][0];while (1){for (i=0;i<8;i++) //显示左半边屏幕{P0=*(p+offset+2*i);P2=i|0x08; //P2.4=0,P2.3=1 选中U2, 输出扫描码给U6 delay();P0=*(p+offset+2*i+1);P2=i|0x10; //P2.4=1,P2.3=0 选中U3, 输出扫描码给U7 delay();}for (i=8;i<16;i++) //显示右半边屏幕{P0=*(p+offset+2*i);P2=(i-8)|0x20; //P2.5=1 P2.4=0, P2.3=0 选中U4,输出扫描码U8 delay();P0=*(p+offset+2*i+1);P2=(i-8)|0x40; //P2.6=1 P2.5=0, P2.4=0 选中U5,输出扫描码U9 delay();}}}void delay(void){int16 i;for (i=0;i<50;i++);}void timer0() interrupt 1 using 3{TF0=0;TH0=0xb1;TL0=0xe0;if (n1100)offset=0; n=0;}}。
计算机接口程序设计-16X16点阵LED显示
信息工程学院接口技术课程设计论文(2008~2009学年第 2 学期)论文题目:_点阵LED显示系统设计_姓名:学号:专业:计算机科学与技术年级班级:06 级 3 班指导教师:蒲攀完成日期:2009年7月10日成绩:摘要本论文主要介绍的是16×16点阵LED显示系统。
硬件部分主要使用星研ES598PCI 实验箱中的可编程并行接口芯片8155,可编程并行接口芯片8255,16×16点阵LED,8位开关等连接组成点阵LED显示控制系统的基本电路。
软件部分采用了汇编语言编写程序代码,通过判断、跳转、循环等基本技术实现LED显示点阵汉字,汉字的滚动显示;并用8位开关结合8155,实现汉字滚动显示速度和方向的控制等。
该系统显示直观,工作稳定,操作简单,与商用LED显示具有类似的显示和滚动原理,具备较强的实用价值。
关键词:点阵LED显示,16×16 LED,星研ES598PCI,8155,8255SummaryThis thesis mainly describe the LED system with 16×16. The hardwares rely on programmable parallel interface chip 8155 and 8255, LED system with 16×16, 8-bit switches of STAR ES598PCI to compose the basic electrocircuit of LED control system. The software is written in assemble language. The Chinese character rolling display is realized through determination, jumping and looping. The speed and direction of rolling is controlled with 8155 along with the 8-bit switch. This system is intuitionistic, works steadily, and is easy to manipulate. It shares the same theory of displaying and rolling with the commercial LED system, which means it have a strong use value.Keyword:LED display system, 16×16 LED, STAR ES598PCI, 8155, 8255目录1. 引言.............................................................................................................. - 6 -2. 设计环境....................................................................................................... - 6 -3. 设计要求....................................................................................................... - 7 -4. 总体设计....................................................................................................... - 7 -5. 硬件设计....................................................................................................... - 7 -5.1. 16×16点阵LED ...................................................................................... - 8 -5.2.可编程并行接口芯片8255........................................................................... - 9 -5.3.可编程并行接口芯片8155......................................................................... - 10 -5.4.总体电路构架..........................................................................................- 11 -6. 软件设计..................................................................................................... - 12 -6.1.主程序流程............................................................................................ - 12 -6.2.显示子程序流程...................................................................................... - 13 -6.3.重复显示流程......................................................................................... - 13 -6.4.横/纵向显示流程 .................................................................................... - 14 -6.5.按键测试流程......................................................................................... - 16 -6.6.延时流程 ............................................................................................... - 16 -7. 系统测试..................................................................................................... - 17 -8. 总结............................................................................................................ - 18 -引言1. 引言LED(Light Emitting Diode),发光二极管,简称LED,,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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位一个字节的形式顺序排放。
显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。
从控制电路到列驱动器的数据传输可以采用并行方式或串行方式。
显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。
当列数很多时,并行传输的方案是不可取的。
采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。
但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。
这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两个部分。
对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以至影响到LED的亮度。
解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。
即在显示本行各列数据的同时,传送下一行的列数据。
为了达到重叠处理的目的,列数据的显示就需要具有锁存功能。
经过上述分析,可以归纳出列驱动器电路应具备的主要功能。
对于列数据准备来说,它应能实现串入并出的移位功能;对于列数据显示来说,应具有并行锁存的功能。
这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。
图7.1为显示屏电路实现的结构框图。
图7.1 显示屏电路框图7.3系统硬件电路的设计硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路三部分。
7.3.1单片机系统及外围电路单片机采用89C51或其兼容系列的芯片,采用24M或更高频率的晶振,以获得较高的刷新频率,使显示更稳定。
单片机的串口与列驱动器相连,用来送显示数据。
P1口低4位列驱动电路由集成电路74HC595构成,它具有一个8位串入并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行各列数据的同时,传送下一行的列数据,即达到重叠处理的目的。
74HC595的外形及内部结构如图7.3所示。
它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。
引脚SI是串行数据的输入端。
引脚SCK是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SI的下一个数据打入最低位。
移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端。
RCK是输出锁存器的打入信号,其上升沿将移位寄存器的输出打入到输出锁存器。
引脚G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高阻态。
SCLR信号是移位寄存器的清零输入端,当其为低时移位寄存器的输出全部为零。
由于SCK和RCK两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰。
芯片的输出端为QA~QH,最高位QH可作为多片74HC595级联应用时,向上一级的级联输出。
但因QH受输出锁存器打入控制,所以还从输出锁存器前引出了QH’,作为与移位寄存器完全同步的级联输出。
引脚说明图7.3 74HC595外形及内部逻辑结构图7.3.3行驱动电路单片机P1口低4位输出的行号经4/16线译码器74LS154译码后生成16条行选通信号线,再经过驱动器驱动对应的行线。
一条行线上要带动16列的LED进行显示,按每一LED 器件20mA电流计算,16个LED同时发光时,需要320mA电流,选用三极管8550作为驱动管可满足要求。
74LS154引脚功能图及逻辑图如图7.3.3所示,原理:这种单片4线—16线译码器非常适合用于高性能存储器的译码器。
当选通端(G1、G2)均为低电平时,可将地址端(ABCD)的二进制编码在一个对应的输出端,以低电平译出。
如果将G1和G2中的一个作为数据输入端,由ABCD对输出寻址,74LS154还可作1线-16线数据分配器。
引脚功能介绍:A、B、C、D译码地址输入端(低电平有效)G1、G2选通端(低电平有效)0-15输出端(低电平有效)功能表:,图1 74LS154引脚功能图及逻辑图7.4系统程序的设计显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。
根据软件分层次设计的原理,我们可把显示屏的软件系统分成两大层:第一层是底层的显示驱动程序,第二层是上层的系统应用程序。
显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其它控制信号,配合完成LED 显示屏的扫描显示工作。
显示驱动程序由定时器T0中断程序实现。
系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。
从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用C 语言编写。
7.4.1显示驱动程序显示驱动程序在进入中断后首先要对定时器T0重新赋初值以保证显示屏刷新率的稳定,1/16扫描的显示屏的刷新率(帧频)的计算公式如下:)65536(1216116100t f T osc -⨯=⨯=溢出率刷新率(帧频) 式7-1 其中f osc 为晶振频率,t 0为定时器T0初值(工作在16位定时器模式)。
然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。
为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。
图7.4为显示驱动程序(显示屏扫描函数)流程图。
7.4.2系统主程序系统主程序开始以后首先是对系统环境初始化,包括设置串口、定时器、中断和端口。
然后以“卷帘出”效果显示一个图形(☺),停留约3秒,接着向上滚动显示“我爱单片机☺”五个汉字及一个图形,停留约3秒,再向左跑马显示“我爱单片机☺”这五个汉字及一个图形,然后以“卷帘入”效果隐去图形(☺)。
由于单片机没有停机指令,所以我们可以设置系统程序不断地循环执行上述显示效果。
图7.5是系统主程序的流程图。
7.5调试及性能分析LED显示屏硬件电路只要器件质量可靠,管脚焊接正确,一般无需调试即可正常工作。
软件部分需要调试的主要有显示屏刷新频率及显示效果两部分。
显示屏刷新率由定时器T0的溢出率和单片机的晶振频率决定,表7.1给出了实验调试时采用的频率及其对应的定时器T0初值。
表7.1显示屏刷新率(帧频)与T0初值关系表(24M晶振)从理论上来说,24Hz以上的刷新率就能看到连续稳定的显示,刷新率越高,显示越稳定,同时刷新率越高,显示驱动程序占用的CPU时间也越多。
实验证明,在目测条件下刷新率40Hz以下的画面看起来闪烁较严重,刷新率50Hz以上的已基本觉察不出画面闪烁,刷新率达到85Hz以上时再增加画面闪烁将没有明显改善。
显示效果处理程序的内容及方法非常广泛,其调试过程在此不作具体讨论,读者可对照源程序自行分析。
这个方案设计的16×16点阵LED图文显示屏,电路简单,成本较低,且较容易扩展成更大的显示屏;显示屏各点亮度均匀、充足;显示图形或文字稳定、清晰无串扰;可用静止、移入移出等多种显示方式显示图形或文字。
7.6控制源程序清单以下是16×16点阵LED电子显示屏的源程序,分别采用C及汇编编写,C程序在Keil uVision2 V2.30(C51.exe V7.0)环境下调试通过。
/*--------------------------------------16×16点阵LED显示屏程序MCU A T89C51 XAL 24MHzBuilde by Gavin Hu, 2003.8.15--------------------------------------*/#include <reg51.h>#define BLKN 2 //列锁存器数sbit G = 0x97; //P1.7为显示允许控制信号端口sbit RCLK = 0x96; //P1.6为输出锁存器时钟信号端sbit SCLR = 0x95; //P1.5为移位寄存器清○端void delay(unsigned int); //延时函数unsigned char data dispram[32]; //显示缓存/*--------------------------------------主函数void main(void)--------------------------------------*/void main(void){unsigned char code Bmp[][32]={//字模表{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 }/* */};register unsigned char i,j,k,l;SCON = 0x00; //串口工作模式0:移位寄存器方式TMOD = 0x01; //定时器T0工作方式1:16位方式TR0 = 1; //启动定时器T0P1 = 0x3f; //P1端口初值:允许接收、锁存、显示IE = 0x82; //允许定时器T0中断while (1){delay(2000); //延时2秒for (i=0;i<32;i++) //显示效果:卷帘出┓{dispram[i] = Bmp[5][i];if (i%2) delay(100);} //━━━━━━━━┛delay(3000);for (i=0; i<6; i++) //显示效果:上滚屏┓{for (j=0; j<16; j++){for (k=0; k<15; k++){dispram[k*BLKN] = dispram[(k+1)*BLKN];dispram[k*BLKN+1] = dispram[(k+1)*BLKN+1];}dispram[30] = Bmp[i][j*BLKN];dispram[31] = Bmp[i][j*BLKN+1];delay(100);}} //━━━━━━━━┛delay(3000);for (i=0; i<6; i++) //显示效果:左跑马┓{for (j=0; j<2; j++)for (k=1; k<9; k++){for (l=0; l<16; l++){dispram[l*BLKN] = dispram[l*BLKN]<<1 | dispram[l*BLKN+1]>>7;dispram[l*BLKN+1] = dispram[l*BLKN+1]<<1 | Bmp[i][l*BLKN+j]>>(8-k);}delay(100);}//end (k=0; k<16; k++)}//end for (i=0; i<; i++)//━━━━━━━┛delay(3000);for (i=0;i<32;i++) //显示效果:卷帘入┓{dispram[i] = 0x00;if (i%2) delay(100);} //━━━━━━━━┛}//end while (1)}/*延时函数*/void delay(unsigned int dt){register unsigned char bt;for (; dt; dt--)for (bt=0; bt<255; bt++);}/*显示屏扫描(定时器T0中断)函数*/void leddisplay(void) interrupt 1 using 1{register unsigned char i, j=BLKN;TH0 = 0xF8; //设定显示屏刷新率每秒62.5帧TL0 = 0x30;i = P1; //读取当前显示的行号i = ++i & 0x0f; //行号加1,屏蔽高4位do {j--;SBUF = dispram[i*BLKN + j]; //送显示数据while (!TI); TI = 0;}while (j); //完成一行数据的发送G = 1; //消隐(关闭显示)P1 &= 0xf0; //行号端口清○RCLK = 1; //显示数据打入输出锁存器P1 |= i; //写入行号RCLK = 0; //锁存显示数据G = 0; //打开显示}以下为用汇编编写的字符显示控制程序:; ************************************ ; * * ; * 单个16*16点阵电子屏字符显示器 * ; * AT89C52 12MHZ晶振 * ; * 2004.2.11 LRM * ; ************************************ ;显示字用查表法,不占内存,字符用16*16共阳LED点阵,;效果:向上滚动显示19个字,再重复循环。