《微机原理及应用》课程设计报告Word下载.docx

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

《微机原理及应用》课程设计报告Word下载.docx

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

《微机原理及应用》课程设计报告Word下载.docx

演示及答辩

2016年1月15日

四、设计成果要求

1.系统硬件设计合理,软件编程达到设计要求。

2.系统硬件结构图和软件流程图绘制清楚规范。

3.设计报告完整规范。

五、考核方式

根据设计任务的完成情况、课程设计报告撰写情况及演示答辩情况采用五级记分制评定成绩。

一、课程设计目的与要求

二、课程设计正文

1.设计题目:

模拟汽车限速

2.设计思想

1)总体设计方案

本设计主要是模拟汽车限速,通过统计开关次数判断汽车处于何种状态并用LED灯及点阵显示出来,并用按键“0”结束系统,按键“1”重启系统。

8253的计数器0、1分别工作在方式0(计数)、3(方波);

用8259来申请中断;

8255用来输出红绿灯状态;

用1片74138和4片74574模拟实验箱上16*16点阵的内部电路设计,用来显示字符;

用几个逻辑门电路和74373/74245芯片模拟实验箱上6位7段数码管的内部电路,并其进行位选。

2)系统主要功能

手动开关模拟行车速度,每按动开关一次产生一次中断,统计按的次数,每10秒采集一次统计结果。

并用数码管不断做精确的10秒倒计时,若按开关次数在6次以内(包括6次),亮绿灯、16*16点阵显示“安全”;

若超过6次(不包括6次),亮黄灯报警、16*16点阵显示“超速”;

若超过8次(不包括8次),亮红灯表示拦截、扬声器报警而且16*16点阵显示“违规”。

3.系统工作原理介绍

1.硬件接口电路设计

(1)74HC138总译码电路如下图,A15需维持1才能保证74HC138正常工作,则

分别对应地址8000H-8FFFH、9000H-9FFFH、0A000H-0AFFFH、0B000H-0BFFFH、0C000H-0CFFFH。

(2)16*16点阵的片选地址为0C000H,则

接入其

.

注:

数据总线低8位AD[0..7]即偶存储体传输数据,即8086的A0需维持0,导致8086的A2、A1接入74HC138的B、A,则16*16点阵的列低八位(CLCK)、列高八位(CHCK)、行低八位(RLCK)、行高八位(RHCK)地址分别为0C000H、0C002H、0C004H、0C006H。

(3)6位7段数码管的片选地址为0B000H,则

接入

数据总线低8位AD[0..7]即偶存储体传输数据,即8086的A0需维持0,导致8086的A3、A2、A1分别接入三个与非门,则数码管位选/键盘列输出(OUTBIT)、数码管段选(OUTSEG)地址分别为0B004H、0B008H。

(4)8253A的片选地址为0A000H,则

[计数器0、1分别工作在方式0(计数)、3(方波)]

A.CLK0、CLK1接入125kHz的时钟源;

B.OUT0持续输出低电平直至2ms后变高电平,OUT1输出的2500Hz方波接出蜂鸣器;

C.GATE0接入电源保证计数器0能持续计数,GATE1接入Q3即8255的PA3口。

数据总线低8位AD[0..7]即偶存储体传输数据,即8086的A0需维持0,导致8086的A2、A1接入8253A的A1、A0,则8253A的计数器0、计数器1、控制器地址分别为A000H、A002H、A006H。

(5)8255A的片选地址为8000H,则

A.PA口输出数据:

PA3、PA2、PA1、PA0分别接出8253的GATE1(控制计数器1是否工作,即决定蜂鸣器是否发声)、红色LED、黄色LED、绿色LED(控制LED的亮灭);

B.PB口读入数据:

PB0接入8253的OUT0(通过读入OUT0状态,判断是否已到2ms)。

数据总线低8位AD[0..7]即偶存储体传输数据,即8086的A0需维持0,导致8086的A2、A1接入8255A的A1、A0,则8255A的PA口、PB口、控制器地址分别为8000H、8002H、8006H。

(6)Proteus的8086模型取的中断号是最后一次IO操作时总线上的数据,而非8259设置的中断号。

