1、 沈阳航空工业学院课 程 设 计 报 告课程设计名称:微机系统综合课程设计课程设计题目:模拟汽车尾灯动作院(系):计算机学院专 业:计算机科学与技术班 级:6401102学 号:200604011058姓 名:王 刚指导教师:刘 鲲完成日期:2009年9月4日沈阳航空工业学院课程设计报告 I目 录1 课程设计内容及要求 .11.1 课程设计的内容 .11.2 设计要求 .12 设计原理 .12.1 功能实现 .12.2 所需硬件器件 .23 方案论证 .24 总体设计 .44.1 总控部分的实现 .44.2 详细设计 .54.2.1 左转功能的实现 .64.2.2 右转功能的实现 .64.2.
2、3 刹车功能的实现 .74.2.4 中断子程序的实现 .75 系统调试及小结 .86 心得体会 .8参考文献 .9沈阳航空工业学院课程设计报告 1第 1 章 总体设计方案课程设计内容及要求此次课程设计的题目为模拟汽车尾灯动作课程设计的内容1. 汽车尾部左右两侧各有三个指示灯,可用单色灯指示;2. 汽车正常行驶时指示灯全灭;右转弯时,右侧 3 个指示灯按右循环依次点亮(持续 10 秒) ;左转弯时,左侧 3 个指示灯按左循环依次点亮(持续 10 秒) ;临时刹车时,所有指示灯闪烁(亮 0.5 秒,灭 0.5 秒,持续 10 秒) ;3. 设置各功能键(如:启动、停止及左右转按键等) ,自行设计方
3、案使演示清晰直观,要有计时显示部分。设计要求1. 独立完成课程设计任务;2. 通过老师当场验收;3. 交出完整的课程设计任务书。1 设计原理模拟汽车尾灯动作的实现,使用五个功能键实现各个功能。功能实现根据课设要求,需要自行设计控制汽车启动、左转、右转、刹车、停止 5个功能键。在此我采用 0 键控制汽车启动,数码管显示正常行驶标识反向的“A”;1 键控制汽车左转,左边三个单色灯左循环闪亮,同时数码管开始计时沈阳航空工业学院课程设计报告 210s 及显示左转标识反向的“F” ,10s 后显示正常行驶标识反向的“A” ;2 键控制汽车右转,右边三个单色灯依次循环闪亮,同时数码管开始计时 10s 及显
4、示右转标识“F ” 10s 后显示正常行驶标识反向的“A” ;3 键控制汽车刹车,六个单色灯按照亮 0.5s 灭 0.5s 循环闪亮,同时数码管开始计时 10s 及显示刹车标识“A” ,10s 后显示正常行驶标识反向的“A”;4 键控制汽车的停止,清空显示 RAM,单色灯全部熄灭。所需硬件器件在设计要求中要实现控制左右 6 个单色灯闪亮,应该会用到 8255 芯片,在此使用 PA 口输出控制各灯的具体动作。PA0-PA2 控制左边三个单色灯,PA5-PA7 控制右边三个单色灯。在汽车左转、右转、刹车中要计时 10s,则应该用到 8253 计数器控制计数。用 8253 计数器产生 1s 的方波来
5、实现一秒计时。要显示计时,则需要用到 8279 键盘显示芯片。采用 8279 控制数码管的 D0显示计数 10s。在 8253 计时过程中,每计数 1s 需要通过 8279 进行显示,需要调用中断程序来实现,要用到 8259 芯片。2 方案论证方案一:灯闪烁控制部分,采用 8255PA 口输出控制灯的闪亮。左循环时给 PA 口送值 0FBH,左边第三个灯亮,各位取反后,右移一位取反使左边第二个灯亮(移位方向与灯的循环方向相反),如此循环使左边三个灯循环闪亮。右转同理,循环方向相反。刹车时 PA 口输出依次循环输出 0FFH,0H 使所有灯闪烁。计时部分,采用 8253 计数器 0 的输入为 F
6、9600,计数器 0 的输出作为计数器 1 的输入,计数器 1 的输出作为计数器 2 的输入,计数器的输出为周期 0.5s方波。在数码管显示计时时,每两个 0.5s 显示一个计数 (即每个数字在一秒中显示两次) ,这样所有的动作中,单色灯的闪烁频率都为 0.5s。沈阳航空工业学院课程设计报告 3显示计时部分只要设置好控制字,可以正确显示计数数字。中断初始化命令字基本固定,设置为单片工作,写 ICW4,中段类型号可自由设定,自动 EOI,OCW1 根据 ICW2 具体设置。中断程序主要执行计数部分,每次中断计数一秒,同时单色灯闪烁两次。方案二:灯闪烁部分与方案一相同。显示计时也不变。中断与计时部
7、分有所改动,中断部分的脉冲控制为数码管控制计时为 1s,每个计时数字显示一次;灯闪烁脉冲控制为 0.5s。计时部分使其产生两个不同的输出频率,一个为 1s,控制数码管计时;一个为 0.5s,控制刹车时单色灯的闪烁。连接方式为:CLK2GATE2CSINT0OUT2CLK1GATE1OUT1CLK0GATE0OUT0INT1F96001230-2378253图 3.1 8253 连线图就我个人来认为,方案二比较好。它将计数部分分为两部分,分别产生两个不同脉冲,并可以准确的控制 0.5s 与 1s 计时,由 1s 计时总控计时时间,0.5s单独控制灯闪烁,两者互不干扰但又不矛盾,灯的闪烁准确定在
8、10s 内。另外,方案二对左转、右转时灯的循环与闪烁没有限定在 0.5s,因为此时控制 0.5s 计时的中断并未开启,避免一切计时都为 0.5s。使得灯的闪烁比较自由。因此,就我个人考虑选择方案二。沈阳航空工业学院课程设计报告 43 总体设计要模拟汽车尾灯动作,需实现汽车启动、左转、右转、刹车、停止各个功能,在此设置 5 个功能键来进行控制,分别为“0” 、 “1”、 “2”、 “3”、 “4”键。总控部分的实现根据设计要求,设置 5 个功能键:1. 0 键表示启动,当按下 0 键,控制左转、右转、刹车、停止的各键才会有效;2. 1 键表示左转,左转时,左边三个单色灯依次左循环点亮,同时显示计
9、时,当到达 10s 时,停止计时并且单色灯全灭,数码管显示正常行驶标识反向的“A” ;3. 2 键表示右转,右转时,右边三个单色灯依次右循环点亮,同时显示计时,当到达 10s 时,停止计时并且单色灯全灭, ,数码管显示正常行驶标识反向的“A” ;4. 3 键表示刹车,当刹车时,所有灯开始闪亮,亮 0.5s,灭 0.5s,同时显示计时,当到达 10s 时,停止计时并且单色灯全灭, ,数码管显示正常行驶标识反向的“A” ;5 键表示停止,按下功能键 5 时,所有灯灭,清空显示 RAM,清空键盘RAM。功能键控制流程如图 4.1:沈阳航空工业学院课程设计报告 5开始调用左转子程序有按键键值等于“0”
10、有按键键值等于“1”键值等于“2”键值等于“3”键值等于“4”调用右转子程序调用刹车子程序停车程序结束YYYYYYYNNNNNNN0图 4.1 功能键控制流程第 2 章 详细设计方案在总体设计中设置了 5 个功能键分别实现汽车启动、左转、右转、刹车、沈阳航空工业学院课程设计报告 6停止各个功能。下面具体说明左转、右转、刹车及中断程序各个功能的实现。左转功能的实现在进入左转子程序后,将 SI 设为 0AH,设置计数初值 10s。8279 芯片控制显示 RAM“D4”显示反向的“F” ,表示正在进行左转。开启中断后,执行中断子程序,每执行一次,数码管计数 1s,直到 SI 等于 0 是停止计数,关
11、中断。同时,再开中断的这段时间,8255 控制 PA 口输出实现左边三个单色灯左循环闪亮。具体实现代码为:TL2:MOV CX,3HMOV AL,0FBHMOV DX,200H TL1:OUT DX,ALCALL DELAYROR AL,1H;LOOP TL1CMP SI,0H;JZ TL3JMP TL2TL3:MOV DX,200HMOV AL,0FFHOUT DX,AL右转功能的实现在进入右转子程序后,将 SI 设为 0AH,设置计数初值 10s。8279 芯片控制显示 RAM“D4”显示 “F”,表示正在进行左转。开启中断后,执行中断子程序,每执行一次,数码管计数 1s,直到 SI 等于
12、 0 是停止计数,关中断。同时,再开中断的这段时间,8255 控制 PA 口输出实现右边三个单色灯右循环闪亮。实现代码与左转子程序基本相同,不同之处是第二行的 0FBH 改为 0DFH,循沈阳航空工业学院课程设计报告 7环右移改为循环左移(灯的显示是循环右移)。刹车功能的实现在进入刹车子程序后,将 SI 设为 0AH,设置计数初值 10s。8279 芯片控制显示 RAM“D4”显示“A” ,表示正在进行刹车。在开启中断前,必须重新设置 8259 控制字 OCW1 为 0FCH,同时开启 0.5s 计时及 1s 计时中断允许。开启中断后,执行两个中断子程序,每执行 1s 计时中断一次,数码管计数
13、 1s,所有单色灯同时在这 1s 中亮 0.5s,灭 0.5s,直到 SI 等于 0 是停止计数,关中断。同时,再开中断的这段时间,8255 控制 PA 口输出单色灯闪亮(亮 0.5s,灭 0.5s)。中断子程序的实现中断子程序主要功能是实现数码管计时,其具体代码如下:CMP SI,0HJNZ TMOV SI,1H T: DEC SIPUSH AXPUSH DXMOV DX,212HMOV AL,80HOUT DX,AL;写显示缓冲 RAM 命令字MOV DX,210HMOV AX,SIMOV BX,OFFSET TABLE0XLAT CS:TABLE0OUT DX,ALPOP DX POP
14、AX沈阳航空工业学院课程设计报告 8第 3 章 结果测试及分析在初次运行时,单色灯闪亮正常,但数码管计时不显示,针对问题,检查8279 初始化及中断程序中 8279 控制字设置,发现 8279 控制字控制数码管显示命令字设置错误,经改正可以显示。再次测试,数码管显示计时不正确,有时会产生乱码。通过仔细检查及单步调试跟踪,发现在刹车子程序执行完毕后为复原 8259 命令字 ICW2,导致中断控制错误。改正之后显示正确为了显示直观,在测试完毕后进行了优化,对启动时加入了单色灯闪亮提示;左转、右转、刹车结束后,原先的标识未还原为正常行驶中的标识,通过在执行完十秒计时及灯的闪亮后的代码后加入恢复汽车正
15、常行驶标识的代码,使得运行后的结果更直观。进行多次测试与改正后,实验结果基本符合设计要求,可以实现左转、右转、刹车等各种功能,通过优化后使得运行结果也更直观易懂。不过在设计中,由于个人能力有限,也难免存在不足,代码部分也不是最优,存在有待改进的部分。4 心得体会两周的课程设计中,遇到很多不明白的问题,出现过很多错误,为此烦恼过,但通过认真思考,查阅资料,对出现的问题进行了一一解决,对设计的方法进行过一次次的否定与优化,增强了程序的可执行性、可再现性、正确性。同时,也是最重要的,通过课设可以对学过的知识进行补充、应用于实际,并加强理解。设计中我体会最深的是,对于理论有时虽然理解,但要变为实际可用的确实很难,想到的不一定就容易做到,还得多多练习与实践,在动手中找问题并进行知识补充。