微机课程设计任务书.docx

上传人:b****1 文档编号:1171806 上传时间:2023-04-30 格式:DOCX 页数:32 大小:173.86KB
下载 相关 举报
微机课程设计任务书.docx_第1页
第1页 / 共32页
微机课程设计任务书.docx_第2页
第2页 / 共32页
微机课程设计任务书.docx_第3页
第3页 / 共32页
微机课程设计任务书.docx_第4页
第4页 / 共32页
微机课程设计任务书.docx_第5页
第5页 / 共32页
微机课程设计任务书.docx_第6页
第6页 / 共32页
微机课程设计任务书.docx_第7页
第7页 / 共32页
微机课程设计任务书.docx_第8页
第8页 / 共32页
微机课程设计任务书.docx_第9页
第9页 / 共32页
微机课程设计任务书.docx_第10页
第10页 / 共32页
微机课程设计任务书.docx_第11页
第11页 / 共32页
微机课程设计任务书.docx_第12页
第12页 / 共32页
微机课程设计任务书.docx_第13页
第13页 / 共32页
微机课程设计任务书.docx_第14页
第14页 / 共32页
微机课程设计任务书.docx_第15页
第15页 / 共32页
微机课程设计任务书.docx_第16页
第16页 / 共32页
微机课程设计任务书.docx_第17页
第17页 / 共32页
微机课程设计任务书.docx_第18页
第18页 / 共32页
微机课程设计任务书.docx_第19页
第19页 / 共32页
微机课程设计任务书.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机课程设计任务书.docx

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

微机课程设计任务书.docx

微机课程设计任务书

摘要

随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的

作用。

多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。

本课程设计是基于微机原理与接口技术的简单应用。

运用所学的微机原理和接口技术知识完成交通灯系统。

通过硬件与软件的结合,用我们刚刚学过的汇编语言编写程序模拟分析了现代城市交通控制与管理问题的现状,结合交通的实际情况阐述了交通灯控制系统的工作原理,给出了一种简单实用的交通灯控制系统的硬件、软件电路设计方案。

该系统适用于单主干道的十字路口。

现假定其主干道为东西方向,次干道为南北方向。

该功能能实现加中断控制和手动控制的方式进行,红绿灯切换时有闪烁功能以警示车辆和行人将进行红绿灯切换。

交通灯的时间控制显示,以固定时间值预先“固化”,每次只是以一定周期交替变化。

但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受认为因素的影响。

采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。

它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。

 

关键词:

交通灯硬件电路软件编程模拟系统

 

十字路口交通信号灯模拟

 

1.设计方案及其比较

本十字路口交通灯控制系统的设计可以采用两种方法,即硬件电路设计和软件编程来模拟交通灯控制系统的情况,硬件电路是通过LED灯来模拟十字路口的交通灯,而软件编写程序则是通过软件的演示界面来模拟十字路口交通灯不同时刻的变化情况;硬件电路的设计中我们需要用到可编程控制芯片8255A和计数器芯片8254,此电路的设计中我们需要先买来各种芯片和一些必要的元器件,弄清楚各个管脚的名称及其相应的功能,再通过电路的接线和调试,直到调试成功并能够完成相应的功能,另一方面,如果我们们使用软件编程,我们首先需要在软件的演示界面上显示出三种不同颜色的LED灯,再通过编程来控制其亮灭,达到延时的效果,此过程主要是要用到BIOS中断及其功能调用和DOS中断及其功能调用,此外不同颜色LED灯的显示还要借助查询工具书来实现,虽然此过程比较复杂,但这是适合现阶段我们的一种设计方法,毕竟买各种芯片和元器件再来连接电路模拟交通灯系统的情况比较困难,难以实现。

下面,我首先介绍一下交通灯控制系统的硬件电路的实现过程,再介绍通过软件编程的实现过程,编程之前首先需要查阅相应的资料,画出整个系统的流程图,编程并进行调试,直到最终得到满意的效果。

2.硬件电路的设计

