630 likes | 810 Views
单片机原理. 实验教学 电子 教案. 实验一 数据传送实验. 实验目的 : ( 1 )学习使用伟福仿真软件 ( 2 )掌握 8031 内部 RAM 和外部 RAM 之间数据传送特点和应用。 ( 3 )复习数据传送指令。. 实验原理 :
E N D
单片机原理 实验教学电子教案
实验一 数据传送实验 实验目的: (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位地址。
高8地址位 P2 ALE MCS-51 P0 PSEN EA 锁存器 外部程序存储器 图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最适合于智能仪表和控制应用场合?2、为什么8031最适合于智能仪表和控制应用场合? 8031控制功能强、体积小、功耗低,具有一定的数据处理能力。能完成数据采集、处理、零位修正、误差补偿、数字显示、报警、数值计算以及各种逻辑判断和控制,使仪器仪表数字化、智能化。
参考程序: 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
实验四 定时器/计数器实验 实验目的 : 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。