单片机指导书-16页文档资料

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

机电工程学院
《单片机原理及应用》实验报告
学院
班级
姓名
学号
温州大学机电工程学院制
目录
前言 (2)
第一章MCS-51单片机实验系统
1.1 Keil uV2软件的使用 (3)
1.2 MCS51U单片机实验板 (11)
第二章实验项目
2.1 实验一系统基本操作及I/O口实验 (15)
2.2 实验二定时/计数器实验 (17)
2.3 实验三中断实验 (18)
2.4 实验四单片机控制蜂鸣器实验 (19)
2.5 实验五交通灯控制实验 (22)
前言
工业控制、智能化仪器仪表、数控机床、数据采集、通信以及家用电器等各领域中得到了广泛的应用。

《单片机原理及应用》是一门实践性和实用性都很强的课程,对机械工程及自动化专业是一门必修课程,为了更好地配合教学环节,让学生立足于实践应用,全面、深入地了解和掌握单片机,锻炼、提高学生的动手能力和操作能力,结合实验室所购置的单片机实验设备,我们编写了这本实验指导书。

在单片机的教学上,我们逐步加大了实验环节在教学计划中的比重,在满足基本技能培训要求的基础上,减少了演示性、验证性的实验,而增加了设计性、综合性实验,以达到真正提高学生的实践能力和解决问题的能力。

本指导书由浅入深,合理地安排了基础和应用、软件和硬件实验项目,以满足实践教学环节的需求。

在编写过程中我们得到了院领导、实验室、教研室各位老师的大力支持,在此一并表示衷心的感谢。

鉴于水平有限,难免存在错误,恳请读者批评指正。

编者
2019.10
第一章MCS-51单片机实验系统
1.1 Keil uV2软件使用简介
1.1.1先打开一个工程文件,如果没有工程文件,应先建立一个工程文件。

具体建立步骤如下:用鼠标点击菜单的Project->New Project.。

如图1。

图1
1.1.2点击New Project之后,可根据需要重新选择工程文件放置的位置,放置工程文件并为工程文件命名,点击“保存”按钮对工程文件进行保存,操作如下图。

图2
保存完工程文件出现如下界面。

图3
1.1.3此时编译系统提示选择所用的单片机型号。

向下滚动滚动条选择Atmel系列的89C51 型号的单片机,然后点击“确定”按钮进行确认,如下图。

图4
然后出现如下界面,如下图。

1.1.4点击菜单中的“File”选项,选择新建“New…”。

如下图。

图6
点击“New…”选项,出现如下界面。

图7
1.1.5点击菜单栏里的“File”选项,选择“Save”项,对新建的文本文档进行保存。

然后在文件名对话框中输入文件名。

注意:文件名的后缀应为“.C”或“.ASM”。

“.C”后缀为C语言源程序,“.ASM”后缀为汇编源程序。

图8
输入完文件名之后点击“保存”按钮进行保存。

保存完之后的界面如下图。

图9
1.1.6点击“Target1”左边的“+”符号,然后选中“Source Group 1”,点击右键,选中
“Add Files to Group ‘Source Group 1’”选项并左键单击。

单击之后出现如下界面。

图10
选中文本文档“Test1.asm”,先左键单击“Add”按钮,再左键单击“Close”按钮。

这时我们就将我们建立的源程序文件添加到了Source Group 1目录下。

如下图所示。

图11
这时我们就可以编写调试我们的程序了。

1.1.7单击按钮“”出现如下界面。

图12
单击“Output”按钮,选中“Create HEX Files”选项。

如下图所示。

图13
点击“确定”按钮进行确认。

注意:此操作对于采用直接把程序烧录到实验系统的CPU的方式,是必不可少,
因为只有选中“Create HEX Files”这一选项,才能够生成HEX文件。

如果采用联机仿真模式,下一步我们要做的就是仿真监控芯片的工作参数进行设置。

