微机课程设计.doc

上传人:聆听****声音 文档编号:607243 上传时间:2023-04-29 格式:DOC 页数:11 大小:764KB
下载 相关 举报
微机课程设计.doc_第1页
第1页 / 共11页
微机课程设计.doc_第2页
第2页 / 共11页
微机课程设计.doc_第3页
第3页 / 共11页
微机课程设计.doc_第4页
第4页 / 共11页
微机课程设计.doc_第5页
第5页 / 共11页
微机课程设计.doc_第6页
第6页 / 共11页
微机课程设计.doc_第7页
第7页 / 共11页
微机课程设计.doc_第8页
第8页 / 共11页
微机课程设计.doc_第9页
第9页 / 共11页
微机课程设计.doc_第10页
第10页 / 共11页
微机课程设计.doc_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机课程设计.doc

《微机课程设计.doc》由会员分享,可在线阅读,更多相关《微机课程设计.doc(11页珍藏版)》请在冰点文库上搜索。

微机课程设计.doc

二○一二~二○一三学年第一学期

信息科学与工程学院

自动化系

课程设计计

课程名称:

微机原理及应用课程设计

姓名:

饶木军

学号:

201004134218

班级:

1006班

指导教师:

陈洋

二○一三年一月八日

控制交通信号灯

一、设计目的

综合运用本课程知识,利用集成电路设计实现一些中小规模电子电路或者完成一定功能的程序,以复习巩固课堂所学的理论知识,提高程序设计实现系统、绘制系统电路图的能力,为实际应用奠定一定的基础。

采用8086系列CPU构建控制系统,采用并口8255与定时器8253完成交通信号灯的控制。

巩固在课堂上学过的相关知识,加强理论与实践的联系。

通过本课程设计,使学生初步了解微机系统的硬件设备,学会8086系列编程指令的基本功能。

二、设计内容、步骤与要求

1、内容

采用8086系列CPU构建控制系统,采用并口8255与定时器8253完成交通信号灯的控制。

2、设计步骤

1)方案选择和分析;

2)主要设计思路及工作原理;

3)画出硬件接线图;

4)调试出现的问题及解决方法;

5)运行效果及改良措施;

6)提交程序清单。

3.设计要求

设有一个十字路口,1、3为南,北方向,2、4为东西方向,初始态为4个路口的红灯全亮。

之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。

延迟30秒后,1、3路口的绿灯熄灭,而1,3路口的黄灯开始闪烁(1HZ)。

闪烁5次后,1、3路口的红灯亮,同时2、4路口的绿灯亮,2、4路口方向开始通车。

延迟30秒时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁。

闪烁5次后,再切换到1、3路口方向。

之后,重复上述过程。

三.方案设计思想

硬件连接参考方案:

红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4路口的红灯,B,C口类推。

8088工作在最小模式,低八位端口AD0~AD7接到8255和8253的D0~D7,A8~A15通过地址锁存器,接到3—8译码器,译码后分别连到8255和8253的CS片选端。

8253的三个门控端接+5V,CLOCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK2;OUT1产生30秒定时信号;OUT2产生1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。

8255三个口全部工作在方式0,即基本输入输出方式,红绿灯的转换由软件编程实现。

此方案是通过并行接口芯片8255A和8088计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。

方案内容:

可以利用8253产生频率为1HZ的方波来满足黄灯闪烁的频率为1HZ的要求。

分析可知采用两个计数器级联即可,由分频器产生的1MHZ时钟脉冲输入8253通道0,使其工作在方式3,即方波发生器方式。

1MHZ的时钟脉冲其重复周期为T=1s。

通道1和通道2的输入时钟频率为100HZ,通道1作计数器工作在方式1,计数初值30s,计数到30则8255将A口数据输入到8086,8086检测到高电平时,完成30s定时。

通道2工作在方式3,需输出一个1HZ的方波,因此也是工作在方波发生器方式,通过一个或门和8086共同控制黄灯的闪烁,其计数初值为100即64H。

将黄灯的状态量输出到8086及8055的端口PB7和PC7,8086通过检测得知黄灯的状态变化。

