交通灯设计82558254附连线图和源代码.docx

上传人:b****6 文档编号:16740815 上传时间:2023-07-17 格式:DOCX 页数:35 大小:357.34KB
下载 相关 举报
交通灯设计82558254附连线图和源代码.docx_第1页
第1页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第2页
第2页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第3页
第3页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第4页
第4页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第5页
第5页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第6页
第6页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第7页
第7页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第8页
第8页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第9页
第9页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第10页
第10页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第11页
第11页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第12页
第12页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第13页
第13页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第14页
第14页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第15页
第15页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第16页
第16页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第17页
第17页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第18页
第18页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第19页
第19页 / 共35页
交通灯设计82558254附连线图和源代码.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

交通灯设计82558254附连线图和源代码.docx

《交通灯设计82558254附连线图和源代码.docx》由会员分享,可在线阅读,更多相关《交通灯设计82558254附连线图和源代码.docx(35页珍藏版)》请在冰点文库上搜索。

交通灯设计82558254附连线图和源代码.docx

交通灯设计82558254附连线图和源代码

 

西安郵電學院

硬件课程设计报告

题目:

微机原理与接口课程设计

院系名称:

计算机学院

专业名称:

软件工程

班级:

软件0802

*******

学号(8位):

********

******

设计起止时间:

2011年05月23日~2011年05月27日

 

一、设计目的

通过可编程并行接口芯片8255A和可编程定时器/计数器芯片8253/8254以及中断控制器8259实现十字路口交通灯的模拟控制,进一步掌握并行接口和定时器/计数器及数码管控制的实际应用。

二、设计内容

1.用试验台提供的发光二极管(红绿黄各两支,共六支)作为南北路口(红绿黄各一支)和东西路口(红绿黄各一支)的模拟交通灯。

2.用可编程并行接口芯片8255A控制模拟交通灯的亮与灭和数码管的倒计时显示。

3.用可编程定时器/计数器芯片8253实现模拟交通灯亮与灭的时间延迟控制。

4.用数码管作为模拟交通灯亮与灭的时间延迟控制的倒计时显示。

5.用汇编语言编程使六个灯按交通灯变化规律“亮/灭”。

交通灯变化规律要求:

①南北路口的绿灯,东西路口的红灯同时亮30秒,且数码管30秒倒计时显示。

②南北路口的黄灯闪烁3秒(三亮三灭),同时东西路口的红灯继续亮,且数码管3秒倒计时显示。

③南北路口的红灯,东西路口的绿灯同时亮20秒,且数码管20秒倒计时显示。

④南北路口的红灯继续亮,同时东西路口的黄灯闪烁3秒(三亮三灭),且数码管3秒倒计时显示。

⑤转①重复

按压“东西紧急键”,则东西方向绿灯,南北方向红灯;再次按压“东西紧急键”,解除东西紧急通行状态。

(“东西紧急键”可是键盘键,亦可是逻辑开关键)

按压“南北紧急键”,则南北方向绿灯,东西方向红灯;再次按压“南北紧急键”,解除南北紧急通行状态。

(“南北紧急键”可是键盘键,亦可是逻辑开关键)

键退出程序。

备注:

1、按键用8255A芯片的PC口实现或用键盘模拟实现。

2、8253定时到可以通过8259,用中断的方式实现定时器。

3、也可以用软件监测8253计数状态实现定时。

4、也可以用纯软件延时方式实现本题目。

三、概要设计

由于本设计要使用到8254和8255。

因此对其分块实现。

1.流水灯设计:

做该设计是为了熟悉编程环境,并借此熟悉8255的基本工作原理。

功能模块图:

 

图3-1流水灯功能模块

功能描述:

使SW-LEDUNIT的D0-D7循环被点亮。

2.用8255与LEDKEYBOARDUNIT相连实现八段数码管的静态显示。

功能模块图

 

图3-2LED静态显示

功能描述:

在程序中给定一位数值,将其显示在LED数码管上。

3.用8255与LEDKEYBOARDUNIT相连实现八段数码管的动态显示

功能模块图:

 

 

图3-3LED动态显示

功能描述:

给定一个数值,使其在LED灯上显示,并且是显示两位(视觉效果),然后将该数减一显示,直到减为0。

4.交通灯控制(软延时)

功能模块图:

 

图3-4交通灯控制

功能描述:

