收藏 分销(赏)

本科设计方案报告.docx

上传人:精**** 文档编号:3001877 上传时间:2024-06-12 格式:DOCX 页数:13 大小:230.44KB 下载积分:8 金币
下载 相关 举报
本科设计方案报告.docx_第1页
第1页 / 共13页
本科设计方案报告.docx_第2页
第2页 / 共13页


点击查看更多>>
资源描述
大连理工大学本科设计汇报 题目: 交通灯自动控制系统设计 课程名称: 计算机原理试验 学院(系): 电信学部 专 业: 电子信息工程(英强) 班 级: 电英0902 学 号: 81541 学生姓名: 张策 成 绩: 年 1 月 8 日 题目:交通灯自动控制系统设计 1 设计要求 利用试验台上彩色LED模拟两组“红—黄—绿”交通信号指示灯,将其分别作为主干道和支线道路信号灯。 利用8253实现秒定时。主干线绿灯亮8秒,支线亮5秒,绿灯过渡到红灯时有一秒黄灯显示周期。 利用试验台上两个单脉冲模拟两个人行横道“应急通行”按钮,当按动按钮时:信号立即转为绿灯,并延时一段时间,再转回到红灯,继续完成剩下时间。 使用LED数码管模块显示信号周期时间“倒计时”。 2 设计分析及系统方案设计 能够将信号灯每一个状态设定成一个“状态字”,CPU只要经过8255APC端口每隔5秒钟更新一次“状态字”就能够实现信号灯正常工作。依据试验要求可将这些状态字设定如表3.1.3中内容。 表3.1.3:信号灯状态字表 次序 (状态) (空) 主干路(南北)信号灯 支线路(东西)信号灯 状态字(16进制) D7 D6 D5 D4 D3 D2 D1 D0 -- -- 红 黄 绿 红 黄 绿 1 0 0 0 0 1 1 0 0 0CH ------ 主干路行 2 0 0 0 1 0 1 0 0 14H ------ 主干路转换 3 0 0 1 0 0 0 0 1 21H ------ 支线路行 4 0 0 1 0 0 0 1 0 22H------ 支线路转换 (1) 设定D8255APC口作输出、显示信号灯效果; (2) 设定8253CNT0工作于方法3,写入初值10000,将1MHZ信号分频为100HZ,再将CNT1设置为方法2,写入初值100,将100HZ分频为周期为1秒周期性方波;将分频后结果输入到8255PA0口; (3) 将D8255APA口设定为输入,并使用PA0和8253 OUT1连接,CPU经过查询PA0电平改变(秒信号),控制信号灯运行(经过设定计数来改变信号运行周期); (4) 分别使用两个单脉冲输出(正脉冲数出)和386模块MIR5和SIR0连接,作为“南北”和“东西”人行横道“紧急通行”呼叫信号。当产生呼叫信号后,该方向信号灯变为绿色,维持一段时间后,信号灯恢复正常运行; (5) 设定D8255APB口作输出,连接LED显示“倒计时”。 图 3.2 参考连接示意图 8254/8253 D7 OUT2 … CLK2 D0 GATE2 OUT1 /RD CLK1 /WR GATE1 A1 OUT0 A0 CLK0 GATE0 /CS 200H 1MHH 时钟源 +5V 逻辑笔 监测秒信号 系统总线 L7 ·· ·· ·· L0 210H 8255 D7 ·· PC D0 /RD /WR A1 A0 /CS PA0 系统总线 SIR0 单脉冲S10 总线 开放区 MIR5 单脉冲S9 查询 秒周期 3 硬件电路图 4 外围接口模块硬件电路功效描述 (1)8259A芯片引脚图 (2)8255芯片引脚图 功效:8259A芯片用于管理可屏蔽中止, 功效:PA口做输入,用于时钟在此试验中用于管理各路紧急呼叫请 信号电平检测,PC口作输出, 求信号。 用于状态显示。 (3)8254芯片引脚图 功效:做分频器,用于产生周期为1S时钟脉冲信号 5 主程序中关键变量说明 变量名称 内存单元 功效 Count1 0000H 用于设定主干道通行时间 Count2 0001H 用于设定从干道通行时间 CTR 0002H~0005H 用于存放四个状态字 LED 0006H~0020H 用于存放0-F字型码,以供数码管显示用 6 系统软件中各个子程序功效描述 子程序名称 入口参数 出口参数 功效 描述 INT5_PROC 无 无 MIR5对应中止服务子程序,当主干道有紧急呼叫时,主干道绿灯亮 INTS0_PROC 无 无 SIR0对应中止服务子程序,当支线道路有紧急呼叫时,支线道路绿灯亮 图3.3主程序步骤图(参考图3.1.(b)) 8255初始化 PA为输入,PC为输出 8255PA输入状态字 修改查表指针 指向下一个状态 输出状态 主程序 8254初始化 CNT0为模式3,赋初值 CNT1为模式2,赋初值 PA0=0? N Y 8255PA输入 PA0=0? N Y 8255 PC为输出 第一个信号状态字 8259初始化(一) MIR5屏蔽字11011011 SIR0屏蔽字11111110 8259初始化(二) MIR535H类型向量表 SIR070H类型向量表 开中止STI 查询PA0 7 主程序步骤图 8 程序清单 IO_8255 EQU 210H IO_8253 EQU 200H DATA SEGMENT ORG 0000H COUNT1 DB 0 COUNT2 DB 0 CTR DB 0CH,14H,21H,22H LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: CLI MOV AX,DATA MOV DS,AX MOV DX,IO_8255 ;8255初始化,A口输入,B口输出,C口输出 ADD DX,3 MOV AL,10010000B OUT DX,AL MOV DX,IO_8253 ;8253 CNT0初始化,工作于方法3,BCD码计数 ADD DX,3 MOV AL,00110111B OUT DX,AL MOV DX,IO_8253 ;CNT0写入初值10000,将1MHzclk信号转变成100Hz MOV AL,0 OUT DX,AL OUT DX,AL MOV DX,IO_8253 ;8253 CNT1初始化,工作于方法3,二进制计数 ADD DX,3 MOV AL,01010110B OUT DX,AL MOV DX,IO_8253 ;CNT1设置初值,初值为100,得到周期为1秒脉冲信号 INC DX MOV AL,100 OUT DX,AL ;---设置386主8259中止屏蔽字--- IN AL,21H AND AL,11011011B ;开放IR5中止和IR2 OUT 21H,AL IN AL,0A1H AND AL,11111110B ;开放IR0 OUT 0A1H,AL ;---设置中止向量表--- PUSH DS MOV AX,0 MOV DS,AX ;---设置MIR5对应中止向量--- LEA AX,CS:INT5_PROC MOV SI,35H ADD SI,SI ;找到中止向量起始地址 ADD SI,SI MOV DS:[SI],AX PUSH CS POP AX MOV DS:[SI+2],AX ;将中止服务程序段地址存入中止向量 ;---设置MIR5对应中止向量--- LEA AX,CS:INTS0_PROC;AX指向SIR0中止程序入口地址 MOV SI,70H ADD SI,SI ADD SI,SI MOV DS:[SI],AX PUSH CS POP AX MOV DS:[SI+2],AX POP DS ;还原DS STI ;开中止 ;--若没有中止--- DDD:MOV DX,IO_8255 IN AL,DX ;取出8255Ao AND AL,01H CMP AL,0 JZ DDD CIRCLE: LEA BX,CTR MOV COUNT1,8 ;COUNT赋初值5,计时8S MOV DX,IO_8255 ADD DX,2 MOV AL,[BX] OUT DX,AL ;C端口输出第一个状态 LEA SI,LED MOV CL,COUNT1 MOV CH,0 ADD SI,CX MOV AL,BYTE PTR [SI] MOV DX,IO_8255 ADD DX,1 OUT DX,AL ;B端口输出,使LED显示出对应数 MAIN1:MOV DX,IO_8255 IN AL,DX ;取出8255Ao AND AL,01H CMP AL,0 JNZ MAIN1 MAIN2:MOV DX,IO_8255 IN AL,DX AND AL,01H CMP AL,01H JNZ MAIN2 DEC COUNT1 LEA SI,LED MOV CL,COUNT1 MOV CH,0 ADD SI,CX MOV AL,BYTE PTR [SI] MOV DX,IO_8255 ADD DX,1 OUT DX,AL ; B端口输出,使LED显示出对应数 MAIN3: MOV DX,IO_8255 IN AL,DX ; 取出8255Ao AND AL,01H CMP AL,0 JNZ MAIN3 CMP COUNT1,2 ; 判定是否达成最终一秒 JNZ MAIN2 MAIN4: MOV DX,IO_8255 IN AL,DX ; 取出8255Ao AND AL,01H CMP AL,1 JNZ MAIN4 INC BX MOV DX,IO_8255 ADD DX,2 MOV AL,[BX] OUT DX,AL ;C端口输出下一个状态 DEC COUNT1 LEA SI,LED MOV CL,COUNT1 MOV CH,0 ADD SI,CX MOV AL,BYTE PTR [SI] MOV DX,IO_8255 ADD DX,1 OUT DX,AL ; B端口输出,使LED显示出对应数 MAIN5: MOV DX,IO_8255 IN AL,DX AND AL,01H CMP AL,0 JNZ MAIN5 MAIN6: MOV DX,IO_8255 IN AL,DX ; 取出8255Ao AND AL,01H CMP AL,1 JNZ MAIN6 INC BX MOV COUNT2,5 MOV DX,IO_8255 ADD DX,2 MOV AL,[BX] OUT DX,AL ;C端口输出下一个状态 LEA SI,LED MOV CL,COUNT2 MOV CH,0 ADD SI,CX MOV AL,BYTE PTR [SI] MOV DX,IO_8255 ADD DX,1 OUT DX,AL ; B端口输出,使LED显示出对应数 MAIN7: MOV DX,IO_8255 IN AL,DX ; 取出8255Ao AND AL,01H CMP AL,0 JNZ MAIN7 MAIN8: MOV DX,IO_8255 IN AL,DX AND AL,01H CMP AL,01H JNZ MAIN8 DEC COUNT2 LEA SI,LED MOV CL,COUNT2 MOV CH,0 ADD SI,CX MOV AL,BYTE PTR [SI] MOV DX,IO_8255 ADD DX,1 OUT DX,AL ; B端口输出,使LED显示出对应数 MAIN9: MOV DX,IO_8255 IN AL,DX ; 取出8255Ao AND AL,01H CMP AL,0 JNZ MAIN9 CMP COUNT2,2 ; 判定是否达成最终一秒 JNZ MAIN8 MAIN10:MOV DX,IO_8255 IN AL,DX ; 取出8255Ao AND AL,01H CMP AL,1 JNZ MAIN10 INC BX MOV DX,IO_8255 ADD DX,2 MOV AL,[BX] OUT DX,AL ;C端口输出下一个状态 DEC COUNT2 LEA SI,LED MOV CL,COUNT2 MOV CH,0 ADD SI,CX MOV AL,BYTE PTR [SI] MOV DX,IO_8255 ADD DX,1 OUT DX,AL ; B端口输出,使LED显示出对应数 MAIN11:MOV DX,IO_8255 IN AL,DX AND AL,01H CMP AL,0 JNZ MAIN11 MAIN12: MOV DX,IO_8255 IN AL,DX ; 取出8255Ao AND AL,01H CMP AL,1 JNZ MAIN12 JMP CIRCLE ;-----设置MIR5对应中止服务子程序----- INT5_PROC PROC FAR PUSH AX PUSH BX PUSH CX PUSH DX ;保护现场 QUERY1:LEA BX,CTR MOV AL,[BX] MOV DX,IO_8255 ADD DX,2 OUT DX,AL ;MIR5有中止请求,则让主干道绿灯亮,即C口输出第一个状态 MOV CX,3000 ;延时一段时间 Y5:MOV DI,1000 Y4:DEC DI JNZ Y4 LOOP Y5 ADD BX,2 MOV AL,[BX] OUT DX,AL ;恢复到之前第三状态 MOV AL,20H ; 向主8259MIR5发送中止结束命令 OUT 20h,AL POP DX POP CX POP BX POP AX ;恢复现场 STI IRET INT5_PROC ENDP ;-----设置SIR0对应中止服务子程序----- INTS0_PROC PROC FAR PUSH AX PUSH BX PUSH CX PUSH DX ;保护现场 QUERY2:LEA BX,CTR ADD BX,2 MOV AL,[BX] MOV DX,IO_8255 ADD DX,2 OUT DX,AL ;SIR0有中止请求,则让支线路绿灯亮,即C口输出第三个状态 MOV CX,3000 ;延时一段时间 Y7:MOV DI,1000 Y6:DEC DI JNZ Y6 LOOP Y7 LEA BX,CTR MOV AL,[BX] OUT DX,AL ;恢复到原来第一状态 MOV AL,20H ; 向主8259MIR5发送中止结束命令 OUT 20h,AL MOV AL,20H ; 向从8259SIR0发送中止结束命令 OUT 0A0h,AL POP DX POP CX POP BX POP AX ;恢复现场 STI IRET INTS0_PROC ENDP CODE ENDS END START 9 系统调试运行结果说明、分析所出现得问题,设计体会和提议 (1)此次试验达成了预期效果,试验成功! (2)在调试过程碰到问题及处理方法 问题1:在实施中止服务程序过程中,从片中止在处理完成后无法回到原来断点。 处理方法:在实施从片中止服务程序时,在发送中止结束命令时只发送了从片中止结束命令。也应该加上对主片中止结束命令,因为从片中止请求是经过主片发送给CPU,也占用了主片,所以也需要对主片发送中止结束命令。 问题2:在实施完中止服务程序以后,回到断点怎样保持其原来中止时计数不变? 处理方法:在实施完中止服务程序以后,需要实施一条回到原来状态程序,使之不仅能回到断点,而且也能延续其原来计时。 (3)设计评价:此次设计采取了LED数码管显示倒计时,较为人性化,不过在显示代码部分并未采取调用函数,使得程序较为繁琐。不过本程序主,从干道亮灯时间和中止时间均可调,适适用于路况不一样多种道路。 10 结论及设计体会 程序正常运行,状态转换正确,中止响应正确,倒计时显示正确,达成了试验要求。 设计体会:这次大试验设计,不仅使我意识到自已对于以往知识掌握并不是很牢靠,更让我意识到自己不足。经过这段时间学习,我对可编程器件8255,8259,8253有了更深认识,掌握了其使用原理及编程方法,而且复习了汇编语言。这不仅仅帮我顺利完成了设计试验,更能帮助我在计算机原理理论考试中取好成绩!在试验过程中,经过不停调试,不停犯错,不停修改,提升了我处理编程问题能力,学会并掌握了调试方法。 之前做接口部分试验时,因为理论课上还没讲,自己了解不好,在使用中要么常常碰到问题,要么成功了却不知其所以然。在全书学完以后做设计试验时,才恍然大悟,所以理论课能早点讲话,我认为此次设计试验会完成愈加快速和出色。 最终,衷心感谢陈老师一个学期以来悉心教育和耐心指导! 参考文件 计算机原理综合试验教程[M]. 秦晓梅,陈育斌. 大连理工大学出版社,.
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服