南昌大学单片机实验报告上交稿.doc
- 文档编号:2883875
- 上传时间:2023-05-04
- 格式:DOC
- 页数:25
- 大小:230KB
南昌大学单片机实验报告上交稿.doc
《南昌大学单片机实验报告上交稿.doc》由会员分享,可在线阅读,更多相关《南昌大学单片机实验报告上交稿.doc(25页珍藏版)》请在冰点文库上搜索。
实验报告
实验课程:
单片机原理与应用实验
学生姓名:
刘路平
学号:
5502211040
专业班级:
电力系统及其自动化111班
2013年12月16日
南昌大学实验报告
学生姓名:
刘路平学号:
5502211040专业班级:
电力系统111班
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
实验一I/O口输入、输出实验
一、实验目的
掌握单片机P1口、P3口的使用方法。
二、实验内容
以P1口为输出口,接八位逻辑电平显示,LED显示跑马灯效果。
以P3口为输入口,接八
位逻辑电平输出,用来控制跑马灯的方向。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明和电路原理图
P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当
P1口作为输入口时,必须先对它置高电平使内部MOS管截止。
因为内部上拉电阻阻值是20K~40K,
故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是
不正确的。
本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模
块(B5区),八位逻辑电平输出电路原理图参见图1-1。
八位逻辑电平显示电路原理图参见图1-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.1
ORG0000H
LJMPSTART
ORG0200H
START:
Output1:
movA,#0fEH;把11111110二进制赋给A变量
movR5,#8;把8送到R5寄存器中
loop1:
CLRC;把标志位清零
movC,DIR;读入开关K0的值
JCOutput2;K0的状态为1则跳转到Output2
movP1,A;从P1口输出A的值并显示在二极管上,该位为0则相应的二极管点亮
rlA;把A进行循环左移,相当于把0进行左移,由此二极管从右到左依次点亮向左的跑马灯
AcAllDelay;调用延时子程序
djnzR5,loop1;判断R5中的值是否为0,来判断是否重新置数,为0就跳到Output1,否则继续loop1
SjmpOutput1
Output2:
movA,#07fH;把01111111二进制赋给A变量
movR5,#8;把8送到R5寄存器中
loop2:
CLRC;把标志位清零
movC,DIR;读入开关K0的值
JNCOutput1 ;K0的状态为0则跳转到Output1
movP1,A ;从P1口输出A的值并显示在二极管上,该位为0则相应的二极管点亮
rrA ;把A进行循环右移,相当于把0进行左移,由此二极管从左到右依次点亮向右的跑马灯
AcAllDelay ;调用延时子程序
djnzR5,loop2 ;判断R5中的值是否为0,来判断是否重新置数,为0就跳到Output2,否则继续loop2
SjmpOutput2
Delay:
;0减1后为-1其补码为11111111
movR6,#0;该延时为双重循环,总延时约为(1+1+(1+1+2)*257+2+(1+(1+1+2)*257)*256)us=0.264456s这个值与实验现象很匹配
DelayLoop1:
movR7,#0
DelayLoop2:
NOP ;空指令
NOP
djnzR7,DelayLoop2 ;R7中值为0则跳转
djnzR6,DelayLoop1;R6中值为0则跳转
ret
end
实验程序二:
DIRBITP3.1
ORG0000H
LJMPSTART
ORG0200H
START:
Output1:
movA,#0fEH;把11111110二进制赋给A变量
loop1:
CLRC;把标志位清零
movC,DIR;读入开关K0的值
JCloop2;K0的状态为1则跳转到loop2
movP1,A;从P1口输出A的值并显示在二极管上,该位为0则相应的二极管点亮
rlA;把A进行循环左移,相当于把0进行左移,由此二极管从右到左依次点亮向左的跑马灯
AcAllDelay;调用延时子程序
Sjmploop1
loop2:
CLRC;把标志位清零
movC,DIR;读入开关K0的值
JNCloop1 ;K0的状态为0则跳转到loop1
movP1,A ;从P1口输出A的值并显示在二极管上,该位为0则相应的二极管点亮
rrA ;把A进行循环右移,相当于把0进行左移,由此二极管从左到右依次点亮向右的跑马灯
AcAllDelay ;调用延时子程序
Sjmploop2
Delay:
;0减1后为-1其补码为11111111
movR6,#0;该延时为双重循环,总延时约为(1+1+(1+1+2)*257+2+(1+(1+1+2)*257)*256)us=0.264456s这个值与实验现象很匹配
DelayLoop1:
movR7,#0
DelayLoop2:
NOP ;空指令
NOP
djnzR7,DelayLoop2 ;R7中值为0则跳转
djnzR6,DelayLoop1;R6中值为0则跳转
ret
end
八、结果分析:
运行程序1后,拨动开关K0,可以实现两种流水灯方式的选择,即可以实现左移和右移,这主要是由语句JCOutput2和JNCOutput1 语句实现的,当K0拨到下面时,其状态为0跳转到Output1所以跑马灯为从右向左一次点亮,间隔大约为(1+1+(1+1+2)*257+2+(1+(1+1+2)*257)*256)us= 0.264456s,当K0拨到上面时,其状态为1,跳转到Output2,所以跑马灯为从左向右一次点亮,间隔大约为(1+1+(1+1+2)*257+2+(1+(1+1+2)*257)*256)us= 0.264456s。
综合分析,本实验主要有3个模块:
左移模块,右移模块和延时模块构成。
运行程序2后,拨动开关K0,可以实现两种流水灯方式的选择,即可以实现左移和右移,这主要是由语句JCloop1和JNCloop2 语句实现的,和实验程序1的主要差别就是当拨动开关后,直接进行方向的改变,而不是像程序1那样返回到始端在进行方向的反转。
九、实验心得
从这个实验中我们了解到如何用P1口输出来点亮二极管,也学会了如何根据具体的单片机的原理图进行编写程序,及线路的连接。
通过这次实验我了解了单片机芯片的结构及编程方法。
巩固了汇编语言编程的能力。
进一步加深了对汇编语言的认识。
对延时程序进一步的应用,对编程的能力有了提高通过实验还学会了流水灯的实现方法和实现延时的程序编写方法,这为下面的实验做好了充分的准备。
南昌大学实验报告
学生姓名:
刘路平学号:
5502211040专业班级:
电力系统111班
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
实验二外部中断实验
一、实验目的
学习外部中断技术的基本使用方法。
二、实验内容
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;20H清0
clrLED;P1.0清0
movTCON,#01h;外部中断0下降沿触发
movIE,#81h;打开外部中断允许位(EX0)及总中断允许位(EA)
OK:
ljmpOK
end
八、结果分析:
运行程序后,连续按动单次脉冲产生电路的按键,发光二极管L0每按一次状态取反,即隔一次点亮,综合分析,本实验主要有2个模块:
中断模块和主程序模块,主程序主要是用来初始化中断的,包括中断模式的选择,中断开关的打开,当脉冲变化时触发中断,硬件自动产生ACALL指令,跳转到中端口执行程序。
九、实验心得
从这个实验中我们了解到单次脉冲产生电路,也学会了如何通过外部的控制,达到对中断的处理,对于中断处理,主要有一下几个过程:
在主程序中主要是中断的控制寄存器的设置,中断开关的设置,以及对中断程序的编写经过试验的调试,我知道了整个程序的运行方式。
通过这次实验我了解了单片机芯片的结构及编程方法。
巩固了汇编语言编程的能力。
进一步加深了对汇编语言的认识,以及软件,硬件的结合有了深入的理解。
南昌大学实验报告
学生姓名:
刘路平学号:
5502211040专业班级:
电力系统111班
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
实验三定时/计数器实验
一、实验目的
学习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记数单元
LEDBufbit20h
org0
ljmpStart;跳转到Start
org000bh;伪代码表明以下地址为000bh
T0Int:
pushPSW;保存数据,送入堆栈
mova,C100us+1;将计数单元送入a
jnzGoon;如果a非0则跳转
decC100us;记数单元减一
Goon:
decC100us+1;
mova,C100us
orla,C100us+1;只有当计数单元的高位和低位都位0才使得a为0,也就是说只有计满10000次才能跳转
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
八、结果分析:
运行程序后,发光二极管L0每隔一秒点亮一次,实验主要有2个模块:
定时初始化模块和中断模块,主程序主要是用来初始化定时的,包括定时模式的选择,为方式2模式,该模式精度高能够准确定时,还包括定时器的初值设定,设定为100us,当定时标志位高电位时自动跳转到中断程序中,如果未满10000次就还得继续返回主程序无法实现CPLLEDBuf指令。
而要实现本功能,最重要的是orla,C100us+1这条语句,只有当计数单元的高位和低位都位0才使得a为0,也就是说只有计满10000次才能跳转。
否则跳转到exit。
九、实验心得
通过本次实验,我对单片机的定时/计数功能有了一定的了解,熟悉了定时/计数器的设置,总的来说,单片机的定时器的设置主要是以下几个方面:
一是定时器的模式设置,二是定时器的初值设置。
本实验也用到了中断,利用中断的方法,实现了LED的反转,相比于查询的方法,提高了单片机的工作效率。
另外我也掌握了它的控制和最
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南昌大学 单片机 实验 报告 上交