模拟交通灯的实现,是SW-LED上的灯模拟红绿灯,数码管模拟倒计时显示器,先是南北路口绿灯亮,东西路口红灯亮,倒计时30秒,南北路口黄灯亮,东西路口红灯亮,倒计时5秒,南北路口红灯亮,东西路口绿灯亮,倒计时30秒,南北路口红灯亮,东西路口黄灯亮,倒计时5秒,然后不停的循环这四种状态。

可按任意键退出该程序,K0键为东西紧急键,K1为南北紧急键。

按动K0(K0=1)后东西方向一直为绿灯,南北方向一直为红灯,直到再次搬动K0使K0=0时,南北绿灯,东西红灯,恢复上述四种状态的循环。

按动K1使K1=1时,南北一直绿灯,东西一直红灯,知道再次按动K1,使K1=0,使南北红灯,东西绿灯,恢复上述四种状态的循环。

在SW-LEDUNIT中D7、D5、D3分别表示东西方向的红、绿、黄灯,D6、D4、D3分别表示南北方向的红、绿、黄灯。

5.交通灯控制(8254)

这部分的功能模块图与功能描述与上述交通灯控制(软延时)相同,只是实现方式有所不同。

四、详细设计

1、用8255实现流水灯,熟悉8255的使用和工作原理。

在该试验中使8255的A口、B口、C口均工作在输出状态下,让B口与SW-LEDUNIT的D0---D7相连,给B口得初值为FE并输出在LED灯上显示,然后让该值循环右移并显示,在每次输出时,使用软件延时,使灯的每次变换间隔大约为1秒

数据流程图为:

 

图4-1流水灯数据流程图

2、用8255与LEDKEYBOARDUNIT相连实现八段数码管的静态显示。

实验线路图如下图4-2所示:

 

图4-2静态显示实验的连线图

共阴极LED数码管字形代码如下表4-2所示:

表4-3共阴极LED数码管字形显示

字形

共阴极字形代码

字形

共阴极字形代码

字形

共阴极字形代码

0

3FH

6

7DH

C

39H

1

06H

7

07H

d

5EH

2

5BH

8

7FH

E

79H

3

4FH

9

6FH

F

71H

4

66H

A

77H

00H

5

6DH

b

7CH

实验步骤:

设计实验线路图如上图4-2所示,完成连接。

编写程序实现将给定数值用LED的前两位显示出来:

8255初始化:

MOVDX,1463H

MOVAL,10000001B;初始化A,B,C口都工作在方式0,都为输出口

OUTDX,AL

LED显示数NUM:

MOVBX,OFFSETTABLE1;取八段数码管表的首地址

MOVAL,NUM

XLAT;查表,找出NUM对应的共阴极字形代码

MOVDX,1461H

OUTDX,AL;将该代码送到B口

打开试验箱电源,进入纯DOS环境运行程序,观察LED数码管显示情况。

实验流程图如下图4-4所示

图4-4静态显示程序数据流程图

3.用8255与LEDKEYBOARDUNIT相连实现八段数码管的动态显示

实验连线图如下图4-5所示:

 

图4-5动态显示实验的连线图

实验步骤:

设计实验连线图如上图4-5所示,完成连线。

编写程序实现用LED数码管动态显示30—00,先使用软件延时,使其实现30秒得倒计时。

8255初始化:

MOVDX,1463H

MOVAL,10000001B;初始化A,B,C口都工作在方式0,都为输出口

OUTDX,AL

LED动态显示30秒得倒计时:

DISPLYPROC

MOVNUM,25;使十位数与个位数循环交替显示25次

MOVBX,OFFSETTABLE1

SHOW:

MOVAL,NUM1;显示十位数

XLAT;查表

MOVDX,1461H

OUTDX,AL;将该数的LED数码管字形代码送到B口

MOVDX,1460H;接通8段代码管的第一位,在LED上显示十位数

MOVAL,0FEH

OUTDX,AL

CALLDELAY

MOVAL,0FFH

OUTDX,AL

MOVAL,NUM2;显示个位数

XLAT

MOVDX,1461H

OUTDX,AL

MOVDX,1460H;接通8段数码管的第二位

MOVAL,0FDH

OUTDX,AL

DECNUM

JNZSHOW

JMPGWSUB;该数字显示完,对其减一

软延时函数为:

