单片机实验指导书Word格式文档下载.docx
《单片机实验指导书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书Word格式文档下载.docx(24页珍藏版)》请在冰点文库上搜索。
JB00H,QUE1;
一次循环中有交换继续
LOOP:
SJMPLOOP;
无交换退出
END
硬件实验
硬件实验可使学生能进一步掌握单片机系统扩展和输入输出程序的设计方法,熟悉对扩展系统的软件、硬件设计,调试方法和技巧。
实验二P1口转弯灯实验
进一步了解P1口的使用,学习汇编语言编程方法及调试技巧。
P1.0接开关5V,右转弯灯闪亮,P1.1接开关5V时左转弯灯闪亮,P1.0,P1.1同时接5V或接地时,转弯灯均不闪亮。
3,实验程序框图:
4,实验接线图:
5,实验步骤:
P1.0接K1,P1.1接K2,P1.4~P1.7接L1、L4、L7、L10,连续运行本程序,应看到转弯灯正确闪亮,在用单步方式调试本程序时需修改延时子程序,(例可把延时程序第一个字节改成返回指令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
CLR00H;
AJMPPX03;
PX01:
CJNEA,#02H,PX02;
满足只是P1.1为高条件吗?
JB01H,PX05;
判标志位
SETBP1.4
SETBP1.5;
开左灯
CLRP1.6
CLRP1.7;
关右灯
SETB01H;
继续查找
PX05:
SETBP1.7
MOVR2,#20H
LCALLDELY;
CLR01H;
LJMPPX03;
PX02:
SETBP1.5
SETBP1.6;
继续
DELY:
PUSH02H
DEL2:
DEL3:
PUSH02H;
DEL4:
DJNZR2,DEL4
POP02H
DJNZR2,DEL3
DJNZR2,DEL2
DJNZR2,DELY
RET
实验三工业顺序控制
掌握工业顺序控制程序的简单编程,中断的使用。
2,实验预备知识:
在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些连续生产过程,按某种顺序有规律地完成预定的动作,对这类连续生产过程的控制称顺序控制,象注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机最易实现。
3,实验内容:
由P1.0~1.6控制注塑机的七道工序,模拟控制七只发光二极管的点亮,低电平有效,设定每道工序时间转换为延时时间,P3.4为开工启动开关,高电平启动。
P3.3为外部故障输入模拟开关,低电平报警,P1.7为报警声音输出,设定第6道工序只有一位输出,第七道工序三位有输出。
4,实验程序框图:
5,实验接线图:
6,实验步骤:
JP向下短接,按图接好连线。
执行程序,把K1接到低电平,观察发光二极管点亮情况,确定工序执行是否正常,然后把K2置为低电平,看是否有声音报警,恢复中断1.报警停,又从刚才报警时一道程序执行下去。
可用单步、单步跟踪,非全速断点、全速断点,连续执行功能调试软件,直到符合自己程序设计要求为止。
7,思考:
修改程序,使每道工序中有多位输出。
8,程序清单:
LJMPPO10
ORG0013H
LJMPPO16
ORG0190H
PO10:
MOVP1,#7FH
ORLP3,#00H
PO11:
JNBP3.4,PO11;
开工吗?
ORLIE,#84H
ORLIP,#04H
MOVPSW,#00H;
MOVSP,#53H
PO12:
MOVP1,#7EH;
第一道工序
ACALLPO1B
MOVP1,#7DH;
第二道工序
MOVP1,#7BH;
第三道工序
MOVP1,#77H;
第四道工序
ACALLPO1B
MOVP1,#6FH;
第五道工序
MOVP1,#5FH;
第六道工序
MOVP1,#0FH;
第七道工序
SJMPPO12
PO16:
MOVB,R2;
保护现场
PO17:
MOVP1,#7FH;
关输出
MOV20H,#0A0H;
振荡次数
PO18:
SETBP1.7;
振荡
ACALLPO1A;
停振
DJNZ20H,PO18;
不为0转
CLRP1.7
JNBP3.3,PO17;
故障消除吗?
MOVR2,B;
恢复现场
RETI
PO19:
MOVR2,#10H
ACALLDELY;
延时1
PO1A:
MOVR2,#06H
延时2
PO1B:
MOVR2,#30H
延时3
POP02H
DJNZR2,DEL3
DJNZR2,DEL2
DJNZR2,DELY
RET
END
实验四 8255控制交通灯
进一步了解8255芯片的使用方法,学习模拟交通灯控制的实现方法。
用8255做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。
8255PA7~PA0接发光二极管L5~L12,PB3~PB0接发光二极管L1~L4。
执行程序,初始态为四个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后东西路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,之后重复以上过程。
LJMPJOD0
ORG0BB0H
JOD0:
MOVSP,#60H
MOVDPTR,#0FF2BH
MOVA,#88H
MOVX@DPTR,A;
8255初始化
MOVDPTR,#0FF28H
MOVA,#0B6H
MOVX@DPTR,A
INCDPTR
MOVA,#0DH
点亮4个红灯
MOVR2,#25H;
LCALLDELY
JOD3:
MOVDPTR,#0FF28H
MOVA,#75H
东西绿灯亮,南北红灯亮
MOVR2,#55H
MOVR7,#05H;
闪烁次数
JOD1:
MOVA,#0F3H
INCDPTR
MOVA,#0CH
东西黄灯亮,南北红灯亮
MOVA,#0F7H
南北红灯亮
DJNZR7,JOD1;
闪烁次数未到继续
MOVA,#0AEH
MOVA,#0BH
东西红灯亮,南北绿灯亮
JOD2:
MOVA,#9EH
MOVA,#07H
东西红灯亮,南北黄灯亮
MOVA,#0BEH
MOVA,#0FH
东西红灯亮
DJNZR7,JOD2;
LJMPJOD3;
循环
ORG0C30H
实验五 A/D转换实验
(1)掌握A/D转换与单片机接口的方法;
(2)了解A/D芯片0809转换性能及编程方法;
(3)通过实验了解单片机如何进行数据采集。
利用实验系统上的0809做A/D转换器,实验系统上的电位器提供模拟量输入,编制程序,将模拟量转换成数字,通过数码管显示出来。
3,实验接线图:
把0809的零通道IN0用插针接至AOUT1孔,CS4接FF80H,JX0接JX17,8MHZ接T,运行程序,数码管上显示0809XX,,后二位显示当前采集的电压转换的数字量,调节W1,该二位将随着电压变化而相应变化。
6,思考:
修改程序,用其它通道轮流采样显示。
7,程序清单:
LJMPSE11
ORG0590H
SE11:
MOVSP,#53H
movp2,#0ffh
MOVA,#81H
MOVDPTR,#0FF23H
MOV7EH,#00H
MOV7DH,#08H
MOV7CH,#00H
MOV7BH,#09H
MOV7AH,#10H
MOV79H,#10H;
显示缓冲区初值
LO18:
LCALLSSEE;
显示
MOVA,#00H
MOVDPTR,#0FF80H
0809的0通道采样
MOVR7,#0FFH;
LO17:
DJNZR7,LO17
MOVXA,@DPTR;
取出采样值
MOVR0,#79H
LCALLPTDS
SJMPLO18;
采样值送显示缓冲区
ORG05D0H
PTDS:
MOVR1,A;
拆送显示缓冲区
ACALLPTDS1
MOVA,R1
SWAPA
PTDS1:
ANLA,#0FH
MOV@R0,A
INCR0
ORG0D50H
SSEE:
SETBRS1;
换工作区
MOVR5,#05H
SSE2:
MOV30H,#20H
MOV31H,#7EH
MOVR7,#06H
SSE1:
MOVR1,#20H
MOVA,30H
CPLA
MOVX@R1,A;
字位送入
MOVR0,31H
MOVA,@R0
MOVDPTR,#DDFF
MOVCA,@A+DPTR;
取字形代码
MOVR1,#21H
字形送入
RRA;
右移
MOV30H,A
DEC31H
MOVA,#0FFH
关显示
DJNZR7,SSE1;
六位显示完了吗?
DJNZR5,SSE2;
5次显示完了吗?
CLRRS1
DDFF:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
实验六 8279键盘显示实验
掌握8051系统中,扩展8279键盘显示接口的方法。
按下数字键,数码管上应相应能显示数字,按下功能键,能相应执行其它程序。
3,实验接线图
把CS6孔用插针连至FF80H,JSL接JS,JRL接JR,JOUT接JLED,开关JK置外接(实验完后置系统),连PC机操作,运行程序,数码管上显示P,按下数字键,数码管上应能显示相应数字,按下功能键,数码管上显示相应的0字、l字、2字循环。
修改程序,高四位数码管显示数字当地址看待,按功能键1后,按下的数字只显示在后二位上,当数据看待,功能键2和功能键3当地址加一和减一键使用。
ORG0000H
LJMPH900
ORG00D0H
H900:
MOVSP,#80H
MOVDPTR,#0FF81H
MOVA,#00H;
8279方式字写入
MOVA,#32H
分频
MOVA,#0DFH
H901:
MOVXA,@DPTR;
清缓冲区
JBACC.7,H901
mova,#85h
movx@dptr,a
MOVA,#0c8H
MOVA,#85H
字位送入,显示P
H902:
MOV30H,#85H
MOV31H,#40H
H903:
MOVDPTR,#0FF81H
MOVXA,@DPTR
ANLA,#07H
CJNEA,#00H,H904;
有键按下吗?
AJMPH903
H904:
MOVDPTR,#0FF80H
MOVB,A;
取出键值
MOVR1,#00H
MOVDPTR,#GOJZ
H905:
MOVA,#00H
查键值表是否相同
CJNEA,B,H906
AJMPH907;
转数字外处理程序
H906:
INCDPTR;
键青址数加1
INCR1;
查找次数加1
MOVA,R1
JBACC.4,H908;
是功能键吗?
AJMPH905;
H908:
MOVR1,#00H
MOVDPTR,#GOJZ1
H909:
功能键键值取出
CJNEA,B,H90A;
键值相等吗?
AJMPH90B;
转功能键处理子程序
H90A:
INCR1
JNBACC.2,H909;
AJMPH900;
无键按下返回
H907:
MOVA,30H
MOVDPTR,#0FF81H;
字位送入8279
MOV@R0,A
INC31H;
字形缓冲区加1
MOVDPTR,#ZOE0
取出字形代码
送入8279显示
DEC30H;
字位加1
CJNEA,#7fH,H90C;
显示到第8位,从头显示
AJMPH902
H90C:
AJMPH903
H90B:
MOVDPTR,#CKEY3;
功能键散转处理
MOVA,R1
RLA
ADDA,R1
JMP@A+DPTR
CKEY3:
LJMPL240
LJMPL241
LJMPL242
LJMPH900
GOJZ:
DB0C9H,0C1H,0D1H,0E1H,0C8H,0D8H,0E8H,0C0H,0D0H
DB0E0H,0F0H,0F8H,0F1H,0F9H,0E9H,0D9H
GOJZ1:
DB0F2H,0FAH,0F3H,0FBH
ZOE0:
DB0CH,9FH,4AH,0BH,99H,29H,28H,8FH,08H,09H,88H
DB38H,6CH,1AH,68H,0E8H
;
ORG0E41H
L240:
MOVR5,#0CH
LJMPL245;
0字循环
L241:
MOVR5,#9FH
1字循环
L242:
MOVR5,#4AH
L245:
MOVR6,#80H;
2字循环
L246:
MOVA,R6
MOVA,R5
字形送入8279
INCR6;
下一位显示
CJNER6,#88H,L246
AJMPL245;
不到最后一位继续
END