1.1.8选择Option for Target->Debug进行设置。

设置完毕的界面如下图所示。

图14
注意:如果采用脱机仿真模式,上一步跳过。

1.1.9当程序编写完成之后,要对其进行编译以检查是否有语法错误。

点击” ”
(Translate Current File)快捷按钮。

如语法检查显示错误(Error)和警告(Warning)均为0,则可进行下一步编译工作。

左键单击“”(Build Target)编译文件。

如下图所示。

图16
1.1.10构建文件之后左键单击按钮“”,进入仿真调试系统。

如下图所示。

图17
此时可通过走单步、设置断点、全速运行方式对程序进行调试。

1.2 MCS51U单片机实验板
1.2.1 概述
在单片机教学与学习中,首先要解决的就是单片机编程器,没有编程器就没办法将你精心设计的程序烧写到单片机芯片中;之后,还要为烧写过程序的芯片搭个电路以验证程序是否如你所愿,这就需要单片机实验板;由于单片机工作速度过快,当程序有错误时,我们没办法仔细观察错在哪里,这时我们还想有个单片机仿真器对程序进行逐步仔细的观察和调试。

MCS51U单片机编程、*仿真、实验3合1板(下称实验板)将上述功能有机的集成在一块板上,为单片机教学和学习在硬件方面提供了有力的支持。

同时,实验板采用USB与电脑连接,不但提供了通讯,同时也提供了实验板的电源。

编程器可编程的芯片为ATMEL公司的:
AT89S51、AT89LS51、*AT89S52、AT89LS52
*注:实际系统未提供仿真调试模块,直接用Keil软件仿真,单片机芯片采用AT89S52。

1.2.2 实验板功能分布图
单片机实验板中,已经集成了数码显示、LED灯、LCD液晶接口、红外遥控接收、按键键盘以及24、93系列非遗失存储器;在ISP下载结束后,也可以使用单片机的串口和电脑通讯。

1.2.3 实验板跳线功能说明
1.2.4 实验板电路原理图
1.2.5 ISP下载程序的使用
设置好通讯后,若实验板与电脑已经连接,可以打开实验板“电源开关”,并启动软件“MCS51U”与实验板连接。

第一次启动软件需要设置一下通讯端口,见下图:选好端口号,点击“应用”,程序会自动与实验板连接,正常情况下会连接成功并给予提示;若连接失败请重新选择正确、可用的端口后再试试,直至连接成功。

接下来,就可以从菜单的“文件”中打开目标文件,烧写到单片机中去实验。

第二章实验项目
实验一系统基本操作及I/O口实验
一、实验目的
1、掌握Keil软件的基本操作;
2、了解MCS51单片机实验板的基本结构、功能和原理;
3、掌握ISP程序下载的基本操作;
4、掌握对P0~P3口的基本I/O编程。

二、实验内容
1、Keil软件基本操作
(1)运行Keil uVision2软件,在E:盘创建一个文件夹,并在上面建立自己的工程文件;
(2)建立.asm汇编文件,加入到刚建立的工程中去,并对目标属性进行设置;
(3)在文件窗口,填入若干条常见汇编指令,末行以伪指令END结尾,再进行软件仿真调试,包括进入仿真调试状态、单步执行、断点、全速执行、退出
仿真调试状态等,调试过程中随时观察相关寄存器单元内容的变化。

2、输入以下汇编程序,进行编译,观察是否有.hex文件输出;
程序1.1:
MAIN: MOV P0,#01H
MOV P0,#02H
MOV P0,#04H
MOV P0,#08H
SJMP MAIN
END
3、将相应的.hex文件下载到AT89S52单片机芯片内部,观察指示灯LS1~LS8的运行结果。

4、分析以下程序段,编译、下载后,观察运行结果跟上述程序有何区别。

