1、_单片机原理 实验教学电子教案实验一 数据传送实验实验目的:(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位地址.P2ALEMCS-51P0PSENEA锁存器外部程序存储器高8地址位图1.1 MCS-51与外部数据存储器的接口逻辑实验仪器及器件 :伟福系列仿真器,CP
2、U586计算机,实验目标板,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,关闭稳压电源,将实验目标板电源线+5
3、V端和接地端分别接到稳压电源的+5V端和接地端.3,连接6264器件地址CS到译码器CS1端,使其地址为2000H.4,检查无误,开启稳压电源.5,输入预习编写程序,汇编通过后单步,断点连续运行程序,检查相应存储器结果.实验接线图伟福WAVE6000使用方法:1,双击桌面WAVE图标,打开WAVE仿真软件.2,建立一个新的用户程序:点击工具条文件菜单点击新建文件.在新建文件中编写程序.3,保存文件:点击文件菜单下保存文件或快捷键F2,在保存文件对话框内输入文件名,将其存为ASM文件.4,对保存的ASM文件进行汇编:点击项目菜单下编译或快捷键F9.5,确定执行程序地址:将光标点击在要执行程序内,
4、右键,在右键菜单中点击设置PC.6,单步执行程序:快捷键F8.7,断点连续运行程序:将光标点击在设置断电程序内,右键,在右键菜单中点击设置断点,然后连续运行程序,快捷键CTRL-F9.8,在以下窗口观察运行结果.CPU窗口,信息窗口,数据窗口. 注意事项:1,学生进行实验前必须进行预习,拟定程序设计方案.2,连接线路时注意电源端和接地端,不要反接,线路检查无误时在开启稳压电源. 重点:能提出程序设计思路,对数值传送类指令进行复习.难点:能设计出符合要求,结果正确的实验程序.学生在实验中容易出现的困难及错误:1,系统的程序设计无从下手,设计出的程序不符合题目要求.指令设计不符合格式规范. 2,对
5、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最适合于智能仪表和
6、控制应用场合 8031控制功能强,体积小,功耗低,具有一定的数据处理能力.能完成数据采集,处理,零位修正,误差补偿,数字显示,报警,数值计算以及各种逻辑判断和控制,使仪器仪表数字化,智能化. 参考程序:CLRRAM: MOV R0, #start MOV R7, #length CLR Aloop: MOV R0, A INC R0 DJNZ R7, loop RETCLRXRAM: MOV DPTR, #xstart MOV R7, #xlength CLR Axloop: MOVX DPTR, A INC DPTR DJNZ R7, xloop RETSETXRAM: MOV DPTR,
7、#xstart MOV R7, #xlength MOV A, #valuexloop2: MOVX DPTR, A INC DPTR DJNZ R7, xloop2 RETMOV R0,#30HMOV R2,#10HMOV A,#10HA1:MOV R0,AINC R0INC ADJNZ R2,A1MOV R0,#30HMOV DPTR,#2000HMOV R2,#10HA2:MOV A,2R0MOVX DPTR,AINC R0INC DPTRDJNZ R2,A2MOV R0,#50HMOV DPTR,#2000HMOV R2,#10HA3:MOVX A,DPTRMOV R0,AINC R0
8、INC DPTRDJNZ R2,A3SJMP $ 实验二 数制转换运算实验 实验目的 :1,学习二进制数转换为BCD码数的一般算法. 2,学习十进制数转换成ASC码的一般算法. 实验原理 :单片机能识别和处理的是二进制码,而输入输出设备(LED显示器,微型打印机等)则使用ASC或BCD码.为此,在单片机应用系统中经常需要通过程序进行二进制码与BCD,ASC码转换.十六进制数与ASC码之间的转换:当十六进制数在0-9之间时,其对应的ASC码值为该十六进制数加30H,当十六进制数在A-F之间时,其对应的ASC码值为该十六进制数加37H.BCD码是每四位二进制数表示一位十进制数.转换方法是将数制二进
9、制数除以100,10,所得商即为百位,十位,余数为个位数. 实验仪器及器件 :伟福系列仿真器,CPU586计算机,实验目标板,WD-4微机稳压电源. 实验内容与要求 :编写程序将R1中的十六进制数转换成相应的ASC码后,结果放在R3和R4中;把累加器A的二进制数转化为BCD码,将百,十,个位分别存放在内部RAM的50H/51H/52H中. 实验步骤:1,开启电源.2,输入预习编写程序,汇编通过后单步,断点连续运行程序,检查相应存储器结果.注意事项 :1,学生进行实验前必须进行预习,拟定程序设计方案 .2,连接线路时注意电源端和接地端,不要反接,线路检查无误时再开启稳压电源. 重点:能提出程序设
10、计思路,掌握转换程序设计.难点:能设计出符合要求,结果正确的实验程序.学生在实验中容易出现的困难及错误1,不清楚数值转换方法.2,对51汇编语言指令不熟悉. 思考题: 1,十六进制数与ASC码之间的转换方法 2,BCD码与十进制数之间的转换方法 参考程序:MOV A,R0ANL A,#0FHPUSH ACCCLR CSUBB A,#0AHPOP ACCJC LOOPADD A,#07HLOOP:ADD A,#30HMOV R2,ARET 扩展程序设计: BCD码转换为二进制数:将累加器A中的BCD码转换成二进制数,结果仍存放在A中.分析:A中存放的BCD码数的范围是0-99.转换成二进制数后是
11、00H-63H,仍然可以存放在A中,转换方法为A中的高半个字节(十位)乘以10,再加上A的低半个字节,计算公式为:A7-4A3-0PUSH ACCANL A,#0FHSWAP AMOV B,310MUL ABMOV B,APOP ACCANL A,30FHADD A,BRET 实验三 控制转移程序实验 实验目的 :学习掌握控制转移指令程序设计方法. 实验原理 :控制程序转移指令共有17条,不包括按布尔变量控制程序转移的指令.其中有全存储空间的长调用,长转移和按2KB分块的程序空间内的绝对调用和绝对转移;全空间的长相对转移及一页范围的短相对转移.这类指令用到的助记符有ACALL,AJMP,LCA
12、LL,LJMP,JMP,JZ,CJNE,DJNZ,JNZ等实验仪器及器件 :伟福系列仿真器,CPU586计算机,实验目标板,WD-4微机稳压电源. 实验内容与要求:编写程序:将20H-2FH中随机无符号数的最小值存放在1F中.编写程序:设有16个无符号数,依次存放在30H-3FH中,将它们按由小到大排序.实验步骤:1,开启稳压电源. 2,输入预习编写程序,汇编通过后单步,断点连续运行程序,检查相应存储器结果. 注意事项 :1,学生进行实验前必须进行预习,拟定程序设计方案. 2,连接线路时注意电源端和接地端,不要反接,线路检查无误时再开启稳压电源. 重点:能提出程序设计思路,对控制转移类指令进行
13、复习.难点:能设计出符合要求,结果正确的实验程序.学生在实验中容易出现的困难及错误:1,对程序设计气泡排序算法无法掌握.2,指令运用不灵活.思考题: 简述气泡排序算法 气泡排序法是依托比较相邻的一对数据,如不符合规定的递增(或递减)顺序,则交换两个数据的位置,第一对比较完毕后,接着比较第二对,直到清单中所有的数据依次比较完成,第一轮比较结束,这是最大(小)的数据降到清单的最低位置.第一轮排序需要进行N-1次比较.第二轮比较需要进行N-2次比较,第二轮结束后,次最大(小)的数据排底部第二位置上.重复上述过程,直到全部排完. 参考程序: 比较大小:MOV R0,#20HMOV 1FH,R0MOV
14、R1,#09HLOOP: INC R0MOV A,1FHCJNE A,1FH,LOOPLOOP1:JNC LOOP2MOV 1FH,ALOOP2:DJNZ R1,LOOPLJMP $ 求最小值: MOV 1FH,20HMOV R1,#21HMOV R0,#15LOOP:MOV A,R1CJNE A,1FH,LOOP1LOOP1:JNC NEXTMOV 1FH,ANEXT:INC R1DJNZ R0,LOOPRET另一种方法:MOV 1FH,20HMOV R1,#21HMOV R0,#15LOOP:MOV A,R1PUSH ASUBB A,1FHJC LOOP1LJMP NEXTLOOP1:PO
15、P AMOV 1FH,ANEXT:POP AINC R1DJNZ R0,LOOPRET 排序(升序):T0: MOV R2,#30HMOV R3,#10HMOV A,R2MOV R0,AINC AMOV R1,AMOV A,R3DEC AMOV R3,AMOV R5,AT1:CLR CMOV A,R0SUBB A,R1JC T2 .(1)MOV A,R1XCH A,R0XCH A,R1T2:INC R0INC R1DJNZ R5,T1DJNZ R3,T0RET 注:降序程序须将(1)指令改为JNC T2ORG 0000HLJMP MAINORG 0100HMAIN:MOV R1,#50H MO
16、V R2,#09H CLR 40HLOOP1:MOV A,R1 INC R1 MOV 30H,R1 CJNE A ,30H,LOOP2LOOP2:JC LOOP3 MOV R1,A DEC R1 MOV R1,30H INC R1 SETB 40HLOOP3:DJNZ R2,LOOP1 JB 40H,MAIN SJMP $ END实验四 定时器/计数器实验实验目的 :1,学习掌握利用中断,查询方法设计8031内部定时计数器程序.2,进一步掌握中断处理程序的编程方法.实验原理 :MCS-51系列单片机有两个16位定时器/计数器即T0,T1.有关寄存器有以下几个:TH0,TL0,TH1,TL1,T
17、MOD,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
18、产生一个脉冲宽度可调的方波在P1.0管脚输出.首先设定时器每100MS产生一次溢出,然后利用软件计数器每10次改变一次P1.0管脚输出,就会得到脉冲宽度为1S的脉冲,实现与P1.0管脚连接的发光二极管 定时闪烁. 实验步骤 :1,连接实验线路 .2,开启稳压电源. 3,输入预习编写程序,汇编通过,连续运行程序,实现控制发光二极管定时闪烁.注意事项 :1,可以自己设计实验线路,连好后一定要请教师检查.2,学生进行实验前必须进行预习,拟定程序设计方案.3,连接线路时注意电源端和接地端,不要反接,线路检查无误时再开启稳压电源.实验接线图重点:对8051单片机定时计数器各寄存器功能的掌握.难点:定时初
19、值的计算方法. 学生在实验中容易出现的困难及错误1,计数器循环次数,定时器初值计算错误.2,中断程序设计不熟悉.思考题:晶振为6MHZ,选择定时器T0,工作方式1定时100MS,定时器初值应该是多少 设定时器初值为N,则(216-N)12=6105 N=15536 即3CB0H参考程序: 查询方式: MOV TMOD,#01HSETB TR0MOV R2,#10HLOOP: MOV TH0,#3CHMOV TL0,#0B0HJNB TF0,$CLR TF0DJNZ R2,LOOPMOV R2,#10CPL P1.0LJMP LOOP 中断方式:ORG 0000HLJMP MAINORG 000
20、BHLJMP T_SERORG 0020HMAIN: SETB EASETB ET0SETB TR0MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HMOV R3,#10HSJMP $T_SER:CLR TF0DJNZ R3,WAITCPL P1.0MOV R3,#10WAIT:MOV TH0,#3CHMOV TL0,#0B0HRETI实验结果实验五 串行口扩展实验实验目的 :1,掌握串行口控制显示器硬件原理及软件设计方法.2,掌握单片机与74LS164接口电路设计.实验原理 :MCS-51单片机应用系统中,当串行口不用作串行通讯时,可用来扩展并行输入输出口(设定串行
21、口工作在移位寄存器方式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与数码管连接:
22、实验使用共阳极8段位数码管做为显示器,显示方式为静态显示.所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定导通或截止. 实验仪器及器件:伟福系列仿真器,CPU586计算机,实验目标板,WD-4微机稳压电源,实验用双头导线.实验内容与要求 :1,读懂实验线路原理图.2,编制程序:使显示器逐次显示0-F. 3,编制程序:使显示器逐屏显示每位学生的的班级学号.实验步骤:1,连接实验线路:单片机-74LS164TXD- CPRXD-DSabP1.0-CRP1.1-S/LCS-CS22,开启稳压电源. 3,输入预习编写程序,汇编通过,连续运行程序,实现显示器显示要求.实验接线图注意事项:1
23、,连接好实验线路,一定要请教师检查后再上电. 2,学生进行实验前必须进行预习,拟定程序设计方案.3,连接线路时注意电源端和接地端,不要反接,线路检查无误时再开启稳压电源. 重点:对8051单片机串行口扩展显示器应用设计,查表程序设计方法.难点:实现逐屏显示程序设计. 学生在实验中容易出现的困难及错误:1,线路连接不正确.2,实现逐屏显示.思考题:74LS164芯片外部引脚功能 74LS164是串行输入并行输出的移位寄存器,带有清除端,其外部引脚功能如下:Q0-Q7:并行输出端DSA/DSB:串行输入端.CR: 清除端,低电平时,使164输出清零.CP: 时钟脉冲输入端,在PC脉冲的上升沿作用下
24、实现移位.在CP=0.CR=1时164保持原来数据.参考程序:MAIN: MOV DPTR,#TABSETB 90HCLR 91HMOV R5,#10HDL0:MOV A,#00HMOVC A,A+DPTRMOV SBUF,AWAIT:JNB TI,WAITCLR TIINC DPTRACALL D20MSDJNZ R5,DL0CLR 90HACALL D20MSSJMP MAIND20MS:ACALL D10MSD10MS:MOV R7,#0FFHDL1:MOV R6,#0FFHDL2:DJNZ R6,DL2DJNZ R7,DL1RETTAB:DB 0C0H,0F9H,0A4H,0B0HDB
25、 99H,92H,82HH,0F8HDB 80H,90H,88H,83HDB 0C6H,0A1H,86H,8EH 实验六 串行通信实验实验目的:学习单片机串行通信方式,熟悉串行通信程序设计.实验原理:串行通信的数据传送是一位一位依次进行,而在计算机内部数据是并行传送的.因此,发送端在发送前要把并行数据转换为串行数据,然后在传送,而接受端接受时又要把串行数据转换为并行数据.MCS-51系列单片机有两个串行数据缓冲器,使用同一标号SBUF,共用一个地址99H.发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,根据读写指令来确定访问其中哪一个.实验仪器及器件:伟福系列仿真器,CPU586计算机
26、,实验目标板,WD-4微机稳压电源,实验用双头导线.实验内容与要求:两个8031单片机间的数据传输.两单片机异步通信,设串行口为工作方式1,波特率为2400波特,振荡频率11.0592MHZ.利用串行口将甲机内部RAM30H-3FH单元内容送乙机的内部RAM30H-3FH.实验步骤 :1,连接实验线路 .2,开启稳压电源. 3,输入预习编写程序,汇编通过,连续运行程序,实现显示器显示要求. 注意事项:1,学生进行实验前必须进行预习,拟定程序设计方案.2,接线路时注意电源端和接地端,不要反接,线路检查无误时再开启稳压电源. 重点:熟悉51单片机串行口寄存器SBUF读写程序方法,串行通信程序设计方
27、法.难点:实现通信程序设计学生在实验中容易出现的困难及错误:程序设计不正确,不能实现数据收发.思考题: 1,串行通信与并行通信有何异同 串行通信通过串行接口实现.在并行通信中,信息传输的位数和数据位数相等.全双工的串行通信仅需要一根发送线.并行通信速度快,传输线多,适合于近距离的数据通信,串行通信速度慢,传输线少,适合于长距离数据输送. 2,如何在通信中引入奇偶校验 串行通信有两种形式:同步和异步通信.异步通信在发送字符时,数据位和停止位之间可以有1位奇偶校验位.同步通信通过字符顺序连接,每个数据块前加1-2个同步字符,内部分为若干段,尾部是错误校验字符.参考程序:发送部分:MOV TMOD,
28、#20H; 定时器1置为方式2MOV TH1,#0F4H; 装载定时器初值MOV TL1,#0F4HMOV PCON,#00HSETB TR1MOV SCON,380HMOV R0,#30HMOV R2,#0FHLP1:MOV A,R0MOV SBUF,ALP2:JBC TI,LP3SJMP LP2LP3:INC R0DJNZ R2,LP1SJMP $接收部分(先运行): MOV TMOD,#20H; 定时器1置为方式2MOV TH1,#0F4H; 装载定时器初值MOV TL1,#0F4HMOV PCON,#00HSETB TR1MOV SCON,#50HMOV R0,#30HMOV R2,#
29、0FHSETB RENLP1:JBC RI,LP2SJMP LP1LP2:CLR RIMOV A,SBUFMOV R0,AINC R0DJNZ R2,LP1SJMP $ 实验七 流水灯实验 实验目的:掌握8051单片机输入,输出端口程序设计方法. 实验原理:P1口是8051惟一的单功能口,仅能用作通用的数据输入/输出口.P1口是通用的准双向口,由一个输出锁存器,两个三态输入缓冲器和输出驱动电路组成,内部设有上拉电阻.其输出高电平时,能向外提供拉电流负载,不必再接上拉电阻.当口用作输入时,须向口锁存器写入1.实验仪器及器件:伟福系列仿真器,CPU586计算机,实验目标板,WD-4微机稳压电源,实
30、验用双头导线.实验内容与要求:P1口做输出口,接八只发光二极管(其输入端为高电平时发光二极管点亮),编写程序,使发光二极管循环点亮. 实验接线图注意事项:1,学生进行实验前必须进行预习,拟定程序设计方案.2,接线路时注意电源端和接地端,不要反接,线路检查无误时再开启稳压电源.重点:掌握Pl口的使用方法及延时子程序的编写和使用.难点:实现复杂点亮顺序程序设计.学生在实验中容易出现的困难及错误:程序设计不正确,点亮顺序与设计要求不符.参考程序:MAIN: MOV A,#0FEHMOV R0,#8MAIN1:MOV P1,ARL AACALL TIMEDJNZ R0,MAIN1MOV R0,#8MO
31、V A,#7FH MAIN2:MOV P1,ARR AACALL TIMEDJNZ R0,MAIN2LJMP MAINTIME:MOV R1,#0FFHLOOP1:MOV R2,#0FFHLOOP:DJNZ R2,LOOPDJNZ R1,LOOP1RETTICK 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 0030
32、HSTART: 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 LOOPT0INT: PUSH PSW ;T0中断服务程序 MOV A, C100US+1 JNZ GOON DEC C100USGOON: 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, 重置计数器取反LEDEXIT: POP PSW RETI END实验结果谢谢!欢迎指教!Welcome ToDownload !欢迎您的下载,资料仅供参考!精品资料