微机原理实验报告_实验三_七段数码管
微机原理实验报告_实验三_七段数码管
实验三 七段数码管
一、实验目的:
进一步熟悉8255,掌握数码管显示数字的原理
二、实验原理:
1、 实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
2、 七段数码管的字形码:
3、 在实验2中加入键盘是否有输入判断,如有则去读取键盘输入数据,并加入提示信息,比如“输入十位数”,“输入个位数”,从键盘读入的数据放入十位和个位数据定义区,取代要显示的数据。
4、 只需要添加两位变量作为缓存,一个记录键盘输入的值,一个记录循环减1的结果,将其通过数码管显示出来,减至0时重载键盘输入的值。
三、实验步骤:
静态显示:将8255的A口PA0~PA6分别与气短数码管的段码驱动输入端A~G相连,位码驱动输入端S1接+5V(选中),S0、DP接地(关闭)。
动态显示:七段数码管段码不变,位码驱动输入端S1,S0接8255 C口的PC1,PC0。8253的接法参考第二次实验的接法,CLK0接入1MHz,CLK1接8255的PC7。
微机原理实验报告_实验三_七段数码管
1、在两个数码管上显示两位数字,要求延时应用8253硬件延时
2、可以改变数码管显示数字,从键盘读入两位数字,并在数码管显示出来。
3、对输入数据进行倒计时计数,时间显示在数码管上,计到0重新开始。
微机原理实验报告_实验三_七段数码管
五、实验结果:
实验结果如预期一致,可以键盘输入倒计时的值,时间显示在数码管上,计数到0重新计数。
六、程序代码:
;******************************************
;* 数码管显示对键盘输入数据进行倒计时计数 *
;******************************************
data segment
io8255a equ 288h
io8255c equ 28ah
io8255_mode equ 28bh
io8253a equ 280h
io8253b equ 281h
io8253c equ 282h
mesg1 db 0dh,0ah,'Input a num (00--99) for high position,other key is exit:',0dh,0ah,'$'
mesg2 db 0dh,0ah,'Input a num (00--99) for low position,other key is exit:',0dh,0ah,'$'
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh; 段码
buffer db ?,?; 存放要显示的个位和十位
buffer1 db ?,?; 存放临时的个位和十位用于减一
bz dw ? ; 位码
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,io8255_mode ;将8255的A口为输出
mov ax,88h
out dx,al
mov dx,offset mesg1 ;显示提示信息
mov ah,09h
int 21h
mov ah,01 ;从键盘接收十位字符
int 21h
cmp al,'0' ;是否小于0
jl exit ;若是则退出
cmp al,'9' ;是否大于9
jg exit ;若是则退出
sub al,30h
mov buffer,al ;将输入的十位数存入指定地址
mov dx,offset mesg2 ;显示提示信息
mov ah,09h
微机原理实验报告_实验三_七段数码管
int 21h
mov ah,01h
int 21h
cmp al,'0' ;判断方法同十位
jl exit
cmp al,'9'
jg exit
sub al,30h
mov buffer+1,al ;将输入的个位数存入指定地址
jmp reset
exit:
mov ah,4ch ;返回
int 21h
reset:
mov al,buffer
mov buffer1,al
mov al,buffer+1
mov buffer1+1,al
mov di,offset buffer1 ;取得显示缓冲区的地址
loop1:
call time
loop2:
mov bh,02h ;数码管循环显示部分
lll:
mov byte ptr bz,bh
push di
dec di
add di, bz
mov bl,[di] ;bl为要显示的数
pop di
mov al,0
mov dx,io8255c
out dx,al
mov bh,0
mov si,offset led ;置led数码表偏移地址为SI
add si,bx ;求出对应的led数码
mov al,byte ptr [si]
mov dx,io8255a ;自8255A的口输出
out dx,al
mov al,byte ptr bz ;使相应的数码管亮
mov dx,io8255c
out dx,al
mov cx,3000
delay:
微机原理实验报告_实验三_七段数码管
loop delay ;延时
mov bh,byte ptr bz
shr bh,1
jnz lll
mov dx,io8255c
in al,dx
test al,80h
jnz set
jmp loop2
set:
test buffer1+1,0fh
jz set1
dec buffer1+1
jmp loop1
set1:
test buffer1,0fh
jz reset
dec buffer1
mov buffer1+1,09h
jmp loop1
time proc near ;定时一秒的子程序
mov dx,io8253c ;向8253写控制字
mov al,37h ;使0通道为工作方式3
out dx,al
mov ax,1000h ;循环计数初值1000
mov dx,io8253a
out dx,al ;先写低字节
mov al,ah
out dx,al ;后写高字节
mov dx,io8253c
mov al,71h ;设8253通道1工作方式0
out dx,al
mov ax,1000h ;循环计数初值1000
mov dx,io8253b
out dx,al ;先写低字节
mov al,ah
out dx,al ;后写高字节
ret
time endp
code ends
end start
七、实验总结:
微机原理实验报告_实验三_七段数码管
本次实验需要结合上次实验的知识,应用8253硬件延时,因此增加了些许难度,代码的修改也不少。实验中,接线比较简单,但是程序的Debug花了不少的时间。这跟微机原理的理论知识忘记了许多有关,现在抓紧复习微机原理的知识,做实验前预习好实验,争取在实验前把代码打好。
…… 此处隐藏:1190字,全部文档内容请下载后查看。喜欢就下载吧 ……- 基于PLC控制的航空电镀生产线自动输送
- 中考预测课内外文言文对比阅读2
- 2018-2023年中国商业智能(BI)产业市场
- 中国金融体制改革研究2011new
- 外窗淋水试验方案
- 精益生产(Lean Production)
- 学校安全事故处置和信息报送制度
- Chapter 5 Human Resources Management
- 【小学数学】人教版小学六年级上册数学
- 初中数学解题方法与技巧
- 山东省创伤中心建设与管理指导原则(试
- 函数与数列的极限的强化练习题答案
- 10分钟淋巴按摩消脂
- 网络应急演练预案
- 服装设计入门基础知识
- 初二数学分式计算题练习
- (人教新课标)高二数学必修5第二章 数列
- 最新自主创业项目
- 北京大学 无机化学课件 4第4章 配合物
- 贸易公司业务管理制度




