微机原理课程设计王理想Word下载.docx
《微机原理课程设计王理想Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计王理想Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
![微机原理课程设计王理想Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/10/d5e699bb-27b0-481c-9185-4d6d9e042de2/d5e699bb-27b0-481c-9185-4d6d9e042de21.gif)
它主要由控制器、定时器、译码器和秒脉冲信号发生器等部分组成。
秒脉冲发生器是该系统中定时器和控制器的标准时钟信号源,译码器输出两组信号灯的控制信号,经驱动电路后驱动信号灯工作,控制器是系统的主要部分,由它控制定时器和译码器的工作。
3.2设计内容分析
通过分析设计要求得出灯亮的规律如下:
1.东西南北两个方向起始状态全为红,延续3秒。
2.东西方向红灯亮,南北方向绿灯亮;
延续6秒。
3.东西方向红灯亮,南北方向转为黄灯亮;
延续3秒。
4.东西方向红灯亮,延续3秒;
南北方向黄灯亮,以频率1HZ闪烁3秒。
5.东西方向绿灯亮,南北方向红灯亮,延续6秒。
6.东西方向黄灯亮,南北方向红灯亮;
7.东西方向黄灯亮,以频率1HZ闪烁3秒;
南北方向红灯亮,延续3秒。
8.东西方向红灯亮,南北方向绿灯亮,重复以上步骤。
9.每一个路口有一个紧急按键,可以中断当前的交通状态,使当前的路口为绿灯,经过12秒后恢复。
通行分析灯的亮灭情况,总结出下表(1标示灯亮,0标示灯灭):
状态
时间
东西
红灯
东西黄灯
东西绿灯
南北红灯
南北黄灯
南北绿灯
无效
1
2
a
0-6
b
6-12
c
12-18
d
21-24
转换成控制码:
状态状态
时间段
十六进制
二进制
状态a
84H
10000100B
状态b
88H
10001000B
状态c
30H
00110000B
状态d
18-24
50H
01010000B
东西、南北分别在0-6,、6-12、12-18、18-24时间段的亮灯情况比较:
四、电路设计思路
通过并行接口芯片8255A和8086芯片的硬件连接,以及通过8253定时的方法,来实现十字路口交通灯的模拟控制。
4.1延时功能实现逻辑:
8253芯片中数据总线缓冲存储器是由8为双向三态缓冲存储器构成,是CPU与8253之间交换信息的通道。
读写/控制电路可以接收CPU送入的读/写控制信号,若计数器0设为1s定时中断,周期为0-24秒,可通过编程控制各个路灯的状态的转换,以及使得黄灯按时闪烁。
8053内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD)计数,因此8253既是一个定时器也是一个计数器。
读/写控制器接受CPU送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。
可接受的控制信号:
(1)A1A0—端口选择信号,由CPU输入。
8253内部有3个独立的通道,和一个控制字寄存器,它们构成8253芯片的4个端口,CPU可对3个通道进行读/写操作,对控制字寄存器进行写操作。
(2)CS—片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。
(3)RD、WR—读/写控制命令,由CPU输入,低电平有效。
RD有效时,CPU读取由A1A0所选定的通道内计数的内容。
WR有效时,CPU将计数值写入各个通道的计数器中,或者是将方式控制字写入控制字寄存器中。
当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中,被计数的事件以脉冲方式从CLKi端输入,每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”,OUTi端将有输出,表示计数次数到。
当某通道用作定时器时,由CLKi端输入一定频率的时钟脉冲。
根据要求定时的时间长短确定所需的计数值,并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”,待计数值计到“0”,OUTi端将有输出,表示定时时间到。
控制字寄存器用来存放由CPU写入8253的方式选择控制字,由它来定义8253中各通道的工作方式。
SC1、SC0位用来选择通道,RL1、RL0位用来定义对所选通道中的计数器的操作,BCD位用来定义是采用二进制计数还是十进制计数,M2M1M0位用来定义所选通道的6种工作方式。
4.2译码电路设计:
74HC138是用CMOS门电路组成的3线-8线译码器,它有3个附加的控制端S1、S2’和S3’,这三个控制端也成为“片选”输入端,利用片选的作用可以将多片连接起来以扩展译码器的功能。
只有当S1=1、S2’+S3’=0时译码器处于工作状态。
8259的地址为20H、21H,8253的地址为40H、41H、42H、43H,8255的端口地址为0F0H、0F1H、0F2H、0F3H。
故芯片的地址只与8086的地址的低8位有联系,不妨设高十二为全为1将它们相与后作为38译码器的始能信号E3。
再分析发现8259、8253、8255各端口地址的低八位其中D2、D3均为0,将8086的地址总线的D2、D3作为38译码器的始能信号E1、E2。
将8086的地址总线的D0、D1分别与8253和8255的A0、A1连接,利用D4、D5、D6、D7构成译码电路。
将8086的地址总线的D0与8259的A0连接,利用D2、D4、D5、D6、D7通过38译码器构成译码电路。
4.3控制电路设计:
由于8255A与8086CPU是以低八位数据线相连接的,所以应该是8255A的A1、A0线分别与8086CPU的A2、A1相连,而将8086的A0线作为选通信号。
如果是按8255A内部地址来看,则在图中它的地址是PA口地址即(CS+000H),PB口地址为(CS+001H),PC口地址为(CS+002H),命令控制口地址为(CS+003H),其中,CS为8255片选信号
的首地址;
若是按8086CPU地址来看,则8255A的地址是PA口地址即(CS+000H),PB口地址为(CS+002H),PC口地址为(CS+004H),命令控制口地址为(CS+006H)。
当CS=0288H,则PA口地址为0288H,PB口地址为028AH,PC口地址为028CH,命令控制口地址为028EH。
1)对8255A芯片的说明:
8255A是一种可编程的芯片,内部有3个8位的I/0端口:
A口、B口和C口。
这三个端口也可以分为各有12位的两组:
A组和B组。
A组包含A口8位和C口的高四位,B组包含B口8位和C口的低四位;
A组控制和B组控制用于实现方式选择操作;
读写控制逻辑用于控制芯片内部寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。
由于8255A数据总线缓冲器是双向三态8位驱动器,因此可以直接和8086系统数据总线相连。
8255A可为可为86系统微处理机提供3个独立的并行输入/输出端口。
利用输出端口与数模转换器相连,可控制输出模拟量的大小,比如电压的高低、电流的大小、书读的快慢、温度的升降等,利用模数转换器又可将他们转换为数字量,通过并行输入端口送回微机系统中。
本例检测空气温度和湿度,并及时给予反馈显示,就要运用此芯片的该模拟量转换功能。
8255A与8086接线原理图如下:
2)对8259A芯片的说明:
8259A为可编程中断控制器,它有8大部分组成。
其中数据总线缓冲器是一个双向8位3态缓冲器,由它构成8259A与CPU之间的数据总线接口。
读写控制用来接收来自CPU的读/写控制命令和片选控制信息。
由于一片8259A只占两个I/O端口地址,可用末位地址码A0来选端口,端口其他的高位地址作为片选信号
输入。
一片8259A只能接收八级中断从IR7-IR0输入,当引入的中断超过8级时,可用多片8259A级联使用。
3)对温度传感器介绍:
湿度传感器是把相对湿度的变化转换成电信号的器件。
感湿特点:
在基片涂覆材料形成感湿膜。
空气中的水蒸气吸附于感湿材料后,原件的阻抗、介电常数发生很大的变化,从而制成湿敏原件。
工作原理:
水分子具有很强的电子亲和力,易于在多孔性半导体陶瓷表面附着,并俘获电子,在半导体陶瓷表面形成空穴积累,导致半导体陶瓷的电阻率降低。
晶胞间界水分子的电离。
芯片内部结构如下:
五、电路原理图
六、程序流程图
七、程序代码
十字路口交通控制器
DATASEGMENT
SETTIMEDB3;
用户设置的通行时间
NOWTIMEDB3;
当前计时时间
TIME1EQU10
TIMEOT1DBTIME1;
0.5秒定时单元
TIME2EQU2
TIMEOT2DBTIME2;
1秒定时单元
FLAGDB1;
闪烁标志
ONOFFDB1;
亮灭标志
LEFTDB1;
南北向和东西向标志
TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;
0~9的显示码
DATAENDS
STACKSEGMENTSTACK
DW64DUP(6);
定义堆栈段
STACKENDS
CODESEGMENT;
代码段定义
ASSUMECS:
CODE,DS:
DATA;
段指定
START:
MOVAX,DATA
MOVDS,AX
PUSHDS;
当前用户DS段入栈保存
MOVAX,0000H
MOVDS,AX;
修改DS=0000H,指向中断矢量表所在段
MOVAX,OFFSETIRQ0;
取出中断处理子程序的入口偏移地址(以0为基准)
ADDAX,2000H;
修正,实际地址=装入地址的偏移量+相对于0起始偏移量
MOVSI,0020H;
IR0中断矢量号为08H,处于矢量表的20H~23H
MOV[SI],AX;
将偏移地址装入矢量表
MOVAX,0000H
MOVSI,0022H
将段地址(0000H)装入矢量表
POPDS;
恢复用户数据段DS
MOVAL,0FCH;
D1,D0位复位为0
OUT21H,AL;
写入OCW1(IMR);
开放8259A的IR1和IR0中断
MOVAL,34H;
设定8253通道0的工作方式,00110100B
OUT43H,AL;
CH0采用先写低8位,后写高8位,方式2,二进制计数
MOVAX,59500;
计数初值为59500,输出20HZ信号,定时0.05秒
OUT40H,AL;
写入CH0
MOVAL,AH
OUT40H,AL
STI;
开中断
MOVAL,88H;
写入8255A的方式控制字,设定工作方式为10001000B
OUT63H,AL;
即A口方式0输出,C口高4位输入,B口方式0输出,C口低4位输出
INAL,62H;
循环读出C口的四个开关状态(PC4~PC7)
ANDAL,0F0H;
高四位为00~90秒
MOVSETTIME,AL;
读取用户设定的通行时间
MOVNOWTIME,AL
A1:
MOVAL,FLAG
TESTAL,01H
JZA2;
不闪烁,则转显示
MOVAL,ONOFF;
闪烁标志为1,闪烁,则测试是亮,还是灭
TESTAL,01H
JNZA2;
为1,说明亮,则转A2
MOVAL,0FH
OUT62H,AL
MOVAL,00H
OUT61H,AL;
灭,则关闭显示
JMPA3
A2:
MOVAL,NOWTIME;
取出当前剩余时间的低位
ANDAL,0FH
MOVBX,OFFSETTAB
XLAT;
查表转换为显示码
OUT61H,AL
MOVAL,05H;
PC0~PC3为0101B,允许X2、X4数码管选通
OUT62H,AL
CALLDALEY
MOVAL,NOWTIME
MOVCL,4
RORAL,CL
ANDAL,0FH;
取出当前剩余时间的高位
XLAT
MOVAL,0AH
OUT62H,AL;
PC0~PC3为1010B,允许X1、X3数码管选通
A3:
MOVAL,LEFT
JZA5;
测试是南北向通行,还是东西向通行
MOVAL,FLAG;
东西向通行
TESTAL,01H;
测试是否应让黄灯亮
JZA4;
不是东西向的黄灯亮,则转东西向绿灯亮(南北向红灯亮)
MOVAL,ONOFF;
东西向黄灯亮(南北向红灯亮)
TESTAL,01H
JNZA4;
测试亮灭
MOVAL,0FFH;
关指示灯
OUT60H,AL
JMPEXIT
A4:
MOVAL,77H;
东西向绿灯亮(南北向红灯亮)
A5:
MOVAL,FLAG;
南北向通行
JZA6;
不是南北向的黄灯亮,则转南北向绿灯亮(东西向红灯亮)
南北向黄灯亮(东西向红灯亮)
JNZA6;
OUT60H,AL
A6:
MOVAL,0EEH;
南北向绿灯亮(东西向红灯亮)
EXIT:
JMPA1
;
8259A的IR0中断处理子程序(8253的CH0每来59500个脉冲后(定时0.05秒),则执行下面的中断处理程序一次)
IRQ0:
PUSHAX
MOVAL,TIMEOT1
DECAL
JZIRTIME1
MOVTIMEOT1,AL
JMPIREXIT;
不到0.5秒,则退出
IRTIME1:
MOVTIMEOT1,TIME1;
0.5秒定时时间到,重装初值
MOVAL,ONOFF
XORAL,01H
MOVONOFF,AL;
取反亮灭标志
MOVAL,TIMEOT2
DECAL;
1秒定时单元减1
JZIRTIME2
MOVTIMEOT2,AL;
1秒不到,保存,退出
JMPIREXIT
IRTIME2:
MOVTIMEOT2,TIME2
SUBAL,1
DAS
CMPAL,0
JNZIRTIME3
MOVAL,SETTIME
MOVNOWTIME,AL;
重装通行时间
MOVAL,LEFT
MOVLEFT,AL;
南北向与东西向通行转换
MOVFLAG,00H;
闪烁标志复位(不闪)
IRTIME3:
MOVNOWTIME,AL
CMPAL,04H;
剩余时间小于4秒,则闪烁
JAEIRTIME4
MOVFLAG,01H
IRTIME4:
MOVFLAG,00H;
>
3秒,则不闪烁
IREXIT:
MOVAL,20H;
常规EOI中断结束指令
OUT20H,AL;
写入8259A的OCW2
POPAX
IRET;
中断返回
延时子程序
DALEY:
PUSHCX
MOVCX,0010H;
置内循环次数
DALEY1:
LOOPDALEY1;
共循环0010H次,以完成延时
POPCX
RET
CODEENDS
ENDSTART
八、程序及硬件系统调试情况
程序运行结果:
1.东西路右拐和南北路左拐绿灯点亮12秒,直通到均为红灯
2.12秒后,黄灯亮6秒钟,。
此时南北方向仍维持红灯点亮。
3.东西方向直通,为绿灯,南北方向红灯
4.黄灯再亮6秒之后,东西路左拐和南北路右拐绿灯点亮
5.南北方向的黄灯亮6秒钟后,南北方向直通,延时6秒
6.闭合A口开关,四个路口全红灯,表明紧急状态。
九、设计总结与体会
通过本次的交通灯系统的设计,我再次拿起了《微型计算机原理及应用》,仔细复习以前学过的知识。
由于本课程有些难学,所以当初学习的不太好,有很多知识都是一知半解。
为了能够及时出色的完成本次设计任务,我就早早的开始复习,虽然在此过程中遇到了很多难题,但是通过同学们的帮助和查找资料,我对各个芯片的功能、编程及应用也有了更深层次的理解,对微机原理有了更进一步的认识。
在理论学习的基础上,我又仔细思考本次设计内容及要求,结合各个芯片的功能,终于明白了设计一个系统的过程;
也让我体会到要想成功地完成某个设计,除了学好专业知识外,还要灵活系统的运用知识,要有严谨的求知态度和严密的思考方法,只有这样才能使设计过程有序而正确的进行。
除此之外,编程语言一直是我头疼的事,此次在芯片初始化程序方面是我遇到的最大的困难,我只能借助参考资料,查每一条指令的作用与功能,最后终于攻克了这个难题。
通过本次设计,激发了同学们学习的积极性,再次把学过的计算机编程原理的知识强化了,而且把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。
很感谢学校领导及周老师给我们提供的这次锻炼的机会,让我们在加深汇编语言的同时,也增强了综合理解及运用知识的能力,动手能力也得到了相应的提高,这对我们的学习和生活都有很大帮助。
十、参考文献
[1]郑学坚、周斌等编著.《计算机原理及应用》(第三版)北京:
清华大学出版社2007
[2]彭虎、周佩玲、傅忠谦.《微机原理里与接口技术》(第2版)[M]北京:
电子工业出版社2008,149-187
[3]刘乐善.微型计算机接口技术及应用[M].武汉:
华中科技大学出版,2000.
[4]谭云福IBMPC8086/8088宏汇编语言程序设计及实验,北京:
机械工业出版社,1993
[5]杨润生王敬觉.微型计算机及其应用(基础篇及应用篇).北京:
机械工业出版社,1983
[6]载梅萼.微型计算机技术及应用.北京:
清华大学出版社,1991