单片机实验指导书.docx
《单片机实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书.docx(24页珍藏版)》请在冰豆网上搜索。
![单片机实验指导书.docx](https://file1.bdocx.com/fileroot1/2022-12/31/f1d3704a-b40c-4da5-b6ce-6fec200810e8/f1d3704a-b40c-4da5-b6ce-6fec200810e81.gif)
单片机实验指导书
单片机实验指导书
白城师范学院
机械工程学院系
实验一实验板使用,简单程序设计
一、实验目的
1.熟悉单片机实验版、KeilC51软件使用
2.学习简单程序的调试方法
3.掌握存储器读写方法
二、实验说明
本实验指定某块存储器的起始地址和长度,要求能将其内容置1。
通过该实验学生可以了解单片机读写存储器的方法,同时也可以了解单片机编程、调试方法。
三、实验内容及步骤
1.安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头(USB线)。
2.启动PC机,打开KEIL软件,软件设置为模拟调试状态。
在所建的项目文件中输入源程序,进行编译,编译无误后,执行程序,点击全速执行快捷按钮,点击暂停按钮,观察存储块数据变化情况,点击复位按钮,可再次运行程序。
(KEIL软件使用详见附录)
3.打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。
四、流程图及参考程序
1.参考程序
ORG0000H
STARTEQU30H
MOVR0,#START;起始地址
MOVR2,#10;设置10字节计数值
mova,#01h
Loop:
MOV@R0,A
INCR0
DJNZR2,Loop
NOP
LJMP$
END
2.流程图
五、思考题
如何将存储器块的内容移动到另一位置。
实验二汇编语言程序设计
一、实验目的
1.进一步熟悉汇编语言编程和程序调试
2.学习P1口的使用方法
3.学习延时子程序的编写和使用
二、实验说明
P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。
三、实验内容及步骤
实验
(一):
本实验需要用到单片机最小应用系统(F1区)和十六位逻辑电平显示模块(I4区)。
用P1口做输出口,接十六位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
1.使用单片机最小应用系统。
用扁平数据线连接单片机P1口JD1F与十六位逻辑电平显示模块JD2I,打开相关模块电源。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,输入源程序(实验
(一)),进行编译,直到编译无误。
4.进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
实验
(二):
用P1.0、P1.1作输入接两个拨断开关,P1.2、P1.3作输出接两个发光二极管。
程序读取开关状态,并在发光二极管上显示出来。
本实验需要用到单片机最小应用系统(F1区)、十六位逻辑电平显示模块(I4区)以及八位逻辑电平输出模块(B1区)。
1.用导线分别把单片机最小应用系统的P1.0、P1.1连接到两个拨断开关(B1区)K0、K1,P1.2、P1.3连接到两个发光二极管(I4区)L0、L1。
2.输入源程序(实验
(二)),编译无误后,全速运行程序,拨动拨断开关,观察发光二极管的亮灭情况。
向上拨为熄灭,向下拨为点亮。
3.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
(ISP烧录器的使用查看附录二)
注:
在做完实验时记得养成一个好习惯:
把相应单元的短路帽和电源开关还原到原来的位置!
以下将不再重述。
四、流程图及参考程序
1.流程图
2.实验参考程序
实验
(一)
实验
(二)
ORG0000H
LJMPSTART
ORG0030H
START:
mova,#0FEh
movr5,#8
Output:
movP1,a
RLa
callDelay
djnzr5,Output
LjmpSTART
Delay:
movr6,#0
movr7,#0
DelayLooP:
djnzr7,DelayLoop
djnzr6,DelayLoop
ret
end
KEYLEFTBITP1.0
KEYRIGHTBITP1.1
LEDLEFTBITP1.2
LEDRIGHTBITP1.3
ORG0000H
LJMPSTART
ORG0030H
START:
SETBKEYLEFT
SETBKEYRIGHT
LOOP:
MOVC,KEYLEFT
MOVLEDLEFT,C
MOVC,KEYRIGHT
MOVLEDRIGHT,C
LJMPLOOP
END
注:
BIT为定义位名称伪指令。
五、思考题
(1)对于本实验延时子程序
Delay:
MOVR6,0
MOVR7,0
DelayLoop:
DJNZR6,DelayLoop
DJNZR7,DelayLoop
RET
本模块使用11.0592MHz晶振,粗略计算此程序的执行时间为多少?
六、电路图
实验三中断系统应用实验
一、实验目的
1.掌握外部中断技术的基本使用方法
2.掌握中断处理程序的编写方法
二、实验说明
1.外部中断的初始化设置共有三项内容:
中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断触发方式设置。
中断触发方式设置一般有两种方式:
电平触发方式和脉冲(边沿)触发方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。
因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.3)引入,本实验由INT0(P3.2)引入。
2.中断服务的关键:
a、保护进入中断时的状态。
堆栈有保护断点和保护现场的功能使用PUSH指令,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。
b、必须在中断服务程序中设定是否允许中断重入,即设置EX0位。
c、用POP指令恢复中断时的现场。
3.中断控制原理:
中断控制是提供给用户使用的中断控制手段。
实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:
TCON、IE、SCON及IP。
4.中断响应的过程:
首先中断采样然后中断查询最后中断响应。
采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0或IE1置“1”;否则继续为“0”。
所谓查询就是由CPU测试TCON和SCON中各标志位的状态以确定有没有中断请求发生以及是那一个中断请求。
中断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就响应一次中断。
INT0端接单次脉冲发生器。
P1.0接LED灯,以查看信号反转。
三、实验内容及步骤
用一指示灯标识外中断的触发。
本实验需要用到单片机最小应用系统模块(F1区)、单次脉冲源(A6区)和十六位逻辑电平显示模块(I4区)。
1.使用单片机最小应用系统模块,P1.0接十六位逻辑电平显示的一个发光二极管,P3.2(INTO)接单次脉冲源的输出端。
2.安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头(USB线)。
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着建立源程序,编译无误后,全速运行程序,连续按动单次脉冲产生电路的按键,发光二极管每按一次状态取反,即隔一次点亮。
4.可把源程序编译成可执行文件,用ISP烧录器烧录到89S52芯片中。
(ISP烧录器的使用查看附录二)
四、流程图及参考程序
1.流程图
2.参考程序
LEDBITP1.0
LEDBufBIT0
org0000H
ljmpStart
ORG0003H
LJMPINTERRUPT
Start:
clrLEDBuf
clrLED
movTCON,#01h;外部中断0下降沿触发
movIE,#81h;打开外部中断允许位(EX0)及总中断允许位(EA)
OK:
ljmpOK
org0030H
INTERRUPT:
pushPSW;保护现场
cplLEDBuf;取反LED
movc,LEDBuf
movLED,c
popPSW;恢复现场
reti
end
五、思考题
1.简述中断处理的一般过程。
六、原理图
实验四定时器计数器使用
一、实验目的
1.学习89C51内部定时计数器的使用和编程方法
2.进一步掌握中断处理程序的编写方法
二、实验说明
关于内部计数器的编程主要是定时常数(初值)的设置和有关控制寄存器的设置。
内部计数器在单片机中主要有定时器和计数器两个功能。
本实验使用的是定时器,定时为一秒钟。
CPU运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。
定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。
TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。
TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
内部计数器用作定时器时,是对机器周期计数。
每个机器周期的长度是12个振荡器周期。
因为实验系统的晶振是12MHZ,本程序工作于方式1,即16位方式定时器,定时器50mS中断一次,所以定时常数的设置可按以下方法计算:
机器周期=12÷12MHz=1uS
定时常数(初值)=65536-50mS/1uS=15536=3CB0H。
然后对50mS中断次数计数20次,就是1秒钟。
在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
三、实验内容及步骤
使P1.0所接发光二极管隔一秒点亮一次,点亮时间为一秒。
本实验需要用到单片机最小应用系统模块(F1区)和十六位逻辑电平显示模块(I4区)。
1.用导线将P1.0接到十六位逻辑电平显示的任意一只发光二极管上。
2.安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头(USB线)。
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着建立源程序,编译无误后。
4.全速运行程序。
5.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
四、实验框图以及参考程序
1.流程图
2.参考程序
LEDBITP1.0
org0000H
ljmpStart
org000BH
LJMPT0Int
Start:
movTMOD,#01h;方式1,定时器
movTH0,#3CH;初值高位
movTL0,#0B0H;初值低位
movIE,#b;EA=1,IT0=1
setbTR0;开始定时
clrLED
movr2,#20
ljmp$
ORG0100H
T0Int:
pushPSW
djnzR2,loop
cplLED
movr2,#20
loop:
movth0,#3CH
movtl0,#0B0H
popPSW
reti
end
五、思考题
1.如何将LED的状态间隔改为2秒,程序如何改写?
2.如果更换不同频率的晶振,会出现什么现象?
如何调整程序?
六、电路图
实验五查询式键盘、显示实验
一、实验目的
1.掌握键盘和显示器的接口方法和编程方法
2.掌握键盘和八段码显示器的工作原理
二、实验说明
本实验提供了8个按钮的小键盘,可接到单片机的并行口,如果有键按下,则相应输出为低,否则输出为高。
单片机通过识别,判断按下什么键。
有键按下后,要有一定的延时,防止由于键盘抖动而引起误操作。
三、实验步骤及内容
本实验需要用到单片机最小应用系统(F1区)、查询式键盘(B2区)、动态显示模块(I3区)和十六位逻辑电平显示模块(I4区)。
1.用一根扁平数据插头线连接查询式键盘实验模块JD2B与十六位逻辑电平显示模块JD2I,无键按下时,键盘输出全为“1”发光二极管全部熄灭,有键按下,对应发光二极管点亮。
2.使用动态显示模块显示键值。
单片机最小应用系统1的P1口JD1F接查询式键盘输出口JD2B。
最小系统的P0口JD7F接动态显示区I2的段码JD0I,最小系统的P2口接动态显示区I2的位选JD1I。
当P1.X所接键被按下时LED显示P1.X字样。
3.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
4.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着建立源程序,进行编译,直到编译无误。
5.进行软件设置,选择硬件仿真。
6.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。
在键盘上按下某个键,观察数显是否与按键值一致,键值从右至左为0~7。
四、流程图及参考程序
1.参考程序
DBUFEQU50H
TEMPEQU30H
ORG0000H
LJMPSTART
ORG0100H
START:
MOVTEMP,#0CH;初始显示P1.c
MAIN:
ACALLDISP
ACALLKEY
AJMPMAIN
KEY:
MOVP1,#0FFH
MOVA,P1
CJNEA,#0FFH,K00
AJMPQUIT
K00:
ACALLDELAY
MOVA,P1
CJNEA,#0FFH,K01
AJMPQUIT
K01:
MOVR3,#8
MOVR2,#0
MOVB,A;按键值暂存到B中
MOVDPTR,#K0TAB
K02:
MOVA,R2
MOVCA,@A+DPTR
CJNEA,B,K04
K03:
MOVA,P1
CJNEA,#0FFH,K03
ACALLDELAY
MOVTEMP,R2
QUIT:
RET
K04:
INCR2
DJNZR3,K02
LJMPMAIN
K0TAB:
DB0FEH,0FDH,0FBH,0F7H
DB0EFH,0DFH,0BFH,07FH
DISP:
MOVDPTR,#SEGTAB
MOVA,TEMP
MOVCA,@A+DPTR
MOVDBUF,A;查表取要显示内容的字段码
MOVDBUF+1,#80H;.的字段码
MOVDBUF+2,#06H;1的字段码
MOVDBUF+3,#73H;P的字段码
CLRP2.0
MOVP0,DBUF
ACALLDELAY
SETBP2.0
CLRP2.1
MOVP0,DBUF+1
ACALLDELAY
SETBP2.1
CLRP2.2
MOVP0,DBUF+2
ACALLDELAY
SETBP2.2
CLRP2.3
MOVP0,DBUF+3
ACALLDELAY
SETBP2.3
RET
SEGTAB:
DB3FH,06H,5BH,4FH,66H,6DH
DB7DH,07H,7FH,6FH,77H,7CH
DB58H,5EH,79H,71H,00H,40H
DELAY:
MOVR4,#02H
AA1:
MOVR5,#0F8H
AA:
NOP
NOP
DJNZR5,AA
DJNZR4,AA1
RET
END
2.流程图
五、思考题
怎样通过中断方式实现动态显示?
六、原理图
实验六DAC0832并行D/A转换实验
一、实验目的
1.掌握DAC0832应用电路的搭接
2.掌握D/A转换程序的编程方法和调试方法
二、实验说明
DAC0832是8位D/A转换器,它采用CMOS工艺制作,具有双缓冲器输入结构,其引脚排列如图所示,DAC0832各引脚功能说明:
DI0~DI7:
转换数据输入端。
CS:
片选信号输入端,低电平有效。
ILE:
数据锁存允许信号输入端,高电平有效。
WR1:
第一写信号输入端,低电平有效,
Xfer:
数据传送控制信号输入端,低电平有效。
WR2:
第二写信号输入端,低电平有效。
Iout1:
电流输出1端,当数据全为1时,输出电流最大;当数据全为0时,输出电流最小。
Iout2:
电流输出2端。
DAC0832具有:
Iout1+Iout2=常数的特性。
Rfb:
反馈电阻端。
Vref:
基准电压端,是外加的高精度电压源,它与芯片内的电阻网络相连接,该电压范围为:
-10V~+10V。
VCC和GND:
芯片的电源端和地端。
DAC0832内部有两个寄存器,而这两个寄存器的控制信号有五个,输入寄存器由ILE、CS、WR1控制,DAC寄存器由WR2、Xref控制,用软件指令控制这五个控制端可实现三种工作方式:
直通方式、单缓冲方式、双缓冲方式。
直通方式是将两个寄存器的五个控制端预先置为有效,两个寄存器都开通只要有数字信号输入就立即进入D/A转换。
单缓冲方式使DAC0832的两个输入寄存器中有一个处于直通方式,另一个处于受控方式,可以将WR2和Xfer相连在接到地上,并把WR1接到89C51的WR上,ILE接高电平,CS接高位地址或地址译码的输出端上。
双缓冲方式把DAC0832的输入寄存器和DAC寄存器都接成受控方式,这种方式可用于多路模拟量要求同时输出的情况下。
三种工作方式区别是:
直通方式不需要选通,直接D/A转换;单缓冲方式一次选通;双缓冲方式二次选通。
三、实验步骤
本实验用到单片机最小系统(F1区)和并行D/A转换实验(H10区)。
1.单片机最小应用系统的P0口JD4F接并行D/A转换实验的DI0~DI7口JD13H,单片机最小应用系统的P2.0、WR分别接并行D/A转换实验的CS-0832、WR。
用万用表测量“-Vref”端的电压,手动调节电位器RW1H,把-Vref电压调到-5V。
并行D/A转换实验的VOUT接示波器探头,示波器接地端接电源开关处的地端。
打开相关实验的电源开关。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着建立源程序,进行编译,直到编译无误。
4.编译无误后,全速运行程序,用示波器、万用表、直流电机等测量感受输出波形。
5.也可以把源程序编译成可执行文件,用ISP烧录器烧录到89S52/89S51芯片中。
四、参考程序
DAC0832EQU0FEFFH
ORG0000H
LJMPSTART
ORG0100H
START:
movdptr,#DAC0832
mova,#0H
loop:
movx@dptr,a
acalldelay
inca
sjmpLOOP
DELAY:
movr6,#25
aa:
movr7,#200
djnzr7,$
djnzr6,aa
RET
END
五、思考题
1.分析程序画出输出波形
2.硬件电路不改动的情况下,请编程实现输出波形为三角波。
六、电路图
实验七ADC0809并行A/D转换实验
一、实验目的
1.掌握ADC0809模/数转换芯片与单片机的连接方法及ADC0809的典型应用
2.掌握用查询方式、中断方式完成模/数转换程序的编写方法
二、实验说明
本实验使用ADC0809模数转换器,ADC0809是8通道8位CMOS逐次逼近式A/D转换芯片,片内有模拟量通道选择开关及相应的通道锁存、译码电路,A/D转换后的数据由三态锁存器输出,由于片内没有时钟需外接时钟信号。
下图为该芯片的引脚图。
各引脚功能如下:
IN0~IN7:
八路模拟信号输入端。
ADD-A、ADD-B、ADD-C:
三位地址码输入端。
八路模拟信号转换选择由这三个端口控制。
CLOCK:
外部时钟输入端(小于1MHz)。
D0~D7:
数字量输出端。
OE:
A/D转换结果输出允许控制端。
当OE为高电平时,允许A/D转换结果从D0~D7端输出。
ALE:
地址锁存允许信号输入端。
八路模拟通道地址由A、B、C输入,在ALE信号有效时将该八路地址锁存。
START:
启动A/D转换信号输入端。
当START端输入一个正脉冲时,将进行A/D转换。
EOC:
A/D转换结束信号输出端。
当A/D转换结束后,EOC输出高电平。
Vref(+)、Vref(-):
正负基准电压输入端。
基准正电压的典型值为+5V。
VCC和GND:
芯片的电源端和地端。
三、实验步骤
本实验需要用到单片机最小系统(F1区)、串行静态显示(I3区)、可调电源模块(A2区)和并行A/D转换(H9区)。
1.单片机最小应用系统的P0口JD4F接A/D转换的D0~D7口JD10H,单片机最小应用系统的Q0~Q7口JD7F接0809的A0~A7口JD11H,单片机最小应用系统的WR、RD、P2.0、ALE、INT1分别接A/D转换的WR、RD、CS-0809、CLK、EOC。
A/D转换的+Vref接+5V电源,AIN0接可调电源模块A2区的输出端(AIN0也可在程序运行之后接),单片机最小应用系统的RXD、TXD分别接串行静态显示的DIN、CLK。
打开单片机最小应用系统、并行A/D转换的电源开关。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着建立源程序,进行编译,直到编译无误。
4.编译无误后,全速运行程序,8LED静态显示“ADXX”,“XX”为AD转换后的值,调节模拟信号输入端的电位器旋钮,显示值随着变化,顺时针旋转值增大,AD转换值的范围是00~FF。
5.也可以把源程序编译成可执行文件,用ISP烧录器烧录到89S52/89S51芯片中。
(ISP烧录器的使用查看附录二)
四、流程图及参考程序
1.流程图
2.参考程序
;单片机最小应用系统1的P0口接0809的JD15口,
;单片机最小应用系统1的Q0口接0809的JD16,
;单片机最小应用系统1的ALE、P2.0、P3.3、P3.6、P3.7分别
;接0809的clk0809、cs-0809、EOC、WR、RD,
;0809的模拟信号输入口AIN0接入0~5V可调电压,+VREF接+5V
;P3.0,P3.1连接到串行静态显示实验模块的DIN、