一、实验目的
1、掌握数字、字符转换成显示段码的软件译码方法
2、静态显示的原理和相关程序的编写
二、实验电路
1、静态显示,电路图中所示。显示器由5个共阴极数码管组成。输入只有两个信号,它们是串行数据线DIN和移位信号CLK。5个串/并移位寄存器芯片74LS164首尾相连。每片的并行输出作为LED数码管的段码。
74LS164的引脚图如图所示;
74LS164为8位串入并出移位寄存器,1、2为串行输入端,Q0~Q7为并行输出端,CLK为移位时钟脉冲,上升沿移入一位;MR为清零端,低电平时并行输出为零。
三、实验内容及步骤
单片机的P1.0作数据串行输出,P1.1作移位脉冲输出,当然用户也可以用其他I/O口。
1、使用单片机最小应用系统1模块,用导线连接P1.0、P1.1到串行静态显示模块的DIN、CLK端。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加 串行显示.ASM源程序,进行编译,直到编译无误。
4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。 5LED显示“80C51”。停止程序运行,显示不变,说明静态显示模块具有数据锁存功能。
四、源程序
源程序
DBUF0 EQU 30H ;置存储区首址
TEMP EQU 40H ;置缓冲区首址
DIN BIT P1.0 ;置串行输出口
CLK BIT P1.1 ;置时钟输出口
ORG 0000H
LJMP START
ORG 0030H
START:
MOV 30H, #8 ;存入显示数据
MOV 31H, #9
MOV 32H, #C
MOV 33H, #5
MOV 34H, #1
DISP: MOV R0, #DBUF0
MOV R1, #TEMP
MOV R2, #5
DP10: MOV DPTR, #SEGTAB ;表头地址
MOV A, @R0
MOVC A, @A+DPTR ;查表指令
MOV @R1, A
INC R0
INC R1
DJNZ R2, DP10
MOV R0, #TEMP ;段码地址指针
MOV R1, #5 ;段码字节数
DP12: MOV R2, #8 ;输出子程序
MOV A, @R0 ;取段码
DP13: RLC A ;段码左移
MOV DIN, C ;输出一位段码
CLR CLK ;发送移位脉冲一位
SETB CLK
DJNZ R2, DP13
INC R0
DJNZ R1, DP12
SJMP $
SEGTAB:DB 3FH,06H,5BH,4FH,66H,6DH ;0,1,2,3,4,5
DB 7DH,07H,7FH,6FH,77H,7CH ;6,7,8,9,A,b
DB 58H,5EH,7BH,71H,00H,40H ;C,d,E,F, ,-
DELAY: MOV R4, #03H ;延时子程序
AA1: MOV R5, #0FFH
AA: DJNZ R5, AA
DJNZ R4, AA1
RET
END