优质文档单片机实验报告相当不错有具体实验结果分析哦范文模板 49页.docx
《优质文档单片机实验报告相当不错有具体实验结果分析哦范文模板 49页.docx》由会员分享,可在线阅读,更多相关《优质文档单片机实验报告相当不错有具体实验结果分析哦范文模板 49页.docx(50页珍藏版)》请在冰豆网上搜索。
优质文档单片机实验报告相当不错有具体实验结果分析哦范文模板49页
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!
==本文为word格式,下载后可方便编辑和修改!
==
单片机实验报告(相当不错,有具体实验结果分析哦)
学生姓名:
学号:
专业班级:
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
实验一I/O口输入、输出实验
地点:
基础实验大楼A311
一、实验目的
掌握单片机P1口、P3口的使用方法。
二、实验内容
以P1口为输出口,接八位逻辑电平显示,LED显示跑马灯效果。
以P3口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明和电路原理图
P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。
因为内部上拉电阻阻值是20K~40K,
故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。
本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区)。
2
学生姓名:
学号:
专业班级:
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
五、实验步骤
1)系统各跳线器处在初始设置状态。
用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);用8位数据线连接八位逻辑电平显示模块的JD4B到CPU模块的JD8(P1口)。
2)启动PC机,打开THGMW-51软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)观察发光二极管显示跑马灯效果,拨动K0可改变跑马灯的方向。
六、实验参考程序
本实验参考程序:
;//******************************************************************;文件名:
PortforMCU51
;功能:
I/O口输入、输出实验
;接线:
用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);;用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。
;//******************************************************************DIRBITP3.0
ORG0000H
LJMPSTART
ORG0100H
START:
OUTPUT1:
MOVA,#0FEH
MOVR5,#8
LOOP1:
CLRC
MOVC,DIR
JCOUTPUT2
学生姓名:
学号:
专业班级:
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
MOVP1,A
RLA
ACALLDELAY
DJNZR5,LOOP1
SJMPOUTPUT1
OUTPUT2:
MOVA,#07FH
MOVR5,#8
LOOP2:
CLRC
MOVC,DIR
JNCOUTPUT1
MOVP1,A
RRA
ACALLDELAY
DJNZR5,LOOP2
SJMPOUTPUT2
DELAY:
MOVR6,#0
DELAYLOOP1:
MOVR7,#0
DELAYLOOP2:
NOP
NOP
DJNZR7,DELAYLOOP2
DJNZR6,DELAYLOOP1
RET
七.实验结果及分析:
此次实验中用到IO口,P1口作为输出,内部具有上拉电阻,P3口作为输入,需要给寄存器写入1.由发光二极管显示跑马灯效果,程序由0000H开始,将0FEH送入累加器A,8位灯的送入R5,,标志位C清零DIR送入C,当C等于1时跳转OUTPUT2,再将07FH送入累加器a,R5再次给8,如果C不等于0时跳转到OUTPU1,当C等于1时将A的内容送给p1,第八位等点亮,然后将A的内容右移,延时7微妙,当R5自动减一不为零时继续循环,知道八展灯全部点亮循环,再次将C清零,当C等于0时,将A送入P1,第一位灯亮,将累加器的内容左移,延时2微秒‘然后R5减一继续循环知道八展灯全部点亮。
就这样循环往复使灯一直变换点亮。
在这次实验中首先学会了如何使用电脑和原件的配合使用,其次掌握
学生姓名:
学号:
专业班级:
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
了PC机和THGMW-51的用法,刚开始遇到了很多不懂之处,串行口测试不过去,电路和程序都没有问题,但是就不能将程序下载过去,最后试着重启了一下PC机后就通过了,接下来的都很顺利。
懂得了如何用程序控制实际用品,应用于社会生活当中。
实验二外部中断实验
一、实验目的
学习外部中断技术的基本使用方法。
二、实验内容
INT0端接单次脉冲发生器。
按一次脉冲产生一次中断,CPU使P1.0状态发生一次反转,P1.0接LED灯,以查看信号反转。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明和电路原理图
1)外部中断的初始化设置共有三项内容:
中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。
中断方式设置一般有两种方式:
电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。
因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.3)引入。
2)中断服务的关键:
a、保护进入中断时的状态。
堆栈有保护断点和保护现场的功能使用PUSH指令,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。
b、必须在中断服务程序中设定是否允许中断重入,即设置EX0位。
c、用POP指令恢复中断时的现场。
3)中断控制原理:
中断控制是提供给用户使用的中断控制手段。
实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:
TCON、IE、SCON及IP。
4)中断响应的过程:
首先中断采样然后中断查询最后中断响应。
采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0或IE1置“1”;否则继续为“0”。
所谓查询就是由CPU测试TCON和SCON中各标志位的状态以确定有没有中断请求发生以及是那一个中断请求。
中断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就响应一次中断。
本实验需要用到CPU模块(F3区)和八位逻辑电平显示模块(B5区)、单次脉冲模块(E3区)。
五、实验步骤
1)系统各跳线器处在初始设置状态,用导线连接单次脉冲模块的输出端到CPU模块的P32;CPU模块的P10接八位逻辑电平显示模块的灯。
2)启动PC机,打开THGMW-51软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)连续按动单次脉冲产生电路的按键,发光二极管L0每按一次状态取反,即隔一次点
学生姓名:
学号:
专业班级:
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
亮。
六、实验参考程序
实验参考程序:
;//*************************************************
;文件名:
EXINTFORMCU51
;功能:
外部中断实验
;接线:
导线连接单次脉冲模块的输出端到CPU模块的P32,
;CPU模块的P10接八位逻辑电平显示模块的L0灯。
;//*************************************************
LEDBITP1.0
LEDBUFBIT20H
ORG0
LJMPSTART
ORG3
INTERRUPT0:
PUSHPSW;保护现场
CPLLEDBUF;取反LED
MOVC,LEDBUF
MOVLED,C
POPPSW;恢复现场
RETI
START:
CLRLEDBUF
CLRLED
MOVTCON,#01H;外部中断0下降沿触发
MOVIE,#81H;打开外部中断允许位(EX0)及总中断允许位(EA)OK:
LJMPOK
END
七.结果及分析:
此次实验使我们更进一步了解外部中断的原理和使用方法,由外部中断INT0接单次脉冲产生中断。
通过按键产生脉冲,是系统产生一次中断,使P1.0的状态发生翻转。
此源程序从0000H单元开始,主程序从0003H开始,进行长跳转指令到START,然后将LEDBUF位清零,还有LED位清零,设置TCON,使外部中断下降沿触发,再进一步设置中断允许IE,打开外部中断允许EX0及总中断允许位控制EA,进行自身跳转指令,进行中断指令,首先进行现场保护,把寄存器单元中的内容保护起来,对LEDBUF取反,将LEDBUF送给进位标志位C,然后再送给LED,再回复现场,再返回去。
在此次试验中通过对TCON和IE.SCON,以及IP的设置进行控制,使其产生中断。
我们学过的中断方式有电平触发和边沿触发,我们这次采用的是边沿触发,每次有脉冲跳变时就会使灯点亮,而且每次都是通过中断程序改变LEDBUF和LED.
八、实验思考
学生姓名:
学号:
专业班级:
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
该实验中最后的结果是要求发光二极管L0每按一次状态取反,那么,如果我们要实现L0~L7灯均是这样的效果呢?
程序该如何编写?
答:
经过编写以及实验验证,程序如下所示:
(其基本原理与本次实验雷同,在此就不再赘述)
ORG0
LJMPStart
ORG3
Interupt0:
PUSHpsw
MOVA,P1
CPLA
MOVP1,A
POPPSW
RET
Start:
CLRA
MOVP1,#0
MOVTCON,#01H
MOVIE,#81H
OK:
LIMPOK
END
学生姓名:
学号:
专业班级:
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
实验三定时/计数器实验
一、实验目的
学习MCS-51内部计数器的使用和编程方法。
二、实验内容
使用MCS-51内部定时/计数器,定时一秒钟,CPU运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明
关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。
内部计数器在单片机中主要有定时器和计数器两个功能。
本实验使用的是定时器,定时为一秒钟。
定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。
TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。
TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
内部计数器用作定时器时,是对机器周期计数。
每个机器周期的长度是12个振荡器周期。
假设实验系统的晶振是12MHZ,程序工作于方式2,即8位自动重装方式定时器,定时器100uS中断一次,所以定时常数的设置可按以下方法计算:
机器周期=12÷12MHz=1uS
(256-定时常数)×1uS=100uS
定时常数=156。
然后对100uS中断次数计数10000次,就是1秒钟。
在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
本实验需要用到CPU模块(F3区)和八位逻辑电平显示模块(B5区)。
五、实验步骤
1)系统各跳线器处在初始设置状态,用导线连接CPU模块P10到八位逻辑电平显示模块的L0。
2)启动PC机,打开THGMW-51软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)运行程序观察发光二极管隔一秒点亮一次,点亮时间为一秒。
六、实验参考程序
本实验参考程序
;//*************************************************
;文件名:
TIMERFORMCU51
;功能:
定时/计数器实验
学生姓名:
学号:
专业班级:
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
;接线:
导线连接CPU模块P10到八位逻辑电平显示模块的L0.
;//*************************************************
TICKEQU10000;10000X100US=1S
T100USEQU156;100US时间常数(6M)
C100USEQU30H;100US记数单元7LEDBUFBIT20H
ORG0
LJMPSTART
ORG000BH
T0INT:
PUSHPSW
MOVA,C100US+1
JNZGOON
DECC100US
GOON:
DECC100US+1
MOVA,C100US
ORLA,C100US+1
JNZEXIT;100US记数器不为0,返回
MOVC100US,#27H;#HIGH(TICK)
MOVC100US+1,#10H;#LOW(TICK)
CPLLEDBUF;100US记数器为0,重置记数器
;取反LED
EXIT:
POPPSW
RETI
START:
MOVTMOD,#02H;方式2,定时器
MOVTH0,#T100US
MOVTL0,#T100US
MOVIE,#10000010B;EA=1,IT0=1
SETBTR0;开始定时
CLRLEDBUF
CLRP1.0
MOVC100US,#27H;#HIGH(TICK)
MOVC100US+1,#10H;#LOW(TICK)
LOOP:
MOVC,LEDBUF
MOVP1.0,C
学生姓名:
学号:
专业班级:
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
LJMPLOOP
END
七.实验结果及分析:
单片机中有定时和计数器两种,我们在此实验中用的是定时器,当定时时间到时就会产生中断请求,使CPU转去中断服务程序。
通过TMOD和控制寄存器TCON进行控制,用EQU给TICK设定值为1秒主程序从0000H开始跳转到START,对定时器设定为方式2,T0的高八位的初值和低八位的初值都设置为100US,打开中断允许控制位IE,启动定时器进行开始计时,将LEDBUF和P1.0清零,使Tick的高八位为27H,低八位为10H,进行延时,将LEDBUF送给进位标志位,再通过进位标志位送给P1.0,循环此延时,然后进行中断T0的中断程序首先进行堆栈,保护现场,将低八位送给累加器A,如果累加器A不等于0则进行转移,使低八位减一,高八位与给累加器A进行或运算,100US计数器部位0时返回,然后重新赋初值,将10H送给低八位,对LEDBUF取反,如果累加器A等于0则是高八位减一再接着继续进行。
实验四交通灯控制实验
一、实验目的:
掌握十字路口交通灯控制方法。
二、实验内容:
利用系统提供的双色LED显示电路,和四位静态数码管显示电路模拟十字路口交通信号灯。
4位LED数码管显示时间,LED显示红绿灯状态。
三、实验要求:
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明和电路原理图:
交通信号灯控制逻辑如下:
假设一个十字路口为东西南北走向。
开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后(20秒),东西路口的绿灯,闪烁若干次后(3秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2秒),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20秒),南北路口的绿灯闪烁若干次后(3秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。
双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,共用负极,当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。
本实验需要用到CPU模块(F3区)、静态数码管/双色LED显示模块(B4区)。
双色LED显示电路原理参见图4-1。
学生姓名:
学号:
专业班级:
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
五、实验程序参考框图:
学生姓名:
学号:
专业班级:
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
六、实验步骤:
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)观察十字路口交通灯效果。
七、实验参考程序:
本实验参考程序
;//*******************************************************************
;文件名:
交通灯程序FORMCU51
;功能:
双色LED模拟交通灯信号,并通过调用静态数码显示状态时间。
;接线:
P1.0同时接G1、G3,P1.1接R1、R3,P1.2接G2、G4,P1.3同时接R2、R4,
;P1.6、P1.7接静态数码显示的DIN、CLK。
;//*******************************************************************10
SECOND1EQU30H;东西秒寄存器
SECOND2EQU31H;南北秒寄存器
DBUFEQU40H;显示缓冲1
TEMPEQU44H;显示缓冲2
LED_G1BITP1.0;东西绿灯
LED_R1BITP1.1;东西红灯
LED_G2BITP1.2;南北绿灯
LED_R2BITP1.3;南北红灯
DINBITP1.6;串行显示数据
CLKBITP1.7;串行显示时钟
ORG0000H
LJMPSTART
ORG0100H
START:
LCALLSTATE0;调用状态0
LCALLDELAY;调用延时
MOVTMOD,#01H;置T0工作方式1
MOVTH0,#3CH;置T0定时初值50MS
MOVTL0,#0B0H
SETBTR0;启动T0CLREA
LOOP:
MOVR2,#20;置1S计数初值50MS*20=1S
学生姓名:
学号:
专业班级:
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
MOVR3,#20;红灯20S
MOVSECOND1,#25;东西秒显示初值25S
MOVSECOND2,#25;南北秒显示初值25S
LCALLDISPLAY
LCALLSTATE1;调用状态1
WAIT1:
JNBTF0,WAIT1;查询50MS到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值50MS
MOVTL0,#0B0H
SETBTR0;启动T0
DJNZR2,WAIT1;判1S到否?
未到继续状态1
MOVR2,#20;置50MS计数初值DECSECOND1;东西秒显示减一
DECSECOND2;南北秒显示减一
LCALLDISPLAY
DJNZR3,WAIT1;状态1维持20S
;***************************************************
MOVR2,#5;置50MS计数初值5*4=20
MOVR3,#3;绿灯闪3S
MOVR4,#4;闪烁间隔200MS
MOVSECOND1,#5;东西秒显示初值5S
MOVSECOND2,#5;南北秒显示初值5S
LCALLDISPLAY
WAIT2:
LCALLSTATE2;调用状态2
JNBTF0,WAIT2;查询50MS到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值50MS
MOVTL0,#0B0H
DJNZR4,WAIT2;判200MS到否?
未到继续状态2
CPLLED_G1;东西绿灯闪
MOVR4,#4;闪烁间隔200MS
DJNZR2,WAIT2;判1S到否?
未到继续状态2
MOVR2,#5;置50MS计数初值
DECSECOND1;东西秒显示减一
DECSECOND2;南北秒显示减一
LCALLDISPLAY
DJNZR3,WAIT2;状态2维持3S
;***************************************************
MOVR2,#20;置50MS计数初值
MOVR3,#2;黄灯2S
学生姓名:
学号:
专业班级:
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
MOVSECOND1,#2;东西秒显示初值2S
MOVSECOND2,#2;南北秒显示初值2S
LCALLDISPLAY
WAIT3:
LCALLSTATE3;调用状态3
JNBTF0,WAIT3;查询30MS到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值50MS
MOVTL0,#0B0H
DJNZR2,WAIT3;判1S到否?
未到继续状态3
MOVR2,#20;置50MS计数初值DECSECOND1;东西秒显示减一
DECSECOND2;南北秒显示减一
LCALLDISPLAY
DJNZR3,WAIT3;状态3维持2S
;***************************************************
MOVR2,#20;置50MS计数初值
MOVR3,#20;红灯20S
MOVSECOND1,#25;东西秒显示初值25S
MOVSECOND2,#25;南北秒显示初值25S
LCALLDISPLAY
WAIT4:
LCALLSTATE4;调用状态4
JNBTF0,WAIT4;查询50MS到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值50MS
MOVTL0,#0B0H
DJNZR2,WAIT4;判1S到否?
未到继续状态4
MOVR2,#20;置50MS计数初