DELAYPROCNEAR;该函数延时次数为500*65535,使用双层循环

MOVCX,500

DELAY0:

MOVNUM3,65535

DELAY1:

DECNUM3

JNZDELAY1

LOOPDELAY0

RET

DELAYENDP

数值减一操作的代码段为:

GWSUB:

;倒计时时各位的递减

CMPNUM2,0

JESWSUB;如果各位减为0,则减十位,再使个位为9

DECNUM2

JMPDISPLY;显示该数

SWSUB:

;倒计时时十位的递减

DECNUM1

CMPNUM1,-1

JELEDCHANGE

MOVNUM2,09H

JMPDISPLY;显示该数

软延时解释:

因为LED灯同一时刻只有一个LED灯可显示,而且显示时间很短以至于用人眼无法察觉其变化,因此显示完十位数和个位数之后延时,同一个数个位十位循环交替显示25次,产生视觉停留效果,使人看起来十位和个位同时显示。

动态显示程序流程图如下图4-6所示:

 

图4-6动态显示程序流程图

4.交通灯控制(软延时)

实验连线图如下图4-7所示:

 

图4-7交通灯控制(软延时)连线图

实验步骤:

设计实验连线图如上图4-7所示,完成连线。

编写程序实现交通灯控制,具体实现的功能。

交通灯的四种状态的循环显示:

LEDCHANGE:

;红,绿,黄灯交替显示

DECCONTROL;CONTROL=04H,用来控制灯得状态

CMPCONTROL,03H

JELEDYR;南北黄,东西红

CMPCONTROL,02H

JELEDRG;南北红,东西绿

CMPCONTROL,01H

JELEDRY;南北红,东西黄

CMPCONTROL,00H

JELEDGR;南北绿,东西红

LEDGR:

;初始状态,南北绿,东西红

MOVLEDNUMC,63H

MOVLEDNUMA,0FFH

MOVNUM1,03H

MOVNUM2,00H

MOVCONTROL,04H

JMPLED

LEDYR:

MOVLEDNUMC,73H

MOVLEDNUMA,0BFH

MOVNUM1,00H

MOVNUM2,05H

JMPLED

LEDRG:

MOVLEDNUMC,93H

MOVLEDNUMA,0FFH

MOVNUM1,03H

MOVNUM2,00H

JMPLED

LEDRY:

MOVLEDNUMC,0B3H

MOVLEDNUMA,7FH

MOVNUM1,00H

MOVNUM2,05H

JMPLED

紧急键的控制:

L1:

JMPLEDGR

L2:

JMPLEDRG

EWGPROCNEAR;东西紧急键按下

MOVDX,1462H

MOVLEDNUMC,9FH

MOVAL,LEDNUMC

OUTDX,AL

MOVDX,1460H

MOVLEDNUMA,0FFH

MOVAL,LEDNUMA

OUTDX,AL

MOVDX,1462H;判断东西紧急键是否已结束

INAL,DX

TESTAL,08H

JZL1

JNZEWG

RET

EWGENDP

SNGPROCNEAR;南北紧急键按下

MOVDX,1462H

MOVLEDNUMC,6FH

MOVAL,LEDNUMC

OUTDX,AL

MOVDX,1460H

MOVLEDNUMA,0FFH

MOVAL,LEDNUMA

OUTDX,AL

MOVDX,1462H;判断南北紧急键是否已结束

INAL,DX

TESTAL,04H

JZL2

JNZSNG

RET

SNGENDP

EWG1:

CALLEWG

SNG1:

CALLSNG

EWSNPROC;紧急键的总控函数

MOVDX,1462H

INAL,DX

TESTAL,08H

JNZEWG1

TESTAL,04H

JNZSNG1

RET

EWSNENDP

按任意键退出程序:

DECIDEPROC

MOVAH,0BH;11号功能判断是否有键按下

INT21H

TESTAL,0FFH

JNZEND1

RET

DECIDEENDP

实验流程图,如下图4-8所示:

图4-8交通灯(软延时)流程图

说明:

在上图中为每倒计时一次判断是否有键盘键按下,表示退出,再判断是否有紧急键按下,上图比较简单。

5.交通灯控制(硬件延时--8254)

8255实验连线图如上图4-7所示。

8254实验连线图如下图4-9所示:

 

图4-9交通灯控制8254连线图

实验步骤:

设计实验连线图如上图4-6和4-8所示,完成连线。

更改交通灯控制实验(软件延时)的软延时为硬件延时,使用8254实现倒计时中的延时。

8254的计数初值为:

输入频率/输出频率,本实验要求实现1秒的延时,即OUT输出频率为1秒一次,因此计数初值n=fclk0/fout0=1khz/1hz=1000。

选择8254的0号端口,工作在方式0。

8254的初始化为:

;8254初始化程序段

MOVDX,1443H

MOVAL,00110001B

OUTDX,AL

MOVDX,1440H

MOVAL,00;写入技术初值1000

OUTDX,AL

MOVAL,10

OUTDX,AL

8254的定时,在交通灯控制程序中的应用(更换上述交通灯控制软延时实现方式中的软延时)程序段为:

MOVDX,1462H

INAL,DX

TESTAL,03H

JZSHOW

MOVDX,1440H

MOVAL,00

OUTDX,AL

MOVAL,10

OUTDX,AL

JMPGWSUB

8254控制倒计时的流程图如下图4-10所示:

 

图4-108254控制倒计时的流程图

五.测试数据及运行结果

正常测试数据1:

红绿灯显示时间为30秒,黄灯为5秒

运行结果1:

东西方向红灯(D7)亮,南北方向绿灯(D4)亮,倒计时30秒,30秒倒计时结束后,东西方向红灯(D7)亮,南北方向黄灯(D2)亮,倒计时5秒,5秒倒计时结束后,东西方向绿灯(D5)亮,南北方向红灯(D6)亮,倒计时30秒,30秒倒计时结束后,东西方向黄灯(D3)亮,南北方向红灯(D6)亮,倒计时5秒,5秒倒计时结束后,一直重复上述的状况,在这中间如果将K0键推上去,则东西绿灯(D5)亮,南北方向红灯(D6)亮,不进行倒计时,及LED数码管不亮。

将K0键推下来,则恢复上述的循环状态,从东西方向红灯(D7)亮,南北方向绿灯(D4)亮开始。

若将K1推上去,则南北方向绿灯(D4)亮,东西方向红灯(D7)亮,不进行倒计时,将K1键推下来,则恢复上述的循环状态,从则东西绿灯(D5)亮,南北方向红灯(D6)亮开始。

若K0和K1都推上去,则按K0紧急键处理,当K0推下来,K1还未退下来,则处理K1紧急键。

在这过程中,如果键盘有任意键按下,则退出整个程序。

正常测试数据2:

红绿灯显示时间为10秒,黄灯为5秒

运行结果:

类似上述运行结果,只是将30倒计时改为10倒计时。

正常测试数据3:

红绿灯显示时间为5秒,黄灯为3秒

运行结果:

类似上述运行结果,只是将30倒计时改为5倒计时,5秒倒计时改为3秒倒计时。

不正常测试数据1:

红绿灯显示时间为-1秒,黄灯为5秒

运行结果:

程序会出错,因为在LED数码管字形代码表中无对应的负数。

不正常测试数据2:

红绿灯显示时间为J,黄灯为5秒

运行结果:

程序会出错,因为在LED数码管字形代码表中无对应的J字母。

六.调试情况,设计技巧及体会

调试情况:

1.流水灯实验中遇到的问题是灯不闪烁。

原因是:

延时时间太短以至灯得闪烁过快,肉眼无法察觉。

2.八段数码管中遇到的问题是不知该如何实现让两位数同时显示。

解决方法:

使同一个数值的个位数与十位数交替显示产生视觉欺骗效果。

在单步调试时发现个位数会在十位显示一遍,然后十位灭再在个位显示。

原因:

先显示十位数时已将第一位的LED数码显示管接通,因此在显示完十位数后,便立即关闭显示十位数的数码管,个位同样,显示完后立即关闭。

3.使用8254定时时时间间断过短,不足一秒。

原因是在判断是否有输出时出现逻辑错误,已改正。

4.东西,南北紧急键及按任意键结束的反应又是会有点慢,原因:

对这三种情况的判断是现在一个较大的循环外面,因此当按键离巡行到该循环之间要执行的程序段过长时,反应会稍微慢点。

体会:

通过本次微机原理与接口的实验,使我更清楚,更深层的了解了8255和8254的工作原理。

并且更加熟悉汇编语言的编写。

