《交通运输微机课设报告交通灯控制系统设计》由会员分享,可在线阅读,更多相关《交通运输微机课设报告交通灯控制系统设计(12页珍藏版)》请在金锄头文库上搜索。
1、(交通运输)微机课设报 告交通灯控制系统设计 (交通运输)微机课设报 告交通灯控制系统设计 目录目录 摘 要 3 摘 要 3 设计内 容3 设计内 容3 设计原理及说 明4 设计原理及说 明4 设计过 程5 设计过 程5 设计结果与分 析8 设计结果与分 析8 体会与建 议8 体会与建 议8 程序源代 码9 程序源代 码9 参考文 献15 参考文 献15 一、摘要一、摘要 利用微机实验箱,以本市现行的交通灯控制信息为依据,用查询 的方法实现交通灯控制系统。 二、设计内容二、设计内容 通过 16 个发光二极管及数码管,模拟十字路口的红绿灯, 具体时间的分配和控制如下: (1)东西方向绿灯亮,南北
2、方向红灯亮,并且数码管 10s 倒计 时显示 (2)东西方向黄灯亮,南北方向红灯亮,并且数码管 5s 倒计时 显示 (3)东西方向红灯亮,南北方向绿灯亮,并且数码管 10s 倒计 时显示 (4)东西方向红灯亮,南北方向黄灯亮,并且数码管 5s 倒计时 显示 具体如下图所示: 要求:用 8255 的 A 口、B 口控制 16 位 LED 灯,选择方式 0,输 出 I/O 接口电路控制数码管,使用软件延迟或硬件延迟,其中使 用硬件延迟芯片 8254 计时更为精确。 三、设计原理及说明三、设计原理及说明 8255 的性质及简介: 并行接口是以数据的字节为单位与 I/O 设备或被控制对象 之间传递信息
3、。CPU 和接口之间的数据传送总是并行的,即可以 同时传递 8 位、 16 位、 32 位等。 8255 可编程外围接口芯片是 Intel 公司生产的通用并行 I/O 接口芯片,它具有 A、B、C 三个并行接 口,用+5V 单电源供电,能在以下三种方式下工作:方式 0-基 本输入/出方式、方式 1-选通输入/出方式、方式 2-双向选通 工作方式。8255 的内部结构及引脚如图 1 所示,8255 工作方式 控制字和 C 口按位置位/复位控制字格式如图 1-2 所示。 实验说明: 由于实验室的仪器上只有 16 个发光二极管,所以还得弄清 楚是每个发光二极管所代表的灯的颜色及方向。16 个发光二级
4、 管,且从高到低依次为: D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0。 在设计的过程中做 了如下的规定:R 表示红灯,G 表示绿灯,Y 表示黄灯,E 表示方 向东,W 表示方向西,S 表示方向南,N 表示方向北,D15D14 表 示 ER,D13D12 表示 SR,D11D10 表示 EG,D9D8 表示 SG,D7D6 表 示 WR, D5D4 表示 NR, D3D2 表示 WG, D1D0 表示 NG, D15D14D11D10 表示 EY,D7D6D3D2 表示 WY,D13D12D9D8 表示 SY,D5D4D1D0 表 示 NY。最后要在实验室通过软
5、件进行调试,调试通过后即可看 到设计的结果。 四、设计过程四、设计过程 (1)根据要求分析可知: 东西方向绿灯亮的同时南北方向红灯亮 东西方向黄灯亮的同时南北方向红灯亮 东西方向红灯亮的同时南北方向绿灯亮 东西方向红灯亮的同时南北方向黄灯亮 (2)完成单元电路的设计及参数计算 (3)电路元器件的选择 (4)软件流程图的设计 (5)软件的设计(程序) 芯片初始化,写 8255 的方式字 延时,延时是通过设置指令的循环次数实现的 东西方向绿灯亮,南北方向红灯亮,且数码管 10s 倒计 时显示 东西方向黄灯亮,南北方向红灯亮,且数码管 5s 倒计 时显示 东西方向红灯亮,南北方向绿灯亮,且数码管 1
6、0s 倒计 时显示 东西方向红灯亮,南北方向黄灯亮,且数码管 5s 倒计 时显示 判断是否有键按下 返回到 DOS (6)电路接线图的设计:设计电路图见下图 (7)进行软、硬件调试 连接实验线路,将已写好的完整程序在汇编环境下进行编 译,若无错误即可在 TD-PIT+实验系统上进行调试。 五、设计结果与分析五、设计结果与分析 灯亮的顺序满足设计内容的要求,不足之处在于使用软件延 时,不是很精确,即计时时间只是大体上满足课设的要求。 六、体会与建议六、体会与建议 实验所得结论基本课设的要求,但是存在一些不足之处。如 果用硬件延时,则可以改变这一情况。但是要考虑到用 8254 如 何计时 1s 的
7、问题, 有同学在设计中利用 8254 的工作方式 3 产生 方波信号,当 PC0 检测到高电平,且下一时刻再次检测到低电平 时, 即两次检测 PC0 口分别为高、 低电平时, 便得到 1 秒的计时。 而我在做这次实验时没有考虑到这一问题。但是在这次实验中, 我也学到了一些东西,譬如刚开始的时候,我们组设计的电路是 很复杂的,后来经过与别的组的同学一起讨论以后,我们的线路 得以精简, 要在正确的基础上精简线路与程序是很重要的。 另外, 通过这次实验,我对 8255 芯片有了进一步的认识,同时对程序 的设计也有了进一步的了解。 七、程序源代码七、程序源代码 ;*根据查看端口资源修改下列符号值* I
8、OY0EQU0D400H;片选 IOY0 对应的端口始地址 MY8255_AEQUIOY0+00H*4;8255 的 A 口地址 MY8255_BEQUIOY0+01H*4;8255 的 B 口地址 MY8255_CEQUIOY0+02H*4;8255 的 C 口地址 MY8255_MODEEQUIOY0+03H*4;8255 的控制寄存器地址 STACK1SEGMENTSTACK DW256DUP(?) STACK1ENDS CODESEGMENT ASSUMECS:CODE START: MOVDX,MY8255_MODE;定义 8255 工作方式 MOVAL,0B;工作方式 0,A 口和
9、 B 口为输出 0B OUTDX,AL MOVDX,MY8255_A;写 A 口发出的起始数据 MOVAL,0B OUTDX,AL MOVDX,MY8255_B;写 B 口发出的起始数据 MOVAL,0B OUTDX,AL MOVDX,MY8255_C;写 C 口发出的起始数据 9 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 8 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 7 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C
10、;写 C 口发出的起始数据 6 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 5 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 4 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 3 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 2 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起
11、始数据 1 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 0 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_A;写 A 口发出的起始数据 MOVAL,0B OUTDX,AL MOVDX,MY8255_B;写 B 口发出的起始数据 MOVAL,0B OUTDX,AL MOVDX,MY8255_C;写 C 口发出的起始数据 4 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 3 MOVAL,0B OUTDX,AL CALLDALLY
12、MOVDX,MY8255_C;写 C 口发出的起始数据 2 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 1 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 0 MOVAL,0B OUTDX,AL CALLDALLY ;再次 MOVDX,MY8255_MODE;定义 8255 工作方式 MOVAL,0B;工作方式 0,A 口和 B 口为输出 1B OUTDX,AL MOVDX,MY8255_A;写 A 口发出的起始数据 MOVAL,1B OUTDX,AL MOVDX
13、,MY8255_B;写 B 口发出的起始数据 MOVAL,1B OUTDX,AL MOVDX,MY8255_C;写 C 口发出的起始数据 9 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 8 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 7 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 6 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据
14、 5 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 4 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 3 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 2 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 1 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 0 MOVAL,0
15、B OUTDX,AL CALLDALLY MOVDX,MY8255_A;写 A 口发出的起始数据 MOVAL,1B OUTDX,AL MOVDX,MY8255_B;写 B 口发出的起始数据 MOVAL,1B OUTDX,AL MOVDX,MY8255_C;写 C 口发出的起始数据 4 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 3 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 2 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_
16、C;写 C 口发出的起始数据 1 MOVAL,0B OUTDX,AL CALLDALLY MOVDX,MY8255_C;写 C 口发出的起始数据 0 MOVAL,0B OUTDX,AL CALLDALLY MOVAH,1;判断是否有按键按下 INT16H JZBACK;无按键则跳回继续循环,有则退出 QUIT:MOVAX,4C00H;结束程序退出 INT21H DALLYPROCNEAR;软件延时子程序 PUSHCX PUSHAX MOVCX,07FFFH D1:MOVAX,0FFFFH D2:DECAX JNZD2 LOOPD1 POPAX POPCX RET DALLYENDP BACK:JMPSTART CODEENDS ENDSTART 八参考文献八参考文献 1. 王位喜微机原理实验与课程设计指导书南京航空航天大 学金城学院实验中心,2010 年 1 月 2. 沈国荣微机原理与接口技术南京大学出版社,2010 年 1 月 3. 感谢阅读感谢阅读