A03基于8086单片机交通灯Proteus设计,asm
作者:单片机仿真   类别:51单片机仿真    日期:2026-10-13 10:26:43    阅读:15 次   消耗积分:20 分

image.png

A03基于8086单片机交通灯Proteus设计,asm

用8086汇编语言做一个双向交通灯仿真:东西方向绿灯10秒,黄灯闪烁3次,然后切换到南北方向绿灯,重复上述过程。资料包含Proteus仿真文件和完整汇编源码,适合学汇编语言和接口实验的同学参考。

一、设计实现功能

本设计功能简介:使用8086芯片和汇编语言设计一个交通灯的proteus仿真,要求以下功能:

1、使用汇编语言编写程序。
2、东西方向10s绿灯,然后黄灯闪烁3次,切换到南北显示绿灯,重复上述过程。

二、资源汇总

1、仿真文件:Proteus工程,7.8和8.6两个版本都能直接打开。
2、程序文件:main.asm汇编源码,以及编译好的main.exe。
3、修改日期小工具:购买资料后赠送,用于修改文件创建日期,下载地址在文章最后。

三、设计介绍

拿到压缩包之后先解压,没有解压软件的直接搜"压缩",下载解压软件后先解压文件,再运行仿真和程序。

硬件链路:8255A的A口(端口地址0200H)接12个LED,东西、南北各一组。程序先往控制端口0206H写控制字80H,把A口设为方式0输出,再往A口写0FFH完成初始化,之后所有灯光状态都通过0200H端口送出,一个字节就是一组灯的状态。

图1 Proteus仿真总览

仿真原理图

0200H端口输出的数据和每个阶段的对应关系如下:

阶段东西方向南北方向时长0200H输出
1绿灯红灯10s0BEH
2黄灯闪3次红灯3×(0.5s+0.5s)0BDH与0BFH交替
3红灯绿灯10s0EBH
4红灯黄灯闪3次3×(0.5s+0.5s)0DBH与0FBH交替

四个阶段走完跳回阶段1,循环往复,这就是交通灯的全部控制逻辑。

图2 汇编程序源码

程序截图

延时用双层循环实现,公式:T ≈ BX × CX × 17 ÷ 主频。两个延时子程序共用一个内层圈数CX=5882,只改外层BX:

子程序BX循环圈数时长(5MHz)
delay500500×5882约10s
delay02525×5882约0.5s

5882的来历:8086的LOOP指令跳转时占17个时钟周期,5882×17约10万个周期,按5MHz主频正好约20ms,是延时粗调的最小单位。换成别的主频,延时时间等比例变化,改BX即可。

黄灯闪烁的写法是CX=3的计数循环:每轮先送黄灯段码保持0.5秒,再送全关段码黑0.5秒,LOOP指令自动减1计数,3轮就是闪3次。

特别注意: 仿真跑起来灯不亮,先检查压缩包是否解压完整;Proteus用7.8或8.6版本;改了汇编源码要重新编译生成exe再跑仿真。

四、日期修改

资料中提供修改日期的小工具,购买资料赠送修改文件创建日期的小工具,三个下载地址都在文章最后。

五、资料下载

付费后获取下载链接,直接下载到电脑上,然后解压即可!每个链接前面都配了二维码,手机扫码可以直接跳转。

/

版权所有,转载本站文章请注明出处:proteus单片机
上一篇:A02基于51单片机汇编语言数字时钟Proteus设计,asm
下一篇:A04基于8086六位数码管秒表Proteus设计,asm
${comment['nickname']}   ${comment['createtime']}
  
       
${comment.content}
${reply.nickname} 回复 ${comment.nickname}    ${reply.createtime}
     
  
回复内容:${reply.content}