担心这个缺陷给后续仿真带来影响,故Proteus中暂时不使用8259A,直接向8086的NMI端接入中断请求信号(由开关提供),上升沿触发中断。

但在实验室中需由8259A提供中断申请,电路也需做出修改。

8259A的片选地址为9000H,则

[IR2端输入中断请求信号(由开关提供)上升沿触发。

]

5.系统调试结果

1.上一个10s之内不按开关,结果为:

绿灯亮,16*16点阵滚动显示“安全”。

2.上一个10s之内按7次开关,结果为:

黄灯亮,16*16点阵滚动显示“超速”。

3.上一个10s之内按12次开关,结果为:

红灯亮,蜂鸣器发出响声,16*16点阵滚动显示“违规”。

三、课程设计总结

1)问题分析与总结

在实验室搭建硬件电路要注意与Proteus上的区别,有些是在proteus上可以连接的,但在实验箱上是没有的。

比如NMI中断,又比如在Proteus上5253芯片有3个计数器,但在实验箱上只有2个计数器。

在实验箱上16*16点阵是可以显示完整的汉字的,但在Proteus上第8列单步运行时是可以被点亮,但全速运行时不能被点亮,这个问题目前还没有被解决。

也是在Proteus仿真中,点阵显示个别汉字时仍看得到闪烁,证明动态显示做得不够好,尝试过几种方法,比如:

扫描换为列扫描;

考虑可能是未消隐带来影响,扫描下一行前,关掉所有行;

原意为2ms扫描一行(对应频率为31.25Hz),实际上还需执行其他指令,会延长扫描时间即降低频率,可能会到达人眼可分辨的区间内,故试图1ms扫描一行,但1s计数次数CX增加至512左右时程序会跑飞,且暂时原因不明,目前尚未能解决这个问题。

2)实验心得

本次试验从最开始的尝试到最后全部完成,历经很长时间,做了很多努力,让我们都非常欣慰,在做实验的过程中,不断尝试,优化,大大提高了我们对专业知识的掌握,设计的过程虽然有点辛苦,但都很开心,我认为这点很重要。

希望每次的实验都可以从兴趣而发,以乐趣结束,不再为书本而苦恼。

相信我们也会越做越好。

另外感谢老师的耐心指导和周围同学们的无私帮助,给了我们很大的帮助。

四、参考文献

[1]马平,姚万业,微机原理及应用,北京:

中国电力出版社,2002.12

附录(设计流程图、程序等)

设计流程图:

源程序及注释:

;

Proteus:

加入数码管,2ms列扫描点阵,使用NMI中断

A8255EQU8000H;

8255的PA口地址

B8255EQU8002H;

8255的PB口地址

K8255EQU8006H;

8255控制器地址

O8259EQU9000H;

8259偶地址

J8259EQU9002H;

8259奇地址

J8253_0EQU0A000H;

8253计数器0地址

J8253_1EQU0A002H;

8253计数器1地址

K8253EQU0A006H;

8253控制器地址

KEYINEQU0B002H;

键盘行读入

OUTBITEQU0B004H;

数码管位选/键盘列输出地址

OUTSEGEQU0B008H;

数码管段选地址

COLLOWEQU0C000H;

点阵列低八位地址

COLHIGHEQU0C002H;

点阵列高八位地址

ROWLOWEQU0C004H;

点阵行低八位地址

ROWHIGHEQU0C006H;

点阵行高八位地址

CODESEGMENT

ASSUMECS:

CODE

START:

CLI;

关中断

8253A初始化(CLK0=CLK1=125000Hz)

MOVDX,K8253

MOVAL,30H;

00110000B

OUTDX,AL;

计数器0:

工作方式0(计数)+二进制

MOVAL,76H;

01110110B

计数器1:

工作方式3(方波)+二进制

MOVDX,J8253_0

MOVAL,0FAH;

计数器0预置值250=0FAH

计数器0持续低电平直至2ms后变高电平

MOVAL,00H

OUTDX,AL

MOVDX,J8253_1

MOVAL,32H;

计数器1预置值50=32H

计数器1输出2500Hz方波

OUTDX,AL

8255初始化

MOVDX,K8255

MOVAL,82H;

10000010B=82H

A口方式0输出,B口方式0输入

非规范装入NMI中断向量

MOVAX,0