每9次状态变化黄灯闪烁5次。

三个通道的门控端均接高电平。

四.工作原理

8086工作在最小模式,将端口AD0-AD7接到8255和8253的D0-D7,AD8-AD15经地址锁存器8282接到三八译码器上,译码后分别连到8255和8253的CS片选端。

红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4路口的红灯,B,C口类推。

out2产生1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。

8255三个口全部工作在基本输入输出方式,红绿灯的转换由软件编程实现。

8253的三个门控端接高电平,clock0接1MHZ的时钟脉冲,out0接clock1、clock2,out1接8086的AD18,8086通过检测AD18来判断是否完成30S定时。

由于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)设计流程图见附录1.

(2)设计程序见附录2.

(3)硬件连接图见附录3.

六.所用芯片说明

8255

1)与CPU连接部分

(1)数据总线DB:

编号为D0~D7,用于8255与CPU传送8位数据。

  

(2)地址总线AB:

编号为A0~A1,用于选择A、B、C口与控制寄存器。

  (3)控制总线CB:

片选信号、复位信号RST、写信号、读信号。

当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。

2)与外设接口部分

(1)A口:

编号为PA0~PA7,用于8255向外设输入输出8位并行数据。

  

(2)B口:

编号为PB0~PB7,用于8255向外设输入输出8位并行数据。

  

(3)C口:

编号为PC0~PC7,用于8255向外设输入输出8位并行数据,当8255工作于应答I/O方式时,C口用于应答信号的通信。

3)控制器

(1)A组控制器:

控制A口与上C口的输入与输出。

  

(2)B组控制器:

控制B口与下C口的输入与输出。

4)引脚功能

RESET:

复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。

  

CS:

芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.  

RD:

读信号线,当这个输入引脚为低跳变沿时,即/RD产生一个低脉冲且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。

  

WR:

写入信号,当这个输入引脚为低跳变沿时,即/WR产生一个低脉冲且/CS=0时,允许CPU将数据或控制字写入8255。

  

D0~D7:

三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。

  

8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在以下三种方式下工作。

  

方式0————基本输入输出方式;方式1————选通输入/出方式;方式2————双向选通输入/输出方式;  

PA0~PA7:

端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。

工作于三种方式中的任何一种;  

PB0~PB7:

端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。

不能工作于方式二;  

PC0~PC7:

端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。

端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。

'不能工作于方式一或二。

  

A1,A0:

地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.  当A1=0,A0=0时,PA口被选择;  

当A1=0,A0=1时,PB口被选择;  

当A1=1,A0=0时,PC口被选择;  

当A1=1.A0=1时,控制寄存器被选择.

8253

1.数据总线缓冲器  

数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。

这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必经之路。

  

2.读/写控制

读/写控制分别连接系统的IOR#和IOW#,由CPU控制着访问8253的内部通道。

接收CPU送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。

A1A0:

端口选择信号,由CPU输入。

8253内部有3个独立的通道,加上控制字寄存器,构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。

这4个端口地址由最低2位地址码A1和A0来选择。

如表所示。

  

3.通道选择  

(1)CS#——片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。

  

(2)RD#、WR#——读/写控制命令,由CPU输入,低电平有效。

RD#效时,CPU读取由A1A0所选定的通道内计数器的内容。

WR#有效时,CPU将计数值写入各个通道的计数器中,或者是将方式控制字写入控制字寄存器中。

CPU对8253的读/写操作。

  

4.计数通道0~2  

每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。

8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。

采用二进制计数时,写入的初值范围为0000H~0FFFFH,最大计数值是0000H,代表65536。

采用BCD码计数时,写入的初值范围为0000~9999,最大计数值是0000,代表10000。

与此计数器相对应,每个通道内设有一个16位计数值锁存器。

必要时可用来锁存计数值。

(特别说明:

8253计数器的值先减1再判断是否为0,为0就中断了,所以最大初始值为0,这样减1以后,不为0,所以为最大的,取决于CF标志位)

定时系数=需要定时的时间/时钟脉冲周期  

①设置通道:

向方式控制字寄存器端口写入方式选择控制字,用于确定要设置的通道及工作方式;  

