微机原理及应用课程设计有代码.docx
- 文档编号:10890740
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:17
- 大小:258.98KB
微机原理及应用课程设计有代码.docx
《微机原理及应用课程设计有代码.docx》由会员分享,可在线阅读,更多相关《微机原理及应用课程设计有代码.docx(17页珍藏版)》请在冰豆网上搜索。
微机原理及应用课程设计有代码
微机原理及应用课程设计
一、设计题目要求:
设有一十字路口,1、3为南北方向,2、4为东西方向。
每个路口均有红、黄、绿三个灯,初始状态为四个路口的红灯亮,2秒之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口通车;延时50秒后,1、3路口绿灯闪烁5秒,后绿灯灭,黄灯亮,5秒后,1、3路口的红灯亮,而同时2、4路口的绿灯亮,2、4路口开始通车;延时30秒后,2、4路口绿灯闪烁5秒后绿灯灭,黄灯亮,5秒后,2、4路口的红灯亮,同时1、3路口的红灯亮(即四个路口的红灯亮),2秒之后,1、3路口的绿灯亮,2、4路口的红灯亮,重复上面的过程。
二.设计提示:
1注意6个交通灯变化规律:
亮、灭、闪烁;
2通过8253计数器0和计数器1级联实现准确定时;用8255的某一输入输出口中的某些位控制东西、南北路口交通灯的状态;用8259A管理可屏蔽中断。
三.设计原理及过程:
1、实验要求分析:
基本结构图
一个周期
通过读设计要求,可以得到1、3以及2、4路口上的三种灯随时间亮灭情况如下(1、3相同,2、4相同):
2、设计所使用的芯片及功能:
(1)8253A计数/定时器:
其命令字格式如下,
该芯片24脚双列直插式芯片,用+5V供电,芯片内有三个相互独立的16位定时/计数器,分别为计数器0,计数器1,计数器2,最大计数初值65535,其端口号分别40-42H,控制端口号为43H,以下为其引脚图,该图利用PROTEL99SE查找并截图得到:
由于所使用的时钟频率为4.77MHZ,为了满足设计要求,必须将计数器0和计数器1级联才能实现所要求的功能(4.77M=5000*954),因此选择把OUT0和CLK1相连,按照设计要求,应使两计数器工作在方式0下。
8253A的各引脚功能简介如下:
数据引脚D7~D0:
数据线,双向三态,与系统数据总线连接。
片选信号~CS:
输入信号,低电平时选中此片。
由CPU输出的地址经地址译码器产生。
地址线A0、A1:
接到系统总线的A0,A1上,当~CS为低电平,即8253被选中时,用它们来选择内部的四个寄存器。
读信号~RD:
输入信号,低电平有效。
由CPU发出,用于控制被选中的内部寄存器读操作。
写信号~WR:
输入信号,低电平有效。
由CPU发出,用于控制被选中的内部寄存器写操作。
时钟脉冲信号CLK0-CLK2:
计数器0-计数器2的时钟输入端。
门控信号GATE0-GATE2:
计数器0-2的门控输入信号端,用于启动计数器工作。
输出信号OUT0-OUT2:
计数器0-2的输出端,当计数器计到0时,输出一个标志信号。
(2)可编程并行接口芯片8255A,其工作方式选择控制字如下:
为保证定时信号可以控制并行输出,将C口作为输出控制六个灯的亮暗情况(紧急情况下还有一个扬声器,由PC6控制),A口和B口不用(可将其设置为输出口),以下为8255A的引脚结构图,利用protel99se截图得到:
共40个引脚,双列直插列装,由+5V供电。
其中A、B、C口各有八条端口I/O线,即PA7~PA0,PB7~PB0,PC7~PC0,8255A本身共24个引脚,用于8255A和外设之间数据(或控制、状态信号)的传送。
D0~D7:
8为三态数据线,接至系统数据总线。
A1~A0:
地址信号,片内译码产生A、B、C三个端口以及控制口接到系统总线上。
~CS:
片选信号,由系统地址译码器产生,低电平有效。
~RD和~WR:
读写控制信号,低电平有效,决定数据传送的方向。
RESET:
复位信号,高电平有效。
复位后,三个端口均为输入方式。
(3)8259A可编程中断服务控制器,其初始化涉及四个初始化命令字ICW1~ICW4,和3个操作命令字OCW1~OCW3.
8259A采用28脚双列直插封装形式,其芯片管脚图如下所示:
~CS;片选信号,输入低电平有效,来自地址译码器的输出。
~RD和~WR:
读信号和写信号,输入,都为低电平有效,用于读取和通知8259A的命令字。
D7~D0:
双向三态数据线,接系统总线数据线,用来传送控制字,状态字和终端类型号等。
INT:
8259A向CPU发出的中断请求信号,高电平有效。
~INTA:
接受来自CPU处理的中断相应脉冲已通知8259A中断请求已被相应。
3、设计思路:
利用8253的计数/定时功能,根据想得到的时间频率,确定一个计数初值,在计数完成后,输出信号会发生变化(若为方式0,则变化形式为从低电平变为高电平),把这一变化信号输入到8259A的中断请求端IR1(注:
为体现其中断控制优先级问题,在IR0加入一个紧急情况中断请求,在情况下两路的红灯全亮),利用8259A的INT端向CPU发出相应的中断请求信号,经CPU处理后返回INTR端,若条件满足则会执行相应的中断服务子程序,在中断服务子程序中对8255A的各端口分别赋值,确定其工作方式和各位输出情况。
下面简单介绍一下设计所需的基本条件:
(1)首先是各芯片的端口地址,8255A中A口地址为40H,B口地址为41H,C口地址为42H,控制口为43H;8253中设其计数器0端口地址为50H,计数器1的端口地址为51H,计数器2的端口地址为52H,控制端口为53H;8259A中的奇地址为61H,偶地址为62H。
(2)为实现准确计数采用的方法:
设计要求中涉及2S,5S,30S,50S,想到采用8253计时1秒而在N秒时采用N次循环的方式,可以做成一个子程序在循环方式下调用。
计数器0和计数器1均工作在方式0下这样就可以实现在计数完成后,OUT1向外输送一个高电平,在这种情况下,该高电平通过8259A的中断请求端向CPU发出中断申请。
(3)关于优先级:
为了实现紧急情况下中止正常情况进入特殊情况的要求,特殊情况的中断申请优先级应高于正常情况下的中断申请,已知在全嵌套方式(默认方式)情况下IR0~IR7的优先级顺序依次降低,故选择把紧急情况下的中断请求连入IR0,正常情况下的中断请求接入IR1,在有紧急情况需要中断时,设置为允许中断嵌套的情况下,当低级中断在处理时有高级中断,CPU会暂停低级服务专去执行高级服务程序(特殊情况),处理完成后才会再返回低级中断服务子程序(正常情况)。
(4)关于8255控制灯的亮灭情况:
为实现交通灯的亮灭对应设计要求,选择8259的C端作为输出端(A、B端也为设置为输出,但用不到),用到的有PA0~PA5,六个端口分别控制1、3路口的红绿黄灯和2、4路口的红绿黄灯,灯的一侧接高电平,因此另一侧必须为低电平时才会亮,PC6接紧急状态下的扬声器SPEAKER,按照要求得到以下表,其中表中0~6个状态的扬声器均不响,只有状态7,即紧急情况下扬声器才响:
交通灯状态
对应的PA端口状态
持续时间
下一状态
状态0(初始状态)
1、3,2、4红灯亮
11110110
2秒
状态1
状态1
1、3绿灯亮,2、4红灯亮
11110101
50秒
状态2
状态2
1、3绿灯闪烁,2、4红灯亮
11110101~11110111
5秒
状态3
状态3
1、3黄灯亮,2、4红灯亮
11110011
5秒
状态4
状态4
1,3红灯亮,2,4绿灯亮
11101110
30秒
状态5
状态5
1、3红灯亮,2,4绿灯闪烁
11101110~11111110
5秒
状态6
状态6
1、3红灯亮,2,4黄灯亮
11011110
5秒
状态1
状态7(紧急情况)
1、3红灯亮,2,4红灯亮,j加扬声器响
10110110
持续至开关断开为止
结束前状态
四、硬件线路图
由以上设计思路可知,采用8253准确定时,采用8259A向CPU提出中断申请,并接收CPU处理后的结果,若相应中断,则执行中断服务子程序,子程序的内容即对8255A赋值,使其控制相应灯的亮灭。
综合以上结果,可得到以下硬件连接图,采用protel99SE得到:
五.程序流程图:
通过设计思路以及硬件连接可以得到以下程序流程图,其中在中断服务子程序中包含了计数时间1秒以及判断是否有紧急开关按下,以粗线示意。
各个状态的程序流程图以及中断服务子程序的程序流程图如下所示:
六、汇编程序代码:
代码如下:
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVDX,OFFSETZICHENG;求中断服务子程序的ZICHENG的偏移地址
MOVAX,SEGZICHENG;求中断服务子程序ZICHENG的段地址
MOVDS,AX
MOVAH,25H;送功能号
MOVAL,21H;送中断类型号
INT21H;DOS功能调用
MOVAL,10000000B;设置8255A的工作方式,A,B,C均为输出口,方式0
MOVDX,43H;送8255A的控制口地址
OUTDX,AL
LOOP:
MOVAL,11110110B;红灯均亮
MOVDX,42H
OUTDX,AL
MOVCX,2
L1:
INT60H
DECCX
JNZL1
MOVAL,11110101B;1、3绿灯亮,2、4红灯亮
MOVDX.42H
OUTDX,AL
MOVCX,50;持续时间为50*1S
L2:
INT60H
DECCX
JNZL2
INT60H;在原有基础上再亮一秒
MOVCX,2;实现2*2+1=5秒
L3:
MOVAL,11110111B;1、3绿灯灭,2、4红灯亮
MOVDX,42H
OUTDX,AL
INT60H;持续一秒
MOVAL,11110101B;1、3绿灯又亮
OUTDX,AL
INT60H;持续一秒
DECCX
JNZL3
MOVCX,5
MOVAL,11110011B;1、3黄灯亮,2、4红灯亮
MOVDX,42H
OUTDX.AL
L4:
INT60H
DECCX
JNZL4
MOVCX,30
MOVAL,11101110B;2、4绿灯亮,1、3红灯亮
MOVDX,42H
OUTDX,AL
L5:
INT60H
DECCX
JNZL5
INT60H;在原有基础上,2、4绿灯再亮一秒
MOVCX,2
L6:
MOVAL,11111110B;闪烁2*2+1=5秒,先让绿灯灭
MOVDX,42H
OUTDX,AL
INT60H
MOVAL,11101110B;绿灯又变亮
MOVDX,42H
OUTDX,AL
INT60H
JNZL6
MOVCX,5;2、4黄灯亮5秒
L7:
MOVAL,11011110B
MOVDX,42H
OUTDX,AL
DECCX
JNZL7
JMPLOOP;返回出状态,实现循环
MOVAX,4C00H;返回DOS
INT21H
CODEENDS
ENDSTART
ZICHENGPROCFAR
PUSHAX;保存现场
PUSHCX
MOV60H,00011110B;设置8259A的工作方式
MOV61H,60H;设置ICW2,送中断类型号为60H
INAL,60H;读入OCW1
ANDAL,11111100B;开放IR0和IR1的屏蔽
OUTAL,61H
MOVAL,00100000B;设置OCW2
OUT60H,AL
MOVAL,0AH;非查询方式下读IRR的值
OUT60H,AL
INAL,60H
CMPAL,11H;确定是IR0和IR1到底是哪个中断申请,首先判断是否为同时有
JEIR0
CMPAL,01H;是否为IR0中断申请
JEIR0
CMPAL,00H
JEL1;若无中断申请,返回初始状态
MOVAL,00110001B;执行IR1,设置8253计数器0的工作方式0,十进制计数
MOVDX,53H
OUTDX,AL:
写入控制口
MOVAX,5000H;为计数器0赋初值5000
MOVDX,50H
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVAL,01110001B;设置8253计数器1的工作方式0,十进制计数
MOVDX,53H
OUTDX,AL
MOVAX,0954H为计数器1赋初值954,分两次赋值
MOVDX51H
OUTDX,AL
MOVAL,AH
OUTDX,AL
JMPEXIT
IR0:
MOVAL,10110110B;紧急情况下,两个红灯亮持续进行
MOVDX,42H
OUTDX,AL
EXIT:
MOVAL,20H;结束中断服务子程序
OUT20H,AL
POPAX
POPCX
IRET
ZICHENGENDP
七、设计总结以及心得:
微机原理及应用是一门十分注重理论和实践相结合的课程。
在理论课上,经过反复的练习,我已经充分学习并基本掌握了各种芯片的工作原理、使用方法以及汇编语言的常用编写方法,然而这一切最终必须要应用到实践当中。
本次课程设计通过设计一个交通信号灯的控制系统就提供了这样一个平台,使我更加熟悉对汇编语言的使用和各种芯片尤其是8253、8255A、8259A的认识和应用水平。
设计过程中我采用8253实现设计要求中的准确定时,用8259A管理中断,用8255A负责控制交通灯的亮灭以及闪烁,另外,为了更好地展现8259A的中断优先级判断的功能,参考相应资料的基础上,特地增加了一个紧急情况的中断申请,以此证明其功能。
设计中曾经出现过不少的问题,尤其是在设置各芯片工作方式时出现过很多纰漏,但最终经过检查基本符合设计要求。
设计所需的时间我是通过循环来实现的,当然也可以采用另外的方法,比如对8253多次赋值等,还有就是灯的闪烁的实现,也可以采用改变8253工作方式,让其工作在方式3下产生连续的方波,但此时也要注意时间的控制。
在这个过程中,我也渐渐认识到,作为一个理工科学生,在平时的工作学习中必须注重培养自己的工程性思维,理论联系实际的能力,不能纸上谈兵,一定要把学到的东西充分应用到实际生活中来。
唯一的遗憾就是无法将自己设计的结果仿真出来,也就没有办法看到设计成果,希望今后在各方面的共同努力下可以实现这个愿望。
总之,这次课程设计让我收获很多,相信会对我今后的发展起到至关重要的作用。
八、参考文献:
1、王忠民等.微型计算机原理.西安:
西安电子科技大学出版社.2003年7月
2、李继灿等,《新编16/32位微型计算机原理及应用》,清华大学出版社,2004年
3、洪永强.微机原理与接口技术.北京:
科学出版社.2004年
4、何大兵,《交通信号灯的模拟与控制》,南京工程学院课程设计,指导老师:
李升,2009年6月
5视频:
protel99se基础教程,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 应用 课程设计 代码