2.1交通灯电路的设计要求

根据老师给我的设计任务书,我可以得出十字路口交通灯的变化规律如下:

(1)南北路口的绿灯、东西路口的红灯同时亮30秒。

(2)南北路口的黄灯闪烁3次,同时东西路口的红灯继续亮。

(3)南北路口的红灯、东西路口的绿灯同时亮30秒。

(4)南北路口的红灯继续亮,同时东西路口的黄灯闪烁3次。

(5)转1重复。

2.2可编程芯片8255的结构和工作原理

2.2.1可编程芯片8255的内部结构

图2-18255芯片的内部结构图

(1)数据总线缓冲器:

这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。

输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。

(2)三个端口A,B和C:

A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。

B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。

C端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。

(3)A组和B组控制电路:

这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。

方式控制字的高5位决定A组的工作方式,低3位决定B组的工作方式。

对C口按位复位命令字可对C口的每一位实现置位或复位。

A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。

(4)读写控制逻辑:

用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。

2.2.2芯片8255的引脚

8255A的引脚如图2-2所示,分为数据线、地址线、读/写控制线、输入/输出端口线和电源线。

D7~D0(数据线):

三态、双向数据线,与CPU数据总线连接,用来传送数据。

CS:

片选信号线,低电平有效时,芯片被选中。

A1,A0(portaddress):

地址线,用来选择内部端口。

RD:

读出信号线,低电平有效时,允许数据读出。

WR:

写入信号线,低电平有效时,允许数据写入。

RESET:

复位信号线,高电平有效时,将所有内部寄存器清0。

PA7~PA0(端口A):

A口输入/输出信号线。

PB7~PB0(端口B):

B口输入/输出信号线。

PC7~PC0(端口C):

C口输入/输出信号线。

VCC:

+5V电源。

GND:

电源地线。

图2-2芯片8255引脚图

2.2.3芯片8255的工作方式

芯片8255A主要有三种工作方式

方式0---基本输入输出方式;

方式1---选通输入输出方式;

方式2---双向选通输入输出方式。

2.3设计思路和电路原理图

2.3.1设计思路

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

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

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

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

闪烁3次后,再切换到1、3路口方向;之后,重复上述过程。

交通灯系统如图2-3所示。

图2-3十字路口交通灯系统示意图

通过8254计数,每1ms刷新一次,CX计数不为零,计数值减1,刷新1000次,持续一秒钟;使用8254实现了PA7~PA0控制二极管的亮灭,PB7~PA0控制数码管的显示。

通过设置控制字,使8255的C口高四位输出,低四位输入,PC4和PC5对数码管进行位控,让两位十进制数同时显示。

2.3.2红黄绿灯的表示

在设计的过程中我们采用了六个灯,但是需要连接了8根线,所以做了如下的规定:

R表示红灯,G表示绿灯,Y表示黄灯,E表示方向东,W表示方向西,S表示方向南,N表示方向北。

所以在设计中采用如下的规定:

A7~A5分别代表东西方向红黄绿灯,A4~A2分别代表南北方向红黄绿灯,A1~A0无意义。

2.3.3硬件电路的接线图

整个系统硬件电路的接线图如图2-4所示。

图2-4系统硬件电路接线图

8255连接说明如下:

8255数据端口连接系统总线数据段D0~D7

8255RD连接系统IOR

8255WD连接系统IOW

8255CS连接IOY3

8255寄存器地址输入信号A0A1连接系统总线A0A1

8255PA端连接外设二极管(PA端A7~A2对应二极管D7~D2),作为输出

A7~A5分别代表东西方向红黄绿灯,A4~A2分别代表南北方向红黄绿灯,A1~A0无意义。

8255PB端连接外设LED,作为输出

8255PC端低位输入高位输出C0连接8254OUT端作为输入;C4~C5连接X1~X2作为输出,控制LED显示十位个位

8254连接说明如下:

8254数据端口连接系统总线数据段D0~D7

8254RD连接系统IOR

8254WD连接系统IOW

