16点阵显示
16*16点阵显示实验
报告
110601111129 金雨松
110601111132 毛闰春 一、总体设计
1、实验
利用16*16点阵显示设计出小组组号
2、总体设计框图
从单片机输出信号到LED点阵的芯片
单LED点 利用高低电平来控制显示
阵屏 片
机
图1总体设计框图
本实验就是要通过芯片产生读时序,将字形 从寄存器中读出,然后产生写时序,写入16×16的点阵,使其扫描显示输出。为了显示整个组号,首先分布好样式的排列,以行给样式信息;然后以12发光二极管逐个点亮每一行,即每行逐一加高电平,根据人眼的视觉残留特性,使之形成整个组号的显示。 LED点阵每个点都有一个红色的发光二极管。点阵内的二极管间的连接都是行共阳,列共阴。本实验采用共阴,当二极管的共阳极为高电平,共阴极为低电平时,所接点发光;反之处于截止状态,不放光。本实验采取行扫描方式,行和列的高低电平控制样式。
二、硬件设计
本系统利用伟福La6000系列实验箱完成具体如
1和表2
表1连线表
序号 接口1 接口2
16*16CS非 CS0非 1
表2地址分配
序号 功能模块 地址
列低8位 1 8000H
列高8位 2 8001H
行高8位 3 8002H
行低8位 4 8003H 三、软件设计
1、主程序
图 2、显示子程序流程图
开始 开始
初始化 设置扫描次数
调用显示子程序 调用循环显示子程序
是否显计数是
N N 示 否完成
Y
Y
结束
图2主程序流程图 图3显示子程序流程图
如图2所示为主程序流程图系统开始后调用显示子程序,能显示这回到初始化,不能显示这继续调用子程序。
如图3所示为显示子程序流程图,按照预定的扫描次数扫描循环子程序,计数完成这结束,没完成则继续扫描循环子程序。
3、循环程序流程图
开始
初始化行码
查表读取列码
送出读取列码
行码左移
N
检测行码是否到
头
Y
结束
图4 循环程序流程
如图2所示,程序先初始化数据,查表读取列码,并送出。然后把行码左移,检测行码是否达到1000000B,如果未达到继续循环,如果达到则结束程序。
四、实际效果图
五程序附录
ORG 0000H
LJMP MAIN
MAIN: LCALL DISS
LJMP MAIN
DISS: MOV R3,#00H
MOV 35H,#00000001B ;行码低8位
MOV 36H,#00H ;行码高8位 DIS: MOV A,#00H ;关显示
MOV DPTR,#8000H
MOVX @DPTR,A LD0: MOV A,R3
MOV DPTR,#TABLE1 ;查表求第一块的列码
MOVC A,@A+DPTR
MOV DPTR,#8000H ;送出第一块列码
MOVX @DPTR,A
MOV A,R3
MOV DPTR,#TABLE2 ;查表求第二块的列码
MOVC A,@A+DPTR
MOV DPTR,#8001H ;送出第二块列码
MOVX @DPTR,A
MOV A,35H
MOV DPTR,#8002H
MOVX @DPTR,A
LCALL DELAY
INC R3 ;行数+1
MOV A,35H
RLC A ;行码低8位左移
MOV 35H,A
MOV A,36H
RLC A ;行码高8位左移
MOV 36H,A
JB ACC.7,DISS1
AJMP LD0
DISS1: MOV R3,#00H
MOV 35H,#00000001B
MOV 36H,#00H DIS1: MOV A,#00H
MOV DPTR,#8000H
MOVX @DPTR,A LD01: MOV A,R3
MOV DPTR,#TABLE3
MOVC A,@A+DPTR
MOV DPTR,#8000H
MOVX @DPTR,A
MOV A,R3
MOV DPTR,#TABLE4
MOVC A,@A+DPTR
MOV DPTR,#8001H
MOVX @DPTR,A
MOV A,35H
MOV DPTR,#8003H
MOVX @DPTR,A
LCALL DELAY
INC R3
MOV A,35H
RLC A
MOV 35H,A
MOV A,36H
RLC A
MOV 36H,A
JB ACC.7,LD11
AJMP LD01
LD11: RET
ORG 1000H
TABLE1:DB 0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,00H TABLE2:DB 0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH TABLE3:DB 7BH,7BH,0BBH,0BBH,0DBH,0DBH,0EBH,0F3H TABLE4:DB 0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH
DELAY: MOV R4,#100
LOOP2: DJNZ R4,LOOP2
RET