本博客仅做学习笔记,如有侵权,联系后即刻更改
LED数码管要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字
动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
静态显示
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多
如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。动态显示
LED数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一
动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,
另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,单片机对位选通COM端电路的控制,
所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,
相关参数
七段数码管为共阴型
√
段码采用同相驱动
√
输入端加高电平,选中的数码管亮
√
位码加反相驱动器,位码输入端高电平选中。
√字形代码表
实验连线步骤:
(1): 关闭实验箱电源,按照下面原理图连线;
(2): 将8255的A0,A1,RST 接至 扩展总线区A0,A1,RESET;
(3): 将8255的/RD,/WR 接至 扩展总线区/IOR,/IOW;
(4): 将8255的/CS 接至 I/O地址区/220H—22FH;
(5): 将8255的PA7~PA0 接至 七段数码管显示区DP~A;
(6): 将8255的PB7~PB0 接至 七段数码管显示区S7~S0;
程序初始化
;使用8255连接7段数码管显示器 8255A口连接段码,h-a插孔连接PA7-PA0;B口连接位码,s7-s0插孔连接PB7-PB0。
.model small
.486
数据段定义
DATA SEGMENT
io_address EQU 220H
LEDCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
BUF DW ?
DATA ENDS
代码段定义
code segment
assume cs:code,ds:DATA
start: cli ;全称为Clear Interupt,该指令的作用是禁止中断发生
mov ax, data
mov ds,ax
设 置 8255工作方式 0
mov al, 80h
mov dx, 223h
out dx, al
设置显示缓冲区首址
TTT: mov ch,10
lea si, LEDCODE ;lea指令获取偏移地址
设置显示初始位置
tt1: mov bl,[si]
and bl, 7fh
MOV cl,01H
调用显示子程序
lll: CALL DISP ;call是调用子程序指令。
;显示到最左边吗?
jnc lll ;jnc指令用于对进位位进行判断从而决定程序走向
;JNZ LLL ;条件转移指令,结果不为零(或不相等)则转移。
;指针增 1
inc si
;全部显示完毕吗?
dec ch ;DEC是减1指令
jnz tt1 ;条件转移指令,结果不为零(或不相等)则转移。
JMP TTT ;jmp为无条件转移,可以只修改IP,也可以同时修改CS和IP
proc是定义子程序的伪指令,位置在子程序的开始处,它和endp分别表示子程序定义的开始和结束两者必须成对出现。
DISP PROC
push dx
push ax
mov al,bl
lp1: mov dx,IO_ADDRESS
out dx,al
mov al,cl
E: mov dx,IO_ADDRESS
inc dx
out dx,al ;将AL的值写入dx端口
call delay
sal cl,1 ;SAL(算术左移)和SAR(算术右移)
pop ax
POP DX
RET ;ret指令的内部操作是:栈顶字单元出栈,其值赋给IP寄存器。即实现了一个程序的转移,将栈顶字单元保存的偏移地址作为下一条指令的偏移地址。
DISP ENDP
DELAY PROC
PUSH CX
PUSH DX
kk2: MOV DX,50
kk1: MOV CX,800H
kk: LOOP KK
dec dx
jnz kk1 ;;条件转移指令,结果不为零(或不相等)则转移。
pop dx
POP CX
RET
DELAY ENDP
CODE ends
end start
小小励志
有些事你现在不做,一辈子都不会做了。
如果你想做一件事,全世界都会为你让路。
《搭车去柏林》