8254CS连接IOY2

8254寄存器地址输入信号A0A1连接系统总线A0A1

8254CLK0连接1KHZ

8254GATE0连接+5V

8254OUT0连接8255C0端

 

.3软件编程模拟交通灯控制系统

3.1编程软件MF2KP

本次编写程序用到的主要是老师给我们的那个小程序,也就是MF2KP,这个软件里面本身也有一些经典的程序,我在编写程序之前先是看了一下这些程序,感觉里面的一些程序模块也是挺有用的,有的也可以借鉴一下;此软件编写程序之后,运行之前需要先看一下程序中出错的地方,按照下面的提示将错误的地方改正过来,这样才能生成相应的文件,否则根本无法调试运行,此软件使用起来比较方便,但是存储容量比较小,有一些比较大的程序不能够在里面运行,这是该软件的缺点。

 

3.2程序流程图

本次软件编程的程序流程图如图3-1所示。

 

N

图3-1程序流程图

 

3.3编程技巧与主要知识点

本次用汇编语言进行编程,下面是编写过程中主要涉及的知识点:

1、视频显示程序设计:

一般由DOS或BIOS调用来完成。

有关显示输出的DOS功能调用不多,而BIOS调用的功能很强,主要包括设置显示方式、光标大小和位置、设置调色板号、显示字符、显示图形等。

用INT10H即可建立某种显示方式。

用DOS功能调用显示技术,把系统功能调用号送至AH,把程序段规定的入口参数,送至指定的寄存器,然后由中断指令INT21H来实现调用。

2、键盘扫描程序设计:

检测键盘状态,有无输入,并检测输入各值。

例:

利用DOS系统功能调用的01号功能,接受从键盘输入的字符到AL寄存器。

3、定时器中断处理程序:

在此中断处理程序中,计数器中断的次数记录在计数单元count中,由于定时中断的引发速率是每秒18.2次,即计数一次为55ms,当count计数值为18时,sec计数单元加一(为1秒)。

例:

在系统定时中断处理程序中,有一条中断指令INT1CH指令,在ROMBIOS中,1CH的处理仅一条IRET指令,实际上它并没有做任何工作而只是为用户提供了一个软中断类型号,所以INT1CH指令每秒也将执行18.2次,设计中可用这个定时周期性工作的处理程序来代替原有的1CH程序,实现定时。

4、显示时间子程序:

将计时单元的二进制转换为十进制数加以显示。

 

3.4源程序清单

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

SHOWLINEMACROSTR,STA,LEN,POS,COL;显示字符串宏

PUSHDX

PUSHBX

PUSHAX

MOVBP,OFFSETSTR;显示起始位置

ADDBP,STA;第几个开始

MOVDX,POS;位置

MOVCX,LEN;长度

MOVBX,COL;颜色

MOVAX,1301H;字符串显示中断

INT10H

POPAX

POPBX

POPDX

ENDM

TIMEBUF0MACROTIME,BUF;显示字符串宏

PUSHBX

PUSHAX

MOVDI,OFFSETBUF

MOVAL,TIME

MOVBL,0AH

MOVAH,00H

DIVBL

ADDAL,30H

ADDAH,30H

MOV[DI],AL

INCDI

MOV[DI],AH

POPAX

POPBX

ENDM

DELAYMACRO;延时一秒

LOCALDLOOP;利用INT1AH/00H取得中断次数(DX),

PUSHAX

PUSHBX

PUSHDX

MOVAH,00H;BIOS调用

INT1AH;55ms引起一次中断,作为定时信号。

ADDDL,18;定时1S,需要18个定时单位

MOVBL,DL

INCBL

DLOOP:

MOVAH,00H

INT1AH

CMPDL,BL;是否累计到1S

JNZDLOOP;没到,继续读

POPDX

POPBX

POPAX

ENDM

DATASEGMENT

TIME_YDB2

TIMEDB10

TIME0DB7

TIME_GDB30

TIME_RDB33

BUF0DB0FH

BUF_XDB'00';定义交通路口