②计数/定时:

向通道写入计数值,启动计数操作;  

③读取当前的计数值:

向指定通道读取当前计数器值时,8253将计数器值存入锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作。

  

④计数到:

当计数器减1为0时,通过引脚OUTi向外输出“到”的脉冲信号。

  

计数初值输入存放在初值寄存器中,计数开始或重装入时被复制到计数器中。

  

锁存器在非锁存状态,其值随计数器的变化而变化;一旦锁存了计数器的当前值,直到锁存器值被读取后才能解除锁存状态。

方式3:

方波发生器  

工作方式3被称作方波发生器。

任一通道工作在方式3,只在计数值n为偶数,则可输出重复周期为n、占空比为1:

1的方波。

  

进入工作方式3,OUTi输出低电平,装入计数值后,OUTi立即跳变为高电平。

如果当GATE为高电平,则立即开始减“1”计数,OUTi保持为高电平,若n为偶数,则当计数值减到n/2时,OUTi跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值n,实现循环计数。

这时OUTi端输出的周期为n×CLKi周期,占空比为1:

1的方波序列;若n为奇数,则OUTi端输出周期为n×CLKi周期,占空比为((n+1)/2)/((n-1)/2)的近似方波序列。

  

如果在操作过程中,GATE变为无效,则暂停减“1”计数过程,直到GATE再次有效,重新从初值n开始减“l”计数。

  

如果要求改变输出方波的速率,则CPU可在任何时候重新装入新的计数初值n,并从下一个计数操作周期开始改变输出方波的速率。

8086

工作与最小模式下的8086

当引脚接高电平时,CPU工作于最小模式。

此时,引脚信号24~31的含义及其功能如下。

  

⑴IO/M/(memoryI/Oselect):

存储器、I/O端口选择控制信号。

信号指明当前CPU是选择访问存储器还是访问I/O端口。

为高电平时,访问存储器,表示当前要进行CPU与存储器之间的数据传送。

为低电平时,访问I/O端口,表示当前要进行CPU与I/O端口之间的数据传送。

  

⑵WR/(write):

写信号输出低电平有效。

信号有效时,表明CPU正在执行写总线周期,同时由信号决定是对存储器还是对I/O端口执行写操作。

  

⑶INTA/(interruptacknowledge):

可屏蔽中断响应信号输出低电平有效。

CPU通过信号对外设提出的可屏蔽中断请求做出响应。

为低电平时,表示CPU已经响应外设的中断请求,即将执行中断服务程序。

  

⑷ALE(addresslockenable):

地址锁存允许信号输出高电平有效。

CPU利用ALE信号可以把AD15~AD0地址/数据、A19/S6~A16/S3地址/状态线上的地址信息锁存在地址锁存器中。

 

⑸DT/(datatransmitorreceive):

数据发送/接收信号输出三态。

DT/信号用来控制数据传送的方向。

DT/为高电平时,CPU发送数据到存储器或I/O端口;DT/为低电平时,CPU接收来自存储器或I/O端口的数据。

  

⑹DEN/(dataenable):

数据允许控制信号输出三态,低电平有效。

信号用作总线收发器的选通控制信号。

当为低电平时,表明CPU进行数据的读/写操作。

  

⑺HOLD(busholdrequest):

总线保持请求信号输入高电平有效。

在DMA数据传送方式中,由总线控制器8237A发出一个高电平有效的总线请求信号,通过HOLD引脚输入到CPU,请求CPU让出总线控制权。

 

⑻HLDA(holdacknowledge):

总线保持响应信号输出高电平有效。

HLDA是与HOLD配合使用的联络信号。

在HLDA有效期间,HLDA引脚输出一个高电平有效的响应信号,同时总线将处于浮空状态,CPU让出对总线的控制权,将其交付给申请使用总线的8237A控制器使用,总线使用完后,会使HOLD信号变为低电平,CPU又重新获得对总线的控制权。

七.设计小结

这次课程设计的主要目的是运用课程知识,利用集成电路设计实现一些中小规模电子电路或者完成一定功能的程序,以复习巩固课堂所学的理论知识,提高程序设计实现系统、绘制系统电路图的能力,为实际应用奠定一定的基础。

