哈工大单片机原理及应用实验报告.docx

上传人:b****1 文档编号:22791891 上传时间:2023-04-28 格式:DOCX 页数:27 大小:206.64KB
下载 相关 举报
哈工大单片机原理及应用实验报告.docx_第1页
第1页 / 共27页
哈工大单片机原理及应用实验报告.docx_第2页
第2页 / 共27页
哈工大单片机原理及应用实验报告.docx_第3页
第3页 / 共27页
哈工大单片机原理及应用实验报告.docx_第4页
第4页 / 共27页
哈工大单片机原理及应用实验报告.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

哈工大单片机原理及应用实验报告.docx

《哈工大单片机原理及应用实验报告.docx》由会员分享,可在线阅读,更多相关《哈工大单片机原理及应用实验报告.docx(27页珍藏版)》请在冰豆网上搜索。

哈工大单片机原理及应用实验报告.docx

哈工大单片机原理及应用实验报告

 

微处理器原理与应用

实验报告

姓名:

李声勇

同组人:

袁钟达,张秋实

学号:

1080510123

班级:

0805101

指导教师:

张云

院系:

电子与信息工程学院

1实验一简单I/O口扩展实验

(一)交通灯控制实验

1.1实验要求

扩展实验箱上的74LS273作为输出口,控制八个发光二极管燃灭,模拟交通灯管理。

1.2实验目的

1.学习在单片机系统中扩展简单I/O接口的方法

2.学习数据输出程序的设计方法

3.学习模拟交通灯控制的实现方法

1.3实验原理

要完成本实验,首先必须了解交通路灯的燃灭规律。

本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。

不妨将L1、L3、L5作为东西方向的指示灯,将L2、L4、L6作为南北方向的指示灯。

而交通灯的燃灭规律为:

初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。

闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。

闪烁若干次后,再切换到东西路口方向,重复上述过程。

各发光二极管共阳极,阴极接有与非门,因此使其点亮应使相应输入端为高电平。

1.4实验内容(包括实验电路和程序流程图)

1.5实验结果

成功模拟交通灯管制系统,红绿灯方向指示正常,黄灯闪烁正常

1.6实验结果讨论分析

实验中发现交通灯在黄灯和红绿灯切换的时候有抖动和延时,初步估计是单片机定时系统不稳定以及程序的延时冗余没有添加所导致。

1.7实验程序代码

变量说明:

R1、R2、R3用来做延时控制变量。

EW段表示东西导通南北截止;

SNBY是SNSTANDBY的缩写,表示南北准备;

SN段表示南北导通东西截止。

延时控制由若干延时控制单元组合而成(参考了一下老师的程序)。

片选地址和显示单元调用了老师的部分程序。

PORTEQU0CFA0H;片选地址CS0

CSEGAT0000H

LJMPBEGIN

CSEGAT4100H

BEGIN:

MOVA,#03H;1、2亮,其余灭

ACALLSHOW;调用273显示单元

ACALLT03;延时3秒

EW:

MOVA,#12H;东西导通;南北截止

ACALLSHOW

ACALLT10;延时10秒

MOVA,#02H;东西截止;南北截止

ACALLSHOW

SNBY:

MOVA,#04H;东西黄灯闪烁;南北截止

ACALLSHOW

ACALLT02;东西黄灯5次闪烁程序

MOVA,#00H

ACALLSHOW

ACALLT02

MOVA,#04H

ACALLSHOW

ACALLT02

MOVA,#00H

ACALLSHOW

ACALLT02

MOVA,#04H

ACALLSHOW

ACALLT02

MOVA,#00H

ACALLSHOW

ACALLT02

MOVA,#04H

ACALLSHOW

ACALLT02

MOVA,#00H

ACALLSHOW

ACALLT02

MOVA,#04H

ACALLSHOW

ACALLT02

MOVA,#00H;东西黄灯闪烁程序结束

ACALLSHOW

ACALLT02;延时0.2秒

MOVA,#02H;东西路口黄灯灭;南北路口红灯亮

ACALLSHOW

ACALLT02;延时0.2秒

MOVA,#03H;东西南北都截止