BUF_YDB'00'

BUFDB'00'

TABLE01DB''

TABLE02DB'‘

TABLE03DB

TABLE04DB'',0B3H,'|',0B3H,'|'

TABLE05DB'',0B3H,'',0B3H,'|'

TABLE06DB'',0B3H,'|',0B3H,'|'

TABLE07DB'',0B3H,'N',0B3H,'|'

TABLE08DB'',0B3H,'|',0B3H,'|'

TABLE09DB'',0B3H,'',0B3H,'|'

TABLE10DB13DUP(0C4h),0D9h,'',0C0h,11DUP(0c4h),'|

TABLE11DB'|'

TABLE12DB'',0FH,'|'

TABLE13DB'|'

TABLE14DB'----E--',0FH,'',0FH,'--W---|---------------------------------------------------------------'

TABLE15DB'|'

TABLE16DB'',0FH,'|'

TABLE17DB'|'

TABLE18DB13DUP(0C4H),0BFh,'',0DAH,11DUP(0C4H),'|

TABLE19DB'',0B3H,'',0B3H,'|'

TABLE20DB'',0B3H,'|',0B3H,'|---------------------------------------------------------'

TABLE21DB'',0B3H,'S',0B3H,'|'

TABLE22DB'',0B3H,'|',0B3H,'|

TABLE23DB'',0B3H,'',0B3H,'|'

TABLE24DB'',0B3H,'|',0B3H,'|

STRDB'PleaseinputtimesR:

;G:

;Y:

;[Y/N]'

STR1DB'CHANGETIME'

STR2DB'DOBY'

STR3DB'NIGHT'

STR4DB'Quitsystem[Q]'

STR5DB'NORMAL'

STR6DB'1.Quitsystem[Q]'

STR7DB'2.BacktoNORMAL[B]'

STR8DB'EMERGEN'

STR9DB'X--G,Y--R:

[X];X--R,Y--G:

[Y]'

STRCLDB''

STR10DB':

'

FLGDB0

FLG0DB0

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

MAINPROCFAR

MOVAX,DATA

MOVDS,AX

MOVES,AX

FUNCT:

MOVAH,01H;清除光标

MOVCX,2000H

INT10H

CALLINITIAL

N1:

CALLSHOWTIME

CALLGETCHAR

CMPAL,'C';调整时间

JNELOOP1

CALLCHANGTIME

JMPFUNCT

LOOP1:

CMPAL,'D';手动/自动控制状态

CALLDOBY

LOOP4:

CMPAL,'Q';退出

JNEN1

ESC:

MOVAH,4CH

INT21H

 

DOBYPROCNEAR;开关子函数

MOVFLG,0

OP:

CALLDO

OP4:

CALLGETCHAR;调用输入控制字符

CMPAL,'Y';手动控制下开

JNEOP1

MOVFLG,1

JMPOP

OP1:

CMPAL,'X';手动控制下关

JNEOP2

MOVFLG,2

JMPOP

OP2:

CMPAL,'Q'

JNEOP3;退出

JMPESC

OP3:

CMPAL,'B'

JNEOP4;手动/自动控制

JMPFUNCT

RET

DOBYENDP

DOPROCNEAR;开关子函数

CMPFLG,0

JADO0;

SHOWLINEBUF,0,2,0A12H,000EH;黄灯

SHOWLINEBUF,0,2,1212H,000EH;黄灯

SHOWLINEBUF,0,2,0E0CH,000EH;黄灯

SHOWLINEBUF,0,2,0E18H,000EH;黄灯

JMPDO2

DO0:

CMPFLG,1

JNEDO1

SHOWLINEBUF,0,2,0A12H,0002H;

SHOWLINEBUF,0,2,1212H,0002H;

SHOWLINEBUF,0,2,0E0CH,0004H;

SHOWLINEBUF,0,2,0E18H,0004H;

JMPDO2

DO1:

SHOWLINEBUF,0,2,0A12H,0004H;

