单片机实验指导.docx

上传人:b****1 文档编号:2643946 上传时间:2023-05-04 格式:DOCX 页数:42 大小:423.92KB
下载 相关 举报
单片机实验指导.docx_第1页
第1页 / 共42页
单片机实验指导.docx_第2页
第2页 / 共42页
单片机实验指导.docx_第3页
第3页 / 共42页
单片机实验指导.docx_第4页
第4页 / 共42页
单片机实验指导.docx_第5页
第5页 / 共42页
单片机实验指导.docx_第6页
第6页 / 共42页
单片机实验指导.docx_第7页
第7页 / 共42页
单片机实验指导.docx_第8页
第8页 / 共42页
单片机实验指导.docx_第9页
第9页 / 共42页
单片机实验指导.docx_第10页
第10页 / 共42页
单片机实验指导.docx_第11页
第11页 / 共42页
单片机实验指导.docx_第12页
第12页 / 共42页
单片机实验指导.docx_第13页
第13页 / 共42页
单片机实验指导.docx_第14页
第14页 / 共42页
单片机实验指导.docx_第15页
第15页 / 共42页
单片机实验指导.docx_第16页
第16页 / 共42页
单片机实验指导.docx_第17页
第17页 / 共42页
单片机实验指导.docx_第18页
第18页 / 共42页
单片机实验指导.docx_第19页
第19页 / 共42页
单片机实验指导.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机实验指导.docx

《单片机实验指导.docx》由会员分享,可在线阅读,更多相关《单片机实验指导.docx(42页珍藏版)》请在冰点文库上搜索。

单片机实验指导.docx

单片机实验指导

51系列单片机

原理与应用实验

实验1简单汇编语言实验

一、实验目的:

掌握汇编语言设计和调试方法,熟悉键盘操作。

熟悉汇编语言编程。

二、实验内容:

1.查找相同数据个数:

在2000H~200FH的N个单元中填入零,运行本程序后检查2100H中是否为N;

2.清零:

把2000H~20FFH的内容清零。

三、实验程序框图:

查找相同数据个数程序实验框图清零程序框图

四、实验步骤:

1、在2000H~200FH的几个单元中填入零,运行查找相同数据个数程序后检查2100H中是否是几个单元数。

2、用连续或单步方式运行清零程序,检查2000~20FF中执行程序前后的内容变化。

五.思考:

1、修改程序,查找其它内容。

2、修改清零程序,假使把2000H~20FFH中的内容改成FF,如何修改程序。

1/查找相同数据个数程序程序清单:

ORG0000H

LJMPL5800

ORG0AA0H

L5800:

MOVR0,#10H;查找16个字节

MOVR1,#00H

MOVDPTR,#2000H

L5811:

MOVXA,@DPTR

CJNEA,#00H,L5816;取出内容与00H相等吗?

INCR1;取出个数加1

L5816:

INCDPTR

DJNZR0,L5811;未完继续

MOVDPTR,#2100H

MOVA,R1

MOVX@DPTR,A;相同数的个数送2100H

L581E:

SJMPL581E

END

2/清零程序清单:

ORG0000H

LJMPSE01

ORG0640H

SE01:

MOVR0,#00H

MOVDPTR,#2000H;(0000H)送DPTR

LOO1:

CLRA

MOVX@DPTR,A;0送(DPTR)

INCDPTR;DPTR+1

INCR0;字节数加1

CJNER0,#00H,LOO1;不到FF个字节再清

LOOP:

SJMPLOOP

END

实验2拆字和拼字程序

一、实验目的:

掌握汇编语言设计和调试方法。

二、实验内容:

1、把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用;

2、把2000H.2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成一字节。

三、实验程序框图:

拆字程序框图拼字程序框图

四、实验步骤:

用连续或单步方式运行程序,检查2000H~2002H中内容变化情况。

五、思考:

如何用断点方式调试本程序。

1/拆字程序清单:

ORG0000H

LJMPSE02

ORG0660H

SE02:

MOVDPTR,#2000H

MOVXA,@DPTR

MOVB,A;(2000)→A→B

SWAPA;交换

ANLA,#0FH;屏蔽高位

INCDPTR

MOVX@DPTR,A;送2001H