MOVDS,AX;

中断向量表段基址0000H

MOVBX,02H*4;

BX为NMI即2号中断向量指针

MOVAX,OFFSETINTP

MOV[BX],AX

INCBX

MOVAX,SEGINTP;

中断子程序INTP入口地址

MOV[BX],AX;

放入NMI中断向量表2号

主程序

MOVDX,A8255

MOVAL,00H;

LED全灭+计时器2停止工作

MOVAX,DATA

MOVDS,AX

STI;

开中断

L8:

MOVBH,5;

速度标志初始化为5

等待定时时间到

L0:

MOVDI,0;

中断统计次数初始化为0

MOVBL,10;

10s计数次数初始化为10

L1:

MOVCX,0;

1s计数次数初始化为0

L2:

MOVDX,B8255

INAL,DX;

读OUT0即PB0口状态

ANDAL,01H;

屏蔽PB口高7位

CMPAL,1;

OUT0输出高电平则2ms到

JNZL2

2ms到则重新启动计数器0

MOVDX,K8253

01110000B

MOVAL,00H

考虑7段数码管显示

CMPBL,9

JLEL6;

BL<

=9转到L6

CALLSMG1;

BL=10调用SMG1

考虑16*16点阵显示

L6:

CMPBH,5

JEL3;

BH=5转到L3

CALLDIAN;

BH!

=5调用DIAN

L3:

INCCX

CMPCX,500

JNZL2;

CX=500则1s到

MOVDX,OUTBIT

MOVAL,0DFH;

11011111B

低电平扫描第1列

MOVDX,KEYIN

读第1列的行键

NOTAL

ANDAL,0FH;

屏蔽无用的高4行

CMPAL,1

JNEL7

CALLSTOP;

AL=1(即按下键'

0'

)调用STOP

JMPL8

L7:

CALLSMG2;

调用SMG2

DECBL

JNZL1;

BL=0则10s到

[空,空,空,空,声,红,黄,绿](高电平:

点灯+计时器1输出方波)

CMPDI,8

JGL5

CMPDI,6

JGL4

MOVAL,01H;

00000001B

DI<

=6即未超速,点绿灯

MOVBH,0

JMPL0

L4:

MOVAL,02H;

00000010B

6<

=8即超速,点黄灯

MOVBH,1

L5:

MOVAL,0CH;

00001100B

DI>

8即严重超速,点红灯+启动扬声器

MOVBH,2

按下键'

停止系统子程序

STOPPROCNEAR

关闭LED和扬声器

关闭6位数码管

MOVDX,OUTSEG

关闭点阵所有列

MOVAL,0FFH

MOVDX,COLLOW

MOVDX,COLHIGH

查询按键'

1'

是否按下(即重启系统)

T0:

CMPAL,2

JNET0

RET;

AL=2(即按下键'

)返回

STOPENDP

数码管动态显示'

10'

子程序

SMG1PROCNEAR

PUSHCX

MOVAX,CX;

AX=CX

MOVCL,2;

CL=2

DIVCL;

AX%CL=CX%2=AH

CMPAH,0

JNZS1

S0:

00000001B选WEI0

MOVAL,3FH;

显示'

JMPS3

S1:

00000010B选WEI1

MOVAL,06H;

S3:

POPCX

RET

SMG1ENDP

数码管静态显示'

9'

~'

SMG2PROCNEAR

PUSHBX

DECBL;

BX=BL

MOVSI,BX;

SI=BX=BL

LEABX,SMGDM

MOVAL,[BX+SI];

显示

POPBX

SMG2ENDP

点阵动态显示汉字子程序

DIANPROCNEAR

选出要扫描的列(每隔4ms扫描下列)

MOVAX,CX

MOVCL,16

AX%CL=CX%16=AH

MOVCL,AH;

CL存放右移次数

选出本列要输出的行数据

SHLAH,1

MOVAL,AH;

AL=AH*2

MOVAH,0

MOVSI,AX;

SI存放行数据的相对位置

向要扫描的列放入低电平

MOVAX,7FFFH;

0111111111111111B

RORAX,CL

MOVAL,AH

选择要输出哪组字:

'

安全'

'

超速'

违规'

SHLBH,1

SHLBH,1;

