单片机实验指导书.docx
- 文档编号:27194023
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:16
- 大小:167.31KB
单片机实验指导书.docx
《单片机实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书.docx(16页珍藏版)》请在冰豆网上搜索。
单片机实验指导书
单片机原理及应用实验指导书
物理与电子信息学院电子技术实验室编
2012年10月
目录
实验一P1口实验
实验二简单I/O口扩展实验
实验三中断实验
实验四定时器实验
实验一P1口实验一
一、实验目的:
1.学习P1口的使用方法。
2.学习延时子程序的编写和使用。
二、实验设备:
51单片机实验箱
三、实验内容:
P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
四、实验原理:
P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。
作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。
8051中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个输入。
可以用第二个实验做一下实验。
先按要求编好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1做输入口,会有什么结果。
再来看一下延时程序的实现。
现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。
在系统时间允许的情况下可以采用后一种方法。
本实验系统晶振为12MHZ,则一个机器周期为12÷12us。
现要写一个延时0.1s的程序,可大致写出如下:
MOVR7,#X
(1)
DEL1:
MOVR6,#200
(2)
DEL2:
DJNZR6,DEL2(3)
DJNZR7,DEL1(4)
上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需要2us,
现求出X值:
2+X(2+200×2+2)=0.1×10⁶
指令
(1)指令
(2)指令(3)指令(4)
所需时间所需时间所需时间所需时间
X=(0.1×10⁶-2)/(2+200×2+2)=248D=F8H
五、实验原理图:
P1口输出实验
六、程序框图:
七、参考程序如下:
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVSP,#60H
MOVA,#0FEH
TT:
MOVP1,A
LCALLDELAY
RLA
SJMPTT
DELAY:
MOVR0,#10;延时1秒
DEL1:
MOVR1,#200
DEL2:
MOVR2,#250
DJNZR2,$
DJNZR1,DEL2
DJNZR0,DEL1
RET
END
实验二简单I/O口扩展实验一
——交通灯控制实验
一、实验目的:
1.学习在单片机系统中扩展简单I/O接口的方法。
2.学习数据输出程序的设计方法。
3.学习模拟交通灯控制的实现方法。
二、实验设备:
51单片机实验箱
三、实验内容:
P1口做输出口,接六只发光二极管,控制六个发光二极管燃灭,模拟交通灯管理。
四、实验原理:
要完成本实验,首先必须了解交通路灯的燃灭规律。
本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。
不妨将L1(红)、L2(绿)、L3(黄)做为东西方向的指示灯,将L5(红)、L6(绿)、L7(黄)做为南北方向的指示灯。
而交通灯的燃灭规律为:
初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。
闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。
闪烁若干次后,再切换到东西路口方向,重复上述过程。
各发光二极管使其点亮应使相应输入端为低电平。
五、实验原理图
六、程序框图:
七、参考程序如下:
ORG0000H
AJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H
STATE0:
MOVA,#0DBH
MOVP1,A
MOVR1,#6
TT0:
LCALLDELAY
DJNZR1,TT0
STATE1:
MOVA,#0DDH
MOVP1,A
MOVR1,#20
TT1:
LCALLDELAY
DJNZR1,TT1
MOVR1,#5
STATE2:
MOVA,#0DEH
MOVP1,A
LCALLDELAY
MOVA,#0DFH
MOVP1,A
LCALLDELAY
DJNZR1,STATE2
STATE3:
MOVA,#0EBH
MOVP1,A
MOVR1,#20
TT2:
LCALLDELAY
DJNZR1,TT2
MOVR1,#5
STATE4:
MOVA,#0F3H
MOVP1,A
LCALLDELAY
MOVA,#0FBH
MOVP1,A
LCALLDELAY
DJNZR1,STATE4
SJMPSTATE1
DELAY:
MOVR2,#10
DEL1:
MOVR3,#100
DEL2:
MOVR4,#250
DJNZR4,$
DJNZR3,DEL2
DJNZR2,DEL1
RET
END
问题:
1、程序设计的原则及步骤?
2、汇编语言程序有几种结构形式?
本实验中包含哪几个结构?
实验三中断实验
———有急救车的交通灯控制实验
一、实验目的:
1.学习外部中断技术的基本使用方法。
2.学习中断处理程序的编程方法。
二、实验设备:
51单片机实验箱
三、实验内容:
在实验二的内容的基础上增加允许急救车优先通过的要求。
当有急救车到达时,两个方向上的红灯亮,以便让急救车通过,假定急救车通过路口的时间为10秒,急救车通过后,交通灯恢复中断前的状态。
本实验以单脉冲为中断申请,表示有急救车通过。
四、实验原理:
交通灯的燃灭规律见实验二。
本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。
要保护的地方,除了累加器ACC、标志寄存器PSW外,还要注意:
一是主程序中的延时程序和中断处理程序中的延时程序不能混用。
还要注意一点,主程序中往端口输出数据操作要先保存再输出,例如有如下操作:
MOVA,#0F0H(0)
MOVX@R1,A
(1)
MOVSAVE,A
(2)
程序如果正好执行到
(1)时发生中断,则转入中断程序,假设中断程序返回主程序前需要执行一句MOVA,SAVE指令,由于主程序中没有执行
(2),故SAVE中的内容实际上是前一次放入的而不是(0)语句中给出的0F0H,显示出错,将
(1)、
(2)两句顺序颠倒一下则没有问题。
发生中断时两方向的红灯一起亮10秒,然后返回中断前的状态。
五、实验原理图:
(同实验二)
六、程序框图:
主程序框图中断程序框图
七、参考程序如下:
ORG0000H
AJMPMAIN
ORG0003H
AJMPINT_0
ORG0100H
MAIN:
MOVSP,#60H
SETBEA
SETBEX0
SETBIT0;外部中断为下降沿有效
SETBP3.2
STATE0:
MOVA,#0F6H
MOVP1,A
MOVR1,#6
TT0:
LCALLDELAY
DJNZR1,TT0
STATE1:
MOVA,#0D7H
MOVP1,A
MOVR1,#20
TT1:
LCALLDELAY
DJNZR1,TT1
MOVR1,#5
STATE2:
MOVA,#0E7H
MOVP1,A
LCALLDELAY
MOVA,#0F7H
MOVP1,A
LCALLDELAY
DJNZR1,STATE2
STATE3:
MOVA,#0F3H
MOVP1,A
MOVR1,#20
TT2:
LCALLDELAY
DJNZR1,TT2
MOVR1,#5
STATE4:
MOVA,#0F5H
MOVP1,A
LCALLDELAY
MOVA,#0F7H
MOVP1,A
LCALLDELAY
DJNZR1,STATE4
SJMPSTATE1
DELAY:
MOVR2,#10
DEL1:
MOVR3,#100
DEL2:
MOVR4,#250
DJNZR4,$
DJNZR3,DEL2
DJNZR2,DEL1
RET
INT_0:
PUSHPSW
PUSHACC
PUSH02H
PUSH03H
PUSH04H
MOVR0,#20
MOVA,#0F6H
MOVP1,A
XX:
LCALLDELAY
DJNZR0,XX
POP04H
POP03H
POP02H
POPACC
MOVP1,A
POPPSW
CLRIE0
RETI
END
实验四定时器实验
———循环彩灯实验
一、实验目的:
1.学习8051内部计数器的使用和编程方法。
2.进一步掌握中断处理程序的编写方法。
二、实验设备:
51单片机实验箱
三、实验原理:
1.定时常数的确定
定时器/计数器的输入脉冲周期与机器周期一样,为振荡频率的1/12。
本实验中时钟频率为12MHZ,现要采用中断方法来实现0.5秒延时,要在定时器1中设置一个时间常数,使其每隔50毫秒产生一次中断,CPU响应中断后将R0中计数值减一,令R0=20,即可实现1秒延时。
时间常数可按下述方法确定:
机器周期=12÷晶振频率=12/(12×106)=1us
设计数初值为X,则X=
=15536D
化为十六进制则X=3CB0H,故初始值为TH1=3CH,TL1=B0H
2.初始化程序
包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行正确的设置,并将时间常数送入定时器中。
由于只有定时器中断,IP便不必设置。
3.设计中断服务程序和主程序
中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。
主程序则用来控制发光二极管按要求顺序燃灭。
四、实验题目
由8051内部定时器1按方式1工作,即作为16位定时器使用,每1秒钟T1溢出中断一次。
P1口的P1.0~P1.7分别接发光二极管的L1~L8。
要求编写程序模拟一循环彩灯,彩灯变化花样可自行设计。
例程给出的变化花样为:
①L1、L2、…L8依次点亮;②L1、L2、…L8依次熄灭;③L1、L2、…L8全亮、全灭,让发光二极管按以上规律循环显示下去。
五、实验电路:
六、程序框图:
主程序框图中断程序框图
七、参考程序如下:
ORG0000H
AJMPMAIN
ORG001BH
AJMPTIMER1
ORG0030H
MAIN:
MOVSP,#60H
MOVTMOD,#10H
SETBEA
SETBET1
MOVTH1,#03CH;50MS
MOVTL1,#0B0H
MOVR0,#20
MOVR1,#0
MOVDPTR,#TAB
SETBTR1
TT:
MOVA,R1
MOVCA,@A+DPTR
MOVP1,A
CJNER1,#18,TT
MOVR1,#0
SJMPMAIN
TIMER1:
MOVTH1,#03CH
MOVTL1,#0B0H
DECR0
CJNER0,#0,XX
MOVR0,#20
INCR1
XX:
RETI
TAB:
DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
DB01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
DB00H,0FFH
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 指导书