ACALLSHOW

ACALLT02;延时0.2秒

MOVA,#21H;东西截止;南北导通

ACALLSHOW

ACALLT10;延时10秒

MOVA,#01H;东西截止;南北截止

ACALLSHOW

SN:

MOVA,#08H;东西截止,南北准备

ACALLSHOW;南北黄灯闪烁程序

ACALLT02

MOVA,#00H

ACALLSHOW

ACALLT02

MOVA,#08H

ACALLSHOW

ACALLT02

MOVA,#00H

ACALLSHOW

ACALLT02

MOVA,#08H

ACALLSHOW

ACALLT02

MOVA,#00H

ACALLSHOW

ACALLT02

MOVA,#08H

ACALLSHOW

ACALLT02

MOVA,#00H

ACALLSHOW

ACALLT02

MOVA,#08H

ACALLSHOW

ACALLT02

MOVA,#00H;南北黄灯闪烁截止

ACALLSHOW

ACALLT02;延时0.2秒

MOVA,#01H;东西截止;南北截止

ACALLSHOW

ACALLT02;延时0.2秒

MOVA,#03H;东西南北都截止

ACALLSHOW

ACALLT02;延时0.2秒

JMPEW;转EW循环

T10:

MOVR1,#100;延时10秒

JMPTU1

T03:

MOVR1,#30;延时3秒

JMPTU1

T02:

MOVR1,#02;延时0.2秒

TU1:

MOVR2,#200

TU2:

MOVR3,#126

TU3:

DJNZR3,TU3

DJNZR2,TU2

DJNZR1,TU1

RET

SHOW:

MOVDPTR,#PORT;273显示单元

MOVX@DPTR,A

RET

END

2实验二简单I/O口扩展实验

(二)

2.1实验要求

利用74LS244作为输入口,读取开状态,并将此状态通过发光二极管显示出来。

2.2实验目的

1、学习在单片机系统中扩展简单的I/O口的方法。

2、学习数据输入,输出程序的编制方法。

2.3实验原理

MCS-51外部扩展空间很大,但数据总线口和控制信号线的负载能力是很有限的。

若需要扩展的芯片较多,则MCS-51总线口的负载过重,74LS244是一个扩展输入口,同时也是一个单向驱动器,以减轻总线口的负担。

程序中加了一段延时程序,以减少总线口读写的频繁程度,延时时间约为0.01秒,不会影响显示的稳定。

2.4实验内容(包括实验电路和程序流程图)

2.5实验结果

利用74LS244,成功将开关的状态反应在发光二极管上。

2.6实验结果讨论分析

在发光二极管显示的过程中,有抖动产生,通过消抖开关或者程序延时可以消除抖动。

2.7实验程序代码

CSEGAT0000H

LJMPBEGIN

CSEGAT4100H

INPORTEQU0CFA8H;74LS244端口地址

OUTPORTEQU0CFB0H;74LS273端口地址

BEGIN:

MOVDPTR,#INPORT

DO:

MOVXA,@DPTR;读开关

MOVDPTR,#OUTPORT

MOVX@DPTR,A;显示状态

MOVR1,#10H;延时

T0:

MOVR0,#0FFH

T1:

DJNZR0,T1

DJNZR1,T0

LJMPBEGIN

END

 

3实验三中断实验

——有急救车的交通灯控制实验

3.1实验要求

在实验三的内容基础上增加允许急救车优先通过的要求。

当有急救车到达的时候,两个方向上的红灯亮,以便让急救车通过,假定急救车通过路口的时间为10秒,急救车通过后,交通灯恢复中断前的状态。

本实验以单脉冲为中断申请,表示有急救车通过。

3.2实验目的

1、学习外部中断技术的基本使用方法。

2、学习中断处理程序的编程方法。

3.3实验原理

交通灯的燃灭规律见实验三。

本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。

要保护的地方,除了累加器ACC,标志寄存器PSW外,还要注意:

一是主程序中的延时程序和中断处理程序中的延迟程序不能混用,本实验给出的程序中,主程序延迟用的是R3、R4、R5。

中断延迟用的是R1、R2和新的R3。

