微机原理及应用课程设计有代码.docx

上传人:b****4 文档编号:4731149 上传时间:2023-05-07 格式:DOCX 页数:17 大小:258.98KB
下载 相关 举报
微机原理及应用课程设计有代码.docx_第1页
第1页 / 共17页
微机原理及应用课程设计有代码.docx_第2页
第2页 / 共17页
微机原理及应用课程设计有代码.docx_第3页
第3页 / 共17页
微机原理及应用课程设计有代码.docx_第4页
第4页 / 共17页
微机原理及应用课程设计有代码.docx_第5页
第5页 / 共17页
微机原理及应用课程设计有代码.docx_第6页
第6页 / 共17页
微机原理及应用课程设计有代码.docx_第7页
第7页 / 共17页
微机原理及应用课程设计有代码.docx_第8页
第8页 / 共17页
微机原理及应用课程设计有代码.docx_第9页
第9页 / 共17页
微机原理及应用课程设计有代码.docx_第10页
第10页 / 共17页
微机原理及应用课程设计有代码.docx_第11页
第11页 / 共17页
微机原理及应用课程设计有代码.docx_第12页
第12页 / 共17页
微机原理及应用课程设计有代码.docx_第13页
第13页 / 共17页
微机原理及应用课程设计有代码.docx_第14页
第14页 / 共17页
微机原理及应用课程设计有代码.docx_第15页
第15页 / 共17页
微机原理及应用课程设计有代码.docx_第16页
第16页 / 共17页
微机原理及应用课程设计有代码.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理及应用课程设计有代码.docx

《微机原理及应用课程设计有代码.docx》由会员分享,可在线阅读,更多相关《微机原理及应用课程设计有代码.docx(17页珍藏版)》请在冰点文库上搜索。

微机原理及应用课程设计有代码.docx

微机原理及应用课程设计有代码

微机原理及应用课程设计

一、设计题目要求:

设有一十字路口,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基础教程,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2