单片机原理实验报告Word文档格式.docx

上传人:b****5 文档编号:18698228 上传时间:2022-12-31 格式:DOCX 页数:31 大小:631.54KB
下载 相关 举报
单片机原理实验报告Word文档格式.docx_第1页
第1页 / 共31页
单片机原理实验报告Word文档格式.docx_第2页
第2页 / 共31页
单片机原理实验报告Word文档格式.docx_第3页
第3页 / 共31页
单片机原理实验报告Word文档格式.docx_第4页
第4页 / 共31页
单片机原理实验报告Word文档格式.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

单片机原理实验报告Word文档格式.docx

《单片机原理实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机原理实验报告Word文档格式.docx(31页珍藏版)》请在冰豆网上搜索。

单片机原理实验报告Word文档格式.docx

MOVR0,A

INCR1

DJNZR7,AGAIN

SJMP$

END

程序调试与运行结果

实验结论

通过本实验,我对冒泡排序法的原理有了更深入的理解,同时在掌握此算法思想的基础上能够用汇编语言进行编程,并学会在KeilμVersion4调试界面的Memory窗口中查看内存地址的内容,从而验证设计的源程序的正确性,提高了自己解决问题的能力。

 

实验报告02_外部中断实验

学会使用KeilμVersion4和Proteus软件进行单片机汇编语言和C语言程序设计与开发;

了解和掌握MCS-51单片机的中断组成、中断控制工作原理、中断处理过程、外部中断的中断触发方式,掌握中断功能的编程方法。

单片机的P1.0引脚连接LED指示灯D0;

单片机的P3.2引脚〔INT0〕连接按键开关K,作为中断源,每次按键都会触发INT0中断;

在INT0中断服务程序中将P1.0端口的信号取反,使LED指示灯D0在点亮和熄灭两种状态间切换,产生LED指示灯按键开关K控制的效果。

本实验采用外部中断0。

中断请求信号由按键BUTTON来实现,由引脚INT0(P3.2)引入;

通过按键可以控制P1.0所接的LED灯的点亮熄灭。

其中中断请求信号设置为边沿触发方式。

当按键按下,INT0出现负跳变,发出中断请求信号。

CPU响应中断,停止其他工作,跳转到INT0中断入口地址0003H单元,转入EX_INT0执行中断服务程序,当执行到中断返回指令RETI时,使CPU返回断点处,继续处理其他工作。

中断处理流程图示:

主程序框图INT0中断处理程序框图

实验电路原理图

实验程序与调试仿真

ORG0000H

AJMPMAIN

ORG0003H

AJMPEX_INT0

ORG0100H

MAIN:

MOVSP,#40H

SETBIT0

SETBEA

SETBEX0

HERE:

SJMPHERE

ORG0200H

EX_INT0:

CPLP1.0

RETI

END

Proteus仿真

按键为按下时:

按键按下后

本实验通过KeilμVersion4的中断程序汇编语言设计和Proteus软件的仿真,成功实现了按键对信号灯的熄灭点亮控制。

通过实验,也加深了我对51单片机中断系统的认识。

实验03_定时器实验

了解MCS-51单片机中定时器、计数器的基本结构、工作原理和工作方式,掌握工作在定时器模式下的编程方法。

设单片机的晶振频率fosc=12MHZ,使用T0定时100ms,在P1.2引脚产生周期为200ms的方波信号,并通过示波器观察P1.2输出的波形。

定时器/计数器是单片机应用系统中经常使用的部件之一。

根据工作要求与实际需要,选择合适的工作方式。

如果有定时要求,就选择定时功能;

如果要求检测外部脉冲信号个数,就选择计数功能。

对定时器工作方式选择一般考虑定时时间和计数值的长度。

若定时时间长则选用方式1,;

若定时时间短则选择方式2.门控选择主要考虑是否要求外部信号来控制定时器/计数器的启动。

要实现更长时间的定时,一般有两种方式:

一是采用两个定时/计数器串联使用,一个定时并输出定时脉冲,另一个计数定时脉冲;

二是采用一个定时/计数器定时工作,再加一个软件计数器记录溢出的次数。

实验设计

按定时要求,可选择T0为定时功能并工作在方式1,用定时器T0定时100ms,则计数初值X计算如下:

X=216-〔t*fosc〕/12=216-〔100*103*12*106〕/12=10000H-100000

由于X小于0,说明定时时间过长,因此需要采用实验原理中所述的两种方法之一实现实验要求。

本实验采用方法二,即采用一个定时/计数器定时工作,再加一个软件计数器记录溢出的次数。

具体实现为:

用T0定时50ms,工作在工作方式1,然后在定时器中断服务子程序中由软件计数器〔寄存器R2〕对定时中断的次数进行统计,达到2次即输出周期为200ms的方波,此时模式字是01H。

程序框图

实验程序:

AJMPSTART

ORG000BH

AJMPINT_T0

ORG0100H

START:

MOVSP,#60H

MOVTMOD,#01H

MOVTL0,#0B0H

MOVTH0,#3CH

MOVR2,#02H

SETBET0

SETBTR0

INT_T0:

MOVTL0,#0B0H

MOVTH0,#3CH

DJNZR2,LOOP

CPLP1.2

LOOP:

END

Proteus仿真电路

示波器显示周期为200ms的方波:

通过本实验,我对51单片机中定时器、计数器的基本结构、工作方式以与工作原理有了更深入的认识,同时发现可以运用定时器和计数器来产生方波。

不仅如此,本实验的给定参数还使我意识到当定时时间过长使初值为负超出范围时,需要使用计数器来帮助实现功能。

本实验巩固了我所学的理论知识,在设计实验时又使我注意到了许多细节,增强了我设计实验、排查错误的能力。

实验04_两个单片机之间双向通信实验

了解MCS-51单片机串行口〔UART〕的结构、工作方式,了解串行通信的原理和数据交换过程,掌握单片机之间进行串行通信的编程方法。

将甲、乙两台MCS-51单片机串行口连接,即甲机的TXD与乙机的RXD相连;

甲机的RXD与乙机的TXD相连;

并实现双机共地。

整个系统实现双向通信。

具体是:

(1)甲机的K1按键可通过串行口分别控制乙机的LED1点亮;

LED2点亮;

LED1和LED2全亮或全灭。

(2)乙机的K2按键可通过串行口向甲机发送数字,甲机将接收到的数字显示在其P0端口的LED数码管显示器上。

CPU与外界的信息交换称为通信。

当数据的各位同时传送时,称为并行通信;

当数据一位接一位顺序传送时,则称为串行通信。

其中,串行数据通信分为同步通信和异步通信两种形式。

MCS-51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器〔SBUF〕,这两个在物理上独立的接受发送器,既可以接受数据也可以发送数据。

但接收缓冲器只能读出不能写入,而发送缓冲器只能写入不能读出,它们的地址为99H。

串行通信控制寄存器〔SCON〕是一个8位的专用寄存器,用于串行数据的通信控制,电源管理寄存器PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,可以设置波特率。

串行工作口有四种工作方式,分别为工作方式0,工作方式1,工作方式2,工作方式3。

串行通信只使用方式1、2、3。

发送数据时,TI位置0,发送完毕时TI置位。

接收数据时,RI位置0,接收完毕时置位RI。

实验设计

题〔1〕:

按键接甲机P1.1口,通过计数按键次数发送不同指令。

乙机的P1.0,P1.1分别接两盏灯,接受甲机的指令从而实现乙机的灯的亮暗。

甲机的按键接地,因此按下时P1.1应赋值为0。

没按下一次,计数值加1,因为题目中两灯共出现四种情况,四种状态可设置分别为01,02,03,04,通过在四种状态下分别给乙机P1.0和P1.1口置1或置0〔通过SETB和CLR实现〕,可以实现甲机对乙机灯的控制。

本实验可采用查询方式也可采用中断方式。

题〔2〕:

按键接乙机的P3.2口,即INT0口,LED数码管接甲机的P0端口,程序采用中断方式。

乙机发送指令,通过按键次数控制甲机数码管上显示的数字,具体控制情况为,乙机按键按一次,甲机数码管显示“1〞,按键按两下,数码管显示“2〞,按键按三下,数码管显示“3〞,按键按四下,数码管显示“4〞。

只需通过计数按键按下次数,没按下一次,计数值加1,同时启动一次发送即可。