第二,主程序中每执行一步经74LS273的端口输出数据的操作时,应先将所输出的数据保存到一个单元中。

因为进入中断程序后也要执行往74LS273端口输出数据的操作,中断返回时如果没有恢复中断前74LS273端口锁存器的数据,则显示往往出错,回不到中断前的状态。

还要注意一点,主程序中往端口输出数据操作要先保存再输出,例如有如下操作:

MOVA,#0F0H(0)

MOVXR1,A

(1)

MOVSAVE,A

(2)

程序如果正好执行到

(1)时发生中断,则转入中断程序,假设中断程序返回主程序前需要执行一句MOVA,SAVE指令,由于主程序中没有执行

(2),故SAVE中的内容实际上是前一次放入的而不是(0)语句中给出的0F0H,显示出错,将

(1)、

(2)两句顺序颠倒一下则没有问题。

发生中断时两方向的红灯一起亮10秒,然后返回中断前的状态。

3.4实验内容(包括实验电路和程序流程图)

3.5实验结果

成功在交通灯的正常循环中加入了中断操作,有急救车通过的时候两个红灯均点亮,通过后从寄存器中取出中断前的结果,继续循环。

3.6实验结果讨论分析

实验成功模拟了中断操作,需要注意的是中断钱需要对堆栈进行操作,同时如果不设置恢复程序中断前的数据会较容易丢失。

3.7实验程序代码

变量说明:

R0用来控制黄灯闪烁次数;

R1~R7用来做延时控制变量。

EW段表示东西导通南北截止;

SNBY是SNSTANDBY的缩写,表示南北准备;

SN段表示南北导通东西截止。

延时控制由若干延时控制单元组合而成(这里参考了一下老师的做法)。

片选地址、显示单元调用和读入参考了老师的做法。

OUTPORTEQU0CFB0H;端口地址

SAVEEQU55H;save保存从端口cfa0输出的数据

CSEGAT0000H

LJMPBEGIN

CSEGAT4003H;

LJMPINT

CSEGAT4100H

BEGIN:

SETBIT0

SETBEX0

SETBEA

MOVA,#03H;置首显示码

MOVSAVE,A;保存

ACALLSHOW;显示输出

ACALLT03;延时3秒

EW:

MOVA,#12H;东西导通;南北截止

MOVSAVE,A

ACALLSHOW

ACALLT10;延时10秒

MOVA,#02H;东西截止

MOVSAVE,A

ACALLSHOW

MOVR0,#05H;东西黄灯闪烁5次

SNBY:

MOVA,#06H

MOVSAVE,A

ACALLSHOW

ACALLT02

MOVA,#02H

MOVSAVE,A

ACALLSHOW

ACALLT02

DJNZR0,SNBY

MOVA,#03H;东西南北都截止

MOVSAVE,A

ACALLSHOW

ACALLT02;延时0.2秒

MOVA,#21H;东西截止,南北导通

MOVSAVE,A

ACALLSHOW

ACALLT10;延时10秒

MOVA,#01H;南北截止

MOVSAVE,A

ACALLSHOW

MOVR0,#05H;南北黄灯闪烁5次

SN:

MOVA,#09H

MOVSAVE,A

ACALLSHOW

ACALLT02

MOVA,#01H

MOVSAVE,A

ACALLSHOW

ACALLT02

DJNZR0,SN

MOVA,#03H;东西南北都截止

MOVSAVE,A

ACALLSHOW

ACALLT02;延时0.2秒

LJMPEW;转EW循环

T10:

MOVR3,#100;延时10秒

LJMPTU1

T03:

MOVR3,#30;延时3秒

LJMPTU1

T02:

MOVR3,#02;延时0.2秒

TU1:

MOVR4,#200

TU2:

MOVR5,#126

TU3:

DJNZR5,TU3

DJNZR4,TU2

DJNZR3,TU1

RET

INT:

CLREA

PUSHACC;中断处理

PUSHPSW

MOVA,R3

PUSHACC

MOVA,R0

PUSHACC

MOVA,#03H;东西南北都截止

ACALLSHOW

TT10:

