《机电专业综合实验》实验指导书1214.docx
- 文档编号:30129530
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:47
- 大小:35.87KB
《机电专业综合实验》实验指导书1214.docx
《《机电专业综合实验》实验指导书1214.docx》由会员分享,可在线阅读,更多相关《《机电专业综合实验》实验指导书1214.docx(47页珍藏版)》请在冰豆网上搜索。
《机电专业综合实验》实验指导书1214
《机电专业综合实验》
实验指导书
大连交通大学机械工程学院
机械电子工程教学与研究中心
2009年9月
序言
《机电专业综合实验》是为提高学生的实际动手能力而开设的专业实验课。
本实验课以《单片机原理与接口技术》、《计算机控制技术》2门课为理论基础,以“mini51单片机实验板”为硬件基础,结合典型接口应用实例,进行微机接口技术的实际操作训练。
所用软件说明:
汇编语言编译仿真软件“WAVE6000”,单片机程序下载软件“STC_ISP”,均为绿色软件。
但实验板上的USB转RS232接口电路需要先安装驱动程序,下载软件“STC_ISP”才能正常工作。
实验1:
mini51单片机实验板的使用
一、实验目的
学习mini51单片机实验板的使用,对实验板的结构、组成及工作原理有基本的认识。
通过最基本的实验,掌握实验板的程序下载与实验方法。
二、实验要求
1、了解mini51单片机实验板的基本功能。
2、学习单片机仿真软件的使用方法。
3、掌握汇编指令的输入与编辑方法,并能仿真运行。
4、将编译后的代码下载到mini51单片机实验板中,运行并观察结果。
5、学习最基本的程序调试方法。
三、实验内容
1.1、学习WAVE单片机仿真程序的使用:
了解其基本功能,学习汇编程序的输入、编辑,熟悉各窗口界面的基本功能。
操作指导:
运行WAVE.exe单片机仿真程序,先观察与熟悉操作界面,特别注意:
DATA窗口为单片机内存数据窗口,REG、SFR、BIT等窗口分别显示寄存器、特殊功能寄存器、位地址数据等信息,中间部分是输入与编辑指令的窗口。
特别提示:
按“窗口(W)→CPU窗口”可以打开反汇编(Disassembly)窗口,显示程序反汇编数据与程序代码的对应关系。
1.1.2、仿真程序实例“数据传送编程”编程与仿真运行:
将0、1、2、……等数据依次送入30H、31H、……3FH内。
1.1.3程序输入与编辑:
新建一个文件,输入能实现上述要求的程序。
典型程序如下:
PG11:
MOVR2,#16;送循环次数
MOVA,#0;送数据初值
MOVR0,#30H;送起始地址
X:
MOV@R0,A;送数据
INCR0;改地址指针
INCA;改数据
DJNZR2,X;判断循环次数
AJMP$;原地循环,防止程序往下执行到乱码区
输入技巧:
以第一行程序为例,进入英文输入状态,选择大写输入,输入“PG11:
”之后,按一下“Tab”键,光标会右移到第8格的位置,输入“MOV”,再按一次“Tab”键,再输入“R3,#16”,再按一次“Tab”键,再输入“;送循环次数”。
这样程序会很整齐。
特别注意:
分号(包括分号本身)之前的字符,必须是半角英文字符。
回车之后,要先按一下“Tab”键,再输入第2行。
输入程序之后,先要保存文件(文件名不准超过8个英文字符或4个汉字,必须加扩展名.asm),统一命名为PG11.ASM。
之后,即可按“编译”进行编译,如果有错误,会有提示。
双击错误提示处,可以直接定位到程序错误之处,进行修改。
如果无误,则编译通过,也会有提示。
1.1.4查看程序编译代码:
打开Disassembly窗口,查看程序反汇编数据与代码的对应关系。
1.1.5运行程序与查看结果:
编译通过后,按全速执行按钮►,即可执行程序。
由于程序的最后一条为原地循环指令,不会自行停止,必须按暂停按钮■,才能停止。
接着可以查看内存单元30H~3FH内的数据。
1.1.6程序单步执行与断点执行:
先将内存单元30H~3FH内的数据全部清零,或全部改为FFH。
方法是:
点击要改的数据,用键盘输入即可。
按复位|◄,使程序复位。
按F8即可单步执行程序。
每执行一条指令,可立即察看执行结果。
要分别察看累加器A、状态寄存器PSW、寄存器R0、R3,以及相应内存单元的数据变化,了解每一条程序所作的工作。
注意:
执行一步,如果数据有变化,数据会变为红色的。
如果要迅速查看每个循环后的执行结果,可以在“DJNZR3,X”这条指令上设置一个断点。
方法是:
点击此条指令的左侧的灰色竖条,成功后,此条指令的背景色变为红色。
此后,可以用全速执行方式执行程序,执行到“DJNZR3,X”这条指令,就会自动暂停,再按全速执行按钮►,即可继续执行。
1.2、实验板入门程序1:
“按键与灯”编程与实验
程序功能:
分别按下实验板上的K2~K7(对应P3.2~P3.7)键,可分别点亮P0.2~P0.7对应的灯D2~D7。
1.2.1接口说明:
P2.0输出:
选通8个灯D0~D7(=1选通)。
P2.1~P2.6输出:
分别选通(=1选通):
数码管1~6(右侧为1)。
P2.7输出:
驱动蜂鸣器(=0响)。
P0.0~P0.7输出:
分别驱动8个灯D0~D7(=0亮),或分别驱动数码管的a、b、c、d、e、f、g、p段(=0亮)。
P3.2~P3.7:
按键输入,对应K2~K7(按下时=0)。
1.2.2程序输入与编辑:
新建一个文件,输入能实现上述要求的程序。
典型程序如下:
PG12:
MOVP2,#81H;禁止发声,选通灯
X:
MOVP0,P3;按键状态直接送到P0口,驱动灯
AJMPX;循环
编译通过后,会在PG12.ASM在同一个文件夹内生成PG12.hex文件,这就是要下载到单片机内的程序文件。
1.2.3下载程序到实验板的单片机:
将实验板与电脑的USB口相连,启动STC_ISP下载软件,按软件界面的步骤来操作:
步骤1:
在“MCUType”选择框内选择单片机型号:
“STC89C51RC”。
步骤2:
点击“OpenFile/打开文件”,打开刚才生成的PG12.hex文件。
步骤3:
选择COM口,这是实验板上的USB转RS232芯片生成的COM口。
具体是几号口,要查看电脑的硬件资源。
鼠标右键点击桌面图标“我的电脑”,点“属性——硬件——设备管理器”,如果生成的COM口为3号口,双击“端口(COM和LPT)”,会列出“ProlificUSB-to-SerialVommPort(COM3)”。
根据此端口号来选择对应的COM口。
其他参数用默认,不要改动。
步骤4:
全部按默认配置,不要改动。
步骤5:
点击“Download/下载”,下面的文本框内会出现提示:
“Chinese:
正在尝试与MCU/单片机握手连接...”,此时按下实验板上的电源按钮,即可开始下载程序,片刻之后就可完成。
步骤5补充说明:
选中“每次下载前重新调入已打开在缓冲区的文件,方便调试使用”选项,如果程序有改动,再次编译之后,可以不用进行步骤2打开新文件,可直接进入步骤5。
1.2.4程序功能验证:
依次按下实验板上的K2~K7键,观察对应的指示灯变化情况,看是否能够达到要求。
1.2.5补充说明:
实验板上有一个电位器,有2个作用:
一是为AD转换器提供可调节的模拟电压输入,二是用于调节NE555振荡器的频率,顺时针旋转时频率增加。
当振荡器振荡时,电位器旁的指示灯会有同步闪烁指示。
如果频率较低,会看到指示灯闪烁,如果频率较高,由于人眼的分辨力有限,高速闪烁的指示灯看上去就一直在亮。
此频率输出信号与P3.2相连,如果振荡器振荡,在本实验中就会导致D2灯闪烁或一直亮,但比按下K2键的亮度低。
如果出现这种情况,就需要逆时针旋转电位器,一直到电位器旁的指示灯不亮为止。
此时振荡器振荡停止,不再影响实验。
1.3实验板入门程序2“按键与灯”编程与实验
程序功能:
在程序PG12的基础上,增加:
按下按键的同时,蜂鸣器要发声。
按程序PG12的步骤,再做一遍。
参考程序如下:
PG13:
MOVP2,#81H;禁止发声,选通灯
X:
MOVP0,P3;按键状态直接送到P0口,驱动灯
MOVA,P3;读入按键状态到A
CJNEA,#255,Y;若有键按下,转Y
SETBP2.7;若无按键按下,关闭声音
AJMPX;循环
Y:
CLRP2.7;若有键按下,发声
AJMPX;循环
四、补充实验与思考
1、PG12与PG13中,如何选择让按健控制某(几)个数码管的段位亮?
2、将PG12与PG13的第一条指令中的“#81H”改为“#83H”,或分别改为“#87H”、“#84H”、“#96H”、“#95H”、甚至“#0FFH”等,会出现什么结果?
为什么?
3、如果要求:
按键不按时亮,按下灭。
如何实现?
实验2:
数码管的静态显示及驱动
一、实验目的
学习数码管静态显示及其驱动方法,进一步了解实验板数码管显示电路的工作原理。
通过典型实验,掌握设计数码管静态显示的基本方法。
二、实验要求
1、了解mini51单片机实验板的数码管显示电路。
2、学习驱动数码管静态显示的软件方法。
3、将典型程序下载到mini51单片机实验板中,运行并观察结果。
4、掌握数码管静态显示程序的调试方法。
三、实验内容
2.1、数码管显示程序1:
“4按键转1位16进制数显示”编程与实验
程序功能:
将P3.4~P3.7对应的K4~K7的按键状态转为1位16进制数:
0~F,查表得到显示码,在最右侧的数码管显示出来。
要求:
4个键都不按,对应数字0,K7对应低位,K4对应高位。
例如:
按下K7显示1,按下K6显示2,同时按下K6与K7显示3……同时按下K4、K5、K6、K7则显示F。
2.1.1接口说明:
P2.0输出:
选通8个灯D0~D7(=1选通)。
P2.1~P2.6输出:
分别选通(=1选通):
数码管1~6(右侧为1)。
P2.7输出:
驱动蜂鸣器(=0响)。
P0.0~P0.7输出:
分别驱动8个灯D0~D7(=0亮),或分别驱动数码管的a、b、c、d、e、f、g、p段(=0亮)。
P3.2~P3.7:
按键输入,对应K2~K7(按下时=0)。
2.1.2主程序参考:
PG21:
MOVP2,#82H;禁止发声,选通最右侧的数码管
X:
MOVA,P3;读P3口按键状态
ACALLKATX;8个位反向排序
CPLA;取反
ANLA,#0FH;保留低4位
Y:
ACALLPTABH;调用查表子程序
MOVP0,A;将查到的显示码送P0口显示
AJMPX;循环
2.1.3按键状态8个位反向排序子程序要求:
将A内的8个位:
D7D6D5D4D3D2D1D0,排列顺序反过来,变为:
D0D1D2D3D4D5D6D7。
参考程序如下:
KATX:
MOVR2,#8;循环次数8
KALP:
RRCA;A带C右循环
XCHA,B;A与B交换内容
RLCA;A带C左循环
XCHA,B;A与B交换内容
DJNZR2,KALP;判循环次数
MOVA,B;反序后的数据送A
RET;返回
2.1.4显示码查表子程序要求:
传入参数:
A:
待查数据为1位16进制数:
0~F,返回值:
A:
对应的显示码(负逻辑:
共阳数码管,0亮,1灭)。
参考程序如下:
PTABH:
INCA
MOVCA,@A+PC
RET
DB0C0H,0F9H,0A4H,0B0H,99H;0~4的负逻辑显示码
DB92H,82H,0F8H,80H,90H;5~9的负逻辑显示码
DB88H,83H,0C6H,0A1H,86H,8EH;A~F的负逻辑显示码
2.1.5输入上述程序,编译通过后,下载到实验板的单片机。
2.1.6程序功能验证:
依次按实验板上的K4~K7键,形成4位二进制数:
0000B~1111B,即1位16进制数:
0~F。
观察对应的数码管显示变化情况,看是否能够达到要求。
2.2、数码管显示程序2:
“按键转为键值显示”编程与实验
程序功能:
将P3.2~P3.7对应的按键K2~K7的按键状态转为键值2~7,查表得到显示码,在最右侧的数码管显示出来。
2.2.1接口说明:
P2.0输出:
选通8个灯D0~D7(=1选通)。
P2.1~P2.6输出:
分别选通(=1选通):
数码管1~6(右侧为1)。
P2.7输出:
驱动蜂鸣器(=0响)。
P0.0~P0.7输出:
分别驱动8个灯D0~D7(=0亮),或分别驱动数码管的a、b、c、d、e、f、g、p段(=0亮)。
P3.2~P3.7:
按键输入,对应K2~K7(按下时=0)。
2.2.2主程序参考:
PG22:
MOVP2,#82H;禁止发声,选通最右侧的数码管
X:
ACALLKTV;调用键状态转键值子程序
CJNEA,#255,Y;若有键按下,转Y
MOVP0,#255;不显示
AJMPX;循环
Y:
ACALLPTAB10;调用查表子程序
MOVP0,A;将查到的显示码送P0口显示
AJMPX;循环
2.2.3按键状态转键值子程序要求:
将P3口的状态读入A,用带C右循环的方法转为键值,仍送A。
无键按下时,键值为255,K2~K7的键值分别为2~7。
参考程序如下:
KTV:
MOVA,P3;读P3口输入状态
MOVB,#255;B初值为255(无键按下)
CJNEA,#255,KTV2;若有键按下,转KTV2
RET;无按键,直接返回
KTV2:
INCB;键值+1
RRCA;带C右循环
JCKTV2;C=1时,继续循环
MOVA,B;键值送A
RET;返回
2.2.4显示码查表子程序要求:
传入参数:
A:
待查数据,0~9,返回值:
A:
显示码(负逻辑:
共阳数码管,0亮,1灭)。
参考程序如下:
PTAB10:
INCA
MOVCA,@A+PC
RET
DB0C0H,0F9H,0A4H,0B0H,99H;0~4的负逻辑显示码
DB92H,82H,0F8H,80H,90H;5~9的负逻辑显示码
2.2.5输入上述程序,编译通过后,下载到实验板的单片机。
2.2.6程序功能验证:
依次按下实验板上的K2~K7键,观察对应的数码管显示变化情况,看是否能够达到要求。
2.3、数码管显示程序3:
“1位显示按键加减”编程与实验
程序功能:
将内存单元NX作为计数器,计数范围:
0~9,将其值显示在最右侧的数码管上。
按K5(-)键,计数器减1,按K6(+)键,计数器加1。
计数值一直在0~9之间循环。
2.3.1接口说明:
参考2.1.1。
2.3.2主程序参考:
PG23:
NXEQU30H;定义计数器内存地址
K5BITP3.5;定义按键K5的端口
K6BITP3.6;定义按键K6的端口
MOVP2,#82H;禁止发声,选通最右侧的数码管
MOVNX,#0;计数器清零
LP:
MOVA,NX;读计数器值到A
ACALLPTAB10;查表得显示码
MOVP0,A;显示码送显示
MOVA,#200;准备延时200mS
ACALLDELAYMS;调延时子程序
PKEY:
JBK5,PKEY2;若无K3键按下,转PKEY2
DECNX;若按下K3,计数器减1
MOVA,NX;读计数器值到A
CJNEA,#255,LP;若计数器值不小于0,转LP
MOVNX,#9;若计数器值小于0,则计数器装9
AJMPLP;转LP去显示
PKEY2:
JBK6,PKEY;若无K4键按下,转PKEY
INCNX;若按下K4,计数器加1
MOVA,NX;读计数器值到A
CJNEA,#10,$+3;判计数器值是否大于等于10
JCLP;若小于10,转LP去显示
MOVNX,#0;否则计数器清零
AJMPLP;转LP去显示
2.3.3软件延时毫秒子程序要求:
按A内的待延时时间值(mS单位)进行软件循环延时,到时间后返回。
实验板的晶振为11.0592MHz。
参考程序如下:
DELAYMS:
;毫秒延时子程序(11.0592MHz晶振)
;传入参数:
A:
延时值(mS),若A=0,则延时256mS
MOVB,#183
NOP
NOP
NOP
DELALP:
NOP
NOP
NOP
DJNZB,DELALP
DJNZACC,DELAYMS
RET
2.3.4显示码查表子程序:
与上述2.2.4相同。
2.3.5输入上述程序,编译通过后,下载到实验板的单片机。
2.3.6程序功能验证:
分别按下实验板上的按K5(-)键、K6(+)键,观察数码管显示值变化情况,看是否能够达到要求。
四、补充实验与思考
1、去掉PG21程序的第3行指令“ACALLKATX”,会出现什么结果?
为什么?
2、去掉PG21程序的第4行指令“CPLA”,会出现什么结果?
为什么?
3、PG21、PG22、PG23这三个程序,如何选择其他位置的数码管亮?
如何选择多个数码管亮?
4、PG22程序,将按键K2~K7对应显示2~7,改为对应显示3~8、或4~9,如何实现?
5、PG23程序,按住K5或K6键不松开,会出现什么现象?
为什么?
6、PG23程序,如果将第9行的延时时间,由200减小为150或100,甚至更小,会出现什么现象?
为什么?
实验3:
流水灯显示及驱动
一、实验目的
学习状态指示灯变化显示及其驱动方法,进一步了解实验板指示灯显示电路的工作原理。
通过典型实验,掌握设计指示灯按一定频率变化显示的基本方法。
二、实验要求
1、了解mini51单片机实验板的指示灯显示电路。
2、学习驱动指示灯轮流变化显示的软件方法。
3、将典型程序下载到mini51单片机实验板中,运行并观察结果。
4、掌握指示灯轮流变化显示程序的调试方法。
三、实验内容
3.1、流水灯显示程序1:
“软件延时循环控制流水灯”编程与实验
程序功能:
依次顺序点亮8个灯,软件定时循环执行。
亮灯时间由参数TIME决定,时间范围1~256mS。
3.1.1接口说明:
P2.0输出:
选通8个灯D0~D7(=1选通)。
P2.1~P2.6输出:
分别选通(=1选通):
数码管1~6(右侧为1)。
P2.7输出:
驱动蜂鸣器(=0响)。
P0.0~P0.7输出:
分别驱动8个灯D0~D7(=0亮),或分别驱动数码管的a、b、c、d、e、f、g、p段(=0亮)。
P3.2~P3.7:
按键输入,对应K2~K7(按下时=0)。
3.1.2主程序参考:
PG31:
TIMEEQU200;延时时间(单位:
mS)
MOVP2,#81H;禁止发声,选通灯
MOVP0,#0FEH;初始灯状态:
点亮D0
MOVR7,#0FEH;保存初始灯状态
LP:
MOVA,#TIME;装入延时时间
LCALLDELAYMS;延时
MOVA,R7;取灯状态
RLA;循环左移
MOVR7,A;保存到R7
MOVP0,A;送P0口
AJMPLP;不停循环
3.1.3毫秒延时子程序,用2.3.3中的延时子程序DELAYMS。
3.1.4输入上述程序,编译通过后,下载到实验板的单片机。
3.1.5程序功能验证:
观察对应的状态灯显示变化情况,看是否能够达到要求。
3.2、流水灯显示程序2:
“速度可调流水灯”编程与实验
程序功能:
在上一个实验的基础上,增加变化速度可调功能,按K6(+)键:
增大延时值,按K5(-)键:
减小延时值。
3.2.1接口说明:
参考上述3.1.1。
3.2.2主程序参考:
PG32:
TADREQU30H;保存延时时间的地址(单位:
mS)
K5BITP3.5
K6BITP3.6
MOVP2,#81H;禁止发声,选通灯
MOVP0,#0FEH;初始灯状态:
点亮D0
MOVR7,#0FEH;保存初始灯状态
MOVTADR,#100;装入延时时间初值:
100mS
LP:
MOVA,TADR;装入延时时间
LCALLDELAYMS;延时
CPLP2.7;发声取反:
每循环2个灯响1下
MOVA,R7;取灯状态
RLA;循环左移
MOVR7,A;保存到R7
MOVP0,A;送P0口
JBK5,PKEY
DECTADR;K5按下,TADR-1
AJMPLP;循环
PKEY:
JBK6,LP
INCTADR;K6按下,TADR+1
AJMPLP;循环
3.2.3毫秒延时子程序,用2.3.3中的延时子程序DELAYMS。
3.2.4输入上述程序,编译通过后,下载到实验板的单片机。
3.2.5程序功能验证:
按K5与K6键,观察对应的状态灯显示速度变化情况,看是否能够达到要求。
3.3、流水灯显示程序3:
“按键选择流水灯”编程与实验
程序功能:
在PG31实验的基础上,增加按键选择数码管段位参与流水灯显示的功能,按键K2~K7分别与数码管LED6~LED1对应,按一下按键,对应的数码管段位就参与流水灯显示,再按一下,就取消参与。
3.3.1接口说明:
参考上述3.1.1。
3.3.2主程序参考:
PG33:
TIMEEQU200;延时时间(单位:
mS)
K2BITP3.2
K3BITP3.3
K4BITP3.4
K5BITP3.5
K6BITP3.6
K7BITP3.7
KKBIT70H;按键已执行标志
MOVP2,#81H;禁止发声,选通灯
MOVP0,#0FEH;初始灯状态:
点亮D0
MOVR7,#0FEH;保存初始灯状态
LP1:
SETBKK
CLRP2.7;发声
LP:
MOVA,#TIME;装入延时时间
LCALLDELAYMS;延时
MOVA,R7;取灯状态
RLA;循环左移
MOVR7,A;保存到R7
MOVP0,A;送P0口
SETBP2.7;静音
MOVA,P3
CJNEA,#255,PKEY
CLRKK;若无键按下,清除KK标志
AJMPLP
PKEY:
JBKK,LP;若有KK标志,不再扫描按键
JBK2,PKEY3
CPLP2.6;K2按下,P2.2取反
AJMPLP1;循环
PKEY3:
JBK3,PKEY4
CPLP2.5;K2按下,P2.2取反
AJMPLP1;循环
PKEY4:
JBK4,PKEY5
CPLP2.4;K2按下,P2.2取反
AJMPLP1;循环
PKEY5:
JBK5,PKEY6
CPLP2.3;K2按下,P2.2取反
AJMPLP1;循环
PKEY6:
JBK6,PKEY7
CPLP2.2;K2按下,P2.2取反
AJMPLP1;循环
PKEY7:
JBK7,LP
CPLP2.1;K2按下,P2.2取反
AJMPLP1;循环
3.2.3毫秒延时子程序,用2.3.3中的延时子程序DELAYMS。
3.2.4输入上述程序,编译通过后,下载到实验板的单片机。
3.2.5程序功能验证:
分别按K2~K7键,观察对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机电专业综合实验 机电 专业 综合 实验 指导书 1214