微机实验六
文章目录
- 微机实验六
- 前言
- 八位七段LED数码管
-
- 驱动方式
-
- 静态显示
- 动态显示
- 实验所用七段数码管
-
- 相关参数
- 字形代码表
- 实验连接步骤:
- 汇编程序(.ASM)
-
- 程序初始化
- 数据段定义
- 代码段定义
- 实验流程图:
- 总结
前言
本博客只做学习笔记,如有侵权,联系后立即更改
科普:八七段数码管
八位七段LED数码管
驱动方式
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;
汇编程序(.ASM)
程序初始化
;使用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
实验流程图:
总结
小小励志
有些事你现在不做,一辈子都不会做了。 如果你想做一件事,全世界都会为你让路。 《搭车去柏林》