汇编语言实现七段数码管显示控制实验
一 实验目的
1)掌握8255方式0的工作原理、初始化设置方法。
2)掌握I/O接口地址译码电路的工作原理及端口地址的计算方法。
3)掌握I/O端口的读写操作及编程方法。
4)掌握数码管显示数字的原理、数码管显示段控及位控的概念及编程方法。
5)掌握微机接口集成开发环境HQFC软件的使用方法。
二 实验原理图
三 代码实现
;参考代码
;七段数码管显示,8255控制寄存器端口地址28BH A口地址288H,C口地址28AH
;**************************************
;* LED数码管实验 *
;* 动态循环显示“00-99” *
;**************************************
data segment
io8255c equ 28ah ;C口地址
io8255cs equ 28bh ;控制寄存器端口地址
io8255a equ 288h ;A口地址
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;在数据段中存放0到9的字形码: 段码
buffer1 db 0, 0 ;存放要显示的个位和十位
bz dw ? ;位码
data endscode segmentassume cs:code,ds:data
start: mov ax,datamov ds,axmov dx,io8255cs ;将8255设为A口输出mov al,80h ;A口0方式输出out dx,almov di,offset buffer1 ;设di为显示缓冲区
;loop1: mov cx,0300h ;循环次数
loop1: mov cx,030h ;循环次数,延时loop2: mov bh,02 ;送位码02到bh
lll: mov byte ptr bz,bh ;按字节把位码送到bz中push di ;di进栈dec di ;di自减1,指向下一位数字的地址add di, bz ;所要显示的数传给dimov bl,[di] ;bl为要显示的数pop di ;di出栈mov bh,0 ;bh清零mov si,offset led ;置led数码表偏移地址为SIadd si,bx ;求出对应的led数码mov al,byte ptr [si] ;把输出的数的地址传给almov dx,io8255a ;自8255A的A口输出out dx,almov al,byte ptr bz ;位码选择相应的数码管亮mov dx,io8255c ;将8255设为C口输出out dx,alpush cx ;cx进栈mov cx,100 ;把100传给CX
delay: loop delay ;延时pop cx ;CX出栈mov al,00h ;al清零out dx,almov bh,byte ptr bz ;按位码送到bh中shr bh,1 ;右移一位,显示十位的数码管数据jnz lll ;跳到lll显示loop loop2 ;循环显示另一位mov ax,word ptr [di] ;把最后一个字传给axcmp ah,09 ;将该字的高位与9比较jnz set ;不等则跳转到setcmp al,09 ;将该字的低位与9比较jnz set ;不等则跳转到setmov ax,0000 ;ax置零mov [di],al ;al为个位mov [di+1],ah ;ah为十位jmp loop1
set: mov ah,01 ;1号功能调用,键盘键入int 16hjne exit ;有键按下则转exitmov ax,word ptr [di] ;没有键入就把个位字传给axinc al ;al自增1 aaa ;将ax拆分,分为个位与十位,BCD码十进制调整mov [di],al ;al为个位mov [di+1],ah ;ah中为十位jmp loop1 ;循环loop1,继续循环显示
exit: mov dx,io8255c ;C口位选地址mov al,0 ;关掉数码管显示out dx,almov ah,4ch ;返回int 21h
code ends
end start
该程序是先设置好输出方式,输入一个数是数码管亮起来,然后设置好延时,在把显示的数据从00开始,送段码到A口,送位码到C口,将显示数据与9比较,拆分所需要显示的数的十位与个位,在相应的位上显示出来,通过移位,依次显示数字,最后循环显示00-99,直到键盘有输入停止返回,程序结束。
如:显示89,90,99的过程:首先,di调整到十位数8传给bl, di自减1,再加bz,依然指向十位数,置led数码表偏移地址为SI,SI与bl相加得到对应8的字形码偏移地址,把该地址传给al,然后A口输出,然后位码bz=02在C口输出到S1,S0,选择十位数码管S1显示8,延时,把位码01传给bh,bh右移一位成01,跳到lll。位码bh=01H传给bz,di自减等调整到个位数9,置led数码表偏移地址为SI,SI与bl相加得到对应9的字形码偏移地址,把该地址传给al,然后A口输出,然后位码bz=01H在C口输出到S1,S0,选择个位数码管S0显示9,延时,完成89的显示,十位个位与9比较,不是99,跳到set,判断有误按键按下,没有就把个位数传个ax,个位加1,此时,9+1=10,al=a,经aaa调整,al=0(个位),ah=9(十位),再把个位al传给[di],十位ah传给[di+1],回到loop1,延时,然后同上述过程显示十位数9,在显示个位数0,即90;同上述过程显示完99后,判断十位数,个位数是否为9,结果都是,然后ax置00,然后把个位,十位都置0,循环loop1,继续从00开始显示,没有按键按下,一直循环00-99.
四 流程图
汇编语言实现七段数码管显示控制实验相关推荐
- 8255数码管显示c语言,用汇编语言编写七段数码管显示1~9,用8255A接口芯片,用中断方式控制。...
满意答案 vgvm7321 2013.07.19 采纳率:52% 等级:11 已帮助:11521人 正好我们做了这个实验 你知道的,把数据段中的端口地址改为你的计算机可识别的8255A的端口地址 ...
- easyui 控制某列显示不显示_实验八 LED数码管显示控制实验
一.实验目的 1.熟悉PLC实验装置以及三菱编程软件gxdeveloper8.86. 2.熟悉逻辑控制与应用指令的使用. 二.实验预习要求 熟悉三菱FX2N系列PLC的基本指令. 按照控制要求完成程序 ...
- 键盘接口和七段数码管的控制实验
一.实验目的 1. 学习4X4键盘的与CPU的接口原理 2. 掌握键盘芯片HD7279的使用,及8位数码管的显示方法: 二.实验内容 1. 通过4X4按键完成在数码管上的各种显示功能,以及LCD ...
- c语言实现7段数码管显示,七段数码管显示实验.doc
七段数码管显示实验 单 片 机 实 验 报 告 实验九 七段数码管显示实验 实验目的 学习七段数码管的工作原理: 学习数码管与8051单片机的接口方法: 掌握动态扫描显示技术. 实验原理 如图4.9- ...
- 【51单片机】七段数码管显示实验+详细讲解
[51单片机]七段数码管显示实验 前言 一.兵马未动,粮草先行--认识七段数码管 1.关于显示器 2.七段数码管 3.七段数码管的结构 4.数码管显示方法 二.数码管显示程序 1.静态显示 效果 2. ...
- 51单片机七段数码管显示时钟无按键控制—①—74HC595版
参考链接: 51单片机七段数码管显示时钟加按键控制-③-74HC595版 51单片机七段数码管显示时钟加按键控制-②-74HC595版 文章目录 一.实验内容: 二.实验分析: 三.仿真图: 四.源代 ...
- PLC实验五(LED数码管显示控制)
PLC实验五(LED数码管显示控制)
- 仿真软件proteus构建七段数码管显示数字0-9实验
七段数码管显示原理研究在前一篇博客中已经阐述过,就是利用7个数码管构建一个"8"字形,然后利用数字的形状特点,依次点亮某一些段,就可以显示数字了. 七段数码管显示数字还是二极管发光 ...
- 用七段数码管显示学号python_用七段数码管显示学号python
单片机问题:在七段数码管上显示自己的学号后面六请分享大神写答案是啊,从今往后,那就好好过吧.辈子也就是几年,万次的寻寻觅觅翘首以望,等的无非是这刻身边紧紧相拥的个人.辛夷坞<山月不知心底事> ...
最新文章
- html用户注册信息,首页-用户注册-填写注册信息
- Asp.Net获取客户端信息-学习中
- Android实训日志:基于外部存储的音乐播放器V05
- PP后台配置-定义工作中心标准值
- 深度学习之pytorch(三) C++调用
- 深入理解JavaScript系列(32):设计模式之观察者模式
- [html] iframe框架都有哪些优缺点?
- 张朝阳:知识直播是长久的事情 商业模式将水到渠成
- Eclipse编写第一个Java程序
- web前后台数据交互的四种方式
- python学习笔记之数据类型(二)
- 小程序 · 云开发快速入门与实战
- 计算主波长色纯度色温和色坐标转换CIE1931图色坐标显示NTSC色饱和度
- chrome的APP模式与全屏模式 --app --kiosk
- 组合博弈 -- 三大基本博弈
- 微信模板消息发送成功但显示空白的问题
- PYTHON实践——GUI界面
- VS 2019 C++ 如何在非控制台程序中打开控制台
- android Check the JVM arguments defined for the gradle process in:
- Pygame - Python游戏编程入门(3)