程序1.2:
MAIN: MOV P0,#01H
CALL DELAY
MOV P0,#02H
CALL DELAY
MOV P0,#04H
CALL DELAY
MOV P0,#08H
SJMP MAIN
;---显示延时----------
DELAY: MOV R1,#0FFH
DELAY1: MOV R2,#0FFH
DELAY2: NOP
NOP
DJNZ R2,DELAY2
DJNZ R1,DELAY1
RET ;延时返回
END
5、在程序1.2的基础上,修改成从LS1~LS8依次点亮的流水灯程序,下载到单片机芯片中,观察实际运行结果。

三、思考题
1、如果程序编译后,在项目文件夹内找不到.hex文件,一般问题出在哪里?
2、P0.0~P0.7口置0、置1跟LS1~LS8的亮、灭有何关系?为什么?
3、P0口如果改作为输入口,编程时应该注意什么?
实验二定时/计数器实验
一、实验目的
1、掌握定时器T0或T1的工作方式;
2、掌握利用对定时器溢出的查询,实现定时的编程方法。

二、实验内容
1、在Keil软件中,输入下列程序,编译、下载,观察实验板中LS1的工作状况。

单片机晶振12MHz,则程序2.1使LS1亮、灭的周期是多少?
程序2.1
MOV 40H, #50
MOV TMOD, #10H
MOV TL1, #0B0H
MOV TH1, #3CH
SETB TR1 ;启动T1
LP: JBC TF1, LP2
AJMP LP
LP2: MOV TL1, #0B0H ;重新设置计数初值
MOV TH1, #3CH
DJNZ 40H, LP
MOV 40H, #50
CPL P0.0
SJMP LP
END
2、修改程序2.1,使P0.7口接的LS8每隔0.5秒亮、灭一次,程序写入实验报告。

3、在上述程序基础上,改写实验一的流水灯程序,每隔1秒,从LS1~LS8依次
闪亮一次,不断循环,程序写入实验报告。

三、思考题
1、如果单片机晶振频率改成6MHz,T0定时器在工作方式0,从0开始溢出一次,
需要多少时间?
2、计数器和定时器差别在什么地方?
实验三中断实验
一、实验目的
1、熟悉MCS-51单片机中断的编程方法;
2、利用定时器溢出中断产生定时的编程方法。

二、实验内容
1、在Keil软件中,输入下列程序,编译、下载,观察实验板中指示灯工作状况。

已知晶振12MHz,则P0.7口指示灯闪烁的频率为多少?
程序3.1
ORG 0000H
LJMP MAIN
ORG 001BH ;定时器T1中断入口地址
AJMP INTT1
ORG 0100H
MAIN: MOV P0,#00H
MOV TMOD, #10H
MOV TH1,#3CH
MOV TL1,#0B0H
MOV IE,#88H
SETB TR1 ;启动T1
LP: SJMP LP
ORG 60H
INTT1: MOV TH1,#3CH ;中断服务程序
MOV TL1,#0B0H
CPL P0.7
RETI
END
2、在程序3.1的基础上,编写1秒钟闪烁切换间隔的流水灯程序,循环顺序来回切换,即LS1->LS2->…->LS8,再切换成LS8->LS7->…->LS1。

三、思考题
1、MCS-51有几个中断源,编写中断服务程序都有何规范?
2、定时器中断和查询两种工作方式都能实现定时,各有什么特点?
实验四单片机控制蜂鸣器实验
一、实验目的
1、掌握单片机对利用蜂鸣器的控制方法;
2、结合定时器,产生定时的蜂鸣;
3、掌握蜂鸣器产生音乐的编程方法。

二、实验内容
1、蜂鸣器接在P2.0口上,实验前接上跳线J12;
2、利用定时器实验的程序,每隔5秒,产生一次鸣叫,持续1秒,程序写入报
告;
3、分析下面利用蜂鸣器产生音乐的程序4.1“兰花草”。

上网搜索更多的音乐,
改写程序4.1,发出相应的音乐声。

