微机原理接口课程实习.docx

上传人:b****6 文档编号:7956055 上传时间:2023-01-27 格式:DOCX 页数:12 大小:89.58KB
下载 相关 举报
微机原理接口课程实习.docx_第1页
第1页 / 共12页
微机原理接口课程实习.docx_第2页
第2页 / 共12页
微机原理接口课程实习.docx_第3页
第3页 / 共12页
微机原理接口课程实习.docx_第4页
第4页 / 共12页
微机原理接口课程实习.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

微机原理接口课程实习.docx

《微机原理接口课程实习.docx》由会员分享,可在线阅读,更多相关《微机原理接口课程实习.docx(12页珍藏版)》请在冰豆网上搜索。

微机原理接口课程实习.docx

微机原理接口课程实习

微机原理及接口技术课程实习

 

姓名(学号):

所在小组成员:

班级:

实习课程名:

交通灯控制器设计

所在学院:

信息学院

任课教师:

提交时间:

2014/12/25

 

⏹交通灯控制器设计

摘要:

十字道口的自动红绿灯是交通法规的无声命令,是司机和行人的行为准则。

它具有固定的“红灯—绿灯”转换间隔,并自动切换。

它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。

在正常的情况下,在交通灯的通行与禁止时间控制显示中,如东西、南北两方向各30秒,最后还有3到5秒的闪烁缓冲时间,也就是说两个路口轮流放行,且以2位8段数码管显示剩余时间,但是到了夜间,两个路口均为黄灯闪烁时,可放行。

 

⏹所利用设备及过程:

为交通信号灯的实时控制和管理。

利用并行接口8255A、中断接口8259A和定时器8253A,以及键盘和数码显示电路,设计一套十字路口的交通灯管理系统,通行时间(或禁止时间)30秒,准备时间3秒,在准备时间里黄灯闪烁3次,闪烁频率为0.5秒,周而复始。

用LED数码管倒计时显示时间。

⏹总体设计

芯片选择

1.用实验系统8255A实现对信号灯的控制;2位数码显示用8255A实现控制。

2.用实验系统8235的计数器2定时向实验系统主片8259A的IRQ7请求中断,以实现要求的30秒、3秒钟定时。

实验系统8235的计数器2的CLK2接OPCLK,频率为1.19318MHZ;GATE2已接+5V;定时采用软硬件相结合的方式实现。

3.用实验系统的发光二极管模拟红绿灯。

注:

8259A的端口地址为:

20H、21H8255A的端口地址为:

端口A-60H、端口B-61H、端口C-62H、控制端口-63H8253的端口地址为:

计数器0-40H、计数器1-41H、计数器2-42H、控制寄存0-43H。

设计思想

设计数器2的计数初值为59520,由于CLK2接脉冲信号,频率为1.193MHZ,所以每50ms中断一次。

利用CX对不同的状态时间计数,用来实现计数器2对1秒,3秒钟定时。

中断子程序分为数码显示刷新部分和红绿黄灯,各种状态切换部分。

每20次中断即刷新LED显示。

交通灯由8255的C端口输出的数字量控制。

 

⏹线路图设计

 

⏹流程图设计

 

⏹详细设计

设计源程序

1.数据段定义

T1DB00H

T2DB03H

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

用T1作为个位取数的指针

用T2作为十位取数的指针

2.芯片及其端口的初始化

INAL,21H;

ANDAL,08H

OUT21H,AL

MOVAL,80H;初始化8255,A,B,C三口均工作在方式0

OUT63H,AL

MOVAL,0B6H;初始化8253,计数器#2工作在方式3,产生方波信号

OUT43H,AL

MOVAX,59500;

OUT42H,AL;C口传出数据,先传低4位,然后传高4位

MOVAL,AH

OUT42H,AL

3.写IRQ6和IRQ7

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ7

ADDAX,2000H

MOVSI,003CH

MOV[SI],AX

MOVAX,0000H

MOVSI,003EH

MOV[SI],AX