在电路设计方面,芯片之间的连接比较麻烦。

哪些管脚需要使用,哪些管脚需被屏蔽,这些都需要考虑周全。

借助教材及实验指导数上的电路图的连线方法,完成了电路设计过程。

在软件设计方面,主要是寻址的问题。

由于本次课程所设计中,所涉及的芯片比较多,而且各个端口的寻址都有所不同,一旦端口地址弄错了,在实际的操作过程中会出现意想不到的问题。

用的最多的是数字通道接口。

本次课程设计,自己通过查阅资料,更加深入的了解了端口连接,各种设备之间工作的原理,数据线大多和DB连接,而其读入数据或者读出数据,主要是通过CPU控制地址译码电路选通相应的芯片,相应的端口进行数据的读入或者写出,达到最终的目的。

课程设计巩固了课堂知识的学习,而且好多课堂上没弄明白的问题在课程设计的过程中都会遇到,并且这些问题都必须弄清楚后才能继续之后的过程。

课程设计不比平时实验。

做实验时多数是老师给出操作步骤,我们呢就机械性的照搬照做,可以说很能学到什么,虽说自己也好好想了实验该怎么做,程序该怎么写,可多多少少也会受到参考程序的影响,加上实验课时间就那么点,好多问题都不能及时解决。

而这次课程设计给了我足够的时间与精力完完全全自己搞设计,自己发现问题,解决问。

我觉得吧,这样才能学的东西。

六.参考文献

《微机原理、汇编与接口技术》

《汇编语言程序设计》

七.附录

附录1

初始化8255,8253红灯全亮;绿灯、黄灯全灭

2,4绿灯灭黄灯闪烁5次

8253延时30s

1,3红灯亮

2,4绿灯亮

等待黄灯闪烁5次?

1,3绿灯灭

2,4红灯不变

1,3黄灯闪烁

等待8253延时30s时间是否到?

1,3绿灯亮;2,4红灯亮

没有到

没有闪烁五次

附录2

STACKSEGMENTSTACK‘STACK’

DW128DUP(0)

STACKENDS

DATA SEGMENT

PORTCONEQU303H

PORTAEQU300H

PORTBEQU301H

PORTCEQU302H

CONTROLEQU103H

COUNT0EQU100H

DATAENDS

CODESEGMENT

BEGINPROCFAR

ASSUMESS:

STACK,CS:

CODE,DA,DATA

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVDX,PORTCON

MOVAL,80H

OUTDX,AL

MOVDX,CONTROL

MOVAL,37H

OUTDX,AL

MOVDX,PORTA

MOVAL,00H

OUTDX,AL

CALLDELAY1

LED0:

MOVAL,05H

MOVDX,PORTA

OUTDX,AL

MOVDX,PORTC

MOVAL,0AH

OUTDX,AL

CALLDELAY2

MOVAL,0FH

OUTDX,AL

MOVCX,5

LED1:

MOVDX,PORTB

MOVAL,0AH

CALLDELAY1

MOVAL,0FH

OUTDX,AL

CALLDELAY1

LOOPLED1

MOVDX,PORTA

MOVAL,0AH

OUTDX,AL

MOVDX,PORTC

MOVAL,05H

OUTDX,AL

CALLDELAY2

MOVAL,0FH

OUTDX,AL

MOVCX,5

LED2:

MOVDX,PORTB

MOVAL,05H

OUTDX,AL

CALLDELAY1

MOVAL,0FH

OUTDX,AL

CALLDELAY1

LOOPLED2

JMPLED0

DELAY1:

PUSHAX

PUSHCX

MOVCX,0

MOVDX,0

INT1AH

LOP1:

MOVAH,0

INT1AH

CMPDL,9

JNZLOP1

POPCX

POPAX

RET

DELAY2:

PUSHAX

PUSHCX

MOVCX,0

MOVDX,0

INT1AH

LOP2:

MOVAH,0

INT1AH

CMPDX,456

JNZLOP2

POPCX

POPAX

ret

BEGINENDP

CODE ENDS

ENDBEGIN

附录3

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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