单片机实验指导.docx
- 文档编号:29226542
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:41
- 大小:334.13KB
单片机实验指导.docx
《单片机实验指导.docx》由会员分享,可在线阅读,更多相关《单片机实验指导.docx(41页珍藏版)》请在冰豆网上搜索。
单片机实验指导
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,运行程序,数码管上显示0809.XX,,后二位显示当前采集的电压转换的数字量,调节W1,该二位将随着电压变化而相应变化。
六、思考:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 指导