单片机实验报告终稿.docx
- 文档编号:26547936
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:20
- 大小:164.22KB
单片机实验报告终稿.docx
《单片机实验报告终稿.docx》由会员分享,可在线阅读,更多相关《单片机实验报告终稿.docx(20页珍藏版)》请在冰豆网上搜索。
单片机实验报告终稿
单片机实验报告
组员:
陈崇任20111980
:
陈东彦20111982
:
冯培晏20111979
:
李瑶20111984
:
张敏20111992
班级:
电气201102班
实验七P1口输入、输出实验
一、实验目的
1、学习P1口的使用方法
2、学习延时子程序的编写和使用
二、实验说明
P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用为输入口时,必须先对它置“1”。
若不先对它置“1”,读入的数据是不正确的。
三、实验内容及步骤
实验
(一):
用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
1、使用单片机最小应用系统1模块。
关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块。
2、安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,打开仿真器电源。
3、启动计算机,打开伟福仿真软件,进入仿真环境。
首先进行仿真器的设置,选择仿真器型号、仿真头型号、CPU类型。
选择通信端口,点击测试串行口,通信成功既可退出设置,进行仿真。
4、打开TH7A.ASM源程序,进行编译。
编译无误后,点击全速执行按钮运行程序,观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
5、把源程序编译成OBJ文件,再烧录到89C51芯片中。
实验
(二):
用P1.0、P1.1作输入接两个拨断开关,P1.2、P1.3作输出接两个发光二极管。
程序读取开关状态,并在发光二极管上显示出来。
1、用导线连接P1.0、P1.1到两个拨断开关,P1.2、P1.3到两个发光二极管。
2、打开TH7B.ASM源程序,编译无误后,全速运行程序,拨动拨断开关,观察发光二极管的亮灭情况。
向上拨为点亮,向下拨为熄灭。
3、把源程序编译成OBJ文件,再烧录到89C51芯片中。
四、流程图及源程序
1.流程图
(A)P1口循环点灯程序框图
(B)P1口输入输出程序框图
2.源程序:
(一)实验一
ORG0
Loop:
mova,#0FEh
movr2,#8
Output:
movP1,a
rla
AcallDelay
djnzr2,Output
LjmpLoop
Delay:
movr6,#0
movr7,#0
DelayLoop:
;延时程序
djnzr6,DelayLoop
djnzr7,DelayLoop
ret
end
(二)实验二
KeyLeftBITP1.0;定义
KeyRightBITP1.1
LedleftBITP1.2
LedRightBITP1.3
ORG0
SETBKeyLeft;欲读先置一
SETBKeyRight
Loop:
Movc,keyleft
MovLEDLeft,c
MOVC,KeyRight
MovLEDRIGHt,c
LJMPLoop
END
五、思考题
(1)对于本实验延时子程序
Delay:
MOVR6,0
MOVR7,0
DelayLoop:
DJNZR6,DelayLoop
DJNZR7,DelayLoop
RET
本模块使用12MHz晶振,粗略计算此程序的执行时间为多少?
解:
机器周期=1/12MHz*12=1us,
此程序的执行时间=(256*256us)*10^(-6)=0.065536s
实验八继电器控制实验
一、实验目的
1.学习I/O端口的使用方法
2.掌握继电器控制的基本方法
3.了解用弱电控制强电的方法
二、实验说明
现代自动控制设备中,都存在一个电子电路的互相连接问题,一方面要使电子电路的控制信号能控制电气电路的执行元件(电动机,电磁铁,电灯等),另一方面又要为电子线路和电气电路提供良好的电气隔离,以保护电子电路和人身的安全,继电器便能完成这一任务。
继电器电路中一般都要在继电器的线圈两头加一个二极管以吸收继电器线圈断电时产生的反电势。
本电路的控制端为高电平时,继电器常开触点吸合,LED灯被点亮
当控制端口为低电平时,继电器不工作。
三、实验内容及步骤
用P1.0作为控制输出口,接继电器电路,使继电器重复吸合与断开。
本实验需要用到单片机最小应用系统(F1区)、十六位逻辑电平显示(I4区)和继电器模块(A5区)。
1.使用单片机最小应用系统模块,用导线连接P1.0端口到继电器CONTROL,OPEN1/OPEN2接十六位逻辑电平显示的任意一个口,MID1/MID2接GND。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加源程序,进行编译,直到编译无误。
4.全速运行程序,观察二极管亮灭情况和听继电器开合的声音,继电器重复延时吸合与延时断开。
5.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
(ISP烧录器的使用查看附录二)
四、流程图及源程序
1.流程图
2.实验参考程序(见光盘中的程序文件夹)
实验程序:
MIAN:
CLRP1.0
LCALLDELAY
SETBP1.0
LCALLDELAY
DELAY:
MOVR6,#20
DELAY1:
MOVR5,#0C3H
MOVR4,#50H
DELAY2:
DJNZR4,$
DJNZR5,DELAY2
DJNZR6,DELAY1
RET
END
五、思考题
试用单片机的其他输入输出口控制继电器。
MIAN:
CLRP3.5
LCALLDELAY
SETBP3.5
LCALLDELAY
DELAY:
MOVR6,#20
DELAY1:
MOVR5,#0C3H
MOVR4,#50H
DELAY2:
DJNZR4,$
DJNZR5,DELAY2
DJNZR6,DELAY1
RET
END
六、电路图
实验十定时器实验
一、实验目的
1.学习80C51内部计数器的使用和编程方法
2.进一步掌握中断处理程序的编写方法
二、实验说明
关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。
内部计数器在单片机中主要有定时器和计数器两个功能。
本实验使用的是定时器,定时为一秒钟。
CPU运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。
定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。
TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。
TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
内部计数器用作定时器时,是对机器周期计数。
每个机器周期的长度是12个振荡器周期。
因为实验系统的晶振是12MHZ,本程序使用定时器T1,工作于方式(1或)2定时方式,即8位自动重装方式定时器,定时器100uS中断一次,所以定时常数的设置可按以下方法计算:
机器周期=12÷12MHz=1uS
(256-定时常数)×1uS=100uS
定时常数=156。
然后对100uS中断次数计数10000次,就是1秒钟。
在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开定时器T1的中断。
三、实验内容及步骤
本实验需要用到单片机最小应用系统模块(F1区)和十六位逻辑电平显示模块(I4区)。
1.使用单片机最小应用系统模块,用导线将P1.0接到十六位逻辑电平显示的任意一只发光二极管上。
2.安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头(USB线)。
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加源程序,编译无误后。
4.全速运行程序,发光二极管隔一秒点亮一次,点亮时间为一秒。
5.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
(ISP烧录器的使用查看附录二)
四、实验框图以及源程序(见光盘中的程序文件夹)
1.流程图
实验程序:
MIAN:
MOVSP,#0EFH
MOVTL0,#9CH;T0初始化
MOVTMOD,#1;定时器工作于方式1
MOVIP,#2;定义定时器T0中断定义为最高优先级
MOVIE,#82H;中断初始化
SETBTR0;允许T0计数
MOV30H,#06H;Y0溢出中断次数计数单元初始化为10000(0625H)
MOV31H,#25H
;中断服务程序
PTF0:
ORLTL0,#9CH
DJNZ30H,PTF0R
DJNZ31H,PTF0R
MOV30H,#06H;恢复中断次数技术单元值
MOV31H,#25H
CPLP1.0;P1.0求反
PTF0R:
RETI
END
五、思考题
1.如何将LED的状态间隔改为2秒,程序如何改写?
答:
对100uS中断次数计数20000次即可,程序改为如下:
MIAN:
MOVSP,#0EFH
MOVTL0,#9CH;T0初始化
MOVTMOD,#1;定时器工作于方式1
MOVIP,#2;定义定时器T0中断定义为最高优先级
MOVIE,#82H;中断初始化
SETBTR0;允许T0计数
MOV30H,#12H;Y0溢出中断次数计数单元初始化为20000(1250H)
MOV31H,#50H
;中断服务程序
PTF0:
ORLTL0,#9CH
DJNZ30H,PTF0R
DJNZ31H,PTF0R
MOV30H,#12H;恢复中断次数技术单元值
MOV31H,#50H
CPLP1.0;P1.0求反
PTF0R:
RETI
END
2.如果更换不同频率的晶振,会出现什么现象?
如何调整程序?
答:
若更换不同频率的晶振,则机器周期改变,需要重新计算和修改定时常数。
六、电路图
实验十二计数器实验
一、实验目的
1.学习8051内部定时/计数器使用方法
2.学习计数器各种工作方式的用法
二、实验说明
1.8051内部有两个16位的定时/计数器T0和T1,16位是指定时/计数器内的计数器是16位的,由2个8位计数器组成。
本实验用的是T0,它的2个8位计数器是TH0和TL0,TH0是高8位,TL0是低八位。
所谓加法计数器,指其计数的方法是对计数脉冲每次加1。
8051内部的计数器是加法计数器,需先设置计数器的初值,本实验设置计数器初值为0,然后对计数脉冲每次加1,加到计数器满后溢出。
2.本实验中内部计数器起计数器的作用。
外部事件计数脉冲由P3.4引入定时器T0。
单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。
这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。
这就决定了输入波形的频率不能超过机器周期频率。
三、实验内容及步骤
本实验需要用到单片机最小应用系统模块(F1区)、单次脉冲源(A6区)和十六位逻辑电平显示模块(I4区)。
P3.4接外部脉冲输入,P0口接十六位逻辑电平显示模块的,脉冲个数以二进制形式显示出来。
1.使用单片机最小应用系统模块,用扁平数据线连接P0口JD4F与十六位逻辑电平显示模块JD2I,P3.4端口接单次脉冲电路的输出端。
2.安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头(USB线)。
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加源程序,编译无误后全速运行程序,连续按动单次脉冲的按键,十六位逻辑电平显示按键次数。
4.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
(ISP烧录器的使用查看附录二)
四、流程图及源程序(见光盘中的程序文件夹)
1.流程图
实验程序:
ORG0
START:
MOVTMOD,#05H
MOVTH0,#0
MOVTL0,#0
SETBTR0
LOOP:
MOVA,TL0
XRLA,#0FFH
MOVP0,A
AJMPLOOP
END
五、思考题
1.由功能、计数启动条件、重复启动条件等诸方面比较80C51的各种方式。
答:
工作方式0:
TMOD中M1=0,M0=0。
计数寄存器由13位组成。
寄存器进行计数时,TLIi的低5位溢出后向THi进位,THi溢出后将TFi置位,并向CPU申请中断。
此时内部硬件清TFi位。
工作方式1:
M1=0,M0=1。
计数器由16位组成。
控制方式与1相同。
工作方式2:
M1=1,M0=0。
将16位的计数寄存器分为两个8位寄存器,组成一个可以重装入的8位计数寄存器。
TLi作为8位计数寄存器,THi作为初值寄存器。
TLi计数溢出时,一方面将TFi置位,并向CPU申请中断;另一方面将THi的内容重新装入TLi中,继续计数。
工作方式3:
M1=1,M0=1。
只适用于定时/计数器T0,将T0分为一个8位定时/计数器和一个8位定时器。
2.80C51单片机的最高计数频率为多少?
答:
两个机器周期对应的频率。
六、实验电路图
实验二十三74LS164串转并实验
一、实验目的
1、掌握89C51串行口方式0工作方式及编程方法
2、掌握89C51的P1口的I/O功能输出
3、掌握利用串行口入I/O口,扩展I/O通道的方法
二、实验说明
本实验是用74LS164把输入的串行数转换成并行数输出,74LS164为串行输入并行输出移位寄存器,其引脚图及功能如下:
A、B:
串行输入端;
QA~QH:
并行输出端;
CLR:
清零端,低电平有效;
CLK:
时钟脉冲输入端,上升沿有效。
实验采用单片机串行工作方式0和P1端口两种方式串行输出数据。
串行口工作方式0时,数据为8位,从RXD端输出,TXD端输出移位信号,其波特率固定为Fosc/12。
在CPU将数据写入SBUF寄存器后,立即启动发送。
待8位数据输完后,硬件将状态寄存器的TI位置1,TI必须由软件清零。
串行口工作方式0数据/时钟是自动移位输出,用P1端口输出数据时,要编程位移数据,每输出一个数据位,再输出一个移位脉冲。
三、实验内容及步骤
本实验需要用到单片机最小系统(F1区)、十六位逻辑电平显示(I4区)和74LS164(G3区)。
1、选用89C51单片机最小应用系统模块,用八位数据线连接74LS164的并行输出JD5G与十六位逻辑电平显示模块JD2I,将74LS164的串行输入端A/B(1和2脚)接到RXD上,CLK接到TXD上,CLR接INT0。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加源程序,进行编译,直到编译无误。
4、全速运行程序,观察发光二极管亮灭情况,先右移动两次,再左移动两次,然后闪烁两次。
实验代码:
ORG0000H
LJMPMAIN
ORG0023H
LJMPT8
MAIN:
SETBES
SETBEA
MOVSCON,#0
SETBP3.2;屏蔽外部中断INT0
START:
MOVDPTR,#TABLE
LOOP:
CLRA
MOVCA,@A+DPTR
CJNEA,#3,A1
JMPSTART
A1:
CPLA
CLRF0
MOV30H,A
MOVSBUF,30H
LOOP3:
JNBF0,LOOP3
LOOP2:
CALLDELAY
INCDPTR
JMPLOOP
T8:
CLRTI
SETBF0
RETI
DELAY:
MOVR5,#255
D3:
MOVR2,#255
D1:
DJNZR2,D11
D4:
DJNZR5,D3
RET
TABLE:
DB1,2,4,8,10H,20H,40H,80H
DB1,2,4,8,10H,20H,40H,80H
DB80H,40H,20H,10H,8,4,2,1
DB80H,40H,20H,10H,8,4,2,1
DB0,0FFH,0,0FFH
DB3
END
TABLE中的数据用于点亮对应的LED灯,由于LED灯的实验接线是共阳极,所以A1程序段对A求反是为了使对应的引脚输出低电平
四、电路图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 告终
![提示](https://static.bdocx.com/images/bang_tan.gif)