汇编---智慧交通场景的模拟实现
代码放在github上,智慧交通场景的模拟实现
一、设计内容
采用8086汇编语言,设计并实现多个十字路口组成的道路交通模拟,包括路口的红绿灯显示,以及车流的模拟显示,每辆车能够从出发地到达指定目的地,并且交通灯能够根据道路车辆数量分布改变时间,实现智能交通。
二、需求分析
- 能够正确显示根据红绿灯变化引导车辆通行,并且要能够显示红绿灯的读秒数
- 实现4个十字路口的构成的道路交通模拟,可以直行,右转,左转,设立左转弯待转区和右转弯中转区域。
- 能够随机产生车辆的数量,以及每辆车的出发地和目的地
- 能够通过按键在每个路口添加车辆。
- 能够根据局部车辆拥塞情况动态即时改变红绿灯持续时间,实现智慧交通。
三、概要设计
3.1 系统结构
3.2 模块功能说明
- 主菜单显示模块:显示主菜单界面,选择普通交通模拟模式或者智慧交通模拟模式或者退出。
地图显示模块:绘制程序运行地图,并且打印提示字符
按键添加车辆模块:通过按键新增车辆,1—8键分别在8个路口区域增加车辆数量,9键在各个路口区域增加车辆数量
中断模块:通过8253与PC相连时产生的每秒18次的中断,来得到1秒1次的中断服务程序执行。
数字显示模块:根据红绿灯状态,将红绿灯秒数绘制至地图中心;在地图中心以相应位置形式且显示每个路口的剩余进车数;显示智慧交通改变后的红绿灯秒数
车辆显示模式:跟据车辆状态,绘制车辆至地图相应位置,道路、路口、右转弯区域、左转弯待转区。
红绿灯显示模块:根据红绿灯的状态,将红绿灯实时绘制至地图路口处。
红绿灯状态更新模块:通过中断所累加的计数器对红绿灯状态进行更新,60秒红灯,60秒绿灯,3秒黄灯。其中60秒绿灯分为前50秒直行与右转,后10秒左转待转区的车辆进行左转。
状态选择模块:程序由四个主状态的状态机进行控制,四个状态分别为东西绿灯,南北红灯;东西黄灯,南北红灯;东西红灯,南北绿灯;东西红灯,南北黄灯。
车辆状态更新模块:根据状态选择模块传递的状态,通过车辆行进算法,实现车辆的左转(左转弯待转区,在路口为绿灯的后10秒执行左转),右转和直行,并对车辆进行状态更新。
车辆增加模块:根据按键添加车辆模块传给1—8个路口的车辆,在固定的中断时间内,对相应路口的相应位置增加车辆的信息对新的车辆进行状态赋予与更新。
智慧交通模块:在状态选择模块的模块更替时,根据车辆拥塞情况改变下一个红绿灯持续时长,实现智慧交通。
四、详细设计
4.1 系统流程图
4.2 总地图设计
分为四个路口,八个进出口,用八个长度为44的数组来表示地图上8*44个点
道路的定义:
line0_0 dw 44 dup(0)
line1_0 dw 44 dup(0)
line2_0 dw 44 dup(0)
line3_0 dw 44 dup(0)
line0_1 dw 44 dup(0)
line1_1 dw 44 dup(0)
line2_1 dw 44 dup(0)
line3_1 dw 44 dup(0)
4.3 路口具体设计
每个路口有:
1. 一个容纳一个车辆的右转弯缓冲区
2. 最多容纳十辆车的左转弯待转区
3. 四个路口过道
左转弯待转区(一个队列)数据结构:
Left struc Asize DB 10 ;最大大小Count DB 0 ;当前队列数量First DB 0 ; 头索引Last DB 0 ; 尾索引Array dw 10 dup(0) ; 存放左转弯待转区内车辆号
Left ends
4.4 车辆行进
4.4.1 概述
东西绿灯,南北红灯;东西黄灯,南北红灯;东西红灯,南北绿灯;东西红灯,南北黄灯。
其中绿灯时候分两种状态:可以直行和右转,左转只能进左转待转区域;不能够直行和右转,左待转区域进入下一路口。
根据地图可以用8个44长度的1维数组表示出来,所以根据红绿灯的状态,依次对每条街道进行遍历,长度44的一位数组中如果没有车,则存放零,若有车则存放车辆编号,车辆编号从1-337(84*4+1,一个十字最多84辆车)。
车辆定义:
car struc start_X DW ? ;目前X坐标start_Y DW ? ;目前Y坐标end_X DW ? ;目的X坐标end_Y DW ? ;目的Y坐标live DW 0 ;是否在图内,1是,0否
car endscar_array car 337 dup(<>)
4.4.2 车辆前进算法
4.5 显示模块
- 先设置屏幕显示模式(640*480*16),再采用描点画图,通过INT10中断来描点画图。
- 通过将AH放入0CH,通过10H中断来描点
- 调用画点的宏,完成画一条线,即方块(地图、车辆和灯)
- 调用画点的宏,完成画平行四边形(用于显示左转弯待转区)
地图线条数据结构:
line struc X DW ? ;X坐标Y DW ? ;Y坐标R_L DW ? ;宽C_L DW ? ;长
line ends
红绿灯表示数据结构:
红绿灯
light struc X1 DW ? ;X坐标Y1 DW ? ;Y坐标COLOR DB ? ; 红绿灯颜色Reserved DB 0 ;用来字节对齐
light ends
运行显示(可以看到左转弯待转区和右转缓冲区):
4.6 智慧交通
汇编---智慧交通场景的模拟实现相关推荐
- 腾讯智慧交通的「KPI底座」
腾讯智慧交通背后,打造的是产业数字化下的数字产业新模式,也更是数字孪生.全真互联的新底盘. 作者|斗斗 出品|产业家 过去的一年,交通行业迎来一份重磅的文件<国家综合立体交通网规划纲要>, ...
- 零基础边缘端智慧交通训练营 | Lesson 4
5个课时实现车辆检测+安全算法,玩转智慧交通AI应用! 欢迎大家来到AidLux零基础边缘端智慧交通训练营~ 在第三节课中,我们学习了在云服务器上使用Yolov5算法,训练了一个车辆检测模型并进行优化 ...
- 基于Aidlux平台的智慧交通AI安全算法实战
一. 通常来说,智慧交通行业主要是对交通场景内的行人,机动车,非机动车进行识别分析. 行人识别分析包括对行人的姿态,方向,外观,以及基于行人的交通事件识别分析,(行人闯红灯等). 机动车识别分析包括对 ...
- 智慧交通与汽车智能化构建“交通强国”
智慧交通正在成为新基建的主力军,伴随着新能源汽车和汽车融入智能制造产业链的结构性深化,智慧交通产业构架成为中国经济发展进入新常态下融入碳中和.碳达峰的绿色发展和以新基建为代表的的中国智能制造的产业布局 ...
- 智能网联模拟智慧交通综合实践开源平台
智能网联模拟智慧交通综合实践开源平台是集无人驾驶综合平台.数字孪生和智慧沙盘车RTRC Pro于一体的平台,适用于各大高校教师教育教学和学生学习.当下各大高校智能网联汽车教育面临师资匮乏.课程资源紧缺 ...
- 原创 | 从智慧交通、智慧安防、智能电网三大应用场景看我国智慧城市建设现状...
在IBM发布的<智慧的城市在中国>一书中,对"智慧城市"下了这样的定义:"能够充分运用信息和通信技术手段感测.分析.整合城市运行核心系统的各项关键信息,从而对 ...
- 《强化学习周刊》第4期:强化学习应用之智慧交通
No.04 智源社区 强化学习组 R L 学 习 研究 观点 资源 活动 关于周刊 强化学习是当前人工智能领域研究的热点之一,为帮助研究与工程人员了解该领域的进展和资讯,智源社区整理了第4期< ...
- 璀璨智行:V2X车路协同智慧交通
V2X车用无线通信技术是指车对外界的信息交换,作为未来智能交通运输系统的关键技术,璀璨智行潜心研究V2X技术,致力于V2X车路协同的落地,在智慧交通领域做出了卓越的贡献. 创业机会点 魏军博表示:&q ...
- 六大核心!突破自动驾驶和智慧交通的必由之路
雷锋网(公众号:雷锋网)新智驾按:"2018全球未来出行高层论坛"在杭州国际博览中心召开,除主题论坛外,还有2场高层论坛.2场主题峰会.1场闭门会议.15场同期会议等. 在&quo ...
最新文章
- 6、函数返回值、this、递归及回调函数
- usb传输标准和接口标准
- .NET CORE在ubuntu1604上运行
- java 定时器框架_java定时器
- major头文件_第三讲,可选头文件格式,以及节表
- 朱啸虎回应“美团滴滴合并”;小米成世界第四大手机制造商;Ant Design 3.26.1 发布 | 极客头条...
- 冒泡排序时间复杂度计算和优化
- 视频数据集UCF101的处理与加载(用PyTorch实现)
- 动软连接oraclet生成代码
- 领域建模——事件风暴
- 项目管理常用的七大工具
- 佛,我心中的一朵莲花
- The forked VM terminated without properly saying goodbye. VM crash or System
- CSS中的传统布局、多列布局、弹性伸缩布局及Emmet工具
- vs运行localhos转换为本地ip地址访问
- PCM和G711A(PCMA)声音播放器和采集器
- 零信任的过去、现在和未来
- 绿米Aqara、智汀、Homekit等设备如何完成一键跨品牌联动
- Linux-京东字节百度提前批,一面二面都被问到了awk——实例篇(3)查进程,kill指定进程
- 把数组对象[{key1:val1},{key2:val2}] 的key val 分割成独立的数组