BH=BH*4

MOVCL,BH;

CL存放组相对TABLE的位置

选择本组要输出的字(第1、第2个字隔1s输出)

MOVAX,BX

MOVBL,2

DIVBL;

BL%2=AH

SHLAH,1;

AH存放字相对组的位置

ADDCL,AH

MOVCH,0;

CX存放字相对TABLE的位置

PUSHSI

MOVSI,CX

LEABX,TABLE

MOVCX,[BX+SI]

MOVBX,CX;

BX存放字相对DATA的位置

POPSI

高电平选择输出的行

MOVDX,ROWHIGH

MOVAL,[BX+SI]

MOVDX,ROWLOW

MOVAL,[BX+SI+1]

DIANENDP

中断服务子程序

INTPPROCNEAR

INCDI

IRET

INTPENDP

CODEENDS;

"

CODE"

逻辑段结束

DATASEGMENT;

DATA"

逻辑段开始

共阴极数码管段码表

SMGDMDB3FH,06H,5BH,4FH;

[0-7]

DB66H,6DH,7DH,07H

DB7FH,6FH,77H,7CH;

[8-F]

DB39H,5EH,79H,71H

字模低电平列扫描,高电平点亮行(先输出高8位,后输出低8位)

安"

Z1_0DB01H,00H,09H,01H,31H,01H,21H,21H

DB21H,62H,21H,92H,0AFH,14H,61H,08H

DB21H,08H,21H,34H,21H,0C4H,21H,02H

DB29H,01H,31H,00H,01H,00H,00H,00H

全"

Z1_1DB01H,00H,01H,02H,02H,02H,04H,22H

DB0AH,22H,12H,22H,22H,22H,0C3H,0FEH

DB22H,22H,12H,22H,0AH,22H,04H,22H

DB02H,02H,01H,02H,01H,00H,00H,00H

超"

Z2_0DB02H,01H,12H,06H,12H,0F8H,12H,04H

DB0FFH,0FEH,12H,22H,12H,22H,42H,02H

DB45H,0F2H,79H,12H,41H,12H,45H,12H

DB43H,12H,7DH,0F2H,00H,02H,00H,00H

速"

Z2_1DB02H,00H,02H,02H,42H,04H,33H,0F8H

DB00H,04H,20H,12H,2FH,22H,29H,42H

DB29H,82H,0FFH,0FAH,29H,82H,29H,42H

DB2FH,22H,20H,12H,00H,02H,00H,00H

违"

Z3_0DB02H,02H,42H,04H,33H,0F8H,00H,04H

DB20H,82H,24H,82H,24H,82H,24H,82H

DB0FFH,0FEH,24H,82H,24H,82H,24H,92H

DB24H,8AH,20H,0F2H,00H,02H,00H,00H

规"

Z3_1DB01H,02H,11H,04H,11H,18H,0FFH,0E0H

DB11H,10H,11H,0DH,01H,02H,7FH,0C4H

DB40H,18H,40H,60H,4FH,80H,40H,7EH

DB40H,01H,7FH,0C1H,00H,07H,00H,00H

字模表(1个字占2字节,1组字占4字节)

TABLEDWZ1_0,Z1_1,Z2_0,Z2_1,Z3_0,Z3_1

DATAENDS;

ENDSTART;

源程序结束

在实验室中,代码须作出以下修改:

地址修改

B8255EQU8001H;

K8255EQU8003H;

J8259EQU9001H;

J8253_1EQU0A001H;

K8253EQU0A003H;

KEYINEQU0B001H;

键盘行输入地址

OUTBITEQU0B002H;

OUTSEGEQU0B004H;

COLHIGHEQU0C001H;

ROWLOWEQU0C002H;

ROWHIGHEQU0C003H;

添加8259A初始化

MOVDX,O8259;

8259A偶地址9000H

MOVAL,13H;

ICW1=00010011B=13H,

上升沿触发+单片+8086必设ICW4

MOVDX,J8259;

8259A奇地址9002H

MOVAL,80H;

ICW2=10000000B=80H,

中断类型号为80H—87H

MOVAL,01H;

ICW4=00000001B=01H,

全嵌套+非缓冲+普通中断结束

非规范装入中断向量

中断向量

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

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

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

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