单片机实验指导书Word文档格式.docx
《单片机实验指导书Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书Word文档格式.docx(43页珍藏版)》请在冰点文库上搜索。
ORG0030H
START:
mova,#0FEh
movr2,#8
Output:
movP1,a
rla
AcallDelay
djnzr2,Output
LjmpSTART
Delay:
movr6,#0
movr7,#0
DelayLoop:
;
延时程序
djnzr6,DelayLoop
djnzr7,DelayLoop
ret
end
(二)实验二
KeyLeftBITP1.0;
定义
KeyRightBITP1.1
LedleftBITP1.2
LedRightBITP1.3
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、学习I/O端口的使用方法
2、掌握继电器的控制的基本方法
3、了解用弱电控制强电的方法
现代自动控制设备中,都存在一个电子电路的互相连接问题,一方面要使电子电路的控制信号能控制电气电路的执行元件(电动机,电磁铁,电灯等),另一方面又要为电子线路和电气电路提供良好的电气隔离,以保护电子电路和人身的安全。
继电器便能完成这一任务。
继电器电路中一般都要在继电器的线圈两头加一个二极管以吸收继电器线圈断电时产生的反电势。
本电路的控制端为高电平时,继电器常开触点吸合,同时LED灯被点亮。
当控制端为低电平时,继电器不工作。
用P1.0作为控制输出口,接继电器电路,使继电器重复吸合与断开。
1、使用单片机最小应用系统1模块,用导线连接P1.0端口到继电器与温度控制部件模块的控制口。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加继电器.ASM源程序,进行编译,直到编译无误。
5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管亮灭情况和听继电器开合的声音,继电器重复延时吸合与延时断开。
四、流程图及源程序
源程序清单:
OutputBITP1.0;
P1.0输出
clrOutput;
断开
callDelay
setbOutput;
吸合
ljmpSTART
movr7,#0
DLoop:
djnzr7,DLoop
djnzr6,DLoop
试用单片机的其他输入输出口控制继电器。
音频控制实验
1.学习输入/输出端口控制方法
2.了解音频发声原理
二、实验仪器
实验箱计算机
P1.0输出音频信号接音频驱动电路,使扬声器周期性的发声。
1、使用单片机最小应用系统1模块,用导线将P1.0接到音频驱动电路输入端。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加音频.ASM源程序,进行编译,直到编译无误。
5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,扬声器周期性的发出单频声音。
1.源程序
OUTPUTBITP1.0;
P1.0端口
CLRC
MOVOUTPUT,C
LCALLDELAY
SETBC
AJMPSTART
DELAY:
MOVR5,#4
D1:
MOVR6,#20
D2:
MOVR7,#123
NOP
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
思考题:
如何改变音调的高低?
实验四程序设计
(2)
1、掌握单片机仿真及简单程序设计与调试方法。
2、掌握KEILC环境中查看指令操作结果的技巧。
计算机
三、实验步骤
1、在对工程成功地进行汇编、连接以后,按Ctrl+F5或者使用菜单Debug->
Start/StopDebugSession即可进入调试状态,单步调试,全速运行两种模式下调试。
2、在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单Debug->
Insert/RemoveBreakPoint设置或移除断点(也可以用鼠标在该行双击实现同样的功能);
Debug->
Enable/Disable
Breakpoint
是开启或暂停光标所在行的断点功能;
Debug->
DisableAllBreakpoint暂停所有断点;
KillAllBreakPoint清除所有的断点设置。
这些功能也可以用工具条上的快捷按钮进行设置。
3建立一个工程添加以下程序:
(1)汇编、连接生成可执行文件。
利用单步,执行到断点处两种方法执行程序。
(2)观察结果、分析程序、说明功能。
实验分析:
设计小程序,观察以下几组指令并分析其操作结果。
ADDADDC
XCHXCHD
ANLORL
LJMPMAIN
ORG0040H
MAIN:
MOVA,#0FEH
LOOP:
MOVP1,A
LCALLD_1s
RLA
AJMPMAIN
D_1s:
MOVR6,#100;
1
D10ms:
MOVR5,#40;
DL:
MOVR4,#123;
NOP;
DJNZR4,$;
2*123
DJNZR5,DL;
2
DJNZR6,D10ms;
MOVR2,#32H
MOVA,R2
SWAPA
ANLA,#0FH
MOVB,#0AH
MULAB
实验五5LED静态串行显示实验
1、掌握数字、字符转换成显示段码的软件译码方法
2、静态显示的原理和相关程序的编写
二、实验电路
1、静态显示,电路图中所示。
显示器由5个共阴极数码管组成。
输入只有两个信号,它们是串行数据线DIN和移位信号CLK。
5个串/并移位寄存器芯片74LS164首尾相连。
每片的并行输出作为LED数码管的段码。
74LS164的引脚图如图所示;
74LS164为8位串入并出移位寄存器,1、2为串行输入端,Q0~Q7为并行输出端,CLK为移位时钟脉冲,上升沿移入一位;
MR为清零端,低电平时并行输出为零。
单片机的P1.0作数据串行输出,P1.1作移位脉冲输出,当然用户也可以用其他I/O口。
1、使用单片机最小应用系统1模块,用导线连接P1.0、P1.1到串行静态显示模块的DIN、CLK端。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加串行显示.ASM源程序,进行编译,直到编译无误。
5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。
5LED显示“80C51”。
停止程序运行,显示不变,说明静态显示模块具有数据锁存功能。
1、流程图
2、源程序
DBUF0EQU30H;
置存储区首址
TEMPEQU40H;
置缓冲区首址
DINBITP1.0;
置串行输出口
CLKBITP1.1;
置时钟输出口
ORG0000H
START:
MOV30H,#8;
存入显示数据
MOV31H,#9
MOV32H,#C
MOV33H,#5
MOV34H,#1
DISP:
MOVR0,#DBUF0
MOVR1,#TEMP
MOVR2,#5
DP10:
MOVDPTR,#SEGTAB;
表头地址
MOVA,@R0
MOVCA,@A+DPTR;
查表指令
MOV@R1,A
INCR0
INCR1
DJNZR2,DP10
MOVR0,#TEMP;
段码地址指针
MOVR1,#5;
段码字节数
DP12:
MOVR2,#8;
输出子程序
MOVA,@R0;
取段码
DP13:
RLCA;
段码左移
MOVDIN,C;
输出一位段码
CLRCLK;
发送移位脉冲一位
SETBCLK
DJNZR2,DP13
DJNZR1,DP12
SJMP$
SEGTAB:
DB3FH,06H,5BH,4FH,66H,6DH;
0,1,2,3,4,5
DB7DH,07H,7FH,6FH,77H,7CH;
6,7,8,9,A,b
DB58H,5EH,7BH,71H,00H,40H;
C,d,E,F,,-
MOVR4,#03H;
延时子程序
AA1:
MOVR5,#0FFH
AA:
DJNZR5,AA
DJNZR4,AA1
五、电路图
实验六6LED动态扫描显示实验
2、动态显示的原理和相关程序的编写
动态显示,也称扫描显示。
显示器由6个共阴极LED数码管构成。
单片机的P0口输出显示段码,经由一片74LS245驱动输出给LED管,由PB口输出位码,经由74LS06输出给LED管。
单片机P0输出段码,P1口输出位控码,输出6个字符。
1、单片机最小应用系统1的P0口接段码口a~h,P1口接位码口S1~S6。
3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加扫描显示.ASM源程序,进行编译,直到编译无误。
6LED显示“168168”。
程序停止运行后,显示随之变化,说明运态扫描显示模块不具有数据锁存的功能。
1、源程序
DBUFEQU30H;
MOV30H,#1;
存入数据
MOV31H,#6
MOV32H,#8
MOV33H,#1
MOV34H,#6
MOV35H,#8
MOVR0,#DBUF
MOVR2,#6;
6位显示器
置段码表首址
DP00:
将段码存入缓冲区
查表取段码
MOV@R1,A;
存入暂存器
DJNZR2,DP00
DISP0:
MOVR0,#TEMP;
显示子程序
MOVR1,#6;
扫描8次
MOVR2,#01H;
决定数据动态显示方向
DP01:
MOVA,@R0
MOVP0,A;
段码输出
MOVA,R2;
取位码
CPLA;
低电平驱动
MOVP1,A;
位码输出
ACALLDELAY;
调用延时
MOVA,R2
MOVR2,A
DJNZR1,DP01
SJMPDISP0
MOVR4,#03H
DJNZR5,A
END
2、流程图
1、如何修改程序,实现六位LED数码管只显示其中的两位?
实验七查询式键盘实验
1、掌握键盘和显示器的接口方法和编程方法
2、掌握键盘和八段码显示器的工作原理
3、静态显示的原理和相关程序的编写
二、实验说明
本实验提供了8个按钮的小键盘,可接到单片机的并行口,如果有键按下,则相应输出为低,否则输出为高。
单片机通过识别,判断按下什么键。
有键按下后,要有一定的延时,防止由于键盘抖动而引起误操作。
三、实验步骤及内容
1、用一根扁平数据插头线连接查询式键盘实验模块与八位逻辑电平显示模块,无键按下时,键盘输出全为“1”发光二极管全部熄灭,有键按下,对应发光二极管点亮。
此种电路的程序要判断是否有2个或2个以上的键盘同时按下,以免键盘分析错误。
阵列式键盘的编程同样也有这样的问题要注意。
2、一根扁平8线插头连接查询式键盘实验模块与扫描显示实验模块。
无键按下时,LED数码显示八段全部熄灭,有键按下时,则对应LED段点亮。
3、使用静态串行显示模块显示键值。
单片机最小应用系统1的P1口接查询式键盘输出口。
P3.6接静态数码显示DIN,P3.7接CLK。
4、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
5、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加查询KEY.ASM源程序,进行编译,直到编译无误。
6、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
7、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。
在键盘上按下某个键,观察数显是否与按键值一致,键值从左至右为0~7。
五、流程图及源程序
1、流程图
DBUFEQU30H
TEMPEQU40H
DINBITP3.6
CLKBITP3.7
MOV30H,#16
MAIN:
ACALLDISP
ACALLKEY0
KEY:
MOVP1,#0FFH;
输入前,锁存器置“1”
MOVA,P1;
读取键盘状况
CJNEA,#0FFH,K00;
有键按下
AJMPKEY;
无键按下
K00:
延时去抖动
MOVA,P1
CJNEA,#0FFH,K01;
确有键按下
AJMPKEY
K01:
MOVR3,#8;
8个键
MOVR2,#0;
键码
MOVB,A;
暂存键值
MOVDPTR,#K0TAB
K02:
MOVA,R2
MOVCA,@A+DPTR;
从键值表中取键值
CJNEA,B,K04;
键值比较
K03:
相等
CJNEA#0FFH,K03;
等键释放
MOVA,R2;
得键码
K04:
INCR2;
不相等,到继续访问键值表
DJNZR3,K02
MOVA,#0FFH;
键值不在键值中,即多键同时按下
K0TAB:
DB0FEH,0FDH,0FBH,0F7H;
键值表
DB0EFH,0DFH,0BFH,07FH
MOVDBUF,A
MOVDBUF+1,#16
MOVDBUF+2,#16
MOVDBUF+3,#16
MOVDBUF+4,#16
MOVR0,#DBUF
MOVR2,#5
DP10:
MOVDPTR,#SEGTAB
MOVCA,@A+DPTR
MOVR0,#TEMP
MOVR1,#5
DP12:
MOVR2,#8
DP13:
RLCA
MOVDIN,C
CLRCLK
SETBCLK
DJNZR2,DP13
DB3FH,06H,5BH,4FH,66H,6DH;
DB58H,5EH,79H,71H,00H,40H;
MOVR4,#02H
MOVR5,#0F8H
DJNZR5,AA
DJNZR4,AA1
1、程序如何确保每按一次键,只处理一次。
六、原理图
实验八阵列式键盘实验
2、掌握阵列式键盘的硬件组成和软件编程方法
本实验提供了一个4X4小建盘,向P0口的低四位逐个输出低电平,如果有键盘按下,则相应输出为低,如果没有键按下,则输出为高。
通过输出的列码和读取的行码来判断按下什么键。
1、用一根8位数据线连接阵列式键盘实验模块与LED与单片机接口模块。
无键按下或有键按下,发光二极管全亮。
若将A1-A4接地,则发光二极管显示0000XXXX;
B1线上有键按下,则发光二极管显示0000XXX,B2线上有键按下,则发光二极管现世0000X0XX,B1和B2均有键按下,则发光二极管显示000000XX……同样可将B1与B4接地,按键与发光二极管显示情况,用户可以自行判断,自由操作。
2、用一根8位数据线连接阵列式键盘实验模块与扫描显示实验模块。
无键按下或有键按下,八段LED全亮。
用户参照1,观察键盘与八段LED亮熄的关系。
单片机最小应用系统1的P1口接阵列式键盘的A1~B4口,P3.6接静态数码显示DIN,P3.7接CLK。
5、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加阵列KEY.ASM源程序,进行编译,直到编译无误。
在键盘上按下某个键,观察数显是否与按键值一致。
16位建盘的键值从左至右、从上至下依次为0~F(16进制数)。
2、源程序
DBUFEQU30H
MOVA,#16
MOV30H,A
ACALLKEY1
KEY1:
MOV