甲机没启动一次接受,子程序中就将需要显示的数字所对应的相应值传送给P0端口的数码管即可。

实验程序

题〔1〕采用查询方式:

甲机〔按键控制〕

LJMPMAIN

ORG0030H

MOVSCON,#40H

MOVPCON,#00H

MOVTMOD,#20H

MOVTL1,#0F4H

MOVTH1,#0F4H

SETBTR1

NEXT:

JNBP1.1,L1

SJMPNEXT

NEXT1:

JNBP1.1,L2

SJMPNEXT1

NEXT2:

JNBP1.1,L3

SJMPNEXT2

NEXT3:

JNBP1.1,L4

SJMPNEXT3

L1:

MOVA,#00H

MOVSBUF,A

WAIT1:

CTI,NEXT1

SJMPWAIT1

L2:

MOVA,#01H

WAIT2:

CTI,NEXT2

SJMPWAIT2

L3:

MOVA,#02H

WAIT3:

CTI,NEXT3

SJMPWAIT3

L4:

MOVA,#03H

WAIT4:

CTI,NEXT

SJMPWAIT4

乙机〔接受程序,实现灯的亮暗〕

ORG0080H

MOVSCON,#50H

WAIT:

CRI,NEXT

SJMPWAIT

MOVA,SBUF

CJNEA,#00H,L2

SETBP1.0

CLRP1.1

SJMPWAIT

CJNEA,#01H,L3

SETBP1.1

CLRP1.0

CJNEA,#02H,L4

CJNEA,#03H,WAIT

END

题〔1〕采用中断方式

LJMPMAIN

LJMPL1

ORG0030H

MOVSCON,#40H

MOVTH1,#0F4H

MOVTL1,#0F4H

MOVSP,#40H

SETBEA

SETBEX0

SJMPL2

MOVA,P1

MOVSBUF,A

CTI,NEXT

END

MOVSCON,#50H

MOVR1,#00H

MOVP1,#0FFH

CRI,NEXT

MOVA,SBUF

INCR1

SJMPL1

SUBBA,#01H

JZL2

MOVA,R1

SUBBA,#02H

JZL3

SUBBA,#03H

JZL4

MOVA,R1

SUBBA,#04H

JZL5

CLRP1.0

SETBP1.1

CLRRI

CLRP1.1

SETBP1.0

L5:

题〔1〕采用查询程序的仿真

甲机P1.1口按键按下第一次,亮灯全亮

甲机按键按下第二次,两灯全灭:

甲机按键按下第三次,D1灯灭,D2灯亮:

甲机按键按下第四次,D1灯亮,D2灯灭:

可以看出,甲机通过按键实现了对乙机所接的两灯亮灭的控制。

(2)采用中断程序设计的程序

乙机按键控制甲机数码管程序〔采用中断方式〕

org0000h

ajmpsend

org0003h

ajmpe_int

org0023h

ajmptrani

org0030h

send:

movscon,#090h

movpcon,#80h

setbea

setbes

setbex0

setbit0

mova,#0fh

adda,#01h

movc,p

movtb8,c

movsbuf,a

sjmp$

trani:

cti,loop2

cri,loop3

loop3:

mova,sbuf

cjnea,#10h,loop5

movr0,#00h

loop5:

cjnea,#11h,loop6

movr0,#01h

loop6:

cjnea,#12h,loop7

movr0,#02h

loop7:

cjnea,#13h,loop4

movr0,#03h

loop4:

movP1,r0

reti

e_int:

cjnea,#13h,loop1

loop1:

movc,p

loop2:

reti

end

甲机接收程序

movscon,#090h

movp0,#0ffh

movp2,#01h

setbea

setbex0

setbit0

movp0,r0

sjmploop4

movr0,#0f9h

movr0,#0a4h

movr0,#0b0h

cjnea,#13h,loop8

movr0,#099h

loop8:

loop1:

reti

题〔2〕仿真结果

按下按键第一次,甲机数码管显示’1’

按下按键第二次,数码管显示‘2’

按键按下第三次,数码管显示‘3’

按键按下第四次,数码管显示‘4’

可以看出,乙机通过按键实现了对甲机LED数码管上数字的控制。

