《单片机与接口技术》实验指导书.docx
《《单片机与接口技术》实验指导书.docx》由会员分享,可在线阅读,更多相关《《单片机与接口技术》实验指导书.docx(43页珍藏版)》请在冰豆网上搜索。
《单片机与接口技术》实验指导书
《单片机与接口技术》
实验指导书
王玉琳编写
SUNES59PA
合肥工业大学机械与汽车工程学院
2014年12月(第1版)
实验一P1口与P3口综合实验
一、实验目的与要求
熟悉星研集成环境软件的使用方法,学习MCS51汇编指令,掌握P1、P3口的使用方法。
二、实验设备
SUN系列实验仪一套、PC机一台、示波器一台。
三、实验内容
1、熟悉星研集成环境软件。
2、按接线图编写程序:
使用P1口控制F5区的8个LED指示灯,循环点亮,瞬间只有一个灯亮(P1口某一位输出低电平时,对应的LED被点亮)。
3、观察实验结果,验证程序是否正确。
四、实验原理图
五、实验步骤
1、连线说明:
A3区:
JP51
——
F5区:
JP65
2、建立文件、编写程序。
3、观察实验结果并做记录。
六、参考程序
ORG
0000H
LJMP
MAIN
ORG
0030H
MAIN:
MOV
SP,#70H
MOV
A,#0FFH
CLR
C
AGAIN:
RLC
A
MOV
P1,A
ACALL
DELAY
SJMP
AGAIN
DELAY:
MOV
R5,#02H
;延时
DELAY1:
MOV
R6,#00H
DELAY2:
MOV
R7,#00H
DJNZ
R7,$
DJNZ
R6,DELAY2
DJNZ
R5,DELAY1
RET
END
七、扩展实验一:
异或、位查询
将排线JP65转180°。
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#70H
MOVP1,#11111111B
JBP3.0,$;P3.0接K7,作为“启动”
AGAIN:
XRLP1,#11110000B
CALLDELAY
JNBP3.1,$;P3.1接K8,作为“暂停”
XRLP1,#00001111B
CALLDELAY
JNBP3.1,$;P3.1接K8,作为“暂停”
SJMPAGAIN
DELAY:
MOV
R5,#02H
;延时
DELAY1:
MOV
R6,#00H
DELAY2:
MOV
R7,#00H
DJNZ
R7,$
DJNZ
R6,DELAY2
DJNZ
R5,DELAY1
RET
END
八、扩展实验二:
位查询、外部中断
排线保留。
用AT89S52的P1.0~P1.7控制8道工序,现模拟控制8只LED,低电平点亮,将每道工序所占的时间假定为延时;P3.4接K7,为开工启动开关,下降沿有效;P3.3接K8,为外部故障模拟输入开关,P3.3=1时设备正常,P3.3=0时,设备出故障,系统报警;P3.5接F6区蜂鸣器的Ctrl,为报警时的声音输出。
初始状态,K7和K8均拨到下面(高电平),此时8只LED均未点亮。
运行程序后,将K7拨到上面再拨下来,二极管开始点亮,顺序动作开始;把K8拨到上面时,发声报警,再将K8拨到下面时,报警停止。
ORG0000H
LJMPPO10
ORG0013H
LJMPPO16
ORG0030H
PO10:
MOVP1,#0FFH
PO11:
JBP3.4,PO11
ORLIE,#10000100B;(EA)=1,(EX1)=1
ORLIP,#00000100B;(PX1)=1
MOVPSW,#00H
MOVSP,#70H
PO12:
MOVP1,#11111110B
ACALLDELAY
MOVP1,#11111101B
ACALLDELAY
MOVP1,#11111011B
ACALLDELAY
MOVP1,#11110111B
ACALLDELAY
MOVP1,#11101111B
ACALLDELAY
MOVP1,#11011111B
ACALLDELAY
MOVP1,#10111111B
ACALLDELAY
MOVP1,#01111111B
ACALLDELAY
SJMPPO12
PO16:
CLRP3.5;中断服务子程序
JNBP3.3,$
RETI
DELAY:
MOVR5,#02H
DELAY1:
MOVR6,#00H
DELAY2:
MOVR7,#00H
DJNZR7,$
DJNZR6,DELAY2
DJNZR5,DELAY1
RET
END
九、扩展实验三:
外部计数
(1)排线保留;
(2)把单脉冲输出孔
和P3.4(单片机的T0计数器)相连;
(3)上、下拨动正脉冲开关一次,产生的脉冲下降沿使得单片机的T0计数器计数值加1,LED-8点亮;
(4)不断上、下拨动开关,观察8只LED的点亮情况。
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVP1,#11111111B;LED-1~LED-8全灭
MOVTMOD,#00000101B;T0计数器初始化,方式1计数
MOVTH0,#00H ;T0的计数初值设为0
MOVTL0,#00H
SETBTR0;T0计数器开始计数
AGAIN:
MOVA,TL0;读取T0计数器的低8位计数值
CPLA
MOVP1,A
SJMPAGAIN
END
将T0换成T1,如何修改程序?
十、扩展实验四:
位异或
8051单片机中没有对两个位进行异或操作的指令,请编程实现:
(P1.2)<===(P1.0)⊕(P1.1)
(1)拔掉排线;
(2)将P1.0接K7,P1.1接K8,P1.2接LED-3;
(2)将K7、K8进行4种组合,观察LED-3的点亮情况。
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVC,P1.0
ANLC,/P1.1
MOV00H,C
MOVC,P1.1
ANLC,/P1.0
ORLC,00H
MOVP1.2,C;(P1.2)=0时,LED-3才会点亮
SJMPMAIN
END
十一、扩展实验五:
定时输出周期2s占空比1:
1的连续方波。
自己接线、编程。
实验二内、外RAM数据传送实验
一、实验目的
熟悉星研集成环境软件的使用方法,熟悉MCS51汇编指令,学会编写简单程序,掌握51单片机数据传输的方法。
二、实验内容
1、熟悉星研集成环境软件的使用方法。
2、编写程序,实现内、外RAM数据段的传送与校验。
三、程序框图
四、实验步骤
在内部RAM单元30H~3FH中输入数据,使用单步、断点方式调试程序,检测外部数据RAM的1000H~100FH中的内容。
熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。
五、程序清单
将内部RAM从Address1开始的16个字节内容,传送到外部RAM从Address2开始的16个单元里,然后再作比较。
Address1
DATA
30H
Address2
XDATA
1000H
ORG
0000H
LJMP
SUN
ORG
0100H
SUN:
MOV
SP,#60H
MOV
MOV
P1,#0FFH
R0,#Address1
MOV
DPTR,#Address2
MOV
R7,#10H
SUN1:
MOV
A,@R0
;传送
MOVX
@DPTR,A
INC
R0
INC
DPTR
DJNZ
R7,SUN1
MOV
R0,#Address1
MOV
DPTR,#Address2
MOV
R7,#10H
SUN2:
MOV
B,@R0
;比较
MOVX
A,@DPTR
CJNE
A,B,SUN3
INC
R0
INC
DPTR
DJNZ
R7,SUN2
CLR
SJMP
P1.0
$
;P1.0接LED-1
;传送正确,绿灯亮
SUN3:
CLR
SJMP
P1.2
$
;P1.2接LED-3
;传送错误,红灯亮
END
六、扩展实验一
编写一个程序,将16个外部数据RAM中的数据传送到16个内部数据RAM中:
Address1
DATA
30H
Address2
XDATA
1000H
ORG
0000H
LJMP
SUN
ORG
0100H
SUN:
MOV
SP,#60H
MOV
MOV
P1,#0FFH
R0,#Address1
MOV
DPTR,#Address2
MOV
R7,#10H
SUN1:
MOVX
A,@DPTR
;传送
MOV
@R0,A
INC
R0
INC
DPTR
DJNZ
R7,SUN1
MOV
R0,#Address1
MOV
DPTR,#Address2
MOV
R7,#10H
SUN2:
MOV
B,@R0
;比较
MOVX
A,@DPTR
CJNE
A,B,SUN3
INC
R0
INC
DPTR
DJNZ
R7,SUN2
CLR
SJMP
P1.0
$
;P1.0接LED-1
;传送正确,绿灯亮
SUN3:
CLR
SJMP
P1.2
$
;P1.2接LED-3
;传送错误,红灯亮
END
七、扩展实验二
编程将外部数据RAM中的存储区0000H~1FFFH所有单元均清零:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVP1,#0FFH
MOVDPTR,#0000H
AGAIN:
CLRA
MOVX@DPTR,A
INCDPTR
MOVA,DPH
CJNEA,#20H,AGAIN
CLRP1.0;P1.0接LED-1
SJMP$;结束时绿灯亮
以上程序为一种方法,你还能想出其它方法吗?
实验三定时、计数与中断实验(软件实验十一)
一、实验目的
熟悉MCS51单片机的定时、计数与中断系统的编程方法,了解定时器、计数器的应用、实时程序的设计与调试技巧。
二、实验内容
使用CPU的T0作定时器进行定时,T1作计数器对外部脉冲进行计数,并将脉冲频率值显示在数码管上。
三、程序框图
四、实验步骤
1、连线说明:
D3区:
SDA、SCL
——
A3区:
P3.0、P3.1
D3区:
A、B、C、D
——
F4区:
A、B、C、D
2、将导线的一头插入A3区的T1(P3.5);
3、打开实验仪的电源;
4、将导线的另一头与F3区的f≤250kHz的信号相连,对应的频率值显示在数码管上。
五、程序清单(源程序文件名:
cymometer.asm)
程序名称:
频率计(P3.5计数,每隔1秒处理一次)
Count50ms
DATA
30H
PulseCount
DATA
31H
;脉冲计数第三个字节
buffer
DATA
32H
;8个字节显示缓冲区
EXTRN
CODE(Display8)
ORG
0000H
LJMP
SUN
ORG
000BH
LJMP
TimerT0
;T0计时中断处理入口
ORG
001BH
LJMP
CounterT1
;T1计数中断处理入口
ORG
0100H
SUN:
MOV
SP,#60H
MOV
TMOD,#01010001B
;T0定时,T1计数,方式1
MOV
TH0,#03CH
;50ms定时
MOV
TL0,#0B0H
MOV
Count50ms,#20
;20*50ms=1s
MOV
TH1,#00H;计数
MOV
TL1,#00H
MOV
PulseCount,#0
SETB
EA
SETB
ET1
SETB
ET0
SETB
TR0
SETB
TR1
SUN1:
JB
TR0,$
SETB
TR0
;刷新显示
SETB
TR1
ACALL
B4toD4
Display:
MOV
R0,#buffer
;显示结果
MOV
A,R7
;低位
ACALL
B1toB2
;压缩BCD码转换成非压缩BCD码
MOV
A,R6
ACALL
B1toB2
MOV
A,R5
ACALL
B1toB2
MOV
A,R4
;高位
ACALL
B1toB2
MOV
R0,#buffer+7
MOV
R7,#7
ACALL
BlackDisplay
;将高位0消隐
MOV
R0,#buffer
LCALL
Display8
SJMP
SUN1
TimerT0:
MOV
TH0,#03CH
;50ms定时
MOV
TL0,#0B0H
DJNZ
Count50ms,TimerT0_exit
MOV
Count50ms,#20
CLR
TR0
CLR
TR1
MOV
R1,PulseCount
MOV
R2,TH1
MOV
R3,TL1
MOV
PulseCount,#0
MOV
TH1,#0
MOV
TL1,#0
TimerT0_exit:
RETI
CounterT1:
INC
PulseCount
RETI
END
六、思考题
1、为什么测试较高频率信号时,数码管上显示的数据一直在变化?
2、为什么频率信号不能超过0.5MHz?
实验四8255控制交通灯实验(基础硬件实验六)
一、实验目的
1、学习8255芯片的工作原理,熟悉其初始化编程方法以及输入、输出程序设计技巧。
学会使用8255并行接口芯片实现各种控制功能,如本实验(控制交通灯)等。
2、熟悉8255内部结构和与单片机的接口逻辑,熟悉8255芯片的3种工作方式以及控制字格式。
二、实验设备
SUN系列实验仪一套、PC机一台。
三、实验内容
1、编写程序:
使用8255的PA口控制8只LED指示灯,实现交通灯功能。
2、连接线路验证8255的功能,熟悉它的使用方法。
四、实验原理图
五、实验步骤
1、连线说明:
B6区:
CS、A0、A1
——
A3区:
CS1、A0、A1
B6区:
JP56(PA口)
——
F5区:
JP65
2、观察实验结果,是否能看到模拟的交通灯控制过程。
六、实验程序(源程序文件名:
8255.asm)
COM_ADD
XDATA
0F003H
PA_ADD
XDATA
0F000H
PB_ADD
XDATA
0F001H
PC_ADD
XDATA
0F002H
ORG
0000H
LJMP
SUN
ORG
0100H
SUN:
MOV
SP,#60H
MOV
DPTR,#COM_ADD
MOV
A,#80H
;PA、PB、PC为基本输出模式
MOVX
@DPTR,A
MOV
DPTR,#PA_ADD
;灯全熄灭
MOV
A,#0FFH
MOVX
@DPTR,A
SUNT1:
MOV
A,#37H
MOVC
A,@A+PC
MOVX
@DPTR,A
;东西绿灯,南北红灯
ACALL
DL5S
MOV
R4,#6
SUNT2:
MOV
A,#30H
MOVC
A,@A+PC
MOVX
@DPTR,A
;东西绿灯闪烁,南北红灯
ACALL
DL500ms
MOV
A,#29H
MOVC
A,@A+PC
MOVX
@DPTR,A
ACALL
DL500ms
DJNZ
R4,SUNT2
MOV
A,#23H
;东西黄灯亮,南北红灯
MOVC
A,@A+PC
MOVX
@DPTR,A
ACALL
DL3S
MOV
A,#1EH
;东西红灯,南北绿灯
MOVC
A,@A+PC
MOVX
@DPTR,A
ACALL
DL5S
MOV
R4,#6
SUNT3:
MOV
A,#17H
;东西红灯,南北绿灯闪烁
MOVC
A,@A+PC
MOVX
@DPTR,A
ACALL
DL500ms
MOV
A,#10H
MOVC
A,@A+PC
MOVX
@DPTR,A
ACALL
DL500ms
DJNZ
R4,SUNT3
MOV
A,#0AH
;东西红灯,南北黄灯亮
MOVC
A,@A+PC
MOVX
@DPTR,A
ACALL
DL3S
SJMP
SUNT1
DB
01111110B
;东西绿灯,南北红灯
DB
11111110B
;东西绿灯闪烁,南北红灯
DB
10111110B
;东西黄灯亮,南北红灯
DB
11011011B
;东西红灯,南北绿灯
DB
11011111B
;东西红灯,南北绿灯闪烁
DB
11011101B
;东西红灯,南北黄灯亮
DL500ms:
MOV
R5,#25
DL500ms1:
MOV
R6,#100
DL500ms2:
MOV
R7,#100
DJNZ
R7,$
DJNZ
R6,DL500ms2
DJNZ
R5,DL500ms1
RET
DL3S:
MOV
R4,#6
DL3S1:
LCALL
DL500ms
DJNZ
R4,DL5S1
RET
DL5S:
MOV
R4,#10
DL5S1:
LCALL
DL500ms
DJNZ
R4,DL5S1
RET
END
七、实验扩展及思考
1、如何对8255的PC口进行位操作?
2、8255的输出口可以读出内容进行修改,然后再回送,你知道吗?
实验五并行DA实验(基础硬件实验九)
一、实验目的
了解数模转换器(DAC)的工作原理;学习DAC0832与单片机的接口电路;掌握DAC0832的软件编程。
二、实验设备
SUN系列实验仪一套、PC机一台、示波器一台。
三、实验内容
1、编写程序,用DAC0832芯片输出正弦波。
2、按图连线,运行程序,使用示波器观察输出的波形。
四、实验原理图
五、实验步骤
1、连线说明:
B3区:
CS
——
A3区:
CS1
2、运行程序,示波器的探头接B3区的OUT,观察实验结果,是否产生正弦波。
六、演示程序(源程序文件名:
DA0832.asm)
用DAC0832芯片输出正弦波:
Addr_0832
XDATA
0FF00H
;0832输出口地址
ORG
0000H
LJMP
SUNT
ORG
0100H
SUNT:
MOV
SP,#60H
MOV
DPTR,#TAB_1
MOV
P2,#HIGH(Addr_0832)
;0832数据写入口地址
MOV
R0,#LOW(Addr_0832)
MOV
R4,#00H
SUNT1:
MOV
A,R4
MOVC
A,@A+DPTR
MOVX
@R0,A
;DA转换输出一次
INC
R4
CJNE
R4,#72,$+3
JC
SUNT2
MOV
R4,#0
SUNT2:
LCALL
Delay
SJMP
SUNT1
;下一轮
Delay:
PUSH
07H
MOV
R7,#50H
DJNZ
R7,$
POP
07H
RET
TAB_1:
DB7FH,8BH,96H,0A1H,0ABH,0B6H,0C0H,0C9H,0D2H
DB0DAH,0E2H,0E8H,0EEH,0F4H,0F8H,0FBH,0FEH,0FFH,0FFH
DB0FFH,0FEH,0FBH,0F8H,0F4H,0EEH,0E8H,0E2H,0DAH,0D2H
DB0C9H,0C0H,0B6H,0ABH,0A1H,096H,08BH,07FH
DB74H,69H,5EH,54H,49H,40H,36H,2DH,25H,1DH,17H,11H,0BH,7,4,2,0,0
DB0,2,4,7,0BH,11H,17H,1DH,25H,2DH,36H,4