POPDS

CLI

PUSHAX

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ6

ADDAX,2000H

MOVSI,0038H

MOV[SI],AX

MOVAX,0000H

MOVSI,003AH

MOV[SI],AX

POPDS

POPAX

4.显示红绿灯主程序的设计

分别设了用于显示南北道和东西道的不同段,DEC_60表示在南北方向通向,DEC_45表示在东西方向同行,由于篇幅问题,代码查看下面源程序附件。

⏹调试与运行

程序是一开始几个人一起商量后实现的,无论是在语法上和逻辑上都没有大的问题。

接着用G=0000:

2000运行程序,查看验证结果是否和预想的一样。

⏹结果

经装载入程序后,数码管开始显示30,代表交通灯的二极管,显示东西红灯,南北绿灯亮,每一秒数码管减一,减到3时,南北绿灯闪烁直到零换道显示,东西绿灯亮,南北红灯亮,直到数码管计数到3,绿灯闪烁,如此不断循环。

当按下KK+的时候,无论数码管计数到何数值都重新从30秒开始计数。

⏹总结与体会

初学《微机原理》时,感觉摸不着头绪。

面对着众多的术语、概念及原理性的问题不知道该如何下手。

在了解课程的特点后,我发现,应该以微机的整机概念为突破口,在如何建立整体概念上下功夫。

由于自己没有学号汇编语言,所以在代码理解上非常吃力,有时一些稍复杂的代码都要想很久,这是没有打好基础的缘故。

另外,由于我们是参考了别人的程序设计,所以也没有遇到什么很大的问题。

从这次课程设计中,个人也觉得团队的重要性,分工合作不仅能促进办事效率,往往能事半功倍,一起交流还能获得一些未有的知识与见解。

⏹参考文献

[1]林志贵.微型计算机原理与接口技术.北京:

机械工业出版社,2010

 

⏹附件

源程序:

STACKSEGMENTSTACK

DB64DUP(0)

STACKENDS

DATASEGMENT

T1DB00H

T2DB03H

LEDTALDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,73H;发光二极管序列化

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

CLI

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETLEDTAL

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ7

ADDAX,2000H

MOVSI,003CH

MOV[SI],AX

MOVAX,0000H

MOVSI,003EH

MOV[SI],AX

POPDS

CLI

PUSHAX

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ6

ADDAX,2000H

MOVSI,0038H

MOV[SI],AX

MOVAX,0000H

MOVSI,003AH

MOV[SI],AX

POPDS

POPAX

CLI

PUSHAX

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ2

ADDAX,2000H

MOVSI,0034H

MOV[SI],AX

MOVAX,0000H

MOVSI,0036H

MOV[SI],AX

POPDS

POPAX

INAL,21H;开IRQ7,IRQ6,IRQ2中断源

ANDAL,3BH

OUT21H,AL

MOVAL,80H;初始化8255,A,B,C三口均工作在方式0

OUT63H,AL

MOVAL,0B6H;初始化8253,计数器2工作在方式3,产生方波信号

OUT43H,AL

MOVAX,59500;传入50毫秒的初值

OUT42H,AL;C口传出数据,先传低4位,然后传高4位

MOVAL,AH

OUT42H,AL

MLOAD:

MOVT1,00H;初始值显示30秒,并开始倒计时,个位是0

MOVT2,03H;设置十位是3

COUNT_1:

MOVCX,14H;作为1秒的中断次数计数器,南北道倒计时程序

DEC_60:

STI;开中断

CALLDISP1

CMPT2,00H;判断十位是否减到0,如果不是则保持南北道绿灯亮

JNZK1

CMPT1,03H;判断个位是否为3秒,如果是则用全部的灯闪烁表示黄灯

JGK1

MOVAL,33H;此处灯显示状态不变

OUT62H,AL

CMPCX,0AH;比较是否是10,进行闪烁。

JGK2

MOVAL,3FH;绿灯二极管灭

OUT62H,AL

JMPK2

K1:

MOVAL,33H;显示南北干道绿灯亮通行

OUT62H,AL

K2:

CMPCX,00H;判断是否到了一秒,然后倒计时减1

JNZDEC_60

CMPT1,03H;如果够1秒,且个位大于3秒

JGLIGHT_60

CMPT2,00H;小于3秒判断十位是否为零?

唔为零,则跳到判断各位是否为零

JNZN1

TESTT1,0FFH;判断是否个位、十位均减到0

JNZLIGHT_60;不是则继续倒计时

JMPSLOAD;是则(标志位ZF=0)跳转到东西干道程序

N1:

TESTT1,0FFH;此处的功能是判断个位是否为0,且十位不为0

JNZLIGHT_60

MOVT1,09H;个位为0则使个位为9

DECT2;十位减1

JMPCOUNT_1

LIGHT_60:

DECT1;个位减一秒

JMPCOUNT_1

SLOAD:

MOVT1,00H

MOVT2,03H

COUNT_2:

MOVCX,14H;东西干道倒计时程序

DEC_45:

STI;开中断

CALLDISP1

CMPT2,00H;判断十位是否减到0,如果不是东西道绿灯亮

JNZK3

CMPT1,03H;判断各位是否为3秒,如果是则用全部的灯闪烁表示黄灯

JGK3

MOVAL,0CCH;此处灯显示状态不变

OUT62H,AL

CMPCX,0AH

JGK4

MOVAL,0CFH;绿灯二极管灭

OUT62H,AL

JMPK4

K3:

MOVAL,0CCH;显示东西干道绿灯亮通行

OUT62H,AL

K4:

CMPCX,00H;判断是否到了一秒,然后倒计时减1

JNZDEC_45

CMPT1,03H

JNBELIGHT_45

TESTT2,0FFH

JNZN2

TESTT1,0FFH;判断是否个位、十位均减到0

JNZLIGHT_45;不是则继续倒计时

JMPMLOAD;是则(标志位ZF=0)跳转到南北道程序,依次循环

N2:

TESTT1,0FFH;此处的功能是判断个位是否为0,且十位不为0

JNZLIGHT_45

MOVT1,09H;是则使个位为9

DECT2;十位减1

JMPCOUNT_2

LIGHT_45:

DECT1

JMPCOUNT_2

IRQ7:

DECCX;确定是否为1秒的中断服务程序

MOVAL,20H

OUT20H,AL

IRET

IRQ6:

;kk1控制

MOVT1,00H

MOVT2,03H

MOVAL,20H;从三十秒重新开始计数

OUT20H,AL

JMPCOUNT_1

IRET

IRQ2:

MOVT1,00H

MOVT2,00H

MOVAL,21H

OUT20H,AL

MOVAL,0F0H

OUT62H,AL

CALLDELAY

MOVAL,0FFH

OUT62H,AL

JMPIRQ2

IRET

DISP1PROCNEAR;显示子程序_1,用来显示8段数码管中0-9数字。

MOVDL,0FEH

MOVSI,OFFSETT1;显示内容首地址送SI

L1:

MOVAL,DL;点亮最左边的显示器,位码送AL

TESTAL,04H;判断是否点亮了从右往左的第二个LED

JZEND1;已经点亮了

OUT60H,AL;位码送A口

ROLAL,01H;改变位码

MOVDL,AL;位码送DL保存

MOVAL,[SI];去要显示的字符

XLAT;把显示字符换成相应的8断段码

OUT61H,AL;显示字符的8段码送端口B

CALLDELAY;延时,1位显示器点亮的时间

INCSI;地址加1

JMPL1

END1:

RET

DISP1ENDP

DELAYPROCNEAR;软件延时子程序_1:

延时5毫秒

PUSHDX

PUSHAX

MOVDX,20

LOOP1:

MOVAX,10

L4:

DECAX

JNZL4

DECDX

JNZLOOP1

POPAX

POPDX

RET

DELAYENDP

CODEENDS

ENDSTART

 

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1