当前位置:文档之家› 单片机数码管显示程序设计PPT教学课件

单片机数码管显示程序设计PPT教学课件


MOV DISBUF+2,#3
MOV DISBUF+3,#4+80H;显示小数点
MOV DISBUF+4,#5
MOV DISBUF+5,#6
AJMP LOOP
;---------------初始化子程序-----------------
INIT: MOV R0,#2
;清理内部RAM
CLR A
INIT1: MOV @R0,A
INC CNT_2D5MS
;2.5MS计数器
P2.7=0 延时
(R0)+1
(R0)=10? N Y
(R0)=0
2020/12/10
7
编程练习2-动态显示程序
要求:显示123.456。
T0中断
重装初值 保护现场 选工作寄存器组
提示:
熄灭显示
(1)使用内部RAM21H-26H单元做显示缓冲区。
计算显示位
(2)使用27H单元记当前显示位(位号1-6)。
dp
a0 b0 c0 d0 e1 f1 g0 dp 1
ab c
dp
;共阳极7段数码管驱动段码表
;
pgfedcba
TAB: DB B ;0
DB
B
;1
DB B ;2
DB B ;3
DB
B
;4
DB B ;5
DB B ;6
DB
B
;7
DB B ;8
DB B ;9
4
多位数码管动态显示电路原理图
实验板数码管连接示意图
(3)使用28H单元控制位闪烁,1闪烁,0不闪烁。
(4)使用显示缓冲区单元最高位控制小数点显示,在 高位为1,表示该位显示小数点。
根据当前显示位 查得段驱动码
处理小数点
段驱动码送P0口
(5)fosc=11.0592MHz,使用定时器T0定时2.5ms进 行扫描速率控制。
根据当前显示位 查得位驱动码
(6)T0中断服务程序使用工作寄存器组1工作。
;全局变量定义
FLAG
EQU 20H ;标志位
DISSEG
EQU P0 ;显示段驱动
DISBIT
EQU P2 ;显示位驱动P2.7-P2.2
DISBUF
EQU 21H ;显示缓冲区首地址21H-26H
DISBITBUF
EQU 27H ;当前显示位计数器0-5
FLASH
EQU 28H ;闪烁控制xxxxxx00,将x=1闪烁,=0不闪
C7数码管显示程序设计
2020/12/10
1
主要内容
发光二极管的工作参数 数码管的结构和工作原理 多位数码管动态显示电路原理图 编程练习:驱动一位数码管
2020/12/10
2
发光二极管的工作参数
+5V
发光二极管正常发光时, 电流约为5~10mA,压 降1V左右。
500
P1.0
引脚输出低电平时,发光 二极管导通。
INC R0
CJNE R0,#50H,INIT1
;初始化定时器T0
;f=11.0592MHz,2.5ms定时
MOV TMOD,#01H ;模式1
MOV TL0,#05H
MOV TH0,#0F7H
SETB TR0
;启动
SETB ET0
;开中断
2020/12/10
SETB EA RET
10
动态显示参考程序3:中断服务程序
2020/12/10
9
动态显示参考程序2:主程序
ORG 0000H
LJMP START
ORG 000BH
LJMP T0SERV ;T0中断入口
ORG 0030H
START: MOV SP,#50H ;初始化堆栈
LCALL INIT
;初始化
LOOP: MOV DISBUF,#1
MOV DISBUF+1,#2
;----------2.5MS中断服务程序=动态显示-------
T0SERV: MOV TL0,#05H
MOV TH0,#0F7H
PUSH PSW
;保护现场
PUSH ACC
PUSH DPH
PUSH DPL
SETB RS0
;中断服务使用工作寄存器组1
CLR RS1
;-----------计算时间----------------------------
2020/12/10
限流电阻 R=(5V-1V)/8mA=500 Ω
3
共阳极数码管
共阳极数码管的结构是:将8个发光二极管排 列成一个 “8.” 的形状,所有发光二极管阳极 连接在一起做公共端com,阴极作为各个段的 控制端a,b,c,d,e,f,g,dp。
com
com
a
1
f
b
g
e
c
d
2020/12/10
+5V
位驱动
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 com1 com2 com3 com4 com5 com6
段驱动
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7
2020/12/10
a b c d e f g dp
六位共阳极数码管模块 相同的段驱动端都并联在 一起。
a b c d e f g dp
2020/12/10
6
编程练习1-驱动一位数码管
要求:在第一位显示连续变 化的0-9,间隔时间自定。
参考课本P196页例1,在 keil中编程,生产HEX文件。
开始 (R0)=0 (A)=(R0) 查段码表, 取得段驱动码
段驱动码送P0口
在proteus中观察运行结果。 (参考“ c6定时器应用程 序调试” 介绍的方法)
位驱动码送P2口
2020/12/10
恢复现场
8
返回
动态显示参考程序1:定义变量
;---------------------------------------------------------
;动态显示Leabharlann 序;---------------------------------------------------------
;小数点的处理:
;若显示‘3’,缓冲区放‘3’,若显示‘3.’,缓冲区放‘3+80H’,
最高位为1
S_PULSE
EQU FLAG.0 ;秒脉冲
CNT_2D5MS
EQU 2FH ;2.5MS计数器
CNT_10MS1
EQU 30H ;10MS计数器
CN_0D5S
EQU 31H ;0.5秒计数器
;----------------------------------------------------------
5
在第一位上显示5
位驱动P2.7输出0 段驱动P0口输出“5”的段 码“10010010B”
+5V
0
1
1
1
1
1
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2
com1 com2 com3 com4 com5 com6
0 P0.0 1 P0.1 0 P0.2 0 P0.3 1 P0.4 0 P0.5 0 P0.6 1 P0.7
相关主题