单片机实验一1.docx
《单片机实验一1.docx》由会员分享,可在线阅读,更多相关《单片机实验一1.docx(20页珍藏版)》请在冰豆网上搜索。
单片机实验一1
单片机实验
(一)
姓名:
吕贺
班级:
信科11-1
学号:
08113533
日期:
2013.12.20
实验一单片机I/O口应用实验
一、实验目的
1、掌握单片机P3口、P1口简单使用。
2、学习延时程序的编写和使用。
二、实验内容
1、P3.3口做输入口,外接一脉冲,每输入一个脉冲,P1口按十六进制加一输出。
2、P1口做输出口,编写程序,使P1口接的8个发光二极管L0—L7按16进制加一的方式点亮发光二极管。
三、实验说明
1、P1口是准双向口,它作为输出口时与一般的双向口使用方法相同,由准双向口结构可知:
当P1口作为输入口时,必须先对它置高电平,使内部MOS管截止,因内部上拉电阻是20KΩ—40KΩ,故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据不正确。
2、延时子程序的延时计算。
对于延时的程序
DELAY:
MOVR6,#00H
DELAY1:
MOVR7,#80H
DJNZR7,$
DJNZR6,DELAY1
查指令表可知MOV、DJNZ指令均需用两个机器周期,而一个机器周期时间长度为12/6.0MHZ,所以该段指令执行时间为:
(((128+1)×256)+1)×2×(12÷6000000)=132.1ms。
四、实验原理图
图2-1-1
五、实验接线示意图
六、实验程序框图
七、实验步骤
1、P3.3用插针连至K1,P1(P1.0~P1.7)用8芯线连至JL(L0~L7)。
2、调试、运行程序test1中的MCUIO.ASM。
3、开关K1每拨动一次,L0~L7发光二极管按16进制方式加一点亮。
八、实验代码
ORG0000h
AJMPHA1S
ORG0030H
HA1S:
MOVA,#00H
HA1S1:
JBP3.3,HA1S1
MOVR2,#20H
LCALLDELAY
JBP3.3,HA1S1
HA1S2:
JNBP3.3,HA1S2
MOVR2,#20H
LCALLDELAY
JNBP3.3,HA1S2
INCA
PUSHACC
MOVP1,A
POPACC
AJMPHA1S1
DELAY:
PUSH02H
DELAY1:
PUSH02H
DELAY2:
PUSH02H
DELAY3:
DJNZR2,DELAY3
POP02H
DJNZR2,DELAY2
POP02H
DJNZR2,DELAY1
POP02H
DJNZR2,DELAY
RET
END
九、实验体会
这次虽然不是第一次用汇编语言编程,但是对其还是没有很深的印象,以至于刚开始时可以说错误百出,甚至是一些非常低级的错误。
实验中写程序的时候,总是对某些指令不熟悉,然后不断地去翻书,这反映出对指令的不熟悉
实验二单片机I/O口应用实验
一、实验目的
掌握工业顺序控制程序的简单编写和中断的使用。
二、实验预备知识
在工业控制中,像冲压、注塑、轻纺、制瓶等生产过程,都是一些断续生产过程,按某种程序有规律地完成预定的动作,对这类断续生产过程的控制称顺序控制,例:
注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机最易实现。
三、实验内容
8031的P1.0~P1.6控制注塑机的七道工序,现模拟控制七只发光二极管的点亮,高电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,低电平启动。
P3.3为外故障输入模拟开关,P3.3为0时不断告警,P1.7为报警声音输出。
注意:
实验说明
实验中用外部中断0,编中断服务程序的关键是:
1、保护进入中断时的状态,并在退出中断之前恢复进入中断前的状态。
2、必须在中断程序中设定是否允许中断重入,即设置EX0位。
一般中断程序进入时应保护PSW、ACC以及中断程序中使用到的但并非其专用的寄存器,本实验中未涉及。
五、实验原理图
图2-2-1
六、接线示意图
图2-2-2
七、实验程序框图
图2-2-3
七、实验步骤
1、P3.4连K1,P3.3连K2,P1.0~P1.6分别连到L0~L6,P1.7连SIN(在音频发生器区域,该区域中一跳线器连在LB位置)。
2、K1开关拨在上面,K2拨在上面。
3、调试、运行程序test2中的GYSX.ASM。
4、K1拨至下面(低电平),各道工序应正常运行。
5、K2拨至下面(低电平),应有声音报警(人为设置故障)。
6、K2拨至上面(高电平),即排除故障,程序应从刚才报警的那道工序继续执行。
八、实验代码
ORG0000H
AJMP0030H
ORG0013H
LJMPHA2S3
ORG0030H
HA2S:
MOVP1,#0fFH
ORLP3,#00H
HA2S1:
JBP3.4,HA2S1
ORLIE,#84H
ORLIP,#04H
MOVPSW,#00H
MOVSP,#53H
HA2S2:
MOVP1,#081H
ACALLHA2S7
MOVP1,#082H
ACALLHA2S7
MOVP1,#084H
ACALLHA2S7
MOVP1,#088H
ACALLHA2S7
MOVP1,#090H
ACALLHA2S7
MOVP1,#0A0H
ACALLHA2S7
MOVP1,#0C0H
ACALLHA2S7
SJMPHA2S2
HA2S3:
MOVB,R2
HA2S5:
SETBP1.7
ACALLHA2S6
CLRP1.7
ACALLHA2S6
JNBP3.3,HA2S5
MOVR2,B
RETI
HA2S6:
MOVR2,#06H
ACALLDELAY
RET
HA2S7:
MOVR2,#30H
ACALLDELAY
RET
DELAY:
PUSH02H
DELAY1:
PUSH02H
DELAY2:
PUSH02H
DELAY3:
DJNZR2,DELAY3
POP02H
DJNZR2,DELAY2
POP02H
DJNZR2,DELAY1
POP02H
DJNZR2,DELAY
RET
END
九、实验体会
本次实验利用单片机模拟了注塑机工艺过程:
按“合模→注射→延时→开模→产伸→产退”顺序动作。
体会到了利用汇编程序编写顺序结构的程序的方法,同时我们有利用单片机的中断资源,体会到中断资源适合用在实际应用中的哪些地方。
实验三并行I/O接口8255应用
一、实验目的
了解8255芯片的结构及编程方法。
二、实验内容
用8255的PA口做输入口,PB口做输出口,控制PA口状态从PB口输出显示。
三、实验说明
通过PA口接8个开关K1~K8,PB口接8个发光二极管,从PA口读入8位开关的状态送PB口显示,拨动K1~K8,PB口上接的8个发光二极管L0~L7对应显示K1~K8的状态。
四、实验接线图
图2-3-1
图2-3-2
五、实验程序框图
六、实验步骤
1、8255芯片的PA(PA0~PA7)插座用8芯线连接开关JK(K1~K8)。
2、8255芯片的PB(PB0~PB7)连接发光二极管JL(L0~L7)。
3、8255芯片的片选CS_8255插孔接译码输出Y0。
4、调试、运行程序test3中8255.ASM。
拨动开关,相对应的发光二极管显示其状态。
七、实验代码
org0000h
ajmpmain
org0030h
main:
movsp,#60h
movdptr,#8003h
mova,#90h
movx@dptr,a
m:
movdptr,#8000h
movxa,@dptr
lcalldelay
movdptr,#8001h
movx@dptr,a
lcalldelay
ajmpm
delay:
movr6,#00h
djnzr6,$
ret
end
八、实验体会
本次实验我们利用了8255芯片和51单片机实现了通过开关控制8个led小灯的亮灭。
学习巩固了8255芯片的编程方法和使用规范。
实验四简单I/O口扩展实验
一、实验目的
学习在单片机系统中扩展简单I/O口的基本方法。
二、实验内容
MCS—51外部扩展空间很大,但数据总线口和控制信号的负载能力是有限的,若需要扩展的芯片较多,则MCS—51总线口负载过重,74LS244是一个输入扩展口,同时也是一个单向驱动器,以减轻总线负担。
74LS273作为同向输出口,控制8个发光二极管的亮灭。
三、实验原理图
图2-4-1
四、实验接线示意图
图2-4-2
五、实验程序框图
六、实验步骤
1、74LS244的输入端PI0~PI7接JK(K1~K8),74LS273的输出端PO0~PO7接JL(L0~L7),CS_244接Y2,CS_273接Y3。
2、调试、运行程序test4中的IO.ASM。
3、拨动K1~K8,观察L0~L7点亮情况。
七、实验代码
ORG0H
AJMP0030H
ORG0030H
HA3S:
MOVSP,#60H;?
MOVDPTR,#0a000H
MOVXA,@DPTR
MOVR2,#02H
LCALLDELAY
MOVDPTR,#0b000H
MOVX@DPTR,A
MOVR2,#02H
LCALLDELAY
nop
SJMPHA3S
DELAY:
PUSH02H
DELAY1:
PUSH02H
DELAY2:
PUSH02H
DELAY3:
DJNZR2,DELAY3
POP02H
DJNZR2,DELAY2
POP02H
DJNZR2,DELAY1
POP02H
DJNZR2,DELAY
RET
END
八、实验体会
经过这几次对汇编语言的使用,慢慢的发现掌握了汇编语言的应用。
不在像刚开始那样错的那么离谱。
这次实验中我学习了在单片机系统中扩展简单I/O口的基本方法。
MCS—51外部扩展空间很大,但数据总线口和控制信号的负载能力是有限的,若需要扩展的芯片较多,则MCS—51总线口负载过重,74LS244是一个输入扩展口,同时也是一个单向驱动器,以减轻总线负担。
74LS273作为同向输出口,控制了8个发光二极管的亮灭。
实验虽然简单,但是其意义是巨大的,它给我们提供了一种扩展io口的方法,以增加单片机的负载能力。