程序4.1:
OUT BIT P2.0
ORG 0
AJMP START
ORG 0BH
AJMP TIM0
START: MOV TMOD,#1
MOV IE,#10000010B
START0: MOV 30H,#0
NEXT: MOV A,30H
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV R2,A
JZ END0
ANL A,#0FH
MOV R5,A
MOV A,R2
SWAP A
ANL A,#0FH
JNZ SING
CLR TR0
AJMP D1
SING: DEC A
MOV 22H,A
RL A
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV TH0,A
MOV 21H,A
MOV A,22H
RL A
INC A
MOVC A,@A+DPTR
MOV TL0,A
MOV 20H,A
SETB TR0
D1: CALL DELAY
INC 30H
AJMP NEXT
END0: CLR TR0
AJMP START0
TIM0: PUSH ACC
PUSH PSW
MOV TL0,20H
MOV TH0,21H
CPL OUT
POP PSW
POP ACC
RETI
DELAY: MOV R7,#2
D2: MOV R4,#125
D3: MOV R3,#248
DJNZ R3,$
DJNZ R4,D3
DJNZ R7,D2
DJNZ R5,DELAY
RET
TABLE1: DW 64021,64103,64260,64400
DW 64524,64580,64684,64777
DW 64820,64898,64968,65030
DW 64934
TABLE: ;1
DB 42H,82H,82H,82H,84H,02H,72H
DB 62H,72H,62H,52H,48H
DB 0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2H ;2
DB 12H,0A2H,0D2H,92H,88H
DB 82H,0B2H,0B2H,0A2H,84H,02H,72H
DB 62H,72H,62H,52H,44H,02H,12H
;3
DB 12H,62H,62H,52H,44H,02H,82H
DB 72H,62H,52H,32H,48H
DB 00H
END
三、思考题:
1、伪指令DB、DW有什么作用?
2、“兰花草”程序中,用到了什么中断?入口地址在哪里?
实验五交通灯控制实验
一、实验目的
1、掌握键盘与数码管显示的基本方法;
2、掌握单片机程序综合设计的方法。

二、实验内容
1、分析键盘程序5.1和数码管显示程序5.2。

程序5.1
;程序名: MCS51实验板配套程序-74HC165实验
;功能:读取74HC165并口上的键盘数据,同时判断键盘值进行led的开关
;8个单键分别接在74HC165的并行口,相关连接见如下管脚定义,更详细见原理图。

;------定义-----------------------------------
pl bit P3.6 ;165锁存
clk bit P3.7 ;165时钟
Do bit P3.5 ;165数据
keyvar equ 20h ;读取的键盘数据放到20H中
;为便于以下程序直接使用S1-S8按钮,这里也要定义一下按钮的名称
s1 bit keyvar.0 ;对应s1,下同
s2 bit keyvar.1
s3 bit keyvar.2
s4 bit keyvar.3
s5 bit keyvar.4
s6 bit keyvar.5
s7 bit keyvar.6
s8 bit keyvar.7
;------使用实例------------------------------
main:
lcall Rkey ;使用键盘前要读一次键盘值,仅这一点和直接连接的按键不同 jnb s1,key0 ;到按键1按下处理,接下来和一般的直连按键使用方法一样
jnb s2,key1 ;到按键2按下处理
ajmp main
key0:
lcall Delay ;有必要的话要加上键抖延时
lcall Rkey ;延时后再读键盘
jnb s1,key0_Dow ;再次判断的确是s1按下,到按下处理
ajmp main
;-------一下程序和普通直接连接按键的处理方法相同------
key1:
lcall Delay ;去键抖延时
lcall Rkey ;延时后再读键盘
jnb s2,key1_Dow ;再次判断的确是s2按下,到按下处理
ajmp main
key0_Dow:
cpl p0.0 ;翻转LS1
k1l:
lcall Rkey
jnb s1,k1l ;判断按键是否抬起,否则程序会重复读键
ajmp main
key1_Dow:
cpl p0.1 ;翻转LS2
k2l:
lcall Rkey
jnb s2,k2l ;判断按键是否抬起,否则程序会重复读键
ajmp main
;------读键盘子程序---------------------------
Rkey: clr pl
setb pl ;-|_|-装入
mov r0,#8 ;读8位
loop: mov c,Do ;提取1位
rlc a
setb clk
clr clk ;_|-|_时钟
djnz r0,loop
mov keyvar,a ;保存键盘值
ret
;------延时程序--------------------------------
Delay:
mov r1,#25
L1: mov r0,#200
djnz r0,$
djnz r1,L1
ret
end
程序5.2
;程序名:MCS51U实验板配套程序-显示部分
;功能:在数码显示器上显示“1234”,以及LED灯显示10100101二进制。

