单片机实验报告
- 格式:doc
- 大小:203.50 KB
- 文档页数:25
实验报告实验课程:单片机原理与应用实验学生姓名:XXX学号:000000000专业班级:自动化2013年 12 月 24 日实验一 I/O 口输入、输出实验一、实验时间:2013年10月28日星期一二、实验地点:电工电子实习中心A2区311三、实验目的:掌握单片机P1口、P3口的使用方法。
四、实验内容:以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。
以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。
五、实验要求:根据实验内容编写一个程序,并在实验仪上调试和验证。
六、实验步骤:1)系统各跳线器处在初始设置状态。
用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口);用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块的JD8(P1 口)。
2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。
七、实验程序;//******************************************************************;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);; 用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。
;//******************************************************************DIR BIT P3.0ORG 0000HLJMP STARTORG 0100HSTART:Output1:mov a, #0fEHmov r5, #8loop1: 3CLR Cmov C,DIRJC Output2mov P1, arl aAcall Delaydjnz r5, loop1Sjmp Output1Output2:mov a, #07fHmov r5, #8loop2:CLR Cmov C,DIRJNC Output1mov P1, arr aAcall Delaydjnz r5,loop2Sjmp Output2Delay:mov r6,#0DelayLoop1:mov r7,#0DelayLoop2:NOPNOPdjnz r7,DelayLoop2djnz r6,DelayLoop1end 4八、实验现象:进行全速运行后,跑跑马灯变亮,当拨动开关后,可以改变跑马灯的方向,实验结果与设计程序运行结果相符合,实验得到验证.九、实验分析:整体功能就是P3.0口相当于开关把值给了C,当在output1时C为0,如果在这时候按下开关以后。
继续完成剩下的程序后就跳到0utput2进行这时跑马灯的方向反了,在调用delay的程序延时了时间=256*256*4*机器周期时间。
十、实验总结:首次单片机实验是对于实验箱进行了解及熟悉单片机的编程软件。
进行I/O 口输入和输出的实验,通过8位电平的输出,用来控制跑马灯的方向。
这是第一个实验,但是由于刚刚开始,还不回自己编写程序,所以只能照搬原有程序了,但是自己会努力的。
实验二外部中断实验一、实验时间:2013年11月4日星期一二、实验地点:电工电子实习中心A2区311三、实验目的:学习外部中断技术的基本使用方法。
四、实验内容:INT0 端接单次脉冲发生器。
按一次脉冲产生一次中断,CPU 使P1.0 状态发生一次反转,P1.0接LED 灯,以查看信号反转。
五、实验要求:根据实验内容编写一个程序,并在实验仪上调试和验证。
六、实验步骤:1)系统各跳线器处在初始设置状态,用导线连接单次脉冲模块的输出端到CPU 模块的P32;CPU 模块的P10 接八位逻辑电平显示模块的灯。
2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)连续按动单次脉冲产生电路的按键,发光二极管L0 每按一次状态取反,即隔一次点亮。
七、实验程序;//*************************************************;接线: 导线连接单次脉冲模块的输出端到CPU模块的P32,; CPU模块的P10接八位逻辑电平显示模块的L0灯。
;//*************************************************LED BIT P1.0LEDBuf BIT 20Horg 0ljmp Startorg 3Interrupt0:push PSW ; 保护现场cpl LEDBuf ; 取反LEDmov c, LEDBufmov LED, cpop PSW ; 恢复现场retiStart:clr LEDBufclr LEDmov TCON, #01h ; 外部中断0下降沿触发mov IE, #81h ; 打开外部中断允许位(EX0)及总中断允许位(EA)OK: ljmp OKend八、实验现象:全速运行程序, LED灯不亮,按下脉冲输入键时,每按一次脉冲产生键时,LED灯的状态取反一次。
九、实验分析:本实验将TCON置入#01H,选择了外部中断0下降沿触发。
又由于P3.2直接与单次脉冲模块的输出端相连,则按下一次单次脉冲产生电路的按键,产生一次外部中断。
每产生一次中断,将LEDBuf取反一次,然后将LEDBuf内容放入进位标志位C,再将C内容放入20H,由于20H与LED灯相连,则每次按一下脉冲产生键,LED灯状态取反一次。
十、实验总结:本次实验,对于外部中断功能的实现有了一定的的认识。
通过中断来对LED 灯状态的不断取反,加深了对课本上中断这一章的理解层度。
外部中断在实际应用中处于十分重要的地位,许多设计中都应用了外部中断。
虽然这只是最基本的中断实验,在今后的学习中还会有更深的讲解,但是这却是目前最适合我们自己动手操作的实验,很有帮助。
6实验三定时/计数器实验一、实验时间:2013年11月11日星期一二、实验地点:电工电子实习中心A2区311三、实验目的:学习MCS-51 内部计数器的使用和编程方法。
四、实验内容:使用MCS-51 内部定时/计数器,定时一秒钟,CPU 运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。
五、实验要求:根据实验内容编写一个程序,并在实验仪上调试和验证。
六、实验步骤:1)系统各跳线器处在初始设置状态,用导线连接CPU 模块P10 到八位逻辑电平显示模块的L0。
2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)运行程序观察发光二极管隔一秒点亮一次,点亮时间为一秒。
七、实验程序;//*************************************************;接线: 导线连接CPU模块P10到八位逻辑电平显示模块的L0.;//*************************************************Tick equ 10000 ; 10000 x 100us = 1sT100us equ 156 ; 100us时间常数(6M)C100us equ 30h ; 100us记数单元 7 LEDBuf bit 20horg 0ljmp Startorg 000bhT0Int:push PSWmov a, C100us+1jnz Goondec C100usGoon:dec C100us+1mov a, C100usorl a, C100us+1jnz Exit ; 100us 记数器不为0, 返回mov C100us, #27H ; #high(Tick)mov C100us+1, #10H ; #low(Tick)cpl LEDBuf ; 100us 记数器为0, 重置记数器; 取反LEDExit:pop PSWretiStart:mov TMOD, #02h ; 方式2, 定时器mov TH0, #t100usmov TL0, #t100usmov IE, #10000010b ; EA=1, IT0 = 1setb TR0 ; 开始定时clr LEDBufclr P1.0mov C100us, #27H ;#high(Tick)mov C100us+1, #10H ;#low(Tick)Loop:mov c, LEDBufmov P1.0, cljmp Loopend8八、实验结果:全速运行并按下按钮后,发光二极管点亮,大约1秒后熄灭,又过1秒,再次点亮,之后又熄灭,如此循环下去。
九、实验分析:这里使用计时器T0进行1s中断然后使led灯1s亮1s灭,但是这里应为T0方式2记不到1s所以用C100us来做标记来使时间满足1s=10000*100us。
十、实验总结:本次实验让我学会了如何利用定时器定时时间长于该方式下的最大时间。
而且这次实验让我明白了等待中断有不只一条语句可以使用。
理论知识毕竟只是纸上谈兵,只有应用到实际操作中,才能收获价值。
实验四交通灯控制实验一、实验时间:2013年11月18日星期一二、实验地点:电工电子实习中心A2区311三、实验目的:掌握十字路口交通灯控制方法。
四、实验内容:利用系统提供的双色LED 显示电路,和四位静态数码管显示电路模拟十字路口交通信号灯。
4 位LED 数码管显示时间,LED 显示红绿灯状态。
五、实验要求:根据实验内容编写一个程序,并在实验仪上调试和验证。
六、实验步骤:1)系统各跳线器处在初始设置状态。
P10 同时接G1、G3;P11 同时接R1、R3;P1.2 同时接G2、G4;P1.3 同时接R2、R4;P1.6、P1.7 分别接静态数码显示的DIN、CLK。
2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)观察十字路口交通灯效果。
七、实验程序;//*******************************************************************;;接线:P1.0同时接G1、G3,P1.1接R1、R3,P1.2接G2、G4,P1.3同时接R2、R4,; P1.6、P1.7接静态数码显示的DIN、CLK。
;//******************************************************************* 10SECOND1 EQU 30H ;东西秒寄存器SECOND2 EQU 31H ;南北秒寄存器DBUF EQU 40H ;显示缓冲1TEMP EQU 44H ;显示缓冲2LED_G1 BIT P1.0 ;东西绿灯LED_R1 BIT P1.1 ;东西红灯LED_G2 BIT P1.2 ;南北绿灯LED_R2 BIT P1.3 ;南北红灯Din BIT P1.6 ;串行显示数据CLK BIT P1.7 ;串行显示时钟ORG 0000HLJMP STARTORG 0100HSTART:LCALL STATE0 ;调用状态0LCALL DELAY ;调用延时MOV TMOD,#01H ;置T0工作方式1MOV TH0, #3CH ;置T0定时初值50mSMOV TL0, #0B0HSETB TR0 ;启动T0 CLR EALOOP: MOV R2,#20 ;置1S计数初值 50mS*20=1SMOV R3,#20 ;红灯20SMOV SECOND1,#25 ;东西秒显示初值25SMOV SECOND2,#25 ;南北秒显示初值25SLCALL DISPLAYLCALL STATE1 ;调用状态1WAIT1: JNB TF0,WAIT1 ;查询50mS到否CLR TF0MOV TH0, #3CH ;恢复T0定时初值50mSMOV TL0, #0B0HSETB TR0 ;启动T0DJNZ R2,WAIT1 ;判1S到否?未到继续状态1MOV R2,#20 ;置50mS计数初值 10DEC SECOND1 ;东西秒显示减一DEC SECOND2 ;南北秒显示减一LCALL DISPLAYDJNZ R3,WAIT1 ;状态1维持20S;***************************************************MOV R2,#5 ;置50mS计数初值 5*4=20MOV R3,#3 ;绿灯闪3SMOV R4,#4 ;闪烁间隔200mSMOV SECOND1,#5 ;东西秒显示初值5SMOV SECOND2,#5 ;南北秒显示初值5SLCALL DISPLAYWAIT2: LCALL STATE2 ;调用状态2JNB TF0,WAIT2 ;查询50mS到否CLR TF0MOV TH0, #3CH ;恢复T0定时初值50mSMOV TL0, #0B0HDJNZ R4,WAIT2 ;判200mS到否?未到继续状态2CPL LED_G1 ;东西绿灯闪MOV R4,#4 ;闪烁间隔200mSDJNZ R2,WAIT2 ;判1S到否?未到继续状态2MOV R2,#5 ;置50mS计数初值DEC SECOND1 ;东西秒显示减一DEC SECOND2 ;南北秒显示减一LCALL DISPLAYDJNZ R3,WAIT2 ;状态2维持3S;***************************************************MOV R2,#20 ;置50mS计数初值MOV R3,#2 ;黄灯2SMOV SECOND1,#2 ;东西秒显示初值2SMOV SECOND2,#2 ;南北秒显示初值2SLCALL DISPLAYWAIT3: LCALL STATE3 ;调用状态3JNB TF0,WAIT3 ;查询30mS到否CLR TF0MOV TH0, #3CH ;恢复T0定时初值50mSMOV TL0, #0B0HDJNZ R2,WAIT3 ;判1S到否?未到继续状态3MOV R2,#20 ;置50mS计数初值 11 DEC SECOND1 ;东西秒显示减一DEC SECOND2 ;南北秒显示减一LCALL DISPLAYDJNZ R3,WAIT3 ;状态3维持2S;***************************************************MOV R2,#20 ;置50mS计数初值MOV R3,#20 ;红灯20SMOV SECOND1,#25 ;东西秒显示初值25SMOV SECOND2,#25 ;南北秒显示初值25SLCALL DISPLAYWAIT4: LCALL STATE4 ;调用状态4JNB TF0,WAIT4 ;查询50mS到否CLR TF0MOV TH0, #3CH ;恢复T0定时初值50mSMOV TL0, #0B0HDJNZ R2,WAIT4 ;判1S到否?未到继续状态4MOV R2,#20 ;置50mS计数初值DEC SECOND2 ;南北秒显示减一LCALL DISPLAYDJNZ R3,WAIT4 ;状态4维持20S;***************************************************MOV R2,#5 ;置50mS计数初值 5*4=20MOV R4,#4 ;闪烁间隔200mSMOV R3,#3 ;绿灯闪3SMOV SECOND1,#5 ;东西秒显示初值5SMOV SECOND2,#5 ;南北秒显示初值5SLCALL DISPLAYWAIT5: LCALL STATE5 ;调用状态5JNB TF0,WAIT5 ;查询50mS到否CLR TF0MOV TH0, #3CH ;恢复T0定时初值100mSMOV TL0, #0B0HDJNZ R4,WAIT5 ;判200mS到否?未到继续状态5CPL LED_G2 ;南北绿灯闪MOV R4,#4 ;闪烁200mSDJNZ R2,WAIT5 ;判1S到否?未到继续状态5MOV R2,#5 ;置100mS计数初值 12 DEC SECOND1 ;东西秒显示减一DEC SECOND2 ;南北秒显示减一LCALL DISPLAYDJNZ R3,WAIT5 ;状态5维持3S;***************************************************MOV R2,#20 ;置50mS计数初值MOV R3,#2 ;黄灯2SMOV SECOND1,#2 ;东西秒显示初值2SMOV SECOND2,#2 ;南北秒显示初值2SLCALL DISPLAYWAIT6: LCALL STATE6 ;调用状态6JNB TF0,WAIT6 ;查询100mS到否CLR TF0MOV TH0, #3CH ;恢复T0定时初值100mSMOV TL0, #0B0HDJNZ R2,WAIT6 ;判1S到否?未到继续状态6MOV R2,#20 ;置100mS计数初值DEC SECOND2 ;南北秒显示减一LCALL DISPLAYDJNZ R3,WAIT6 ;状态6维持2SLJMP LOOP ;大循环STATE0: ;状态0MOV P1,#0CLR LED_G1SETB LED_R1 ;东西红灯亮CLR LED_G2SETB LED_R2 ;南北红灯亮RETSTATE1: ;状态1SETB LED_G1 ;东西绿灯亮CLR LED_R1CLR LED_G2SETB LED_R2 ;南北红灯亮RETSTATE2: ;状态2CLR LED_R1CLR LED_G2 13 SETB LED_R2 ;南北红灯亮RETSTATE3: ;状态3SETB LED_G1SETB LED_R1 ;东西黄灯亮CLR LED_G2SETB LED_R2 ;南北红灯亮RETSTATE4: ;状态4CLR LED_G1SETB LED_R1 ;东西红灯亮SETB LED_G2 ;南北绿灯亮CLR LED_R2RETSTATE5: ;状态5CLR LED_G1SETB LED_R1 ;东西红灯亮CLR LED_R2RETSTATE6: ;状态6CLR LED_G1SETB LED_R1 ;东西红灯亮SETB LED_G2SETB LED_R2 ;南北黄灯亮RETDISPLAY: ;数码显示MOV A, SECOND1 ;东西秒寄存器MOV B, #10 ;16进制数拆成两个10进制数DIV ABMOV DBUF+1,AMOV A,BMOV DBUF, AMOV A, SECOND2 ;南北秒寄存器MOV B, #10 ;16进制数拆成两个10进制数DIV ABMOV DBUF+3, AMOV A,BMOV DBUF+2, AMOV R0,#DBUFMOV R1,#TEMPMOV R7,#4DP10: MOV DPTR,#LEDMAPMOV A,@R0MOVC A,@A+DPTRMOV @R1,AINC R0INC R1DJNZ R7,DP10MOV R0,#TEMPMOV R1,#4DP12: MOV R7,#8MOV A,@R0DP13: RLC AMOV DIN,CCLR CLKSETB CLKDJNZ R7,DP13INC R0DJNZ R1,DP12RETLEDMAP: DB 3FH,6,5BH,4FH,66H,6DH ;0,1,2,3,4,5DB 7DH,7,7FH,6FH,77H,7CH ;6,7,8,9,A,BDB 58H,5EH,7BH,71H,0,40H ;C,D,E,F, , -Delay: mov r5, #5DLoop0:mov r6, #0DLoop1:mov r7, #0DLoop2:NOPNOPdjnz r7, DLoop2djnz r6, DLoop1djnz r5, DLoop0retEND八、实验结果:全速运行后,东西路口的绿灯亮,南北红灯亮,20秒后东西绿灯闪烁,3秒后熄灭,同时黄灯亮,维持2秒后熄灭,红灯亮,同时南北红灯熄灭,南北绿灯亮,20秒后绿灯闪亮,3秒后熄灭,同时黄灯亮,又过2秒熄灭,同时红灯亮,东西红灯熄灭,东西绿灯亮,如此循环。