MOVR1,#100;延时10秒

TT01:

MOVR0,#200

TT02:

MOVR3,#126

TT03:

DJNZR3,TT03

DJNZR2,TT02

DJNZR1,TT01

MOVA,SAVE;取SAVE中保存数据输出到cfa0端口

ACALLSHOW

POPACC;出栈

MOVR0,A

POPACC;出栈

MOVR3,A

POPPSW

POPACC

SETBEA;允许外部中断

RETI

SHOW:

MOVDPTR,#OUTPORT

MOVX@DPTR,A

RET

END

4实验四定时器实验

----循环彩灯实验

4.1实验要求

由8031内部定时器1按方式1工作,即作为16位定时器使用,每0.1秒钟T1溢出中断一次。

P1口的P1.0~P1.7分别接发光二极管的L1~L8。

要求编写程序模拟一循环彩灯。

彩灯变化花样可自行设计。

例程给出的变化花样为:

①L1、L2、……L8依次点亮;②L1、L2、……L8依次熄灭;③L1、L2、……L8全亮、全灭。

各时序时间间隔为0.5秒。

让发光二极管按以上规律循环显示下去。

4.2实验目的

1、学习8031内部计数器的使用和编程方法。

2、进一步掌握中断处理程序的编写方法。

4.3实验原理

1、定时常数的确定

定时器/计数器的输入脉冲周期与机器周期一样,为振荡频率的1/12。

本实验中时钟频率为6.144MHz,现要采用中断方法来实现0.5秒延时,要在定时器1中设置一个时间常数,使其每隔0.1秒产生一次中断,CPU响应中断后将R0中计数值减一,令R0=05H,即可实现0.1秒延时。

时间常数可按下述方法确定:

机器周期=12/晶振频率=12÷6.144×106=1.9531×10-6s

设计数初值为X,则(2e+16-X)×1.9531×10-6=0.1,可求得X=14336

化为十六进制则X=3800H,故初始值为TH1=38H,TL1=00H

2、初始化程序

包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行正确的设置,并将时间常数送入定时器中。

由于只有定时器中断,IP便不必设置。

3、设计中断服务程序和主程序

中断服务程序除了完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。

主程序则用来控制发光二极管按要求顺序燃灭。

4.4实验内容(包括实验电路和程序流程图)

4.5实验结果

彩灯按照tab表里的规则依次点亮。

4.6实验结果讨论分析

彩灯点亮实验中,需要注意衔接的处理,以使其美观。

同时彩灯的样式受tab表大小的限制,样式容易单一。

4.7实验程序代码

变量说明:

R0用来储存计数值;

R1为查表控制变量。

OUTPORTEQU0CFB0H

CSEGAT0000H

LJMPBEGIN

CSEGAT401BH;定时器/计数器1中断程序入口地址

LJMPINT

CSEGAT4100H

BEGIN:

MOVA,#01H;首显示码

MOVR1,#03H;03为基址寄存器到表首的距离

MOVR0,#5H;05是计数值

MOVTMOD,#10H;计数器置为方式1

MOVTL1,#00H;装入时间常数

MOVTH1,#038H

ORLIE,#88H;CPU中断开放标志位和定时器

SETBTR1;开始计数

DO1:

CJNER0,#00,SHOW

MOVR0,#5H;重置计数值

INCR1;表地址偏移量加1

CJNER1,#27H,DO2

MOVR1,#03H;如到表尾,则重置偏移量初值

DO2:

MOVA,R1;从表中取显示码入累加器

MOVCA,@A+PC

JMPSHOW

DB01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH

DB0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H,0FEH

DB0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH

DB0EFH,0F7H,0FBH,0FDH,0FEH,00H,0FFH,00H

SHOW:

MOVDPTR,#OUTPORT

MOVX@DPTR,A

MOVP1,A;将取得的显示码从P1口输出显示

JMPDO1

INT:

CLRTR1;停止计数

DECR0

MOVTL1,#00H;重置时间常数初值

MOVTH1,#038HEND

教师评语:

实验分数:

 

指导教师签字:

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

当前位置:首页 > PPT模板 > 商务科技

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

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