单片机原理及应用实验指导书.docx
《单片机原理及应用实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用实验指导书.docx(40页珍藏版)》请在冰豆网上搜索。
单片机原理及应用实验指导书
实验指导书
单片机原理及应用
邵阳学院
2008年10月
目录
一、单片机实验室3
1.基于“电子通信与自动化创新实验系统”的单片机实验平台3
2.基于“电子技术综合实验系统”的单片机实验平台3
二.实验项目6
实验一:
P1口输入输出实验6
实验二:
定时计数器实验8
实验三.分支程序实验10
实验四:
循环程序实验12
实验五:
外部中断实验13
实验六:
子程序实验17
实验七:
串行通信实验18
实验八:
数码显示接口电路设计20
实验九:
A/D转换实验21
实验十:
数据存储器扩展实验23
实验十一:
电子时钟设计25
实验十二:
波形发生器设计26
《单片机原理及应用》课程实验指导书
一、单片机实验室
单片机实验室由“电子通信与自动化创新实验系统”和“电子技术综合实验系统”组成,配有PROTEUS、keil-c51、WAV6000、MCS51、MCS8086等电子设计软件。
承担《单片机原理及应用》、《微机原理与接口技术》课程实验、课程设计及专业综合实验等实践教学任务。
1.基于“电子通信与自动化创新实验系统”的单片机实验平台
基于“电子通信与自动化创新实验系统”的单片机实验平台,8051的P0、P1、P2、P3口对用户开放。
MCS-51为编辑软件,支持汇编语言和C语言编辑和调试。
程序存储器的地址从4000H到5FFFH(用户在编程时应注意这一点),中断入口地址如表1,片选信号CS提供的外部数据区地址如表2。
表1:
中断入口地址表2:
外部数据存储器地址分配
中断源
中断入口地址
片选信号
外部RAM地址区域
外部中断0
4003H
CS0
CFA0H-CFA7H
定时器0
400BH
CS1
CFA8H-CFAFH
外部中断1
4013H
CS2
CFB0H-CFB7H
定时器1
401BH
CS3
CFB8H-CFBFH
串行中断
4023H
CS4
CFC0H-CFC7H
CS5
CFC8H-CFCFH
在编程时使用CSEGATADRE来确定地址,如:
CSEGAT0000H;程序复位时从0000H地址开始
LJMPSTART
CSEGAT4100H;表示以下的程序从4100H开始
2.基于“电子技术综合实验系统”的单片机实验平台
基于“电子技术综合实验系统”的单片机实验平台,以PROTEUS为电子设计软件,以综合实验系统为硬件验证,配有表3所示模块,学生在PROTEUS电子设计软件上实现电子电路的设计与仿真,再在综合实验系统中选用模块,实现电路功能的验证。
下面以一个实例来说明如何操作:
(1)设计任务
编码开关接P2口,P0口接8只发光二极管,编程实现将开关状态显示在P0口上。
(2)电路设计
从PROTEUS中选取元器件如下:
①AT89C51:
单片机、②RES、RX8、RESPACK-8:
电阻、8排阻、8上拉电阻、③CRYSTAL:
晶振、④CAP、CAP-ELEC:
电容、电解电容、⑤LED-YELLOW:
发光二极管(黄色)、⑥DIPSW_3:
拨码开关。
放置元器件、放置电源和地、连线,得到下图所示的开关状态显示电路,最后进行电气检测。
(3)程序设计
点菜单“Source→Add/RemovesourceFiles”在出现的对话框中,选择ASEM51编辑器,将汇编源程序XXX.asm输入到文本,然后保存文件。
再点菜单Source→BuildALL编译汇编源程序,生成目标代码文件XXX.HEX。
ORG0000H
SJMPMAIN
MAIN:
MOVDPTR,#TABH
MOVP2,#0FFH
MOVA,P2
ANLA,#07H
MOVCA,@A+DPTR
MOVP0,A
LJMPMAIN
TABH:
DB0FEH,0FDH,0FBH
DB0F7H,0EFH,0DFH
DB0BFH,7FH
END
(4)程序加载
在编辑环境,点右键,在弹出对话框中选择编辑属性,加载XXX.HEX文件。
(5)系统仿真
启动仿真,如果系统设计没有问题,将出现仿真结果。
本例的仿真结果如下:
表3单片机实验模块
类别
模块名称
类别
模块名称
类别
模块名称
C
P
U
AT89S51模块
转换模块
12位并行A/D高速A/D
IC卡
推拉接触式IC卡读卡器及驱动
C8051F021
12位串行AD/DA
简单接触式IC卡读卡器及驱动
U-EC2
8位并行AD/DA模块
非接触式IC卡读卡器及驱动
CPLD
四位半双斜率积分A/D
显示
32*128点阵LCD及驱动
总
线
模
块
USB模块
电机驱动模块
2相4拍混合式步进电机及驱动
4个LED8*8点阵及驱动
CAN模块
3相6拍步进电机及驱动
8个LED7段数码管及4*4键盘
232模块
3相步进电机
键盘模块
7279键盘
485模块
微型PWM调速电机及驱动
8253模块
GPS模块
PWM模块
8251/8255模块
GSM模块
微型直流调压调速电机及驱动
7279串行I/O
以太网总线
红外线模块
红外传感器模块
8259中断/8279键盘中断扩展
MODEM模块
霍尔、气体传感器
其它
无线传送模块
输入输出
12入12出光藕隔离
湿敏、压力传感器模块
V/F、F/V转换模块
LED电平输入输出
温度控制模块
微型打印机及驱动
八路继电器
小温控模块
8入8出增益1/2/4/8/10倍调节
超声波、光电传感器模块
SRAM、EEPROM模块
热电偶、半导体温度传感器模块
热敏电阻、温度开关、数字温度传感器
二.实验项目
实验一:
P1口输入输出实验
1.实验目的
(1)掌握P1口同时做输入/输出口使用方法。
(2)学习数据输入、输出程序的设计方法。
2.实验内容
P1.0、P1.1作输入,P1.2、P1.3、P1.4、P1.5作输出,编程实现下表功能
输入
输出
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
0
0
0
1
1
1
0
1
1
0
1
1
1
0
1
1
0
1
1
1
1
1
1
0
3.实验原理图与方法
采用右图所示电路,用MOVA,P1指令先读出P1口的状态,然后用ANLA,#03H屏蔽高六位,保留低两位。
根据A的值,用CJNEA,#DATA,LP指令,进行判断,从而确定赋给P1口的值。
也可把开关状态和输出数据建立一个表,用指令MOVCA,@A+DPTR来查出P1的值。
4.实验设备
电子通信与自动化创新实验系统,选用8051CPU模块。
5.实验步骤
(1)按实验电路进行线路连接
(2)在MCS-51编辑环境,进行程序设计和编译
(3)下载实验程序
(4)点全速运行,改变P1.0、P1.1的状态,观察实验现象,并以表格的形式填写实验数据
(5)分析实验数据,得出实验结论,撰写实验报告。
6.程序设计
方法一:
用CJNEA,#DATA,LP指令实现
CSEGAT0000H
LJMPSTART
CSEGAT4100H
START:
MOVP1,#0FFH
LP:
MOVA,P1
ANLA,#00000011B
CJNEA,#00,LP0
SETBP1.2
CJNEA,#01,LP1
SETBP1.3
CJNEA,#02,LP2
SETBP1.4
CJNEA,#03,LP3
SETBP1.5
LJMPLP
LP0:
CLRP1.2
LJMPLP
LP1:
CLRP1.2
LJMPLP
LP2:
CLRP1.2
LJMPLP
LP3:
CLRP1.2
LJMPLP
END
方法二:
用MOVCA,@A+DPTR指令实现
CSEGAT0000H
LJMPSTART
CSEGAT4100H
START:
MOVP1,#0FFH
LP:
MOVA,P1
MOVDPTR,#4200H
ANLA,#00000011B
MOVCA,@A+DPTR
MOVP1,A
LJMPLP
CSEGAT4200H
DB0FBH,0F7H,0EFH,0DFH
END
实验二:
定时计数器实验
1.实验目的
(1)了解8051定时/计数器的结构和原理。
(2)掌握定时/计数器的设置和编程方法。
2.实验内容
P1.0~P1.7分别接发光二极管L1~L8,利用8051定时器定时,编程实现L1~L8循环点灯。
3.实验原理与方法
(1)先给A一个初值(0FEH),然后将A送住P1,则L1点亮,然后开定时器,利用查询的方法,当定时时间到,重装初值,A移位,再送P1,这样不断循环就能实现L1~L8循环点亮。
(2)定时常数的确定
设定时器工作在方式1,定时时间为0.1s
机器周期=12÷晶振频率=12/(6×10⁶)=1us
设计数初值为X,则(216-X)×1×
=0.1,可求得X=55536
化为十六进制则X=D8F0H,故初始值为TH1=D8H,TL1=F0H
(3)初始化程序
定时器初始化包括TMOD和TH、TL赋值。
定时/计数器的开关由TR决定。
4.实验设备
电子通信与自动化创新实验系统,选用8051CPU模块和实验连线。
5.实验步骤
(1)按实验电路进行线路连接
(2)在MCS-51编辑环境,进行程序设计和编译
(3)下载实验程序
(4)运行程序,观察实验现象,改变定时器初值,重新进行上述实验
(5)记录不同定时计数初值时的实验现象,并加以分析,撰写实验报告。
6.程序设计
用定时器延时,实现L1~L8循环点亮的方法主要有:
查询,中断,及查表。
下面以查询为例进行介绍。
CSEGAT0000H
LJMPSTART
CSEGAT4100H
START:
MOVA,#0FFH
CLRC
MOVTMOD,#00H
MOVTH0,#D8H
MOVTL0,#0F0H
SETBTR0
LP1:
RRCA
MOVP1,A
LP2:
JBCTR0,LP2程序流程图
MOVTH0,#D8H
MOVTL0,#0F0H
LJMPLP1
END
采用中断、查表法,学生自行研究。
实验三.分支程序实验
1.实验目的
(1)熟悉分支程序的类型及结构
(2)掌握分支程序的设计方法
2.实验内容
设变量X存放在R2中,函数值Y为R3,按照下式求Y:
X+1;X﹥20
Y=0;10≤X≤20
-1;X﹤10
3.实验原理
分支程序有下面几种类型:
分支程序以条件判断语句,决定程序的转向。
根据题目要求,先分X=10,X>10和X<10三种情况进行分析,然后再对10<X<20,X=20,X>20进行计算。
电子通信与自动化创新实验系统,选用8051CPU模块和实验连线。
4.实验步骤
(1)按实验电路进行线路连接
(2)在MCS-51编辑环境,进行程序设计和编译
(3)下载实验程序
(4)运行程序,观察实验现象,改变定时器初值,重新进行上述实验
(5)记录不同定时计数初值时的实验现象,并加以分析,撰写实验报告。
5.实验设备
电子通信与自动化创新实验系统,选用8051CPU模块和实验连线。
6.程序设计
CSEGAT0000H
LJMPSTART
CSEGAT4100H
START:
MOVA,R2
CLRC
SUBBA,#10
JCL1
MOVA,R2
CLRC
SUBBA,#21
JNCL2
MOVA,#0
SJMPL3
L1:
MOVA,#0FFH
SJMPL3
L2:
MOVA,R2
ADDA,#1
L3:
MOVR3,A
SJMP$
END
在实验过程中,改变R2的值,观察R3的变化。
实验四:
循环程序实验
1.实验目的
⑴熟悉循环程序的类型及结构
⑵掌握循环程序设计方法
2.实验内容
已知80C51单片机晶振的12MHZ,设计一个软件延时程序,延时时间为200ms
3.实验原理与方法
晶振为12MHZ的单片机一个机器周期为1us,如果采用循环方法,控制程序循环次数,就可以实现定时功能。
1ms的MT值:
(1+1+2)×1us×MT=1000usDL2:
MOVR1,#MT;1个机器周期
MT=250DL1:
NOP;1个机器周期
NOP;1个机器周期
DJNZR1,DL1;2个机器周期
4.实验步骤
(1)设计实验电路,连接实验线路
(2)在MCS-51编辑环境,进行程序设计和编译
(3)下载实验程序
(4)运行程序,观察实验现象,改变循环值,重复上述实验
(5)记录不同循环值时的实验现象,并加以分析,撰写实验报告。
5.实验设备
电子通信与自动化创新实验系统,选用8051CPU模块和实验连线
6.程序设计
程序流程如图所示,程序如下:
ORG2000H
START:
CPLP1.0
MOVR0,#200;毫秒数
DL2:
MOVR1,#MT;1个机器周期
DL1:
NOP;1个机器周期
NOP;1个机器周期
DJNZR1,DL1;2个机器周期
DJNZR0,DL2;2个机器周期
LJMPSTART
END
实验五:
外部中断实验
1.实验目的
(1)学习中断应用技术,理解中断产生的原因、中断响应、中断处理。
(2)掌握中断处理程序的编程方法。
2.实验内容
十字路口的交通指示灯,在正常情况下,按表中要求进行点亮。
当急救车到达时,两方向红灯亮10秒后,交通灯恢复以前的状态。
交通灯
开始
正常情况下交通灯运行规律
东西方向
红灯(3S)
绿灯(10S)
黄灯闪
5次
红灯
(0.2S)
红灯(10S)
黄灯闪
5次
红灯
(0.2S)
南北方向
红灯(3S)
红灯(10S)
绿灯(10S)
3.实验设备
电子通信与自动化创新实验系统,选用8051CPU模块和实验连线
4.实验原理
(1)实验线路:
用P1口接LED来模拟交通路口的红绿黄灯,用按键来模拟有急救车到来的情况。
(2)实验原理:
正常情况下,交通灯按交通规则进行显示,当有急救车通过时,将产生外部中断。
单片机响应中断后,将程序转向中断服务,等中断服务完成后再恢复原来的运行状态。
5.实验步骤
(1)设计实验电路,连接实验线路
(2)在MCS-51编辑环境,进行程序设计和编译
(3)下载实验程序
(4)运行程序,观察实验现象,改变循环值,重复上述实验
(5)记录不同循环值时的实验现象,并加以分析,撰写实验报告。
7.参考程序
NAMET5;中断控制实验
OUTPORTEQU0CFB0H;端口地址
SAVEEQU55H;save保存从端口cfa0输出的数据
CSEGAT0000H
LJMPSTART
CSEGAT4003H
LJMPINT
CSEGAT4100H
START:
SETBIT0
SETBEX0
SETBEA
MOVA,#11H;置首显示码
MOVSAVE,A;保存
ACALLDISP;显示输出
ACALLDE3S;延时3秒
LLL:
MOVA,#12H;东西路口
MOVSAVE,A
ACALLDISP
ACALLDE10S;延时10秒
MOVA,#10H;东西路口绿灯灭
MOVSAVE,A
ACALLDISP
MOVR2,#05H;东西路口黄灯闪烁5次
TTT:
MOVA,#14H
MOVSAVE,A
ACALLDISP
ACALLDE02S
MOVA,#10H
MOVSAVE,A
ACALLDISP
ACALLDE02S
DJNZR2,TTT
MOVA,#11H;红灯全亮
MOVSAVE,A
ACALLDISP
ACALLDE02S;延时0.2秒
MOVA,#21H;东西路口红灯亮,南北路口绿灯亮
MOVSAVE,A
ACALLDISP
ACALLDE10S;延时10秒
MOVA,#01H;南北路口绿灯灭
MOVSAVE,A
ACALLDISP
MOVR2,#05H;南北路口黄灯闪烁5次
GGG:
MOVA,#41H
MOVSAVE,A
ACALLDISP
ACALLDE02S
MOVA,#01H
MOVSAVE,A
ACALLDISP
ACALLDE02S
DJNZR2,GGG
MOVA,#11H;红灯全亮
MOVSAVE,A
ACALLDISP
ACALLDE02S;延时0.2秒
JMPLLL;转LLL循环
DE10S:
MOVR5,#100;延时10秒
JMPDE1
DE3S:
MOVR5,#30;延时3秒
JMPDE1
DE02S:
MOVR5,#02;延时0.2秒
DE1:
MOVR6,#200
DE2:
MOVR7,#126
DE3:
DJNZR7,DE3
DJNZR6,DE2
DJNZR5,DE1
RET
INT:
CLREA
PUSHACC;中断处理
PUSHPSW
MOVA,R5
PUSHACC
MOVA,#11H;红灯全亮,绿、黄灯全灭
ACALLDISP
DEL10S:
MOVR3,#100;延时10秒
DEL1:
MOVR2,#200
DEL2:
MOVR5,#126
DEL3:
DJNZR5,DEL3
DJNZR4,DEL2
DJNZR3,DEL1
MOVA,SAVE;取SAVE中保存数据输出到cfa0端口
ACALLDISP
POPACC;出栈
MOVR5,A
POPPSW
POPACC
SETBEA;允许外部中断
RETI
DISP:
MOVDPTR,#OUTPORT
CPLA
MOVX@DPTR,A
RET
END
实验六:
子程序实验
1.实验目的
(1)掌握主程序和子程序之间的调用、参数传递方法
(2)掌握主程序和子程序编程方法
(3)学习PROTEUS软件的使用方法
2.实验内容
在PROTEUS电子设计环境,实现直流电机的控制(要求有正、反转控制,启、停控制)。
3.实验原理
电机采用H型控制电路,单片机在程序控制下实现对H型电路的控制。
单片机不断对按键状态进行查询,当发现有键按下时,对相应的位进行置位。
系统程序通过判断位状态后决定程序走向。
正、反转,起、停均为子程序,供系统调用。
4.实验设备
PROTUES电子设计软件,电子综合实训系统,PWM直流电机模块
5.实验步骤
(1)在PROTEUS中选用元器件,设计实验电路。
(2)在PROTEUS的编程环境,进行程序设计和编译,生成HEX文件。
(3)加载HEX文件
(4)点启动,运行仿真,按不同的控制键,观察实验现象。
(5)记录实验现象,并加以分析,撰写实验报告。
6.H型实验电路
实验七:
串行通信实验
1.实验目的:
(1)掌握串行口工作方式的程序设计,掌握单片机通讯程序的编制
(2)了解实现串行通讯的硬件环境,数据格式、数据交换的协议
(3)应用PROTEUS设计软件实现串行通信的仿真
2.实验内容
在PROTEUS环境实现两块单片机之间的数据传送。
两片AT89C51单片机,工作在方式1,处于收发状态,波特率为1200,数据从P1口通过数字开关元件输入,从串行口发送。
接收数据从串行口入,通过处理后,由P2口输数码管进行显示。
编程实现A机发B机收,B机发A机收。
3.实验设备:
硬件:
电子电气技术综合实验台、80C31CPU模块、导线、个人计算机
软件:
MCS51集成开发环境、Proteus、Wave、Keil
4.实验原理
数据发送:
当数据写入发送缓冲器SUBF,发送器自动启动,数据由TXD线输出。
发送完一帧数据后,将TI标志置1,可通过查询或中断方式,来了解TI的状态,TI只能由软件复位。
数据接收:
当REN=1,单片机串口允许接收数据,串行口采样引脚RXD(P3.0)采样到引脚从1跳变到0,并得到确认为起始位后,就开始接收一帧数据。
等接收完一帧数据RI置1,可通过查询或中断方式,来了解RI的状态,RI也只能由软件复位。
5.实验电路
P1口接发送数据,数据显示接收到的数据。
6.实验步骤
(1)在PROTEUS中选用元器件,设计实验电路。
(2)在PROTEUS的编程环境,进行程序设计和编译,生成HEX文件。
(3)加载HEX文件
(4)点启动,运行仿真,改变P1的值,观察实验现象。
(5)记录实验现象,并加以分析,撰写实验报告。
7.程序框图
ORG0000H
LJMPMAIN
ORG0023H
LJMPINS
ORG0030H
MAIN:
MOVSP,#60H
MOVSCON,#50H
MOVTMOD,#20H
MOVTL1,#0E6H
MOVTH1,#0E6H
SETBEA
SETBES
SETBTR1
MOVP1,#0FFH
LP0:
MOVA,P1
MOVSBUF,A
LP:
JNBTI,LP
CLRTI
LJMPLP0
INS:
CLREA
JNBTI,LP1
CLRTI
LJMPEXIT
LP1:
CLRRI
MOVA,SBUF
MOVP2,A
EXIT:
SETBEA
RETI
END
实验八:
数码显示接口电路设计
1.实验目的
(1)了解LED数码显示原理和电路仿真技术
(2)设计数码显示接口电路
2.实验内容
设计具有6位数码显示的接口电路,显示存放在6个连续单元中的BCD码数字,并在Proteus电子设计平台中完成仿真。
3.实验设备
硬件:
电子电气技术综合实验台、80C31CPU模块、导线、个人计算机
软件:
MCS51集成开发环境、Proteus、Wave、Keil
4.实验原理
七段LED数码管是由七段发光二极管构成,每个数码管分段码和位码,段码决定要显示的字形,位码决定该位是否显示。
6位数码管采用动态扫描方式,让数码管轮流导通,利用人眼的视觉暂留效应,实现6位数码管的显示。
6.实验电路
实验电