微机课程设计报告.docx
《微机课程设计报告.docx》由会员分享,可在线阅读,更多相关《微机课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
微机课程设计报告
交通灯控制课题小组成员及学号
组长:
叶耀雄0507508153
组员:
罗洁珊0507508140
陈英秀0507508144
杨雄杰0507508145
学院
医药信息工程学院
专业
计算机科学与技术(医学应用)
班级
05医学应用
(1)班
指导教师
何永玲
2007
年
11
月
10
日
序言
十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。
十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。
当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。
它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。
在交通灯的通行与禁止时间控制显示中,通常要么东西、南北两方向各50秒;要么根据交通规律,东西方向60秒,南北方向40秒,时间控制都是固定的。
交通灯的时间控制显示,以固定时间值预先“固化”在单片机中,每次只是以一定周期交替变化。
但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受认为因素的影响。
采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。
它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。
目前,有一种使用“模糊控制”技术控制交通灯的方法。
能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。
但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。
本次课程设计利用软件定时方式采用Intel8255A可编程外设接口芯片唐都TD-PITC实验系统上模拟交通灯,实现在正常情况下,两路口轮流放行,且以一位8段数码管显示剩余时间;夜间,两路口均为黄灯闪烁,均可放行。
对两个方向车辆的通行时间分别计时,可随意进行更改双向的通行时间。
代码是我们一行一行写出来的,通过各位组员们的努力,这一次的课题设计实验成功顺利完成,这离开各组员的努力和大家的配合。
也让我体会到团队的力量,让我意识到做一个项目最基本的必须具有团队协作的精神。
目录
一、实验目的…………………………………………………………………………3
二、实验内容…………………………………………………………………………3
三、实验要求…………………………………………………………………………3
四、交通信号灯实时控制和管理的总体设计………………………………………4
(一)芯片选择、介绍及端口选择………………………………………………4
(二)实验硬件连线图及说明………………………………………………………4
(三)流程图(程序主流程图以及子流程图)……………………………………5
(四)设计思想………………………………………………………………………6
五、实验环境及条件…………………………………………………………………9
六、源程序清单………………………………………………………………………9
七、程序运行结果……………………………………………………………………13
八、课程设计总结……………………………………………………………………13
九、团队分工…………………………………………………………………………15
十、参考文献…………………………………………………………………………15
一、实验目的
通过此课程掌握微机系统的构成原理与接口电路的设计方法,掌握基于8086实验平台的基本接口电路的实现与测试方法,及简单微机应用系统的设计与实现方法。
在学习完《微机原理与接口技术》这门课程之后,需要学生掌握掌握8086cpu微机系统的存储子系统设计、掌握8086cpu微机系统的中断控制子系统的设计、掌握8086cpu微机系统的I/O系统的设计、掌握8086cpu微机系统的初始化汇编编程和具体项目功能的软件汇编语言代码编写从而培养和考察学生理论与实践相结合以及实践创新的能力。
因此设计了一个综合性实验-----《微机原理与接口技术》课程设计------微机系统设计。
二、实验内容
(1)要求:
十字路口
1)、正常情况下,两路口轮流放行,且以一位8段数码管显示剩余时间;
2)、夜间,两路口均为黄灯闪烁,均可放行。
(2)提示—交通灯规律:
状态1:
南北绿灯通车,东西红灯;
状态2:
南北绿灯闪烁3次转黄灯亮,东西仍然红灯,延时3秒;
状态3:
东西绿灯通车,南北红灯;
状态4:
东西绿灯闪烁3次转黄灯亮,延时3秒南北仍然红灯。
以开关控制正常状态与夜间。
(3)注意:
学生也可自己设计合理也符合逻辑的相关交通灯规律。
三、实验要求
1)、每四个同学组成一个小组,选一位组长,负责与教师联系;每一组选择一个题目,完成系统的软硬件部分设计。
2)、自学、查找所选择I/O接口芯片和内存芯片的相关的资料。
使用微机原理知识实现能完成相应功能的硬件系统。
3)、要求写出系统(包括各个子系统)的设计方案及论证,画出系统原理图(硬件连线图)以及系统工作流程。
4)、画出程序流程、编写系统初始化程序和功能程序清单。
5)、完成系统最终调试,得出系统运行结果与调试报告。
6)、提出系统改进建议和下一步开发和研究计划。
四、交通信号灯实时控制和管理的总体设计
㈠芯片选择、介绍及端口选择
(1)芯片的选择及端口选择
1、采用唐都TP—PITC实验系统的8255A实现对信号灯的控制(PA0—PA7);1位数码管显示时间的倒计
2、用唐都TP—PITC实验系统8254的计数器0定时向8255A的PC7发出信号来检测,以实现9S、3S的定时,定时采用软硬件相结合的方式实现。
3、用实验系统的发光二极管模拟红绿、灯
8255A的端口地址为:
端口A-9800H、端口B-9802H、端口C-9804H、控制端口-9806H
8254的端口地址:
计数器0-9840H、计数器1-9842H、计数器2-9844H、控制端口-9846H
4、采用8255APA0-PA7模拟红、黄、绿灯,具体分配如下:
状态
D7
D6
D5
D4
D3
D2
D1
D0
BT0
0
0
1
0
0
0
0
1
BT1
0
0
1
0
0
1
0
0
BT2
0
0
0
1
0
0
1
0
BT3
0
0
0
1
1
0
0
0
BT4
返回BT0
HY0
0
0
1
1
0
0
0
0
HY1
0
0
0
0
0
0
0
0
注:
1)、D0:
表示南北绿灯;D1:
表示东西绿灯;
D2:
表示南北黄灯;D3:
表示东西黄灯;
D4:
表示南北红灯;D5:
表示东西红灯。
2)、“BT0”表示白天状态0,即南北绿灯,东西红灯;
“BT1”表示白天状态1,即南北黄灯,东西红灯;
“BT2”表示白天状态2,即南北红灯,东西绿灯;
“BT3”表示白天状态3,即南北红灯,东西黄灯;
3)、“HY0”表示黑夜状态。
⑴芯片介绍
8255A
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:
方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图2所示。
8254:
8254是Intel公司生产的可编程定时器。
是8253的改进型,比8253具有更优良的性能。
8254具有以下基本功能:
(1)有3个独立的16位计数器;
(2)每个计数器可按二进制或十进制(BCD)计数;
(3)每个计数器可编程工作于6种不同工作方式;
(4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz);
(5)8254有读回命令(8253没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。
(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。
计数初值公式为n=fCLKi÷fOUTi其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。
图1是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。
8254的工作方式如下述:
(1)方式0:
计数到0结束输出正跃变信号方式。
(2)方式1:
硬件可重触发单稳方式。
(3)方式2:
频率发生器方式。
(4)方式3:
方波发生器。
(5)方式4:
软件触发选通方式。
(6)方式5:
硬件触发选通方式。
8254的控制字有两个:
一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。
这两个控制字共用一个地址,由标识位来区分。
控制字格式如表1所示。
读回控制字格式如表2所示。
当读回控制字的D4位为0时,由该读回控制字D1~D2位指定的计数器的状态寄存器内容将被锁存到状态寄存器中。
状态字格式如表3所示。
图18254的内部接口和引脚
表18254的方式控制字格式
表28254读出控制字格式
表38254状态字格式
(二)实验硬件连线图及说明
参考硬件接线图如下图所示:
(三)流程图(程序主流程图以及子流程图)
实验的主流程图和子流程图如图2.1和2.2所示
注:
子流程图其实就是每个状态(BT0、BT1、BT2、BT3)的流程,它是说明8255A和8254是如何控制模拟交通灯的
图2.1主流程图
图2.2子流程图
(四)设计思想
本课程设计使用8255A端口A、B、C工作在方式0,端口A、B作为输出口,端口C高四位输入低四位,8255A端口A来控制LED显示管以显示十字路口的红、绿以及黄灯(各灯的具体),端口B输出线接至到数码管上。
PC6用于读取开关K0的状态控制白天和黑夜,PC7用于检测8254的OUT0口实现定时。
设计数器0的计数初值为18432,由于CLK0接收脉冲信号,频率为18.432KHZ,输出的频率OUT0为1HZ,所以每计数完一次为1秒钟。
五、实验环境及条件
1、唐都TD-PITC实验箱
2、导线
六、源程序清单
;综合性、设计性实验--交通灯控制
;PA0~PA7作为LED灯,PB0~PB7为数码管段选码,PC6检测开关,PC7读8254输出频率
;*****************************************************************
IOY0EQU9800H;片选IOY0对应的端口始地址
IOY1EQU9840H;片选IOY1对应的端口始地址
;*****************************************************************
MY8255_AEQUIOY0+00H*2;8255的A口地址
MY8255_BEQUIOY0+01H*2;8255的B口地址
MY8255_CEQUIOY0+02H*2;8255的C口地址
MY8255_MODEEQUIOY0+03H*2;8255的控制寄存器地址
MY8254_0EQUIOY1+00H*2;8254的0口地址
MY8254_1EQUIOY1+01H*2;8254的1口地址
MY8254_2EQUIOY1+02H*2;8254的2口地址
MY8254_MODEEQUIOY1+03H*2;8254的控制寄存器地址
;*****************************************************************
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
DTABLEDB6FH,7FH,07H,7DH,6DH,66H,4FH,5BH,06H,3FH;键值表,0~9对应的7段数码管的段位值
DTABLE1DB4FH,5BH,06H,3FH;键值表,0~3对应的7段数码管的段位值
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STRAT:
MOVAX,DATA
MOVDS,AX
MOVDX,MY8255_MODE;定义8255工作方式
MOVAL,88H;工作方式0,A口和B口为输出,C口低位输出、高位输入
OUTDX,AL
TEST1:
MOVDX,MY8255_C
INAL,DX
TESTAL,40H;检测PC6
JNZHEIYE;PC6=1跳转到黑夜状态
STATE0:
MOVDX,MY8255_A;状态0:
南北绿灯,东西红灯
MOVAL,21H
OUTDX,AL
MOVCX,10;循环10次
LEABX,DTABLE
LOOP0:
MOVDX,MY8255_B
MOVAL,BYTEPTR[BX]
OUTDX,AL
MOVDX,MY8254_MODE;初始化8254工作方式
MOVAL,34H;计数器0,方式2
OUTDX,AL
MOVDX,MY8254_0;装入计数初值
MOVAL,00H;18432分频
OUTDX,AL
MOVAL,48H
OUTDX,AL
CHECK0:
MOVDX,MY8255_C
INAL,DX
TESTAL,80H
JNZCHECK0
INCBX
LOOPLOOP0
STATE1:
MOVDX,MY8255_A;状态1:
南北黄灯,东西红灯
MOVAL,24H
OUTDX,AL
CALLT8254_1
STATE2:
MOVDX,MY8255_A;状态2:
南北红灯,东西绿灯
MOVAL,12H
OUTDX,AL
MOVCX,10;循环10次
LEABX,DTABLE
LOOP2:
MOVDX,MY8255_B
MOVAL,BYTEPTR[BX]
OUTDX,AL
MOVDX,MY8254_MODE;初始化8254工作方式
MOVAL,34H;计数器0,方式2
OUTDX,AL
MOVDX,MY8254_0;装入计数初值
MOVAL,00H;18432分频
OUTDX,AL
MOVAL,48H
OUTDX,AL
CHECK2:
MOVDX,MY8255_C
INAL,DX
TESTAL,80H
JNZCHECK2
INCBX
LOOPLOOP2
STATE3:
MOVDX,MY8255_A;状态3:
南北红灯,东西黄灯
MOVAL,18H
OUTDX,AL
CALLT8254_1;调用子程序
MOVAH,1;判断是否有键按下
INT16H
JZTEST1;没键按下跳转至TEST1
JMPQUIT;有键按下则退出
HEIYE:
MOVDX,MY8255_A;黑夜状态:
南北、东西黄灯闪烁
MOVAL,0CH
OUTDX,AL
CALLDELAY2
MOVAL,00H
OUTDX,AL
CALLDELAY2
MOVDX,MY8255_C
INAL,DX
TESTAL,60H;检测PC6
JZSTATE2;pc6=0跳转到白天状态
MOVAH,1;判断是否有键按下
INT16H
JZHEIYE
QUIT:
MOVAX,4C00H
INT21H
T8254_1PROCNEAR
PUSHCX;压栈,保护现场
PUSHBX
PUSHAX
PUSHDX
MOVCX,4;循环4次
LEABX,DTABLE1
LOOP1:
MOVDX,MY8255_B
MOVAL,BYTEPTR[BX]
OUTDX,AL
MOVDX,MY8254_MODE;初始化8254工作方式
MOVAL,34H;计数器0,方式2
OUTDX,AL
MOVDX,MY8254_0;装入计数初值
MOVAL,00H;18432分频
OUTDX,AL
MOVAL,48H
OUTDX,AL
CHECK1:
MOVDX,MY8255_C
INAL,DX
TESTAL,80H
JNZCHECK1
INCBX
LOOPLOOP1
POPDX
POPAX
POPBX
POPCX
RET
T8254_1ENDP
DELAY2PROCNEAR
PUSHAX
PUSHCX
MOVCX,03FFFH
LOP2:
MOVAX,0FFFFH
D2:
DECAX
JNZD2
LOOPLOP2
POPCX
POPAX
RET
DELAY2ENDP
CODEENDS
ENDSTRAT
七、程序运行结果
K0=0白天状态
1、南北方向的绿灯和东西方向的红灯同时点亮9秒钟,同时数码显示剩余时间;
2、9秒钟后,南北方向的黄灯闪烁3秒钟,此时东西方向仍维持红灯点亮,同时数码显示剩余时间;
3、南北方向的黄灯闪烁3秒钟后,转为南北方向的红灯和东西方向的绿灯同时点亮9秒钟,同时数码显示剩余时间;
4、9秒钟后,转为东西方向的黄灯闪烁3秒钟,此时南北方向仍维持红灯点亮,同时数码显示剩余时间;
5、东西方向的黄灯闪烁3秒钟后,循环至“1”
6、拨动K0,使K0=1,执行完一次循环后将进入黑夜状态。
拨动K0,使K0=0恢复到白天状态。
八、课程设计总结
1、软件延时与定时器计时
课程开始时,我们尝试过用软件延时,发现软件延时虽然设计简单,使用方便,但是无法进行精确计时,无法在实际应用中进行使用。
所以本次课程设计采用了8254计数器0进行计时,每1S产生一个脉冲信号,可以准确的计时并方便8段数码管进行显示。
2、使用8254计时的好处
使用8254计时比较麻烦,但在实验的过程中我们在没有8259中断控制芯片的情况下,巧妙地采用了PC7口来读取8254的端口OUT0的脉冲频率。
成功地实现了数码管剩余时间的精确的计时,强化程序功能与执行效率。
3、团队合作
在项目开发中,团队合作是非常重要的,在对设计进行模块划分、统一变量之后,分别设计不同设计然后进行整合,这样进行开发是非常快速简单的。
4、关于本次课程设计
在本次设计中,使用了8254计数器、8255可编程并行接口实现了对南北、东西方向交通的分别计时、分别控制和分别显示的模拟交通灯。
在老师的指导下,我们做到了自主设计,自主编写代码在设计中掌握的计算机接口设计的基本方法、锻炼了团队合作的能力。
在此次设计中体也会到了交流与保护知识专利的重要性,在千篇一律的设计中,要显示自己的特色,在实用性和执行效率间取得平衡,是设计的关键所在。
本次设计通过我组员的努力,可以说是比较出色完成了老师所给题目的每一项要求。
在这里我感谢我组每位组员的默契配合、坚持不懈!
九、团队分工
叶耀雄:
主要负责8254定时功能、并编写了所负责的代码和文档。
模拟交通灯的总体代码的整合和总体文档的编写。
罗洁珊:
主要负责8255数码管显示功能、硬件连线图的绘制,并编写了所负责的代码和文档。
陈英秀:
主要负责8255LED显示灯的四种状态、状态表的设置和编写、主流程图和子流程图的绘制,并编写了所负责的代码和文档。
杨雄杰:
主要负责通过读取K0的状态来控制白天状态和黑夜状态,资料的收集,并编写了所负责的代码和文档。
十、参考文献
1、微型计算机技术(修订版)高等教育出版社孙德文
2、