资源描述
______________________________________________________________________________________________________________
单片机原理
实验教学电子教案
实验一 数据传送实验
实验目的:
(1)学习使用伟福仿真软件
(2)掌握8031内部RAM和外部RAM之间数据传送特点和应用.
(3)复习数据传送指令.
实验原理 :
图1.1为6264外部RAM的扩展原理图,8031的P0口为RAM的复式地址数据线,P2口的P2.5-P2.7用于对RAM进行片选(通过74LS138译码器).在外部RAM读/写期间,CPU产生RD/WR信号.P2口输出外部8位地址,P0口分时传送低8位地址.
P2
ALE
MCS-51
P0
PSEN
EA
锁存器
外部程序存储器
高8地址位
图1.1 MCS-51与外部数据存储器的接口逻辑
实验仪器及器件 :
伟福系列仿真器,CPU586计算机,实验目标板,WD-4微机稳压电源
实验内容与要求 :
1,指定内部RAM中某块的起始地址和长度,要求将其内容清零 .
2,指定外部RAM中某块的起始地址和长度,要求将其内容清零.
3,指定外部RAM中某块的起始地址和长度,要求将其置为固定值.
4,根据MCS-51与外部数据存储器的接口逻辑原理,编写数据传送程序,使8031内部RAM30H-3FH置初值10H-1FH,然后传送到外部RAM2000H-200FH中,再将2000H-200FH中内容传送到8031内部RAM50H-5FH中.
实验步骤 :
1,开启稳压电源,将其输出调到+5V/-5V.
2,关闭稳压电源,将实验目标板电源线+5V端和接地端分别接到稳压电源的+5V端和接地端.
3,连接6264器件地址CS到译码器CS1端,使其地址为2000H.
4,检查无误,开启稳压电源.
5,输入预习编写程序,汇编通过后单步,断点连续运行程序,检查相应存储器结果.
实验接线图
伟福WAVE6000使用方法:
1,双击桌面WAVE图标,打开WAVE仿真软件.
2,建立一个新的用户程序:点击工具条文件菜单——点击新建文件.在新建文件中编写程序.
3,保存文件:点击文件菜单下保存文件或快捷键F2,在保存文件对话框内输入文件名,将其存为ASM文件.
4,对保存的ASM文件进行汇编:点击项目菜单下编译或快捷键F9.
5,确定执行程序地址:将光标点击在要执行程序内,右键,在右键菜单中点击设置PC.
6,单步执行程序:快捷键F8.
7,断点连续运行程序:将光标点击在设置断电程序内,右键,在右键菜单中点击设置断点,然后连续运行程序,快捷键CTRL-F9.
8,在以下窗口观察运行结果.CPU窗口,信息窗口,数据窗口.
注意事项:
1,学生进行实验前必须进行预习,拟定程序设计方案.
2,连接线路时注意电源端和接地端,不要反接,线路检查无误时在开启稳压电源.
重点:能提出程序设计思路,对数值传送类指令进行复习.
难点:能设计出符合要求,结果正确的实验程序.
学生在实验中容易出现的困难及错误:
1,系统的程序设计无从下手,设计出的程序不符合题目要求.指令设计不符合格式规范.
2,对DJNZ和CJNE两条指令功能混淆.
思考题:
1,CPU对8031内部RAM存储器和外部RAM存储器各有哪些寻址方式
MCS-51的寻址方式共有六种:立即数寻址,直接寻址,寄存器寻址,寄存器间址,变址寻址,相对寻址.我们必须掌握其表示的方法.
1)立即数与直接地址.ata表示八位立即数,#data16表示是十六位立即数,data或direct表示直接地址.
2)Rn(n=0-7),A,B,CY,DPTR寄存器寻址变量.
3)@R0,@R1,@DPTR,SP表示寄存器间址变量.
4)DPTR+A,PC+A表示变址寻址的变量.
5)PC+rel(相对量)表示相对寻址变量.
2,为什么8031最适合于智能仪表和控制应用场合
8031控制功能强,体积小,功耗低,具有一定的数据处理能力.能完成数据采集,处理,零位修正,误差补偿,数字显示,报警,数值计算以及各种逻辑判断和控制,使仪器仪表数字化,智能化.
参考程序:
CLRRAM:
MOV R0, #start
MOV R7, #length
CLR A
loop:
MOV @R0, A
INC R0
DJNZ R7, loop
RET
CLRXRAM:
MOV DPTR, #xstart
MOV R7, #xlength
CLR A
xloop:
MOVX @ DPTR, A
INC DPTR
DJNZ R7, xloop
RET
SETXRAM:
MOV DPTR, #xstart
MOV R7, #xlength
MOV A, #value
xloop2:
MOVX @ DPTR, A
INC DPTR
DJNZ R7, xloop2
RET
MOV R0,#30H
MOV R2,#10H
MOV A,#10H
A1:MOV @R0,A
INC R0
INC A
DJNZ R2,A1
MOV R0,#30H
MOV DPTR,#2000H
MOV R2,#10H
A2:MOV A,2R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R2,A2
MOV R0,#50H
MOV DPTR,#2000H
MOV R2,#10H
A3:MOVX A,@DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ R2,A3
SJMP $
实验二 数制转换运算实验
实验目的 :
1,学习二进制数转换为BCD码数的一般算法.
2,学习十进制数转换成ASCⅡ码的一般算法.
实验原理 :
单片机能识别和处理的是二进制码,而输入输出设备(LED显示器,微型打印机等)则使用ASCⅡ或BCD码.为此,在单片机应用系统中经常需要通过程序进行二进制码与BCD,ASCⅡ码转换.
⑴十六进制数与ASCⅡ码之间的转换:当十六进制数在0-9之间时,其对应的ASCⅡ码值为该十六进制数加30H,当十六进制数在A-F之间时,其对应的ASCⅡ码值为该十六进制数加37H.
⑵BCD码是每四位二进制数表示一位十进制数.转换方法是将数制二进制数除以100,10,所得商即为百位,十位,余数为个位数.
实验仪器及器件 :
伟福系列仿真器,CPU586计算机,实验目标板,WD-4微机稳压电源.
实验内容与要求 :
编写程序将R1中的十六进制数转换成相应的ASCⅡ码后,结果放在R3和R4中;把累加器A的二进制数转化为BCD码,将百,十,个位分别存放在内部RAM的50H/51H/52H中.
实验步骤:
1,开启电源.
2,输入预习编写程序,汇编通过后单步,断点连续运行程序,检查相应存储器结果.
注意事项 :
1,学生进行实验前必须进行预习,拟定程序设计方案 .
2,连接线路时注意电源端和接地端,不要反接,线路检查无误时再开启稳压电源.
重点:
能提出程序设计思路,掌握转换程序设计.
难点:
能设计出符合要求,结果正确的实验程序.
学生在实验中容易出现的困难及错误
1,不清楚数值转换方法.
2,对51汇编语言指令不熟悉.
思考题:
1,十六进制数与ASCⅡ码之间的转换方法
2,BCD码与十进制数之间的转换方法
参考程序:
MOV A,R0
ANL A,#0FH
PUSH ACC
CLR C
SUBB A,#0AH
POP ACC
JC LOOP
ADD A,#07H
LOOP:ADD A,#30H
MOV R2,A
RET
扩展程序设计:
BCD码转换为二进制数:将累加器A中的BCD码转换成二进制数,结果仍存放在A中.
分析:A中存放的BCD码数的范围是0-99.转换成二进制数后是00H-63H,仍然可以存放在A中,转换方法为A中的高半个字节(十位)乘以10,再加上A的低半个字节,计算公式为:A7-4×A3-0
PUSH ACC
ANL A,#0FH
SWAP A
MOV B,310
MUL AB
MOV B,A
POP ACC
ANL A,30FH
ADD A,B
RET
实验三 控制转移程序实验
实验目的 :
学习掌握控制转移指令程序设计方法.
实验原理 :
控制程序转移指令共有17条,不包括按布尔变量控制程序转移的指令.其中有全存储空间的长调用,长转移和按2KB分块的程序空间内的绝对调用和绝对转移;全空间的长相对转移及一页范围的短相对转移.这类指令用到的助记符有ACALL,AJMP,LCALL,LJMP,JMP,JZ,CJNE,DJNZ,JNZ等
实验仪器及器件 :
伟福系列仿真器,CPU586计算机,实验目标板,WD-4微机稳压电源.
实验内容与要求:
编写程序:将20H-2FH中随机无符号数的最小值存放在1F中.
编写程序:设有16个无符号数,依次存放在30H-3FH中,将它们按由小到大排序.
实验步骤:
1,开启稳压电源.
2,输入预习编写程序,汇编通过后单步,断点连续运行程序,检查相应存储器结果.
注意事项 :
1,学生进行实验前必须进行预习,拟定程序设计方案.
2,连接线路时注意电源端和接地端,不要反接,线路检查无误时再开启稳压电源.
重点:
能提出程序设计思路,对控制转移类指令进行复习.
难点:
能设计出符合要求,结果正确的实验程序.
学生在实验中容易出现的困难及错误:
1,对程序设计气泡排序算法无法掌握.
2,指令运用不灵活.
思考题:
简述气泡排序算法
气泡排序法是依托比较相邻的一对数据,如不符合规定的递增(或递减)顺序,则交换两个数据的位置,第一对比较完毕后,接着比较第二对,直到清单中所有的数据依次比较完成,第一轮比较结束,这是最大(小)的数据降到清单的最低位置.第一轮排序需要进行N-1次比较.第二轮比较需要进行N-2次比较,第二轮结束后,次最大(小)的数据排底部第二位置上.重复上述过程,直到全部排完.
参考程序:
比较大小:
MOV R0,#20H
MOV 1FH,@R0
MOV R1,#09H
LOOP: INC R0
MOV A,1FH
CJNE A,1FH,LOOP
LOOP1:JNC LOOP2
MOV 1FH,A
LOOP2:DJNZ R1,LOOP
LJMP $
求最小值:
MOV 1FH,20H
MOV R1,#21H
MOV R0,#15
LOOP:MOV A,@R1
CJNE A,1FH,LOOP1
LOOP1:JNC NEXT
MOV 1FH,A
NEXT:INC R1
DJNZ R0,LOOP
RET
另一种方法:
MOV 1FH,20H
MOV R1,#21H
MOV R0,#15
LOOP:MOV A,@R1
PUSH A
SUBB A,1FH
JC LOOP1
LJMP NEXT
LOOP1:POP A
MOV 1FH,A
NEXT:POP A
INC R1
DJNZ R0,LOOP
RET
排序(升序):
T0: MOV R2,#30H
MOV R3,#10H
MOV A,R2
MOV R0,A
INC A
MOV R1,A
MOV A,R3
DEC A
MOV R3,A
MOV R5,A
T1:CLR C
MOV A,@R0
SUBB A,@R1
JC T2 ………………..(1)
MOV A,@R1
XCH A,@R0
XCH A,@R1
T2:INC R0
INC R1
DJNZ R5,T1
DJNZ R3,T0
RET
注:降序程序须将(1)指令改为JNC T2
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:MOV R1,#50H
MOV R2,#09H
CLR 40H
LOOP1:MOV A,@R1
INC R1
MOV 30H,@R1
CJNE A ,30H,LOOP2
LOOP2:JC LOOP3
MOV @R1,A
DEC R1
MOV @R1,30H
INC R1
SETB 40H
LOOP3:DJNZ R2,LOOP1
JB 40H,MAIN
SJMP $
END
实验四 定时器/计数器实验
实验目的 :
1,学习掌握利用中断,查询方法设计8031内部定时计数器程序.
2,进一步掌握中断处理程序的编程方法.
实验原理 :
MCS-51系列单片机有两个16位定时器/计数器即T0,T1.有关寄存器有以下几个:TH0,TL0,TH1,TL1,TMOD,TCON.
TH0,TL0,为T0的16位计数器的高8位和低8位,TH1,TL为T1的16位计数器的高8位和低8位;TMOD为T0,T1的方式控制寄存器,TCON为T0,T1的状态和控制寄存器,存放T0,T1的运行控制位和溢出位中断标志位.定时器0溢出中断入口地址:000BH.
实验仪器及器件 :
伟福系列仿真器,CPU586计算机,实验目标板,WD-4微机稳压电源,导线,发光二极管.
实验内容与要求:
定时器T0的定时中断控制溢出,因定时时间较长,13位计数器不够用,可选用方式1的16位计数器,输入运行程序,调节定时器常数或计数数值可以调节输出脉冲宽度.
系统晶振为6MHZ,利用定时器0方式1产生一个脉冲宽度可调的方波在P1.0管脚输出.首先设定时器每100MS产生一次溢出,然后利用软件计数器每10次改变一次P1.0管脚输出,就会得到脉冲宽度为1S的脉冲,实现与P1.0管脚连接的发光二极管 定时闪烁.
实验步骤 :
1,连接实验线路 .
2,开启稳压电源.
3,输入预习编写程序,汇编通过,连续运行程序,实现控制发光二极管定时闪烁.
注意事项 :
1,可以自己设计实验线路,连好后一定要请教师检查.
2,学生进行实验前必须进行预习,拟定程序设计方案.
3,连接线路时注意电源端和接地端,不要反接,线路检查无误时再开启稳压电源.
实验接线图
重点:
对8051单片机定时计数器各寄存器功能的掌握.
难点:
定时初值的计算方法.
学生在实验中容易出现的困难及错误
1,计数器循环次数,定时器初值计算错误.
2,中断程序设计不熟悉.
思考题:
晶振为6MHZ,选择定时器T0,工作方式1定时100MS,定时器初值应该是多少
设定时器初值为N,则
(216-N)×12=6×105
N=15536 即3CB0H
参考程序:
查询方式:
MOV TMOD,#01H
SETB TR0
MOV R2,#10H
LOOP: MOV TH0,#3CH
MOV TL0,#0B0H
JNB TF0,$
CLR TF0
DJNZ R2,LOOP
MOV R2,#10
CPL P1.0
LJMP LOOP
中断方式:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T_SER
ORG 0020H
MAIN: SETB EA
SETB ET0
SETB TR0
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R3,#10H
SJMP $
T_SER:CLR TF0
DJNZ R3,WAIT
CPL P1.0
MOV R3,#10
WAIT:MOV TH0,#3CH
MOV TL0,#0B0H
RETI
实验结果
实验五 串行口扩展实验
实验目的 :
1,掌握串行口控制显示器硬件原理及软件设计方法.
2,掌握单片机与74LS164接口电路设计.
实验原理 :
MCS-51单片机应用系统中,当串行口不用作串行通讯时,可用来扩展并行输入输出口(设定串行口工作在移位寄存器方式0状态下).用于显示器时,使用串行输入,并行输出移位寄存器74LS164,每接一片74LS164可扩展一个8位并行输出口,用以连接一个LED段选口静态显示使用.
74LS164与8051接口电路:RXD(P3.0)做为串行输出与74LS164数据输入端(A,B)相连;TXD(P3.1)做为移位脉冲输出与74LS164的时钟输入端CP相连;由P1.0口线控制74LS164的清显示端(CR).但要注意,由于74LS164的并行输出没有控制器,在串行输入过程中,其输出状态不断变化,一般在74LS164输出端加三态门控制,以保证串行输入结束后在输出数据.
74LS164与数码管连接:实验使用共阳极8段位数码管做为显示器,显示方式为静态显示.所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定导通或截止.
实验仪器及器件:
伟福系列仿真器,CPU586计算机,实验目标板,WD-4微机稳压电源,实验用双头导线.
实验内容与要求 :
1,读懂实验线路原理图.
2,编制程序:使显示器逐次显示0-F.
3,编制程序:使显示器逐屏显示每位学生的的班级学号.
实验步骤:
1,连接实验线路:
单片机-----74LS164
TXD-------- CP
RXD--------DSab
P1.0--------CR
P1.1---------S/L
CS----------CS2
2,开启稳压电源.
3,输入预习编写程序,汇编通过,连续运行程序,实现显示器显示要求.
实验接线图
注意事项:
1,连接好实验线路,一定要请教师检查后再上电.
2,学生进行实验前必须进行预习,拟定程序设计方案.
3,连接线路时注意电源端和接地端,不要反接,线路检查无误时再开启稳压电源.
重点:
对8051单片机串行口扩展显示器应用设计,查表程序设计方法.
难点:
实现逐屏显示程序设计.
学生在实验中容易出现的困难及错误:
1,线路连接不正确.
2,实现逐屏显示.
思考题:
74LS164芯片外部引脚功能
74LS164是串行输入并行输出的移位寄存器,带有清除端,其外部引脚功能如下:
Q0-Q7:并行输出端
DSA/DSB:串行输入端.
CR: 清除端,低电平时,使164输出清零.
CP: 时钟脉冲输入端,在PC脉冲的上升沿作用下实现移位.在CP=0.CR=1时164保持原来数据.
参考程序:
MAIN: MOV DPTR,#TAB
SETB 90H
CLR 91H
MOV R5,#10H
DL0:MOV A,#00H
MOVC A,@A+DPTR
MOV SBUF,A
WAIT:JNB TI,WAIT
CLR TI
INC DPTR
ACALL D20MS
DJNZ R5,DL0
CLR 90H
ACALL D20MS
SJMP MAIN
D20MS:ACALL D10MS
D10MS:MOV R7,#0FFH
DL1:MOV R6,#0FFH
DL2:DJNZ R6,,DL2
DJNZ R7,DL1
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H
DB 99H,92H,82HH,0F8H
DB 80H,90H,88H,83H
DB 0C6H,0A1H,86H,8EH
实验六 串行通信实验
实验目的:
学习单片机串行通信方式,熟悉串行通信程序设计.
实验原理:
串行通信的数据传送是一位一位依次进行,而在计算机内部数据是并行传送的.因此,发送端在发送前要把并行数据转换为串行数据,然后在传送,而接受端接受时又要把串行数据转换为并行数据.
MCS-51系列单片机有两个串行数据缓冲器,使用同一标号SBUF,共用一个地址99H.发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,根据读写指令来确定访问其中哪一个.
实验仪器及器件:
伟福系列仿真器,CPU586计算机,实验目标板,WD-4微机稳压电源,实验用双头导线.
实验内容与要求:
两个8031单片机间的数据传输.两单片机异步通信,设串行口为工作方式1,波特率为2400波特,振荡频率11.0592MHZ.利用串行口将甲机内部RAM30H-3FH单元内容送乙机的内部RAM30H-3FH.
实验步骤 :
1,连接实验线路 .
2,开启稳压电源.
3,输入预习编写程序,汇编通过,连续运行程序,实现显示器显示要求.
注意事项:
1,学生进行实验前必须进行预习,拟定程序设计方案.
2,接线路时注意电源端和接地端,不要反接,线路检查无误时再开启稳压电源.
重点:
熟悉51单片机串行口寄存器SBUF读写程序方法,串行通信程序设计方法.
难点:
实现通信程序设计
学生在实验中容易出现的困难及错误:
程序设计不正确,不能实现数据收发.
思考题:
1,串行通信与并行通信有何异同
串行通信通过串行接口实现.在并行通信中,信息传输的位数和数据位数相等.全双工的串行通信仅需要一根发送线.并行通信速度快,传输线多,适合于近距离的数据通信,串行通信速度慢,传输线少,适合于长距离数据输送.
2,如何在通信中引入奇偶校验
串行通信有两种形式:同步和异步通信.异步通信在发送字符时,数据位和停止位之间可以有1位奇偶校验位.同步通信通过字符顺序连接,每个数据块前加1-2个同步字符,内部分为若干段,尾部是错误校验字符.
参考程序:
发送部分:
MOV TMOD,#20H; 定时器1置为方式2
MOV TH1,#0F4H; 装载定时器初值
MOV TL1,#0F4H
MOV PCON,#00H
SETB TR1
MOV SCON,380H
MOV R0,#30H
MOV R2,#0FH
LP1:MOV A,R0
MOV SBUF,A
LP2:JBC TI,LP3
SJMP LP2
LP3:INC R0
DJNZ R2,LP1
SJMP $
接收部分(先运行):
MOV TMOD,#20H; 定时器1置为方式2
MOV TH1,#0F4H; 装载定时器初值
MOV TL1,#0F4H
MOV PCON,#00H
SETB TR1
MOV SCON,#50H
MOV R0,#30H
MOV R2,#0FH
SETB REN
LP1:JBC RI,LP2
SJMP LP1
LP2:CLR RI
MOV A,SBUF
MOV @R0,A
INC R0
DJNZ R2,LP1
SJMP $
实验七 流水灯实验
实验目的:
掌握8051单片机输入,输出端口程序设计方法.
实验原理:
P1口是8051惟一的单功能口,仅能用作通用的数据输入/输出口.P1口是通用的准双向口,由一个输出锁存器,两个三态输入缓冲器和输出驱动电路组成,内部设有上拉电阻.其输出高电平时,能向外提供拉电流负载,不必再接上拉电阻.当口用作输入时,须向口锁存器写入1.
实验仪器及器件:
伟福系列仿真器,CPU586计算机,实验目标板,WD-4微机稳压电源,实验用双头导线.
实验内容与要求:
P1口做输出口,接八只发光二极管(其输入端为高电平时发光二极管点亮),编写程序,使发光二极管循环点亮.
实验接线图
注意事项:
1,学生进行实验前必须进行预习,拟定程序设计方案.
2,接线路时注意电源端和接地端,不要反接,线路检查无误时再开启稳压电源.
重点:
掌握Pl口的使用方法及延时子程序的编写和使用.
难点:
实现复杂点亮顺序程序设计.
学生在实验中容易出现的困难及错误:
程序设计不正确,点亮顺序与设计要求不符.
参考程序:
MAIN: MOV A,#0FEH
MOV R0,#8
MAIN1:MOV P1,A
RL A
ACALL TIME
DJNZ R0,MAIN1
MOV R0,#8
MOV A,#7FH
MAIN2:MOV P1,A
RR A
ACALL TIME
DJNZ R0,MAIN2
LJMP MAIN
TIME:MOV R1,#0FFH
LOOP1:MOV R2,#0FFH
LOOP:DJNZ R2,LOOP
DJNZ R1,LOOP1
RET
TICK EQU 10000 ; 10000 X 100US = 1S
T100US EQU 256-50 ; 100US时间常数(6M)
C100US EQU 30H ; 100US计数单元
LEDBUF EQU 0
LED EQU P1.0
ORG 0000H
LJMP START
ORG 000BH
LJMP T0INT
ORG 0030H
START: MOV TMOD, #02H ; 设置T0为工作方式2, 定时器
MOV TH0, #T100US
MOV TL0, #T100US
MOV IE, #10000010B ; EA=1, IT0 = 1
CLR LEDBUF
CLR LED
MOV C100US, #HIGH(TICK)
MOV C100US+1, #LOW(TICK)
LOOP: MOV C, LEDBUF
MOV LED, C
LJMP LOOP
T0INT: PUSH PSW ;T0中断服务程序
MOV A, C100US+1
JNZ GOON
DEC C100US
GOON: DEC C100US+1
MOV A, C100US
ORL A, C100US+1
JNZ EXIT ; 100US 计数器不为0, 返回
MOV C100US, #HIGH(TICK)
MOV C100US+1, #LOW(TICK)
CPL LEDBUF ; 100US 计数器为0, 重置计数器取反LED
EXIT: POP PSW
RETI
END
实验结果
谢谢!
欢迎指教!
Welcome To
Download !!!
欢迎您的下载,资料仅供参考!
精品资料
展开阅读全文