找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9348|回复: 15
收起左侧

8086CPU仿真+程序设计-汽车尾灯控制,可控时间间隔流水灯,电子琴,电子时钟

  [复制链接]
ID:429971 发表于 2018-11-20 18:58 | 显示全部楼层 |阅读模式
这是我上微机原理课时写过的一些8086 Proteus仿真设计,分享给大家。

8086设计

8086设计

汽车车灯系统设计:
用四个发光二极管分别模拟车头左右灯和车尾左右灯。用五个按键控制五个状态:左转、右转、刹车、双闪、夜车。
左转:(判断状态:日间、夜间)
(1)左灯闪烁(0.5s)(日间)
(2)左灯双闪(0.5s)后闪烁(0.5s)(夜间)
左转:(判断状态:日间、夜间)
1)右灯闪烁(0.5s)(日间)
2)右灯双闪(0.5s)后闪烁(0.5s)(夜间)
刹车:(判断状态:日间、夜间)
(1)所有灯常亮(0.5s)(日间)
(2)所有灯双闪(0.5s)后闪烁(0.5s)(夜间)
双闪:所有灯闪烁两次(0.5s
夜车:所有灯常亮

程序:
  1. ;;;===汽车尾灯设计===;;;
  2. ;定义8255的地址
  3. PA8255 EQU 0200H
  4. PB8255 EQU 0202H
  5. PC8255 EQU 0204H
  6. CON8255 EQU 0206H
  7. ;定义8253的部分地址
  8. P8253T0 EQU 0400H
  9. P8253CON EQU 0406H  

  10. STACK SEGMENT
  11.     STK DB 200 DUP(0)
  12.     TOP DW $-STACK
  13.     STACK ENDS

  14. CODE SEGMENT
  15.     ASSUME CS:CODE,SS:STACK
  16. START:      
  17.   
  18.     MOV DX,STACK
  19.     MOV SS,DX
  20.     MOV SP,TOP
  21.     ;8255初始化
  22.     MOV AL,82H      ;1000 0010   
  23.     MOV DX,CON8255
  24.     OUT DX,AL  
  25.     MOV DX,PA8255
  26.     MOV AL,0FFH
  27.     OUT DX,AL  
  28. ;;;===每种状态输出对应的数据===
  29. ;;;===例如(0200H)=1111 0101 左转时,先是前后左灯亮0.5s
  30. ;;;===然后灯全灭0.5s。高四位保存全灭状态,低四位保存前后左灯亮状态
  31. ;;;===所以左转时,只要把 (0200H)=1111 0101左移四位即可。   
  32.     MOV SI,0200H
  33.     MOV AL,0FAH
  34.     MOV [SI],AL
  35.     MOV [SI+1],0F5H
  36.     MOV [SI+2],0F0H
  37.     MOV [SI+3],00H
  38.     MOV [SI+4],50H
  39.     MOV [SI+5],0A0H
  40. BEGIN:
  41.     MOV DX,PB8255
  42.     IN AL,DX
  43.     AND AL,1FH
  44.     CMP AL,1EH
  45.     JZ NEXT1             ;左转
  46.     CMP AL,1DH
  47.     JZ NEXT2             ;右转
  48.     CMP AL,1BH
  49.     JZ NEXT3             ;双闪
  50.     CMP AL,17H
  51.     JZ NEXT4             ;刹车
  52.     CMP AL,0FH
  53.     JZ NEXT5             ;夜间
  54.     CMP AL,0EH
  55.     JZ NEXT6             ;夜间+左转
  56.     CMP AL,0DH
  57.     JZ NEXT7             ;夜间+右转
  58.    
  59. INIT:
  60.     MOV DX,PA8255
  61.     MOV AL,0FFH
  62.     OUT DX,AL
  63.     JMP BEGIN
  64. NEXT1:
  65.     CALL LEFT
  66.     JMP BEGIN
  67. NEXT2:
  68.     CALL RIGHT
  69.     JMP BEGIN
  70. NEXT3:
  71.     CALL SHUAN_SHAN
  72.     JMP BEGIN
  73. NEXT4:
  74.     CALL SHA_CHE
  75.     JMP BEGIN
  76. NEXT5:
  77.     CALL NIGHT
  78.     JMP BEGIN
  79. NEXT6:
  80.     CALL NIGHT_LEFT
  81.     JMP BEGIN
  82. NEXT7:
  83.     CALL NIGHT_RIGHT
  84.     JMP BEGIN  

  85. ;;;===左转右转等子程序      
  86. LEFT PROC
  87.     MOV DX,PA8255
  88.     MOV AL,[SI]
  89.     OUT DX,AL
  90.     CALL DELAY
  91.     ROL AL,4
  92.     MOV [SI],AL
  93.     RET
  94. LEFT ENDP

  95. RIGHT PROC
  96.     MOV DX,PA8255
  97.     MOV AL,[SI+1]
  98.     OUT DX,AL
  99.     CALL DELAY
  100.     ROL AL,4
  101.     MOV [SI+1],AL
  102.     RET
  103. RIGHT ENDP  

  104. SHUAN_SHAN PROC
  105.     MOV DX,PA8255
  106.     MOV AL,[SI+2]
  107.     OUT DX,AL
  108.     CALL DELAY
  109.     ROL AL,4
  110.     MOV [SI+2],AL
  111.     RET
  112. SHUAN_SHAN ENDP

  113. SHA_CHE PROC
  114.     MOV DX,PA8255
  115.     MOV AL,[SI+3]
  116.     OUT DX,AL
  117.     CALL DELAY
  118.     ROL AL,4
  119.     MOV [SI+3],AL
  120.     RET
  121. SHA_CHE ENDP

  122. NIGHT PROC
  123.     MOV DX,PA8255
  124.     MOV AL,[SI+3]
  125.     OUT DX,AL
  126.     CALL DELAY
  127.     ROL AL,4
  128.     MOV [SI+3],AL  
  129.     RET
  130. NIGHT ENDP

  131. NIGHT_LEFT PROC
  132.     MOV DX,PA8255
  133.     MOV AL,[SI+4]
  134.     OUT DX,AL
  135.     CALL DELAY
  136.     ROL AL,4
  137.     MOV [SI+4],AL  
  138.     RET
  139. NIGHT_LEFT ENDP

  140. NIGHT_RIGHT PROC
  141.     MOV DX,PA8255
  142.     MOV AL,[SI+5]
  143.     OUT DX,AL
  144.     CALL DELAY
  145.     ROL AL,4
  146.     MOV [SI+5],AL  
  147.     RET
  148. NIGHT_RIGHT ENDP
  149. ;;;===延时程序
  150. DELAY PROC
  151.         PUSH AX        
  152.         MOV AL,10H      ;0001 0000,8位计数器,方式0,BCD码计数
  153.         MOV DX,P8253CON ;写入工作方式控制字
  154.         OUT DX,AL  
  155.         MOV AL,5H    ;给T0赋初值
  156.         MOV DX,P8253T0
  157.         OUT DX,AL
  158.         
  159. L2:
  160.         MOV DX,PB8255
  161.         IN AL,DX
  162.         AND AL,20H
  163.         CMP AL,00H     
  164.         JZ L2      
  165.         POP AX         
  166.         RET
  167. DELAY ENDP   
  168. CODE ENDS
  169. END START
复制代码


可控时间间隔流水灯仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png 0.png

单片机源程序如下:
  1. ;;;=== Create By XuHe 2018 1.18 ===;;;
  2. ;;;===可加速、减速流水灯===;;;
  3. ;;;===初始时,时间间隔为一秒,按加速键加速
  4. ;;;===按减速键减速
  5. ;定义8255的地址
  6. PA8255 EQU 0200H
  7. PB8255 EQU 0202H
  8. PC8255 EQU 0204H
  9. CON8255 EQU 0206H
  10. ;定义8253的部分地址
  11. P8253T2 EQU 0404H
  12. P8253CON EQU 0406H  

  13. STACK SEGMENT
  14.     STK DB 200 DUP(0)
  15.     TOP DW $-STACK
  16.     STACK ENDS
  17. CODE SEGMENT
  18.     ASSUME CS:CODE,SS:STACK
  19. START:      
  20.   
  21.     MOV DX,STACK
  22.     MOV SS,DX
  23.     MOV SP,TOP
  24.     ;8255初始化
  25.     MOV AL,82H         
  26.     MOV DX,CON8255
  27.     OUT DX,AL
  28.      
  29.     MOV SI,0200H
  30.     MOV AL,0AH
  31.     MOV [SI],AL
  32.     MOV AL,7FH

  33. BEGIN:
  34.         CALL DISPLAY
  35.         PUSH AX
  36.         MOV DX,PB8255
  37.         IN AL,DX
  38.         AND AL,02H
  39.         CMP AL,00H
  40.         JNZ NEXT
  41.         MOV AL,[SI]
  42.         DEC AL
  43.         
  44.         CMP AL,0
  45.         JZ NEXT
  46.         MOV [SI],AL
  47.         NEXT:
  48.         MOV DX,PB8255
  49.         IN AL,DX
  50.         AND AL,04H
  51.         CMP AL,00H
  52.         JNZ NEXT1
  53.         MOV AL,[SI]
  54.         INC AL
  55.          
  56.         CMP AL,14H
  57.         JZ NEXT1
  58.         MOV [SI],AL
  59.         NEXT1:  
  60.         POP AX
  61.         JMP BEGIN   

  62. DISPLAY PROC
  63.     L1:   
  64.      
  65.     MOV DX,PA8255
  66.     OUT DX,AL
  67.     CALL DELAY
  68.     ROL AL,1
  69.    
  70.     RET
  71. DISPLAY ENDP   
  72.    
  73. DELAY PROC
  74.         PUSH AX
  75.         
  76.         MOV AL,90H      ;1001 0000,8位计数器,方式0,BCD码计数
  77.         MOV DX,P8253CON ;写入工作方式控制字
  78.         OUT DX,AL  
  79.         MOV SI,0200H
  80.         MOV AL,[SI]    ;给T0赋初值
  81.         MOV DX,P8253T2
  82.         OUT DX,AL
  83.         
  84. L2:
  85.         MOV DX,PB8255
  86.         IN AL,DX
  87.         CMP AL,0FEH     
  88.         JZ L2
  89.               
  90.         POP AX
  91.         
  92.         RET
  93. DELAY ENDP
  94.     CODE ENDS
  95. END START
复制代码

所有资料51hei提供下载:

8086设计-汽车车灯系统.zip

42.62 KB, 下载次数: 221

8086设计--电子时钟.zip

68.55 KB, 下载次数: 234

8086设计--电子琴.zip

71.08 KB, 下载次数: 187

8086设计-小黄车密码锁.zip

500.09 KB, 下载次数: 326

8086设计--可控时间间隔流水灯.zip

32.02 KB, 下载次数: 158

评分

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

查看全部评分

回复

使用道具 举报

ID:435280 发表于 2018-11-28 22:28 | 显示全部楼层
哥哥 你的汽车灯不能用啊,大家不要下载了
----
win10交通灯的搞定了:把Protues ISIS这个应用程序(ISIS.EXE)的属性更改兼容性,改为兼容XP(sp2)就行.

还有用户名是中文也不行,解决方法:http://www.51hei.com/bbs/dpj-28682-1.html
回复

使用道具 举报

ID:437959 发表于 2018-12-6 20:17 | 显示全部楼层
闹钟怎么调点啊,你这只是个时钟而已
回复

使用道具 举报

ID:169933 发表于 2018-12-24 21:21 | 显示全部楼层
挺不错的
回复

使用道具 举报

ID:364944 发表于 2018-12-26 17:38 | 显示全部楼层
火速下载观赏学习
回复

使用道具 举报

ID:458202 发表于 2018-12-29 17:26 | 显示全部楼层
瞅瞅看。。
回复

使用道具 举报

ID:462244 发表于 2019-1-5 02:59 | 显示全部楼层
nice!!!!
回复

使用道具 举报

ID:664311 发表于 2019-12-17 10:02 | 显示全部楼层
谢谢大佬分享!感谢
回复

使用道具 举报

ID:664311 发表于 2019-12-17 10:20 | 显示全部楼层
谢谢大佬分享!
回复

使用道具 举报

ID:665741 发表于 2019-12-17 11:45 | 显示全部楼层
谢谢大佬分享
回复

使用道具 举报

ID:567008 发表于 2019-12-17 16:58 | 显示全部楼层
密码锁仿真和文档不一样
回复

使用道具 举报

ID:666819 发表于 2019-12-17 22:45 来自手机 | 显示全部楼层
运行不了
回复

使用道具 举报

ID:672981 发表于 2019-12-26 17:31 | 显示全部楼层
这个电子琴能录音吗
回复

使用道具 举报

ID:1027670 发表于 2022-6-10 18:41 | 显示全部楼层
密码锁有效果图吗
回复

使用道具 举报

ID:120219 发表于 2023-12-20 00:56 | 显示全部楼层
8086都停产了,找到难找
回复

使用道具 举报

ID:1105226 发表于 2023-12-21 14:46 | 显示全部楼层
请问汽车尾灯控制的项目有接线图嘛
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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