
A01基于8086单片机汇编语言交通灯Proteus设计,asm
用8086汇编语言做一个东西、南北双向的交通灯仿真:绿灯5秒,闪烁6次,黄灯3秒,循环往复。资料包含Proteus仿真文件和完整汇编源码,适合学汇编语言和接口实验的同学参考。
一、设计实现功能
本设计功能简介:使用8086芯片和汇编语言设计一个交通灯的proteus仿真,要求以下功能:
1、使用汇编语言编写程序。
2、东西方向5s绿灯,然后绿灯闪烁6次,接着进行3秒黄灯。
3、黄灯过后切换到南北显示绿灯,重复上述过程。
二、资源汇总
1、仿真文件:Proteus工程,7.8和8.6两个版本都能直接打开。
2、程序文件:main.asm汇编源码,以及编译好的cx.hex、cx.exe。
3、修改日期小工具:购买资料后赠送,用于修改文件创建日期,下载地址在文章最后。
三、设计介绍
拿到压缩包之后先解压,没有解压软件的直接搜"压缩",下载解压软件后先解压文件,再运行仿真和程序。
硬件链路很典型:8086输出的数据经两片74273锁存,送到两片74154译码,驱动东西、南北共12个LED。程序先往0206H端口写80H完成初始化,之后所有灯光状态都通过0200H端口送出,一个字节就是一组灯的状态。
图1 Proteus仿真总览

0200H端口输出的段码和每个阶段的对应关系如下:
| 阶段 | 东西方向 | 南北方向 | 时长 | 0200H输出 |
| 1 | 绿灯 | 红灯 | 5s | 0BEH |
| 2 | 绿灯闪6次 | 红灯 | 6×0.5s | 0BFH与0BEH交替 |
| 3 | 黄灯 | 红灯 | 3s | 0BDH |
| 4 | 红灯 | 绿灯 | 5s | 0EBH |
| 5 | 红灯 | 绿灯闪6次 | 6×0.5s | 0FBH与0EBH交替 |
| 6 | 红灯 | 黄灯 | 3s | 0DBH |
六个阶段走完跳回阶段1,循环往复,这就是交通灯的全部控制逻辑。
图2 汇编程序源码

延时用双层循环实现,公式:T ≈ BX × CX × 17 ÷ 主频。三个延时子程序共用一个内层圈数CX=5882,只改外层BX:
| 子程序 | BX | 循环圈数 | 时长(5MHz) |
| delay5 | 250 | 250×5882 | 约5s |
| delay3 | 150 | 150×5882 | 约3s |
| delay05 | 25 | 25×5882 | 约0.5s |
5882的来历:8086的LOOP指令跳转时占17个时钟周期,5882×17约10万个周期,按5MHz主频正好约20ms,是延时粗调的最小单位。换成别的主频,延时时间等比例变化,改BX即可。
特别注意: 仿真跑起来灯不亮,先检查压缩包是否解压完整;Proteus用7.8或8.6版本;改了汇编源码要重新编译生成hex再跑仿真。
四、日期修改
资料中提供修改日期的小工具,购买资料赠送修改文件创建日期的小工具,三个下载地址都在文章最后。
五、资料下载
付费后获取下载链接,直接下载到电脑上,然后解压即可!每个链接前面都配了二维码,手机扫码可以直接跳转。
/