SHOWLINEBUF,0,2,1212H,0004H;

SHOWLINEBUF,0,2,0E0CH,0002H;

SHOWLINEBUF,0,2,0E18H,0002H;

SHOWLINEBUF0,0,1,0C12H,0004H

SHOWLINEBUF0,0,1,1013H,0004H

SHOWLINEBUF0,0,1,0E0FH,0002H

SHOWLINEBUF0,0,1,0E16H,0002H

JMPDO3

DO2:

CMPFLG,0

JNEDO4

SHOWLINEBUF0,0,1,0C12H,000EH

SHOWLINEBUF0,0,1,1013H,000EH

SHOWLINEBUF0,0,1,0E0FH,000EH

SHOWLINEBUF0,0,1,0E16H,000EH

JMPDO3

DO4:

CMPFLG,1

JNEDO3

SHOWLINEBUF0,0,1,0C12H,0002H

SHOWLINEBUF0,0,1,1013H,0002H

SHOWLINEBUF0,0,1,0E0FH,0004H

SHOWLINEBUF0,0,1,0E16H,0004H

DO3:

SHOWLINESTR9,0,30,112AH,000FH;

SHOWLINESTR2,0,10,1038H,000FH;

SHOWLINESTR6,0,25,122CH,000FH;

SHOWLINESTR7,0,25,132CH,000FH;

RET

DOENDP

CHANGTIMEPROCNEAR

CALLCHAN

SHOWLINESTR10,0,1,113AH,000FH

MOVAH,01H

INT21H

SUBAL,30H;将输入时间值转化成

MOVBL,10;输出十进制值

MULBL

MOVTIME_R,AL

MOVAH,01H

INT21H

SUBAL,30H

ADDTIME_R,AL

SHOWLINESTR10,0,1,113FH,000FH

MOVAH,01H

INT21H

SUBAL,30H;将输入时间值转化成

MOVBL,10;输出十进制值

MULBL

MOVTIME_G,AL

MOVAH,01H

INT21H

SUBAL,30H

ADDTIME_G,AL

SHOWLINESTR10,0,1,1144H,000FH

MOVAH,01H

INT21H

SUBAL,30H;将输入时间值转化成

MOVBL,10;输出十进制值

MULBL

MOVTIME_Y,AL

MOVAH,01H

INT21H

SUBAL,30H

ADDTIME_Y,AL

CH1:

CALLGETCHAR

CMPAL,'Y'

JECH2

CMPAL,'N'

JNECH1

MOVBL,10

MOVTIME_R,BL

MOVBL,5

MOVTIME_G,BL

MOVBL,4

MOVTIME_Y,BL

CH2:

RET

CHANGTIMEENDP

CHANPROCNEAR

SHOWLINESTR,0,40,1126H,000FH

SHOWLINESTR1,0,10,1038H,000FH

SHOWLINETABLE17,0,25,122CH,000FH

SHOWLINEBUF,0,2,0A12H,000EH;黄灯

SHOWLINEBUF,0,2,1212H,000EH;黄灯

SHOWLINEBUF,0,2,0E0CH,000EH;黄灯

SHOWLINEBUF,0,2,0E18H,000EH;黄灯

SHOWLINEBUF0,0,1,0C12H,000EH

SHOWLINEBUF0,0,1,1013H,000EH

SHOWLINEBUF0,0,1,0E0FH,000EH

SHOWLINEBUF0,0,1,0E16H,000EH

RET

CHANENDP

 

SHOWTIMEPROCNEAR

XORAL,AL

MOVFLG,AL

MOVFLG0,AL

XORAL,AL

MOVAL,TIME_R

MOVTIME,AL

MOVAL,TIME_G

MOVTIME0,AL

S1:

MOVAH,01H

INT16H

JNZS3

DELAY;延时一秒

DECTIME

CMPTIME,-1

JNES2;不等于-1,显示,否则··

CMPFLG,2

JES

CMPFLG,1

JES0

MOVAL,TIME_G

MOVTIME,AL

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

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

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

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