一 实验目的
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.

四 流程图

汇编语言实现七段数码管显示控制实验相关推荐

  1. 8255数码管显示c语言,用汇编语言编写七段数码管显示1~9,用8255A接口芯片,用中断方式控制。...

    满意答案 vgvm7321 2013.07.19 采纳率:52%    等级:11 已帮助:11521人 正好我们做了这个实验 你知道的,把数据段中的端口地址改为你的计算机可识别的8255A的端口地址 ...

  2. easyui 控制某列显示不显示_实验八 LED数码管显示控制实验

    一.实验目的 1.熟悉PLC实验装置以及三菱编程软件gxdeveloper8.86. 2.熟悉逻辑控制与应用指令的使用. 二.实验预习要求 熟悉三菱FX2N系列PLC的基本指令. 按照控制要求完成程序 ...

  3. 键盘接口和七段数码管的控制实验

    一.实验目的 1.  学习4X4键盘的与CPU的接口原理 2.  掌握键盘芯片HD7279的使用,及8位数码管的显示方法: 二.实验内容 1.  通过4X4按键完成在数码管上的各种显示功能,以及LCD ...

  4. c语言实现7段数码管显示,七段数码管显示实验.doc

    七段数码管显示实验 单 片 机 实 验 报 告 实验九 七段数码管显示实验 实验目的 学习七段数码管的工作原理: 学习数码管与8051单片机的接口方法: 掌握动态扫描显示技术. 实验原理 如图4.9- ...

  5. 【51单片机】七段数码管显示实验+详细讲解

    [51单片机]七段数码管显示实验 前言 一.兵马未动,粮草先行--认识七段数码管 1.关于显示器 2.七段数码管 3.七段数码管的结构 4.数码管显示方法 二.数码管显示程序 1.静态显示 效果 2. ...

  6. 51单片机七段数码管显示时钟无按键控制—①—74HC595版

    参考链接: 51单片机七段数码管显示时钟加按键控制-③-74HC595版 51单片机七段数码管显示时钟加按键控制-②-74HC595版 文章目录 一.实验内容: 二.实验分析: 三.仿真图: 四.源代 ...

  7. PLC实验五(LED数码管显示控制)

    PLC实验五(LED数码管显示控制)

  8. 仿真软件proteus构建七段数码管显示数字0-9实验

    七段数码管显示原理研究在前一篇博客中已经阐述过,就是利用7个数码管构建一个"8"字形,然后利用数字的形状特点,依次点亮某一些段,就可以显示数字了. 七段数码管显示数字还是二极管发光 ...

  9. 用七段数码管显示学号python_用七段数码管显示学号python

    单片机问题:在七段数码管上显示自己的学号后面六请分享大神写答案是啊,从今往后,那就好好过吧.辈子也就是几年,万次的寻寻觅觅翘首以望,等的无非是这刻身边紧紧相拥的个人.辛夷坞<山月不知心底事> ...

最新文章

  1. html用户注册信息,首页-用户注册-填写注册信息
  2. Asp.Net获取客户端信息-学习中
  3. Android实训日志:基于外部存储的音乐播放器V05
  4. PP后台配置-定义工作中心标准值
  5. 深度学习之pytorch(三) C++调用
  6. 深入理解JavaScript系列(32):设计模式之观察者模式
  7. [html] iframe框架都有哪些优缺点?
  8. 张朝阳:知识直播是长久的事情 商业模式将水到渠成
  9. Eclipse编写第一个Java程序
  10. web前后台数据交互的四种方式
  11. python学习笔记之数据类型(二)
  12. 小程序 · 云开发快速入门与实战
  13. 计算主波长色纯度色温和色坐标转换CIE1931图色坐标显示NTSC色饱和度
  14. chrome的APP模式与全屏模式 --app --kiosk
  15. 组合博弈 -- 三大基本博弈
  16. 微信模板消息发送成功但显示空白的问题
  17. PYTHON实践——GUI界面
  18. VS 2019 C++ 如何在非控制台程序中打开控制台
  19. android Check the JVM arguments defined for the gradle process in:
  20. Pygame - Python游戏编程入门(3)

热门文章

  1. 《X-战警:黑凤凰》观后感
  2. 项目管理中的边边角角 之一
  3. 一个屌丝脱屌的经历【转载】
  4. 两个互联网公司的创业故事
  5. 【520表白日】程序员如何表白吗?程序员表白教程送给你!
  6. 哈利波特检索c++实现
  7. python适合什么笔记本电脑好_2019年五款最好的13英寸笔记本电脑(windows)
  8. 源码分析 - Spring Security OAuth2 生成 token 的执行流程
  9. 通信原理学习笔记2-1:模拟调制——相干解调的载波恢复、锁相环(平方环/Costas环)、变频/混频技术
  10. 95后能拯救结婚行业吗?《2018美团点评结婚行业蓝皮书》发布