单片机实验指导书A.docx
《单片机实验指导书A.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书A.docx(50页珍藏版)》请在冰豆网上搜索。
单片机实验指导书A
实验一I/O口控制实验
一、实验目的
1、学习P1口的使用方法
2、学习延时子程序的编写和使用
二、实验说明
P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。
三、实验内容及步骤
实验
(一):
用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
1、使用单片机最小应用系统。
关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块JD10。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“P1口输出.ASM”源程序,进行编译,直到编译无误。
4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
实验
(二):
用P1.0、P1.1作输入接两个拨断开关,P1.2、P1.3作输出接两个发光二极管。
程序读取开关状态,并在发光二极管上显示出来。
1、用导线分别连接单片机最小应用系统的P1.0、P1.1到两个拨断开关,P1.2、P1.3到两个发光二极管。
2、打开“P1_B.ASM”源程序,编译无误后,全速运行程序,拨动拨断开关,观察发光二极管的亮灭情况。
向上拨为点亮,向下拨为熄灭。
3、也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
(ISP烧录器的使用查看附录二)
注:
在做完实验时记得养成一个好习惯:
把相应单元的短路帽和电源开关还原到原来的位置!
以下将不在重诉。
四、流程图及源程序
1.流程图
(B)P1口输入输出程序框图
(A)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晶振,粗略计算此程序的执行时间为多少?
六、电路图
实验二定时器输出PWM实验
一、实验目的
1、了解脉宽调制(PWM)的原理
2、学习用PWM输出模拟量
3、熟悉51系列单片机的延时程序
二、实验说明
PWM是单片机上常用的模拟量输出方法,通过外接的转换电路,可以将脉冲的占空比变成电压。
程序中通过调整占空比来调节输出模拟电压。
占空比是制脉冲中高电平与低电平的宽度比。
三、实验内容及步骤
P1.0输出PWM信号接转换电路,转换电压值送数字电压表显示。
1、选用89C51最小应用系统模块,用导线将P1.0接到PWM转换电压输入端,电压输出接电压表“+”端,电压表“-”端接地。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“PWM.ASM”源程序,进行编译,直到编译无误。
4、全速运行程序,观察电压表显示值,并做记录,程序默认是占空比5:
5的PWM。
修改源程序LOOP程序段两次给累加器A的赋值,改为①“MOVA,#1”②“MOVA,#9”,重新编译后运行,记录电压表显示值,这是占空比1:
9的PWM。
同样,用户可做占空比9:
1的PWM,并做记录。
比较三种PWM信号转换电压的大小,与理论值相比较。
5、也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
(ISP烧录器的使用查看附录二)
四、流程图及源程序
1.源程序清单:
;输出50%(5:
5)占空比PWM
;输出10%(1:
9)占空比PWM
;输出90%(9:
1)占空比PWM
ORG20H
OUTPUTBITP1.0
LOOP:
CLROUTPUT
MOVA,#5
CALLDELAY
SERBOUTPUT
MOVA,#5
CALLDELAY
LJMPLOOP
DELAY:
MOVR0,#0
DLOOP:
DJNZR0,DLOOP
DJNZACC,DLOOP
RET
END
2.流程图
高电平延时
五、思考题
1、分析PWM转换电路的原理。
2、改变延时子程序R0的值,观察转换电压如何改变。
六、实验电路图
实验三蜂鸣器驱动实验
一、实验目的
1、学习输入/输出端口控制方法
2、了解音频发声原理
二、实验说明
本实验是利用89C51端口定时器输出控制端口,驱动扬声器发声,声音的频率高低由延时快慢控制。
本实验是利用单片机唱歌的声音控制程序,请用户思考如何修改程序,可以让蜂鸣器发出不同频率,不同长短的声音。
三、实验内容及步骤
INT1输出音频信号接音频驱动电路,使蜂鸣器的发声。
1、使用单片机最小应用系统和蜂鸣器模块。
蜂鸣器模块的短路帽J1插到VCC方向,用导线将INT1接到蜂鸣器输入端。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“MUSIC.ASM”源程序,进行编译,直到编译无误。
4、全速运行程序,扬声器周期性的发出“八月桂花”开声音。
(添加“MUSIC1.ASM”程序为“祝你平安”歌曲)
5、也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
(ISP烧录器的使用查看附录二)
延时
四、流程图及源程序
五、电路图
实验四电子琴模拟实验
一、实验目的
1、了解单片机系统发声原理
2、进一步熟悉定时器编程方法
二、实验说明
1、利用定时器,可以发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调。
2、定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平。
由于定时参数不同,就发出了不同频率的脉冲。
本实验中当有键按下,会发出连续脉冲,直到按键松开,才停止发音。
发完后继续检测键盘,如果键还按下,继续发音。
各音阶标称频率值:
音阶
1
2
3
4
5
6
7
频率(HZ)
261.1
293.7
329.6
349.2
392.0
440.0
493.9
三、实验内容及步骤
利用实验仪上提供的键盘,使数字键1、2、3、4、5、6、7作为电子琴按键,按下即发出相应的音调。
用P3.2口发出音频脉冲,驱动喇叭。
1、单片机最小应用系统的P1口接查询式键盘,单片机INT0口接扬声器的SP+,SP-接GND,扬声器的J19打在23处,P1口接查询式键盘的JD3口
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“电子琴.ASM”源程序,进行编译,直到编译无误。
4、全速运行程序,按查询式键盘的1~7键,扬声器发出高低不同的声音。
5、也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
(ISP烧录器的使用查看附录二)
四、流程图及源程序
1.流程图
关闭定时
停止发声
中断返回
定时中断程序框图
2.源程序:
PulseBIT10h;脉冲
ToneHighequ30h;高音调
ToneLowequ31h;低音调
Toneequ32h;音调
Speaker BIT P3.2
ljmpStart
org000bh
Timer0Int:
;定时中断
pushPSW
clrTR0
movTH0,ToneHigh
movTL0,ToneLow
setbTR0
movC,Pulse
movSpeaker,C
CPLPulse
popPSW
reti
ToneTable:
dw64578,64686,64778,64821
DW64898,64968,65029
TestKey:
MOVP1,#0FFH
MOVA,P1;读入键状态
ret
KeyTable:
DB0FEH,0FDH,0FBH,0F7H;键值表
DB0EFH,0DFH,0BFH,07FH
GetKey:
MOVR6,#10
ACALLDELAY
MOVA,P1
CJNEA,#0FFH,K01;确有键按下
LJMPMLOOP
K01:
MOVR3,#8;8个键
MOVR2,#0;键码
MOVB,A;暂存键值
MOVDPTR,#K0TAB
K02:
MOVA,R2
MOVCA,@A+DPTR;从键值表中取键值
CJNEA,B,K04;键值比较
MOVA,R2;得键码
RET
K04:
INCR2;不相等,到继续访问键值表
MOVA,#0FFH;键值不在键值中,即多键同时按下
LJMPMLOOP
Delay:
;延时子程序
movr7,#0
DelayLoop:
djnzr7,DelayLoop
djnzr6,Delay
ret
Start:
movsp,#70h
movTMOD,#01;Timer
movIE,#82h;EA=1,IT0=1
movTone,#0
MLoop:
callTestKey
jzMLoop
callGetKey
movb,a
jzMLoop;=0,<1
anla,#8
jnzMLoop;>7
decb
mova,b
rla;a=a*2
movb,a
movdptr,#ToneTable
movca,@a+dptr
movToneHigh,a
movTH0,a
mova,b
inca
movca,@a+dptr
movToneLow,a
movTL0,a
setbTR0
movP1,#OFFH
Wait:
mova,P1
CJNEA,#OFFH,WAIT
MOVR6,#10
ACALLDELAY
clrTR0
ljmpMLoop
end
五、思考题
1、请思考实验是怎样在硬件与软件上实现发声的?
2、本程序中断子程序的调用是怎样进行的?
六、电路图
实验五74LS164串转并实验
一、实验目的
1、掌握89C51串行口方式0工作方式及编程方法;
2、掌握89C51的P1口的I/O功能输出;
3、掌握利用串行口入I/O口,扩展I/O通道的方法。
二、实验说明
本实验是用74LS164把输入的串行数转换成并行数输出,74LS164为串行输入并行输出移位寄存器,其引脚图及功能如下:
A、B:
串行输入端;
Q0~Q7:
并行输出端;
MR:
清零端,低电平有效;
CLK:
时钟脉冲输入端,上升沿有效。
实验采用单片机串行工作方式0和P1端口两种方式串行输出数据。
串行口工作方式0时,数据为8位,从RXD端输出,TXD端输出移位信号,其波特率固定为Fosc/12。
在CPU将数据写入SBUF寄存器后,立即启动发送。
待8位数据输完后,硬件将状态寄存器的TI位置1,TI必须由软件清零。
串行口工作方式0数据/时钟是自动移位输出,用P1端口输出数据时,要编程位移数据,每输出一个数据位,再输出一个移位脉冲。
三、实验内容及步骤
1、选用89C51单片机最小应用系统模块,用八位数据线把74LS164的并行输出口JD1与八位逻辑电平显示的输入口JD10连接,将74LS164的串行输入端A/B(1和2脚)接到RXD上,CLK接到TXD上,CLR接INT0。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“74164.ASM”源程序,进行编译,直到编译无误。
4、全速运行程序,观察发光二极管亮灭情况,先右移动两次,再左移动两次,然后闪烁两次。
5、也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
(ISP烧录器的使用查看附录二)
四、实验程序(光盘中附带)
五、电路图
实验六74LS165并转串实验
一、实验目的
1、掌握89C51串行口方式0工作方式及编程方法
2、掌握用89C51的P1口的I/O功能,读入串行数据
3、掌握利用串行口及I/O口,扩展I/O通道的方法
二、实验说明
这个实验主要是用74LS165把输入的并行数据转换成串行数据,74LS165为8位移位寄存器,其引脚图如图所示,引脚功能如下:
PL:
移位/置数端,低电平有效。
P0~P7:
并行数据输入端。
Q7、Q7:
串行数据输出端。
CLK1、CKL2:
时钟信号输入端。
SER:
串行输出端。
实验采用单片机串行工作方式0和P1口两种方式串行读入数据。
串行口工作在方式0时,可通过外接移位寄存器实现串并行转换。
在这种方式下,数据为8位,从RXD端输入,TXD端输出移位同步时钟信号,其波特率固定为晶振频率Fosc/12。
由软件置位串行控制寄存器的允许接收位(REN)后,才启动串行接收。
待8位数据收完后,硬件将状态寄存器的RI位置1,RI必须由软件清零。
用串行口工作方式0读入数据,是自动移位完成的,用P1端口串行读入数据时,要编程输出时钟信号,移位读入数据。
三、实验步骤
用串口方式0读入开关的值,P0口接8位发光二极管,显示读入值。
1、将最小系统的P0口与八位逻辑电平显示JD10连接,用导线将74LS165串行输出端SH/LD接到P1.0上,CLK接到P1.1上,Q7接到P1.2上,JD2与八位逻辑电平输出口JD4相连。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“74165.ASM”源程序,进行编译,直到编译无误。
4、全速运行程序。
观察发光二极管的显示,是否与拨动开关的值相对应,改变拨动开关的值,显示随之变化。
5、也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中。
(ISP烧录器的使用查看附录二)
四、程序(光盘中附带)
五、电路图
实验七74HC138译码器实验
一、实验目的
掌握74138电路的基本知识及由软件编译的译码器控制方式
二、实验步骤
由软件控制138译码器的工作方式,可以改变A,B,C的端口而改变其译码输出JD6口接8位发光二极管JD10,显示译码输出值。
1、最小系统的P1口接74LS138上的JD5口,而JD6口接到八位逻辑显示JD10,A,B,C接八位逻辑电平输出的K2,K1,K0。
(K2为低位,K0为高位,如要选择Y1,则K2、K1、K0对应的值为001)
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“74138.ASM”源程序,进行编译,直到编译无误
4、编译无误后,全速运行程序。
改变K0,K1,K2的状态观察发光二极管的显示,是否与控制端口的对应。
5、也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中。
(ISP烧录器的使用查看附录二)
三、程序
ORG0000H
LJMPMAIN
ORG1000H
MAIN:
MOVSP,#60h
MOVR4,#0
DJNZR4,$
;设置138译码器的使能
CLRP1.5
CLRP1.4
SETBP1.3
;138译码器数据输入
CLRP1.0;对应138的A可以改变相应状态的值而改变138译码器的输出
CLRP1.1;对应138的B
SETBP1.2;对应138的C
SJMP$
END
实验八看门狗实验
一、实验目的
1、掌握“看门狗”(MAX813L)复位控制的硬件接口技术
2、掌握“看门狗”(MAX813L)复位控制驱动程序的设计方法
二、实验说明
为了控制系统不受外界干扰而出现死机现象,可采用MAX813L复位监控芯片,该芯片具备复位及监视跟踪两大功能。
主要功能:
·精密电源电压、监控4.65V·200ms复位脉冲宽度·V1=1V时保证复位RESET有效。
·TTL/CMOS兼容的防抖动人工复位输入·独立的监视跟踪定时器1.6S溢出时间。
·电源故障或欠电压报警的电压监控
·加电,掉电有电压降低时输出复位信号。
·低电平有效的人工复位输入。
各引脚的功能和意义如图:
(1)MR:
人工复位输入、当输入降至0.8V时产生复位脉冲,低电平有效的输入可用开关短路到地或TTL/CMOS逻辑驱动,不用时浮空。
(2)Vcc:
+5V输入。
(3)GND:
地。
(4)PFI:
电源故障比较器输入,高PFI低于1.25V时PFO输出低电平吸收电流;否则PFO输出保持高电平,如果不用将PFI接地或Vcc。
(5)PFO:
电源故障比较器输出,高PFI低于1.25V时,输出低电平且吸收电流;否则PFO输出保持高电平。
(6)WDI:
监视跟踪定时器输入,WDI保持高或低电平时间长达1.6S,WDI输出低电平,WDI浮空或接高阻三态门将禁止监控跟踪定时器功能,只要发生复位,内部监视跟踪定时的清零。
(7)RESET:
复位输出(低电平有效)。
(8)WDO:
监视跟踪定时器输出,当内部监视跟踪定时器完成1.6S计数后,本脚输出低电平,直到下一次监视跟踪定时器清零,才再变为高电平,在低电源或Vcc低于复位门限电压时,WDO就保持低电平,只要Vcc上升到复位门跟电压以上后WDO就变为高电平而没有滞后。
三、实验内容及步骤
利用MAX813L实现单片机上电自动复位,手动复位,“看门狗”自动检测。
对于上电复位和手动复位在电源打开,或者按实验装置的复位按钮就可以实现。
1、单片机最小应用系统的P1.0接看门狗的WDI,看门狗的RESET接八位逻辑电平显示的L0,PF0、WD0悬空。
可观察到LED延时1.6s闪烁。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“看门狗.ASM”源程序,进行编译,直到编译无误。
4、编译无误后,运行程序。
改变延时程序然后观察LED的变化,要求在1.6s以内,P1.0的信号要变化一次,否则单片机会自动复位。
5、也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
(ISP烧录器的使用查看附录二)
四、源程序
ORG0000H
START:
CALLWDOG
CALLDELAY
LJMPSTART
WDOG:
SETBP1.0;复位看门狗
NOP
NOP
NOP
NOP
CLRP1.0
RET
DELAY:
MOVR4,#02H;此处改延时程序,看灯的变化情况。
AA:
MOVR5,#0FFH
AA1:
MOVR6,#0FFH
AA2:
NOP
DJNZR6,AA2
DJNZR5,AA1
DJNZR4,AA
RET
END
注意:
DELAY子程序可以自己定义,观察DELAY延时时间小于或者大于1.6秒单片机的复位的变化。
五、思考题
试在任何具体的应用程序中插入”看门狗”的应用。
实验九查询式键盘实验
一、实验目的
掌握查询式键盘的接口和编程方法。
二、实验内容
本实验提供了8个按键的小键盘,如果有键按下,则相应输出为低电平,否则输出为高电平。
MCU判断有键按下后,要有一定的延时,防止由于键盘抖动而引起误操作。
编写一个程序,能读出键盘操作的编号,并在数码显示器上显示。
三、实验电路
本实验所需电路请参见系统原理图的第一部分和独立式键盘电路。
四、实验程序参考框图
(a)主程序框图
(b)键盘扫描子程序框图
五、实验步骤
1、把7279阵列式键盘的J9四只短路帽打在上方,J10打在VCC处,用8P排线将JD7和八位动态数码显示的JD11相连,JD8和JD12相连,查询式键盘的JD3和最小系统的P1口相连。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“查询式键盘.ASM”源程序,进行编译,直到编译无误。
4、全速运行,键盘上按下某个键,观察数显是否与该键号一致,键号从左至右为0~7。
5、也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
(ISP烧录器的使用查看附录二)
六、思考题
1、程序如何确保每按一次键,只处理一次。
七、原理图
实验十7279阵列式键盘实验
一、实验目的
1、掌握八段数码管硬件线路原理,掌握用HD7279A芯片实现显示的编程方法。
2、熟悉键盘的工作原理,掌握用HD7279A芯片实现键盘扫描程序设计方法。
二、实验内容
HD7279A是一片具有串行接口的,可同时驱动8位共阴极数码管(或64只独立LE