七.参考文献

《微机接口技术试验指导书》

《微机接口技术及其应用》

八.附录:

源代码(电子版)

 

以下为本实验的完整电路来连线图和程序:

 

 

;PORT-BEQU1441H

DATASEGMENT

;0123456789

TABLE1DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

NUMDW?

;循环显示的控制数

NUM1DB?

;十位数的显示

NUM2DB?

;个位数的显示

NUM3DB?

;延时时间控制数

CONTROLDB?

LEDNUMADB?

;用来控制东西,南北方向的红绿灯显示情况

LEDNUMCDB?

;GRDB06FH;南北路口绿灯亮,东西路口红灯亮

;YRDB07BH;

;RGDB09FH

;RYDB0B7H

TIMEDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

;8255初始化程序段0

MOVDX,1463H

MOVAL,10000001B;初始化A口,B口,C口高四位都工作在方式0,都为输出口,C口低四位为输入口

OUTDX,AL

;---------------------------------------------------------------

;8254初始化程序段

MOVDX,1443H

MOVAL,00110001B

OUTDX,AL

MOVDX,1440H

MOVAL,00

OUTDX,AL

MOVAL,10

OUTDX,AL

;---------------------------------------------------------------

MOVNUM1,03H

MOVNUM2,00H

MOVLEDNUMC,63H;东西方向的红灯,南北方向绿

MOVLEDNUMA,0FFH

MOVCONTROL,04H

LED:

MOVDX,1462H;LED灯显示初始化,显示东北方向的红灯

MOVAL,LEDNUMC

OUTDX,AL

MOVDX,1460H

MOVAL,LEDNUMA

OUTDX,AL

CALLDISPLY

GWSUB:

;倒计时时各位的递减

CMPNUM2,0

JESWSUB

DECNUM2

JMPDISPLY

SWSUB:

;倒计时时十位的递减

DECNUM1

CMPNUM1,-1

JELEDCHANGE

MOVNUM2,09H

JMPDISPLY

LEDCHANGE:

;红,绿,黄灯交替显示

DECCONTROL

CMPCONTROL,03H

JELEDYR

CMPCONTROL,02H

JELEDRG

CMPCONTROL,01H

JELEDRY

CMPCONTROL,00H

JELEDGR

JMPEND1

LEDGR:

MOVLEDNUMC,63H

MOVLEDNUMA,0FFH

MOVNUM1,03H

MOVNUM2,00H

MOVCONTROL,04H

JMPLED

LEDYR:

MOVLEDNUMC,73H

MOVLEDNUMA,0BFH

MOVNUM1,00H

MOVNUM2,05H

JMPLED

LEDRG:

MOVLEDNUMC,93H

MOVLEDNUMA,0FFH

MOVNUM1,03H

MOVNUM2,00H

JMPLED

LEDRY:

MOVLEDNUMC,0B3H

MOVLEDNUMA,7FH

MOVNUM1,00H

MOVNUM2,05H

JMPLED

END1:

MOVAH,4CH

INT21H

DECIDEPROC;按任意键退出函数

MOVAH,0BH

INT21H

TESTAL,0FFH

JNZEND1

RET

DECIDEENDP

 

DELAYPROCNEAR;延时函数

MOVCX,500

DELAY0:

MOVNUM3,65535

DELAY1:

DECNUM3

JNZDELAY1

LOOPDELAY0

RET

DELAYENDP

L1:

JMPLEDGR

L2:

JMPLEDRG

EWGPROCNEAR;东西紧急键(K0)处理函数

MOVDX,1462H

MOVLEDNUMC,9FH

MOVAL,LEDNUMC

OUTDX,AL

MOVDX,1460H

MOVLEDNUMA,0FFH

MOVAL,LEDNUMA

OUTDX,AL

MOVDX,1462H

INAL,DX

TESTAL,08H

JZL1

JNZEWG

RET

EWGENDP

SNGPROCNEAR;南北紧急键(K1)处理函数

MOVDX,1462H

MOVLEDNUMC,6FH

MOVAL,LEDNUMC

OUTDX,AL

MOVDX,1460H

MOVLEDNUMA,0FFH

MOVAL,LEDNUMA

OUTDX,AL

MOVDX,1462H

INAL,DX

TESTAL,04H

JZL2

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

当前位置:首页 > 法律文书 > 调解书

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

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