本实验通过对甲、乙两台51单片机的发送、接收程序的汇编语言编写,以与在Proteus中电路仿真,将甲、乙机的串行口相连,并进行电路的连接,最终仿真实现了双机的串口通信,即甲机通过按键实现了对乙机两端口所接LED灯亮暗的控制,而乙机通过按键实现了对甲机LED数码管显示数字的控制。

通过本实验,我学会了串口通信发送、接受程序的编写,并且掌握了查询、中断方式编写改程序的不同思路,加深了对理论内容的学习。

实验05_数码管显示4x4键盘矩阵按键实验

熟悉和掌握矩阵式键盘的工作原理、电路设计和软件编程方法;

熟悉和掌握矩阵式键盘的行扫描法和行反转法两种键盘扫描识别方法;

掌握键盘延时消抖的软件方法;

掌握LED静态扫描显示方式。

4x4键盘矩阵的行线连接单片机的P1.0~P1.3端口,列线连接P1.4~P1.7端口;

一位LED数码管连接单片机的P0口。

编程实现:

当按下任意一个按键时,LED数码管显示它在4x4键盘矩阵上的序号0~F。

矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。

在行线和列线的每一个交叉点上,设置一个按键。

这样键盘中按键的个数是4×

4个。

这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。

确定矩阵式键盘上何键被按下主要有两种方法,分别为行扫描法和行反转法。

行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,介绍过程如下:

1、判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。

只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。

若所有列线均为高电平,则键盘中无键按下。

2、判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。

其方法是:

依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。

在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。

若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。

另一种方法是高低电平翻转法。

过程如下:

首先让P1口高四位为1,低四位为0,。

若有按键按下,则高四位中会有一个1翻转为0,低四位不会变,此时即可确定被按下的键的行位置;

然后让P1口高四位为0,低四位为1,。

若有按键按下,则低四位中会有一个1翻转为0,高四位不会变,此时即可确定被按下的键的列位置。

最后将上述两者进行或运算即可确定被按下的键的位置。

实验流程图

LJMPSTART

KEY0:

MOVP1,#0EFH

JNBP1.0,K0

JNBP1.1,K4

JNBP1.2,K8

P1.3,NEXT1

LJMPK12

MOVP1,#0DFH

JNBP1.0,K1

JNBP1.1,K5

JNBP1.2,K9

P1.3,NEXT2

LJMPK13

MOVP1,#0BFH

JNBP1.0,K2

JNBP1.1,K6

JNBP1.2,K10

P1.3,NEXT3

LJMPK14

MOVP1,#07FH

JNBP1.0,K3

JNBP1.1,K7

JNBP1.2,K11

JNBP1.3,K15

LJMPKEY0

K0:

MOVP0,#0C0H

LCALLDELAY

JMPKEY0

K1:

MOVP0,#0F9H

K2:

MOVP0,#0A4H

K3:

MOVP0,#0B0H

K4:

MOVP0,#99H

K5:

MOVP0,#92H

K6:

MOVP0,#82H

K7:

MOVP0,#0F8H

K8:

MOVP0,#80H

K9:

MOVP0,#90H

K10:

MOVP0,#88H

K11:

MOVP0,#83H

K12:

MOVP0,#0C6H

K13:

MOVP0,#0A1H

K14:

MOVP0,#86H

K15:

MOVP0,#8EH

DELAY:

MOVR3,#06H

LP:

MOVR4,#0A8H

LP1:

MOVR5,#0A8H

LP2:

DJNZR5,LP2

DJNZR4,LP1

DJNZR3,LP

RET

PROTEUS仿真

当按下相应按键,LED数码管显示它在4x4键盘矩阵上的序号0-F。

下图列出一些仿真结果

本实验通过对数码管显示矩阵键盘按键的源程序编写与Proteus仿真,我掌握了:

1〕矩阵键盘行扫描法和行反转法两种键盘扫描识别方法,以与实现该算法的汇编语言;

2〕键盘延时消抖的软件方法;

3〕LED静态扫描显示方式。

矩阵式键盘是大型系统设计中不可或缺的一部分,因此,掌握它的原理与其重要。

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

当前位置:首页 > 医药卫生 > 基础医学

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

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