INCDPTR

MOVA,B

ANLA,#0FH;(2000)内容屏蔽高位

MOVX@DPTR,A;送2002H

LOOP:

SJMPLOOP

END

2/拼字程序清单:

ORG0000H

LJMPSTART

ORG0680H

START:

MOVDPTR,#2000H

MOVXA,@DPTR

ANLA,#0FH;(2000H)内容屏蔽高位

SWAPA;交换

MOVB,A;保存

INCDPTR

MOVXA,@DPTR;(2000H)内容送A

ANLA,#0FH;屏蔽高位

ORLA,B;或

INCDPTR

MOVX@DPTR,A;送2002H

SJMP$

END

实验3数据排序实验

一、实验目的:

熟悉51指令系统,掌握程序设计方法。

二、实验内容:

编写并调试一个排序子程序,其功能为用冒泡法将数据存储单元中几个单字节无符号的正整数,按从小到大的次序重新排列。

三、程序框图:

四、实验步骤:

将RAM1000H~100FH中放入不等的数据,用断点方法运行本实验程序后检查1000H~100FH中的内容是否按从小到大的次序排列。

五、思考:

修改程序把1000H~100FH中内容从大到小排列。

1/程序清单:

ORG0000H

LJMPSE01

ORG0640H

SE01:

CLR00H;标志位

MOVDPTR,#1000H;起始地址

MOVXA,@DPTR

MOVR7,#04H;要排序的数据个数

LOOP:

MOV22H,A;第一个数送22h

INCDPTR

MOVXA,@DPTR;第二个数送A

CLRC;清零C

CJNEA,22H,LOOP5;判断是哪个数大

LOOP5:

JNCLOOP1;前面的数小则不作处理,否则交换位置

LOOP2:

DECDPL;交换位置

MOVR5,DPL

CJNER5,#0FFH,LOOP4

DECDPH

LOOP4:

MOVX@DPTR,A

MOVA,22H

INCDPTR

MOVX@DPTR,A

SETB00H

LOOP1:

DJNZR7,LOOP;;;;;不交换位置

JB00H,SE01;判断此次循环有无交换发生

LOOP3:

SJMPLOOP3

END

例4-1有一变量在片内RAM的20H单元,取值范围:

00H~05H。

编制一段程序,根据变量值求其平方值,并存入片内RAM的21H单元。

ORG0000H

LJMPSE01

ORG0640H

SE01:

MOVDPTR,#2000H

MOVA,20H

MOVCA,@A+DPTR

MOV21H,A

SJMP$

ORG2000H

TABLE:

DB01,01,04,09,16,25

END

例4-2设变量x以补码的形式存放在片内RAM的30H单元,变量y与x的关系是:

当x大于0时,y=x;当x=0时,y=20H;当x小于0时,y=x+5。

编制程序,根据x的大小求y并送回原单元。

ORG0000H

LJMPSTART

ORG0640H

START:

MOVA,30H

JZNEXT

ANLA,#80H;判断符号位

JZLP

MOVA,#05H

ADDA,30H

MOV30H,A

SJMPLP

NEXT:

MOV30H,#20H

LP:

SJMP$

END

例4-3编写程序,将内部RAM的30H至3FH单元初始化为00H。

ORG0000H

LJMPMAIN

ORG0040H

MAIN:

MOVR0,#30H

MOVA,#00H

MOVR7,#16

LOOP:

MOV@R0,A

INCR0

DJNZR7,LOOP

SJMP$

END

例4-4将内部RAM中起始地址为60H的数据串传送到外部RAM中起始地址为1000H的存储区域内,直到发现’$’字符停止传送。

由于循环次数事先不知道,但循环条件可以测试到。

该程序采用先判断后执行的结构。

ORG0000H

LJMPMAIN

ORG0040H

MAIN:

MOVR0,#60H

MOVDPTR,#1000H

LOOP0:

MOVA,@R0

CJNEA,#24H,LOOP1

SJMPDONE

LOOP1:

MOVX@DPTR,A

INCR0

INCDPTR

SJMPLOOP0

DONE:

SJMPDONE

END

实验4-1P1口亮灯实验

一、实验目的:

l)学习P1口的使用方法;

2)学习延时子程序的编写。

二、实验顶备知识:

(l).Pl口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。

(2).本实验中延时子程序采用指令循环来实现,机器周期(12/6MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。

三、实验内容:

P1口输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

四、实验程序框图:

五、实验步骤:

P1.0~P1.7用插针连至L1~L8,运行程序后,观察发光二极管闪亮移位情况。

六、思考:

改变延时常数,使发光二极管闪亮时间改变。

修改程序,使发光二极管闪亮移位方向改变

程序清单

ORG0000H

LJMPSE18

ORG0790H

SE18:

MOVP1,#0FFH;送P1口

LO34:

MOVA,#0FEH;L1发光二极管点亮

LO33:

MOVP1,A

LCALLSE19;延时

RLA;左移位

SJMPLO33;循环

ORG07A0H

SE19:

MOVR6,#0A0H

LO36:

MOVR7,#0FFH

LO35:

DJNZR7,LO35

DJNZR6,LO36;延时

RET

END

实验4-2P1口转弯灯实验

一、实验目的:

进一步了解P1口的使用,学习汇编语言编程方法及调试技巧。

二、实验内容:

P1.0开关接5V,右转弯灯闪亮,P1.1开关接5V时左转弯灯闪亮,P1.0,P1.1开关同时接5V或接地时,转弯灯均不闪亮。

三、实验程序框图:

四、实验接线图:

五、实验步骤:

P1.0接K1,P1.1接K2,P1.4~P1.7接L1、L5、L9、L13,连续运行本程序,应看到转弯灯正确闪亮,在用单步方式调试本程序时需修改延时子程序,(例可把延时程序第一个字节改成返回指令22H),以便观察。

程序清单:

ORG0000H

LJMPPX00

ORG0C30H

PX00:

MOVP1,#0FFH;初始化

PX03:

MOVA,P1

MOVB,A

ANLA,#03H

CJNEA,#01H,PX01;满足只是P1.0为高条件?

JB00H,PX04;闪烁标志位

CLRP1.4

CLRP1.5;开右灯

SETBP1.6

SETBP1.7;关左灯

MOVR2,#20H

LCALLDELY;延时

SETB00H;置标志位

LJMPPX03;继续查找状态

PX04:

SETBP1.4

SETBP1.5

SETBP1.6;关灯

SETBP1.7

MOVR2,#20H

LCALLDELY;延时

CLR00H;清标志位

AJMPPX03;继续查找状态

PX01:

CJNEA,#02H,PX02;满足只是P1.1为高条件吗?

JB01H,PX05;判标志位

SETBP1.4

SETBP1.5;开左灯

CLRP1.6

CLRP1.7;关右灯

MOVR2,#20H

LCALLDELY;延时

SETB01H;置标志位

LJMPPX03;继续查找

PX05:

SETBP1.4

SETBP1.5

SETBP1.6;关灯

SETBP1.7

MOVR2,#20H

LCALLDELY;延时

CLR01H;清标志位

LJMPPX03;继续查找状态

QPX02:

SETBP1.4

SETBP1.5

SETBP1.6;关灯

SETBP1.7

LJMPPX03;继续

DELY:

PUSH02H

DEL2:

PUSH02H

DEL3:

PUSH02H;延时

DEL4:

DJNZR2,DEL4

POP02H

DJNZR2,DEL3

POP02H

DJNZR2,DEL2

POP02H

DJNZR2,DELY

RET

END

实验5-1P3口输入,P1口输出

一、实验目的:

掌握P3口 P1口简单使用。

二、实验内容:

P3.3口输入一脉冲, P1口按16进制加一方式点亮发光二极管。

三、实验程序框图:

四、实验步骤:

P3.3用接针连至K1P1.0~P1.7插针连至L1~L8,K1拨动一次,L1~L8发光二极管按16进制方式加一点亮。

五、思考:

修改程序,使发光二极管左移方式点亮。

程序清单:

ORG0000H

LJMPJ100

ORG0810H

J100:

MOVA,#00H

J101:

JBP3.3,J101

MOVR2,#10H

LCALLDELY

JBP3.3,J101;P3.3电平为低吗?

J102:

JNBP3.3,J102

MOVR2,#10H

LCALLDELY

JNBP3.3,J102;P3.3电平为高吗?

INCA;加1

PUSHACC

CPLA;取反

MOVP1,A;驱动发光二极管

POPACC

AJMPJ101;循环

DELY:

PUSH02H

DEL2:

PUSH02H

DEL3:

PUSH02H

DEL4:

DJNZR2,DEL4;延时

POP02H

DJNZR2,DEL3

POP02H

DJNZR2,DEL2

POP02H

DJNZR2,DELY

RET

END

实验5-2简单I/O口扩展

一、实验目的:

 

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

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

二、实验内容:

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

三、实验程序框图:

四、实验步骤:

Y0~Y7接K1~K8,Q0~Q7接L1~L8,CS1接8000孔,CS2接9000孔,JX0接JX7,执行程序,按动K1~K8,观察L1~L8是否对应点亮。

五、思考:

 可否用273输入,244输出。

程序清单:

ORG0000H

LJMPGOD0

ORG0B80H

GOD0:

MOVDPTR,#8000H

MOVXA,@DPTR;取出244状态

MOVDPTR,#9000H

MOVX@DPTR,A;送273驱动发光二极管

SJMPGOD0

END

实验6继电器控制

一、实验目的 掌握用继电器的基本方法和编程。

二、实验内容 利用P1口输出高低电平,控制继电器的开合,以实现对外部装置的控制。

三、实验预备知识 现代自动控制设备中都存在一个电子与电气电路的互相联结问题,一方面要使电子电路的控制信号能够控制电气电路,提供良好的电隔离,以保护电子电路和人身的安全,继电器便能完成这一桥梁作用。

四、实验接线图:

五、实验步骤:

 把Pl.0接JIN端,继电器的JZ通过K1接地。

JK接L1,JB接L2。

编制程序,使P1.0电平变化,高电平时继电器吸合,常开触点接上Ll点亮,L2熄灭,低电平时继电器不工作,常闭触点闭合,Ll熄灭,L2点亮。

程序清单:

ORG0000H

LJMPLOOP

ORG0F00H

LOOP:

CLRP1.0

MOVR2,#30H

LCALLDELY

SETBP1.0

MOVR2,#30H

LCALLDELY

SJMPLOOP

DELY:

PUSH02H

DEL2:

PUSH02H

DEL3:

PUSH02H

DEL4:

DJNZR2,DEL4

POP02H

DJNZR2,DEL3

POP02H

DJNZR2,DEL2

POP02H

DJNZR2,DELY

RET

END

实验7-18255A.B.C口输出方波

一、实验目的:

掌握可编程I/O接口芯片8255的接口原理使用,熟悉对8255初始化编程和输入/输出软件的设计为法。

二、实验内容:

在8255的A.B.C口用万用表可测出每个口线的高低电平变化。

三、实验程序框图:

四、实验步骤:

执行程序,用万用表测量8255A.B.C口应有高低电平变化(或用8255A.B.C口分别用插针连至Ll~L8,观察发光二极管变化情况)。

程序清单:

ORG0000H

LJMPSE09

ORG0580H

SE09:

MOVDPTR,#0FF2BH

MOVA,#80H

MOVX@DPTR,A;8255初始化

MOVA,#55H;一位隔一位高电平

LO15:

MOVDPTR,#0FF28H

MOVX@DPTR,A

INCDPTR

MOVX@DPTR,A

INCDPTR

MOVX@DPTR,A;A、B、C口送入

MOVR2,#10H;延时

LCALLDELY

CPLA;取反

SJMPLO15;循环

ORG05A0

DELY:

PUSH02H

DEL2:

PUSH02H

DEL3:

PUSH02H;延时

DEL4:

DJNZR2,DEL4

POP02H

DJNZR2,DEL3

POP02H

DJNZR2,DEL2

POP02H

DJNZR2,DELY

RET

END

实验7-28255PA口控制PB口

一、实验目的:

掌握单片机系统中扩展外围芯片的方法,了解8255芯片的结构及编程方法。

二、实验内容:

用8255 PA口作开关量输入口,PB口作输出口。

三、实验程序框图:

四、实验接线图:

五、实验步骤:

8255PA口接Kl~K8,PB口接L1~L8运行程序,按K1~K8,观察L1~L8发光二极管是否对应点亮。

程序清单:

ORG0000h

LJMPSE17

ORG0770H

SE17:

MOVDPTR,#0FF2BH

MOVA,#90H

MOVX@DPTR,A;8255初始化

LO32:

MOVDPTR,#0FF28H

MOVXA,@DPTR;PA口状态读出

INCDPTR

MOVX@DPTR,A;送PB口

SJMPLO32

END

实验7-38255控制交通灯

一、实验目的:

进一步了解8255芯片的结构及编程方法,学习模拟交通控制的实现方法。

二、实验内容:

用8255做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。

三、实验程序框图:

四、实验接线图:

五、实验步骤:

8255PA0~PA7 PB0~PB3接发光二极管L15~L13、L11~L9、L7~L5、L3~L1。

执行程序,初始态为四个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后东西路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,之后重复以上过程

ORG0000H

LJMPJOD0

ORG0BB0H

JOD0:

MOVSP,#60H

MOVDPTR,#0FF2BH

MOVA,#88H

MOVX@DPTR,A;8255初始化

MOVDPTR,#0FF28H

MOVA,#0B6H

MOVX@DPTR,A

INCDPTR

MOVA,#0DH

MOVX@DPTR,A;点亮4个红灯

MOVR2,#25H;延时

LCALLDELY

JOD3:

MOVDPTR,#0FF28H

MOVA,#75H

MOVX@DPTR,A

INCDPTR

MOVA,#0DH

MOVX@DPTR,A;东西绿灯亮,南北红灯亮

MOVR2,#55H

LCALLDELY;延时

MOVR7,#05H;闪烁次数

JOD1:

MOVDPTR,#0FF28H

MOVA,#0F3H

MOVX@DPTR,A

INCDPTR

MOVA,#0CH

MOVX@DPTR,A;东西黄灯亮,南北红灯亮

MOVR2,#20H

LCALLDELY;延时

MOVDPTR,#0FF28H

MOVA,#0F7H

MOVX@DPTR,A

INCDPTR

MOVA,#0DH

MOVX@DPTR,A;南北红灯亮

MOVR2,#20H

LCALLDELY;延时

DJNZR7,JOD1;闪烁次数未到继续

MOVDPTR,#0FF28H

MOVA,#0AEH

MOVX@DPTR,A

INCDPTR

MOVA,#0BH

MOVX@DPTR,A;东西红灯亮,南北绿灯亮

MOVR2,#55H

LCALLDELY;延时

MOVR7,#05H;闪烁次数

JOD2:

MOVDPTR,#0FF28H

MOVA,#9EH

MOVX@DPTR,A

INCDPTR

MOVA,#07H

MOVX@DPTR,A;东西红灯亮,南北黄灯亮

MOVR2,#20H

LCALLDELY;延时

MOVDPTR,#0FF28H

MOVA,#0BEH

MOVX@DPTR,A

INCDPTR

MOVA,#0FH

MOVX@DPTR,A;东西红灯亮

MOVR2,#20H

LCALLDELY;延时

DJNZR7,JOD2;闪烁次数未到继续

LJMPJOD3;循环

ORG0C30H

DELY:

PUSH02H

DEL2:

PUSH02H

DEL3:

PUSH02H;延时

DEL4:

DJNZR2,DEL4

POP02H

DJNZR2,DEL3

POP02H

DJNZR2,DEL2

POP02H

DJNZR2,DELY

RET

END

实验8A/D转换实验

一、实验目的:

(1)掌握A/D转换与单片机接口的方法;

      

(2)了解A/D芯片0809转换性能及编程方法;

      (3)通过实验了解单片机如何进行数据采集。

二、实验内容:

利用实验系统上的0809做A/D转换器,实验系统上的电位器提供模拟量输入,编制程序,将模拟量转换成数字,通过数码管显示出来。

三、实验接线图:

四、实验程序框图:

五、实验步骤:

把0809的零通道INT0用插针接至AOUT1孔,CS4接8000H孔,JX0接JX6,运行程序,数码管上显示08

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

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

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

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