;电路介绍:显示由一片74HC595驱动4位共阴数码管
; 详细连接见下面管脚定义,实验前要连接J13
dat bit p1.0 ;定义驱动74595的数据脚为p1.0
clk bit p1.1 ;74595的时钟
lat bit p1.2 ;栓锁
gw bit p1.3 ;个位显示控制脚
sw bit p1.4 ;十位
bw bit p3.3 ;百位
qw bit p3.4 ;千位
sjgw equ 30h ;显示数据存储器
sjsw equ 31h
sjbw equ 32h
sjqw equ 33h
mov sp,#40h
mov p1,#0fh
mov p0,#5ah ;显示10100101二进制
main : ;显示1234这个数
mov sjgw,#4 ;个位显示4
mov sjsw,#3 ;十位显示3
mov sjbw,#2 ;百位显示2
mov sjqw,#1 ;千位显示1
abc: lcall display ;调用显示子程序
ljmp abc ;循环显示
;74HC595显示程序,使用RS1=1,RS0=0的1区
display: PUSH ACC ;保存ACC
push psw
clr rs1
setb rs0 ;使用第一区工作寄存器 mov dptr,#xstab
mov a,sjgw ;取得数据
movc a,@a+dptr ;提取字模
acall dsout ;调用送出子程序
clr gw
acall ds1ms ;调用显示1ms延时程序 setb gw
mov a,sjsw
movc a,@a+dptr ;提取字模
acall dsout ;送出
clr sw
acall ds1ms ;显示1ms
setb sw
mov a,sjbw
movc a,@a+dptr ;提取字模
acall dsout ;送出
clr bw
acall ds1ms ;显示1ms
setb bw
mov a,sjqw
movc a,@a+dptr ;提取字模
acall dsout ;送出
clr qw
acall ds1ms ;显示1ms
setb qw
pop psw
POP ACC ;出栈
ret ;返回调用
;---送出循环----------
dsout:
mov r0,#8 ;8位
dloop: rlc a ;高位在前
mov dat,c ;送出1位
setb clk
clr clk
djnz r0,dloop ;循环8次
setb lat ;
clr lat ; 锁存
RET
;---显示延时----------
ds1ms: mov r1,#10
ds1lo: mov r2,#100
djnz r2,$
djnz r1,ds1lo
ret ;延时返回
;显示字表(共阴)
xstab: DB 3FH,06H,5BH,4FH ;"0","1","2","3"
DB 66H,6DH,7DH,07H ;"4","5","6","7"
DB 7FH,6FH,77H,7cH ;"8","9","A","B"
DB 39H,5eh,79h,71h ;"C","D","E","F"
end
2、设计一个模拟路口交通灯的程序,P0.0红灯、P0.1为黄灯、P0.2为绿灯,按键S1启动,在数码管上显示倒计时。

30秒红灯;3秒黄灯;30秒绿灯。

之后全部熄灭。

再按下S1,再重复一次。

程序调试成功,当场演示,并写入实验报告。

相关文档
最新文档