单实验讲义.docx
- 文档编号:24537851
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:24
- 大小:1.54MB
单实验讲义.docx
《单实验讲义.docx》由会员分享,可在线阅读,更多相关《单实验讲义.docx(24页珍藏版)》请在冰豆网上搜索。
单实验讲义
实验一KeiluVision2等软件使用(3学时)
一.实验目的
1.熟悉KeiluVision2软件的使用方法;
2.熟悉下载流程。
二.实验设备
1.KeilKeiluVision2开发系统一台;
2.+5V电源一台;
3.仿真器一个;
4.THKSCM-2型单片机实验台一台。
三.实验内容及步骤
(一)KeiluVision2软件的实验步骤:
1.点击桌面快捷图标,可以直接进入主画面:
2.新建的工程要起个与工程项目意义一致的名字,可以是中文名;我们这里的程序是实验测试程序,所以起的名字为Test,并将Test工程“保存”到C:
\Keil下:
3.Keil环境要求我们为Test工程选择一个单片机型号;我们选择Atmel公司的89C51(虽然我们使用的是89S51,但由于89S51与89C51内、外部结构完全一样,所以这里依然选择“89C51”)。
“确定”后工程项目就算建立了。
4. 点击“文件”中的“新建”,新建一个空白文档;这个空白文档就是让我们编写单片机程序的场所。
在这里你可以进行编辑、修改等操作。
movp0,#01010101B ;将01010101二进制代码送P0口
ajmp$ ;程序在此原地踏步
end ;程序结束标志
5.保存文件,保存文件时,其文件名最好与前面建立的工程名相同(当然这里为Test了),其扩展名必须为.Asm!
“文件名”中一定要写全,如:
Test.Asm;
6.将Asm文件添加到工程中。
具体做法如下:
(见下图)
鼠标右键点击“SourceGroup1”,在弹出的菜单中选“增加文件到组SourceGroup1”:
在接下来出现的窗口中,选择“文件类型”为“Asm源文件(*.a*,*.src)”(由于我们使用的是汇编语言,所以选择Asm源文件),选中刚才保存的Test.Asm,按“Add”,再按“关闭”,文件就添加到了工程中。
7.设置目标属性:
向工程添加了源文件后,鼠标右键点击“TarGet1”,在弹出的菜单中选“目标Target1属性”,如下图:
在打开的话框中,选择“输出”选项卡,在这个选项卡中,“E生成HEX文件”选项前要打勾,按“确定”退出。
最后,从菜单的“工程”中执行“R重新构造所有目标”(或者按下图红圈中的按钮),汇编、连接、创建Hex文件一气呵成;在工程文件的目录下就会生成与工程名相同的一些文件,其中大部分文件我们并不必关心,而生成的Hex文件是我们需要的!
它是要烧写到单片机中的最终代码,也就是单片机可以执行的程序。
这里生成的是Test.HEX,稍后就写入。
若在下面的状态窗中有错误提示,就需要再次编辑、修改源程序(如语法、字符有错等)、保存、构造所有。
直至没有错误。
8.模拟调试:
在没有语法错误的情况下,按下图红圈中的按钮就可以进行模拟调试:
下面是调试窗。
由于我们的程序是让P0口8个脚隔一个输出0,隔一个输出1,所以要从菜单的“外围设备”中打开“Prot0”P0口窗:
单击“单步运行”,在P0窗中就可以看到我们原先设想的效果:
实验二MCS-51单片机指令学习(3学时)
一.实验目的
1.在Keil软件平台下学习常用指令的特点;
2.写出下面两实例各条指令的含义;
3.写出各实例实现的功能;
二.实验设备
1.KeilKeiluVision2开发系统一台;
2.+5V电源一台;
3.仿真器一个;
4.THKSCM-2型单片机实验台一台。
三.实验内容及步骤
实例一指令的含义机器操作代码
MOVPSW,#08H
MOV30H,#25
MOVR0,#30H
MOVA,@R0
MOVDPTR,#0006H
MOVA,#35H
MOVX@DPTR,A
MOVA,R0
MOVX@DPTR,A
MOVCA,@A+DPTR
SJMP$
功能:
1、将程序输入Keil编辑器,保存文件名为MOV.ASM
2、对源程序进行编译,修改语法错误
3、打开窗口写出每条指令的机器操作代码。
4、写出R0在数据存储单元中的地址,执行到SJMP时R0.、DPTR、A的内容
实例二指令的含义机器操作代码AP0
ORG0000H
MOVA,#34H
MOVP0,#56H
MOVB,#12H
LCALLPP
SJMP$
PP:
pusha
pushp0
mova,#78h
movp0,a
popp0
popa
RET
END
1、将程序输入编辑器,保存文件名为STACK.ASM
2、对源程序进行编译,修改语法错误
3、打开窗口写出每条指令的机器操作代码。
4、打开CPU窗口、单步执行写出每条指令A.P0的值。
四、实验报告要求
1、写出上述两试验程序各条指令的含义(与预习时相比是否一致),整理试验一试验二的结果。
2、区分实例一个条传输指令的不同。
3、写出指令在执行调用时堆栈SP的变化过程和堆栈在堆栈区所保存内容。
实验三I/O口简单实验(2学时)
一.实验目的
学习89S51单片机的32根I/O口的基本输出功能,以P1口为例,P0,P1,P3口道理均相同。
学习延时子程序的编程和应用。
二.实验设备
1.KeilKeiluVision2开发系统一台;
2.+5V电源一台;
3.仿真器一个;
4.THKSCM-2型单片机实验台一台。
三.实验内容
1.使8个LED发光二极管循环闪亮,时间间隔为1秒;
2.使8个LED发光二极管同时亮、灭,时间间隔为1秒。
四.实验步骤
1.用8P数据线连接80C51MCU模块的JD1C(P1口)到八位逻辑电平输出模块的JD1F5,连接JD0C(P0口)到八位逻辑电平显示模块的JD1E5。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到80C51MCU模块的40P锁紧插座中,请注意仿真器的方向:
缺口朝上。
3.将80C51MCU模块的电源扭子开关S1C拨到上端。
将直流稳压电源模块的直流控制开关S1G1打到ON,本实验所用到的相关模块的电源指示灯VCC亮。
五.分析程序
1.8个发光二极管循环闪亮,时间间隔为1秒
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H
MOVA,#01H
LOOP:
MOVP1,A
LCALLDELAY
RLA
SJMPLOOP
DELAY:
MOVR0,#10
DELY0:
MOVR7,#100
DELY1:
MOVR6,#250
DJNZR6,$
DJNZR7,DELY1
DJNZR0,DELY0
RET
END
2.使8个LED发光二极管同时亮、灭,时间间隔为1秒。
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H
MOVA,#0FFH
LOOP:
MOVP1,A
LCALLDELAY
CPLA
SJMPLOOP
DELAY:
MOVR0,#10
DELY0:
MOVR7,#100
DELY1:
MOVR6,#250
DJNZR6,$
DJNZR7,DELY1
DJNZR0,DELY0
RET
END
三、实验报告要求
1、写出上述实验程序各条指令的含义(与预习时相比是否一致),整理实验的结果。
2、试分析改变A的值将影响什么?
4、试分析改变R7、R6的值将影响什么?
实验四单片机内部定时器实验(3学时)
一、实验目的
1.学习80C51内部定时/计数器使用方法
2.学习计数器各种工作方式的用法
3.进一步掌握中断处理程序的编写方法
二、实验说明
关于内部定时/计数器的编程主要是定时常数的设置和有关控制寄存器的设置。
内部计数器在单片机中主要有定时器和计数器两个功能。
定时/计数器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。
TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。
TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
三、实验电路图
本实验用到80C51MCU模块(C区),八位逻辑电平显示模块(E5区)和单次脉冲模块(G3区)。
80C51MCU模块电路原理参考附录三,八位逻辑电平显示模块电路原理图参考实验一图1.1,单次脉冲模块电路原理参考实验三图3.1。
四、实验步骤
实验
(一):
计数器
1.用8P数据线连接80C51MCU模块的P1口到八位逻辑电平显示模块的JD1E5口,用二号导线连接80C51MCU模块的T0口到单次脉冲模块的任一输出端。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到80C51MCU模块的40P锁紧插座中,请注意仿真器的方向:
缺口朝上。
3.将80C51MCU模块的电源扭子开关S1C拨到上端。
将直流稳压电源模块的直流控制开关S1G1打到ON,本实验所用到的相关模块的电源指示灯VCC亮。
4.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“TH4_计数器.ASM”源程序,进行编译,编译无误后,全速运行程序。
5.实验现象:
连续按动单次脉冲的按键,8位发光二极管显示按键次数。
6.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52芯片中运行(注意:
芯片缺口朝上)。
(ISP烧录器的使用查看附录二)
实验
(二):
定时器
1.用二导线连接80C51MCU模块的P1.0到八位逻辑电平显示模块的任一只发光二极管上。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到80C51MCU模块的40P锁紧插座中,请注意仿真器的方向:
缺口朝上。
3.将80C51MCU模块的电源扭子开关S1C拨到上端。
将直流稳压电源模块的直流控制开关S1G1打到ON,本实验所用到的相关模块的电源指示灯VCC亮。
4.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“TH4_定时器.ASM”源程序,进行编译,编译无误后,全速运行程序。
5.实验现象:
发光二极管隔一秒点亮一次,点亮时间为一秒。
6.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52芯片中运行(注意:
芯片缺口朝上)。
(ISP烧录器的使用查看附录二)
五、实验流程图及源程序
1.流程图
计数器流程图
定时器流程图
2.源程序
六、思考题
1.80C51单片机的最高计数频率为多少?
2.如何将定时器的状态间隔改为2秒,程序如何改写?
3.如果更换不同频率的晶振,会出现什么现象?
如何调整程序?
实验五数码管动态显示实验(3学时)
一、实验目的
1.掌握数字、字符转换成显示段码的软件译码方法
2.动态显示的原理和相关程序的编写
二、实验说明
动态显示,也称扫描显示。
显示器由6个共阴极LED数码管构成。
单片机的P1口输出显示段码,经由一片74LS245驱动输出给LED管,由P0口输出位码,经由74LS06输出给LED管。
三、实验电路图
本实验用到80C51MCU模块(C区),动态数码显示模块(A5区)。
80C51MCU模块电路原理参考附录三,动态数码显示电路原理参考图5.1。
图5.1动态数码显示电路
四、实验步骤
1.用8P数据线分别连接80C51MCU模块的JD0C(P0口)、JD1C(P1口)到动态数码显示模块的JD2A5、JD1A5。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到80C51MCU模块的40P锁紧插座中,请注意仿真器的方向:
缺口朝上。
3.将80C51MCU模块的电源扭子开关S1C拨到上端,将动态数码显示模块的电源短路帽J1A5打在上端。
将直流稳压电源模块的直流控制开关S1G1打到ON,本实验所用到的相关模块的电源指示灯VCC亮。
4.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“TH9_动态显示.ASM”源程序,进行编译,编译无误后,全速运行程序。
5.实验现象:
动态数码显示模块显示“168168”。
6.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52芯片中运行(注意:
芯片缺口朝上)。
(ISP烧录器的使用查看附录二)
五、实验源程序
DBUFEQU30H
TEMPEQU40H
ORG0000H
LJMPDISP
ORG0100H
DISP:
MOV30H,#8
MOV31H,#6
MOV32H,#1
MOV33H,#8
MOV34H,#6
MOV35H,#1
MOVR0,#DBUF
MOVR1,#TEMP
MOVR2,#6
MOVDPTR,#SEGTAB
DP00:
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCR1
INCR0
DJNZR2,DP00
DISP0:
MOVR0,#TEMP
MOVR1,#6
MOVR2,#1
DP01:
MOVA,@R0
MOVP1,A
MOVA,R2
MOVP0,A
ACALLDELAY
MOVA,R2
RLA
MOVR2,A
INCR0
DJNZR1,DP01
SJMPDISP0
SEGTAB:
DB3FH,06H,5BH;0,1,2
DB4FH,66H,6DH;3,4,5
DB7DH,07H,7FH;6,7,8,
DB6FH,77H,7CH;9,A,B
DB58H,5EH,7BH;C,D,E
DB71H,00H,40H;F,,-
DELAY:
MOVR4,#03H
AA1:
MOVR5,#0FFH
AA:
NOP
NOP
DJNZR5,AA
DJNZR4,AA1
RET
END
六、思考题
1.如何修改程序,实现六位LED数码管只显示其中的两位?
2.调试例题6.1的程序,并且在试验箱上演示结果。
参考程序:
ORG0000H
ALMPMAIN
ORG0030H
MAIN:
MOVTMOD,#10H ;定时器T1工作在方式1
MOVTH1,#3CH ;T1置50ms计数初值
MOVTL1,#0B0H
SATRT:
MOVR1,#00H ;计数显示初始化
MOVDPTR,#TAB
DISP:
MOVA,R1
MOVCA,@A+DPTR ;查表得显示的字型码
MOVP1,A ;数码管显示0
ACALLDELAY1S ;延时1s
INCR1 ;计数值加1
CJNER1,#10,DISP ;秒值不到10,继续
;显示;否则清0
MOVR1,#00H ;计数值清0
SJMPDISP
TAB:
DB 0C0H,0F9H,0A4H;0,1,2
DB0B0H,99H,92H;3,4,5
DB82H,0F8H,80H;6,7,8
DB90H;9
;———————————1s延时子程序————————
DEALY1S:
MOVR3,#14H;置50ms计数循环初值
SETBTR1 ;启动T1
LP1:
JBCTF1,LP2 ;查询计数溢出
SJMPLP1 ;未到50ms继续计数
LP2:
MOVTH1,#3CH;重新置定时器初值
MOVTL1,#0B0H
DJNZR3,LP1;未到1s继续循环
RET ;返回主程序
END
实验六串行静态数码显示实验(3学时)
一、实验目的
1.掌握数字、字符转换成显示段码的软件译码方法
2.静态显示的原理和相关程序的编写
二、实验说明
显示器由5个共阴极LED数码管组成。
输入只有两个信号,它们是串行数据线DIN和移位信号CLK。
5个串/并移位寄存器芯片74LS164首尾相连。
每片的并行输出作为LED数码管的段码。
74LS164为8位串入并出移位寄存器,1、2为串行输入端,QA~QH为并行输出端,CLK为移位时钟脉冲,上升沿移入一位;CLR为清零端,低电平时并行输出为零。
三、实验电路图
本实验需要用到80C51MCU模块(C区)和静态数码显示模块(A6区)。
80C51MCU模块电路原理参考附录三,静态数码显示电路原理参考图6.1。
图6.1静态数码显示电路原理
四、实验步骤
1.用二号导线分别连接80C51MCU模块的RXD(P3.0)、TXD(P3.1)到静态数码显示模块的DIN、CLK。
2.用串行数据通信线连接计算机与仿真器,把仿真头插到80C51MCU模块的40P锁紧插座中,请注意仿真器的方向:
缺口朝上。
3.将80C51MCU模块的电源扭子开关S1C拨到上端,将静态数码显示模块的电源短路帽J1A6打在上端。
将直流稳压电源模块的直流控制开关S1G1打到ON,本实验所用到的相关模块的电源指示灯VCC亮。
4.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“TH10_静态显示.ASM”源程序,进行编译,编译无误后,全速运行程序。
5.实验现象:
静态数码显示模块显示“89C52”。
6.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52芯片中运行(注意:
芯片缺口朝上)。
(ISP烧录器的使用查看附录二)
五、实验源程序
DBUF0EQU30H
TEMPEQU40H
DINBITP3.0
CLKBITP3.1
ORG0000H
LJMPSTART
ORG0100H
START:
MOV30H,#10H
MOV31H,#10H
MOV32H,#10H
MOV33H,#8
MOV34H,#9
MOV35H,#0CH
MOV36H,#5
MOV37H,#2
DISP:
MOVR0,#DBUF0
MOVR1,#TEMP
MOVR2,#8
DP10:
MOVDPTR,#SEGTAB
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCR0
INCR1
DJNZR2,DP10
MOVR0,#TEMP
MOVR1,#8
DP12:
MOVR2,#8
MOVA,@R0
DP13:
RLCA
MOVDIN,C
CLRCLK
SETBCLK
DJNZR2,DP13
INCR0
DJNZR1,DP12
OK:
SJMPOK
SEGTAB:
DB3FH,06H,5BH,4FH,66H,6DH
DB7DH,07H,7FH,6FH,77H,7CH
DB39H,5EH,7BH,71H,00H,40H
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 讲义