找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1277|回复: 0
打印 上一主题 下一主题
收起左侧

基于8086的16X16点阵显示程序Proteus仿真图

[复制链接]
跳转到指定楼层
楼主
本项目是基于8086的点阵显示,可以通过按键显示所要显示的内容
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1.         IOY0  EQU       0C400H      ;片选第一片8255的地址
  2.         IOY1  EQU       0C440H      ;片选第二片8255的地址
  3.      O8255_A  EQU       IOY0+00*2   ;第一片8255的地址的A口
  4.      O8255_B  EQU       IOY0+01*2   ;第一片8255的地址的B口
  5.      O8255_C  EQU       IOY0+10*2   ;第一片8255的地址的C口
  6.   O8255_MODE  EQU       IOY0+11*2   ;第一片8255的地址的控制字寄存器
  7.      T8255_A  EQU       IOY1+00*2   ;第二片8255的地址的A口
  8.      T8255_B  EQU       IOY1+01*2   ;第二片8255的地址的B口
  9.      T8255_C  EQU       IOY1+10*2   ;第二片8255的地址的C口
  10.   T8255_MODE  EQU       IOY1+11*2   ;第二片8255的地址的控制字寄存器

  11.        DATAS  SEGMENT
  12.     ;此处输入数据段代码
  13.       COUNT1  DB        00H
  14.       COUNT2  DB        01H
  15.          TAB  DB        08H,02H,18H,02H,0C8H,3FH,14H,02H,32H,02H,11H,02H,0E8H,7FH,08H,08H
  16.               DB        0CH,08H,0EAH,7FH,08H,08H,88H,08H,88H,08H,08H,08H,08H,0AH,08H,04H        ;待
  17.               DB        08H,00H,08H,1FH,08H,11H,7FH,11H,08H,11H,08H,11H,1CH,11H,2CH,11H
  18.               DB        2AH,11H,0AH,11H,89H,10H,88H,50H,48H,50H,48H,50H,28H,60H,08H,00H         ;机
  19.               DB        00H,01H,00H,01H,3FH,01H,0A0H,7FH,0A1H,20H,52H,12H,14H,02H,08H,02H
  20.               DB        18H,02H,18H,06H,24H,05H,24H,09H,82H,18H,61H,70H,1CH,20H,00H,00H         ;欢
  21.               DB        02H,00H,84H,01H,6CH,3EH,24H,22H,20H,22H,20H,22H,27H,22H,24H,22H
  22.               DB        0A4H,22H,64H,2AH,24H,12H,04H,02H,04H,02H,0AH,00H,0F1H,7FH,00H,00H       ;迎
  23.               DB        80H,08H,82H,08H,84H,08H,0ECH,3FH,84H,08H,80H,08H,80H,08H,0EFH,7FH
  24.               DB        88H,08H,88H,08H,48H,08H,48H,08H,28H,08H,14H,00H,0E2H,7FH,00H,00H        ;进
  25.               DB        30H,00H,60H,00H,40H,00H,80H,00H,0C0H,00H,40H,01H,40H,01H,20H,02H
  26.               DB        20H,04H,10H,04H,10H,08H,08H,10H,04H,70H,02H,20H,01H,00H,00H,00H         ;入
  27.               DB        00H,3EH,0FCH,01H,40H,04H,20H,04H,10H,02H,0F8H,01H,0C0H,04H,30H,08H
  28.               DB        0FCH,1FH,08H,31H,20H,05H,10H,09H,08H,11H,04H,21H,42H,21H,80H,00H        ;系
  29.               DB        08H,02H,08H,04H,0C4H,7FH,04H,02H,22H,02H,1FH,11H,90H,20H,0C8H,7FH
  30.               DB        04H,29H,3EH,09H,00H,09H,00H,09H,0B8H,48H,87H,48H,40H,70H,20H,00H        ;统
  31.               DB        00H,00H,00H,00H,00H,00H,00H,00H,08H,00H,08H,00H,08H,00H,08H,00H
  32.               DB        08H,00H,08H,00H,08H,00H,08H,00H,08H,00H,00H,00H,08H,00H,00H,00H         ;!
  33.               DB        0FEH,3FH,80H,00H,80H,00H,0F8H,0FH,88H,08H,88H,08H,0F8H,0FH,88H,08H
  34.               DB        88H,08H,88H,08H,0FFH,7FH,08H,08H,08H,08H,08H,08H,08H,0AH,08H,04H        ;再
  35.               DB        0F8H,0FH,08H,08H,08H,08H,88H,08H,88H,08H,88H,08H,88H,08H,88H,08H
  36.               DB        48H,09H,40H,01H,20H,01H,20H,21H,10H,21H,0CH,61H,03H,3EH,00H,00H         ;见
  37.        DATAS  ENDS

  38.       STACKS  SEGMENT
  39.     ;此处输入堆栈段代码
  40.           N1  DB        100 DUP(?)
  41.       STACKS  ENDS

  42.        CODES  SEGMENT
  43.               ASSUME    CS:CODES,DS:DATAS,SS:STACKS
  44.       START:
  45.               MOV       AX,DATAS
  46.               MOV       DS,AX
  47.               MOV       DX,O8255_MODE
  48.               MOV       AL,81H
  49.               OUT       DX,AL       ;第一片8255方式选择
  50.               MOV       DX,T8255_MODE
  51.               MOV       AL,80H
  52.               OUT       DX,AL       ;第二片8255方式选择
  53.               MOV       CX,0
  54.               CALL      C1
  55.           X:  CALL      C2
  56.               MOV       SI,0000H    ;指针赋值0
  57.               MOV       AH,2        ;显示“待机”
  58.               JMP       X0
  59.           Y:  CALL      C2
  60.               MOV       AH,7        ;显示“欢迎进入系统”
  61.               MOV       SI,0040H
  62.               MOV       DI,SI
  63.               JMP       X0
  64.           Z:  CALL      C2
  65.               MOV       AH,2        ;显示“再见”
  66.               MOV       SI,0120H
  67.               MOV       DI,SI
  68.          X0:  PUSH      CX
  69.               MOV       BX,1024     ;整体循环1024次
  70.          X1:  PUSH      BX
  71.               MOV       BH,COUNT1   ;初始化
  72.               MOV       BL,COUNT2
  73.               CLC                   ;CF位清零
  74.         RER:  MOV       CX,16       ;循环次数
  75.               MOV       SI,DI       ;指向原来的位置
  76.       LOOP1:
  77.               MOV       DX,T8255_A  ;清除列
  78.               MOV       AL,00H
  79.               OUT       DX,AL
  80.               MOV       DX,T8255_B
  81.               MOV       AL,00H
  82.               OUT       DX,AL
  83.               CALL      FI
  84.               INC       SI          ;指针再次加1
  85.               RCL       BL,1        ;每次循环向左移动1位
  86.               RCL       BH,1        ;连带CF位一同左移1位
  87.               DEC       CX          ;循环次数减1
  88.               CMP       CX,0        ;循环次数大于0,就继续循环
  89.               JNZ       LOOP1
  90.               POP       BX          ;第二重循环计数
  91.               DEC       BX
  92.               CMP       BX,0
  93.               JNZ       X1
  94.       LOOP3:
  95.               POP       CX          ;第三重循环,控制显示哪些字
  96.               INC       CX
  97.               MOV       DI,SI
  98.               CMP       CL,AH
  99.               JNZ       X0          ;显示程序结束
  100.               MOV       DI,0000H
  101.               MOV       AH,0
  102.               MOV       CX,0
  103.               CALL      C1
  104.               MOV       AH,4CH
  105.               INT       21H
  106.          C1:  MOV       DX,O8255_C  ;读取C口状态
  107.               IN        AL,DX
  108.               CMP       AL,0EH      ;判断按下的是第几个按键,依次跳转
  109.               JZ        X
  110.               CMP       AL,0DH
  111.               JZ        Y
  112.               CMP       AL,0BH
  113.               JZ        Z
  114.           O:  MOV       DX,O8255_C  ;初始化键盘扫描输入
  115.               PUSH      AX
  116.               MOV       AL,0FH
  117.               OUT       DX,AL
  118.               POP       AX
  119.               JMP       C1
  120.               RET
  121.          C2:  MOV       DX,O8255_C  ;对数码管的输出
  122.               PUSH      AX
  123.               CALL      C3
  124.               OUT       DX,AL
  125.               POP       AX
  126.               RET
  127.          C3:  CMP       AL,0EH      ;数码管输出变量
  128.               JZ        M1
  129.               CMP       AL,0DH
  130.               JZ        M2
  131.               CMP       AL,0BH
  132.               JZ        M3
  133.          M1:  MOV       AL,17H
  134.               RET
  135.          M2:  MOV       AL,27H
  136.               RET
  137.          M3:  MOV       AL,37H
  138.               RET
  139.          FI:  MOV       DX,O8255_A  ;循环行扫描
  140.               MOV       AL,BL
  141.               OUT       DX,AL
  142.               MOV       DX,O8255_B
  143.               MOV       AL,BH
  144.               OUT       DX,AL
  145.       LOOP2:
  146.               MOV       DX,T8255_A  ;循环列扫描
  147.               MOV       AL,TAB[SI]
  148.               OUT       DX,AL
  149.               INC       SI          ;指针加1,指向下一个数据
  150.               MOV       DX,T8255_B
  151.               MOV       AL,TAB[SI]
  152.               OUT       DX,AL
  153.               RET
  154.        CODES  ENDS
  155.               END       START
复制代码
以上是代码

附件只包含1个文件 Proteus仿真文件下载:
基于8086点阵.zip (109.44 KB, 下载次数: 38)


评分

参与人数 1黑币 +20 收起 理由
admin + 20 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表