单片机实训指导书.docx
《单片机实训指导书.docx》由会员分享,可在线阅读,更多相关《单片机实训指导书.docx(72页珍藏版)》请在冰点文库上搜索。
单片机实训指导书
单
片
机
实
训
指
导
书
编制:
胡兴志徐斌高学
目录
1对象系统3
1.1系列产品概述3
1.2装置3
1.2.1实验箱3
1.2.2微处理器模块3
1.2.3软件4
2.微处理器概述及调试方法5
2.1STC51系列单片机概述5
2.2单片机调试方法6
3.单片机实验指导部分11
3.1流水灯实验11
3.2基本指令的编程练习14
3.3旋转灯模拟17
3.4键控数码管加减显示实验20
3.5定时器控制数码显示25
3.6生产流水线模拟系统30
3.7五相步进电机的模拟控制35
3.8十字路口交通灯控制40
3.9机械手动作实验44
1对象系统
1.1系列产品概述
本设备采用西门子S7-200、S7-300、S7-400,以及三菱PLC、欧姆龙PLC、研华ADAM8000等PLC、以及单片机为核心(可根据用户要求另行选择),集可编程逻辑控制器、微处理器控制器、编程软件、工控组态软件、模拟控制实验板、微处理器仿真对象、真实工业对象等于一体。
在本装置上,可直观地进行控制器的基本指令练习、多个控制器实际应用的模拟实验及实物实验。
整个系统结构紧凑、功能多样、使用方便,既能进行验证性、设计性实验,又能提供综合性实验,可满足本科、大专及中专等不同层次的教学实验要求,还可为研究开发提供实验平台。
提供各种形式的硬件装置系统,包括墙面形式、台架形式、桌面形式、斜台箱式与普通铝合金箱式等多种形式。
产品的模块是独立的,可以任意选择安装到小型台架或大型台驾的模块类型。
甚至可以安装其他控制系统,以便进行PLC与其他设备的协同处理或联网运行。
不像其他厂家,完全由发光管组成的实验系统,而是提供了多个真实模型,包括:
小型电梯系统、小型直线机械运动控制系统、小型的旋转角度控制系统、温度控制系统、电机转速控制系统等等。
1.2装置
1.2.1实验箱
A8000B型箱式控制器实验装置由实验箱、控制器、软件、实验选件、配件等部分组成。
实验箱体为钢质喷塑箱,坚固美观。
内部有两个电路板,一个开关电源。
1.2.2微处理器模块
采用8051兼容处理器。
一般提供不少于14DI/10DO的数字量。
如果选择的模块包括模拟量,则一般提供不少于2AI/AO的模拟量。
SST51单片机可以载入兼容KEILC的监控程序。
可以支持ISP,从而节省仿真器和编程器,正适合我们的需求。
方便开发:
具有SOFTICE在片仿真功能,开发工程师不需仿真器和编程器便可开发调试产品.可实现单步、断点、全速的仿真,变量数据一目了然。
并且在片仿真解决了专用仿真器存在的-“不能仿真非标准52的特殊功能;接触不良;编程不能运行”的缺陷.
方便生产.芯片的批量编程,仅需一个芯片搞定.既不需生产部配备电脑,编程器,编程插座等生产设备,又避免了因为人为因素的选错文件,程序泄密等弊端.简单,安全,保密,易于生产管理。
编程注意:
不要试图写P3.0,P3.1,或者整体P3口写。
因为这两个端口用于与计算机通信。
由于原来的设计问题不是用于仿真模式,而连接到了I1.0,I1.1,所以这两个端口已经从硬件断开。
输入I0.0-I0.7对应P1.0-P1.7。
P3.2对应I1.2,P3.3对应I1.3,P3.4对应I1.4,P3.5对应I1.5,P3.6对应I1.6。
I1.0,I1.1不能用。
注意:
输入高电平,对应为单片机内部0,输入低电平或者断开,则单片机内部为1。
P2.0-P2.7对应Q0.0-Q0.7。
P3.6对应Q1.0,Q3.7对应Q1.1。
单片机输出高电平,则Q输出为22-24V。
低电平时0V-0.7V。
1.2.3软件
编程软件
针对各个8051的编程软件,KEILC,以及各种编译器。
实验软件
提供所有实验的参考例程,并加以详细注解,是教师教学以及学生学习的有力帮手和实验的平台。
有关软件,请参考对应的说明书。
2.微处理器概述及调试方法
2.1STC51系列单片机概述
STC89C52单片机,它是美国ATMEL公司生产的低电压,高性能的CMOS8位单片机,片内寄存器可反复擦洗,含有32个可编程双向I/O口,3个16位定时/计数器,共8个中断源。
需要指出且注意的是,单片机在系统设计时,管脚EA要始终接高电平。
因为EA接高电平时,单片机读取内部程序存储器。
当扩展有外部ROM时,读取完内部ROM后自动读取外部ROM,EA接低电平时,单片机直接读取外部ROM。
而设计中使用的STC89C52是有内部ROM的,所以此引脚始终接高电平。
2.2单片机调试方法
1:
打开KeilC51程序
,新建一个工程;
2:
保存在自己新建的文件夹中;
3:
点击保存出现CPU选择对话框,选择ATMEL系列的AT89C51;
选择AT89C51
4:
出现是否添加标准51初始代码对话框,选“否”;
5:
工程建立之后新建源程序文件,点击”File”菜单下“New”选项;
6:
保存在工程文件夹内,C程序文件后缀为”.C”,汇编程序文件后缀为“.ASM”;
7:
在文本编辑区编写源程序并保存;在SourceGroup上右击选择“AddFilesToGroup…”选项添加源文件至工程;
8:
将本实验指导书下面的实验例程复制到此文本编辑区内,点击编译。
9:
点击编译按钮,编译工程;
10:
进入目标板调试选项设置,点击“Project”菜单下“OptionsforTarget…”选项;
或者点击这个图标
11.点击Output,勾选CreateHEXFile
注意:
:
:
.最后,再点击编译按钮进行编译,看到下图位置出现creatinghexfilefrom……后,进行下面烧录步骤。
向单片机烧录程序步骤如下
12.在面板编写程序,之后点击编译,打开烧录软件
STC_ISP.
。
13.选择STC89C52RC
14.点击OpenFile/打开文件,选择要烧录的HEX文件。
15.点击Download/下载,给单片机进行复位(断电再给电!
!
!
)。
16.此时如果显示下载OK,则程序成功烧录到单片机内部,此时可在实验板看到程序执行效果。
3.单片机实验指导部分
3.1流水灯实验
一、实验目的
1、熟悉单片机实验装置。
特别是电平高低与输入输出的关系。
2、熟悉编程软件操作。
3.熟悉烧录软件的使用。
二、实验步骤
1、通过防转叠插锁紧线与单片机的主机相应的输入输出插孔相接。
(I为输入点,Q为输出点。
钮子开关和按动按钮是输入设备,模拟开关量的输入;LED2指示灯是输出负载,用以模拟输出负载的通与断。
)
2、在编程软件keilc中编写基本指令练习程序,并通过STC-ISP软件烧录进单片机。
3.在单片机中运行程序,并观察效果。
三、输入输出分配
输入后直接送输出。
可以连接线路,观察输入输出的对应关系。
序号
面板符号
输出点
0
R0
Q0.0
1
R1
Q0.1
2
R2
Q0.2
3
R3
Q0.3
4
R4
Q0.4
5
R5
Q0.5
6
R6
Q0.6
7
R7
Q0.7
四、参考程序(c语言)
#include//此文件中定义了51的一些特殊功能寄存器
#include
sbitI00=P1^0;
sbitI01=P1^1;
sbitI02=P1^2;
sbitI03=P1^3;
sbitI04=P1^4;
sbitI05=P1^5;
sbitI06=P1^6;
sbitI07=P1^7;
//sbitI10=P3^0;
//sbitI11=P3^1;
sbitI12=P3^2;
sbitI13=P3^3;
sbitI14=P3^4;
sbitI15=P3^5;
sbitQ00=P2^0;
sbitQ01=P2^1;
sbitQ02=P2^2;
sbitQ03=P2^3;
sbitQ04=P2^4;
sbitQ05=P2^5;
sbitQ06=P2^6;
sbitQ07=P2^7;
sbitQ10=P3^6;
sbitQ11=P3^7;
voiddelayms(unsignedcharms)
//延时子程序
{
unsignedchari;
while(ms--)
{
for(i=0;i<120;i++);
}
}
main()
{
unsignedcharLED;
LED=0xfe;
while
(1)
{
P2=~LED;
if(LED==0x00)
{LED=0xfe;}
delayms(250);
LED=LED<<1;//循环右移1位,点亮下一个LED"<<"为左移位
}
}
五、实验步骤
1、按照输入和输出两个配置表,将单片机的输入输出与相应面板符号的插孔用连接线连好;
2、按照输入输出配置,参照参考程序,编写实验程序;
3、下载编写程序到单片机,运行程序;
4、观看实验效果。
3.2基本指令的编程练习
在基本指令的编程练习实验区完成本实验。
一、实验目的
1、熟悉单片机实验装置。
特别是电平高低与输入输出的关系。
2、熟悉编程软件操作。
二、实验步骤
1、通过防转叠插锁紧线与单片机的主机相应的输入输出插孔相接。
(I为输入点,Q为输出点。
钮子开关和按动按钮是输入设备,模拟开关量的输入;LED2指示灯是输出负载,用以模拟输出负载的通与断。
)
2、在编程软件中编写基本指令练习程序,并烧录到单片机中运行。
3、在单片机中运行程序,动作相应的输入设备,观察能够正确输入输出。
三、输入输出分配
输入后直接送输出。
可以连接线路,观察输入输出的对应关系。
序号
输入点
面板编号
输出点
面板编号
0
I0.0
P0
Q0.0
Q0
1
I0.1
P1
Q0.1
Q1
2
I0.2
P2
Q0.2
Q2
3
I0.3
P3
Q0.3
Q3
4
I0.4
P4
5
I0.5
P5
6
I0.6
P6
7
I0.7
P7
四、程序代码
#include
#defineHIGH1
#defineLOW0
sbitI00=P1^0;
sbitI01=P1^1;
sbitI02=P1^2;
sbitI03=P1^3;
sbitI04=P1^4;
sbitI05=P1^5;
sbitI06=P1^6;
sbitI07=P1^7;
//sbitI10=P3^0;
//sbitI11=P3^1;
sbitI12=P3^2;
sbitI13=P3^3;
sbitI14=P3^4;
sbitI15=P3^5;
sbitQ00=P2^0;
sbitQ01=P2^1;
sbitQ02=P2^2;
sbitQ03=P2^3;
sbitQ04=P2^4;
sbitQ05=P2^5;
sbitQ06=P2^6;
sbitQ07=P2^7;
sbitQ10=P3^6;
sbitQ11=P3^7;
//初始化函数
voidinit()
{
I00=HIGH;
I01=HIGH;
I02=HIGH;
I03=HIGH;
I04=HIGH;
I05=HIGH;
I06=HIGH;
I07=HIGH;
//I10=HIGH;
//I11=HIGH;
I12=HIGH;
I13=HIGH;
I14=HIGH;
I15=HIGH;
Q00=LOW;
Q01=LOW;
Q02=LOW;
Q03=LOW;
Q04=LOW;
Q05=LOW;
Q06=LOW;
Q07=LOW;
Q10=LOW;
Q11=LOW;
}
//主函数
voidmain()
{
init();//思考实际I0口电平与单片机内部电平关系,验证基本输入输出逻辑关系。
while
(1)
{
Q00=I00&I01;
Q01=I02|I03;
Q02=~(I04|I05);
Q03=~(I06&I07);
}
}
五、实验步骤
1、按照输入和输出两个配置表,将单片机的输入输出与相应面板符号的插孔用连接线连好;
2、按照输入输出配置,参照参考程序,编写实验程序;
3、下载编写程序到单片机,运行程序;
4、观看实验效果。
验证逻辑输入输出关系。
3.3旋转灯模拟
在旋转灯模拟系统区完成本实验。
一、实验目的
1.通过对工程实例的模拟,熟练地掌握单片机的编程和程序调试方法;
2.进一步熟悉单片机的I/O连接;
3.熟悉单片机I/O的具体应用。
二、控制要求
程序启动后,以C1为起点逆时针每隔1s点亮一排发光管,一周后以1s顺时针关闭一排发光管。
三、输入/输出分配
(一)输出:
序号
名称
面板符号
程序符号
输出点
0
C1
C1
QB0
Q0.0
1
C2
C2
Q0.1
2
C3
C3
Q0.2
3
C4
C4
Q0.3
4
C5
C5
Q0.4
5
C6
C6
Q0.5
6
C7
C7
Q0.6
8
C8
C8
Q0.7
四、参考程序
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitI00=P1^0;
sbitI01=P1^1;
sbitI02=P1^2;
sbitI03=P1^3;
sbitI04=P1^4;
sbitI05=P1^5;
sbitI06=P1^6;
sbitI07=P1^7;
//sbitI10=P3^0;
//sbitI11=P3^1;
sbitI12=P3^2;
sbitI13=P3^3;
sbitI14=P3^4;
sbitI15=P3^5;
sbitQ00=P2^0;
sbitQ01=P2^1;
sbitQ02=P2^2;
sbitQ03=P2^3;
sbitQ04=P2^4;
sbitQ05=P2^5;
sbitQ06=P2^6;
sbitQ07=P2^7;
sbitQ10=P3^6;
sbitQ11=P3^7;
voidDelayMS(uintx)
{
uchart;
while(x--)
{
for(t=120;t>0;t--);
}
}
voidmain()
{
uchari;
P2=0x01;
for(i=7;i>0;i--)
{
P2=_crol_(P2,1);
DelayMS(150);
}
for(i=7;i>0;i--)
{
P2=_cror_(P2,2);
DelayMS(150);
}
}
五、实验步骤
1、按照输入和输出两个配置表,将单片机的输入输出与相应面板符号的插孔用连接线连好;
2、按照输入输出配置,参照参考程序,编写实验程序;
3、下载编写程序到单片机,运行程序;
4、观看实验效果。
3.4键控数码管加减显示实验
在LED数码显示实验区完成本实验。
一、实验目的
1、通过对工程实例的模拟,熟练地掌握单片机的编程和程序调试方法。
2、进一步熟悉单片机的I/O连接。
3、熟悉数码显示指令的应用。
二、控制要求
按启动按钮后,由八组LED发光二极管模拟的八段数码管开始加数显示:
显示次序是0、1、2、3、4、5、6、7、8、9,再返回初始显示0,并循环不止。
如果按下保持按钮,当前显示的状态将会减数显示,每次减一。
按
如果按下停止按钮,将会清零显示。
三、输入输出分配
(一)输入:
序号
名称
面板符号
程序符号
输入点
0
加计数
START
E00
I0.0
1
减计数
KEEP
E01
I0.1
2
清零
STOP
E02
I0.2
(二)输出:
序号
名称
面板符号
程序符号
输出点
0
A
A
QB0
Q0.0
1
B
B
Q0.1
2
C
C
Q0.2
3
D
D
Q0.3
4
E
E
Q0.4
5
F
F
Q0.5
6
G
G
Q0.6
7
DP
DP
Q0.7
数字
HGFEDCBA
16进制
0
00111111
3FH
1
00000110
06H
2
01011011
5BH
3
01001111
4FH
4
01100110
66H
5
01101101
6DH
6
01111101
7DH
7
00000111
07H
8
01111111
7FH
9
01101111
6FH
四、参考程序
/*按键控制数码管加减显示实验*/
/*I00I01I02分别接在STARTKEEPSTOP.Q00--Q07分别接在A--DP.
说明功能:
START键加数,KEEP键减数,STOP键清零。
*/
#include
#include
#defineHIGH1
#defineLOW0
sbitI00=P1^0;
sbitI01=P1^1;
sbitI02=P1^2;
sbitI03=P1^3;
sbitI04=P1^4;
sbitI05=P1^5;
sbitI06=P1^6;
sbitI07=P1^7;
//sbitI10=P3^0;
//sbitI11=P3^1;
sbitI12=P3^2;
sbitI13=P3^3;
sbitI14=P3^4;
sbitI15=P3^5;
sbitQ00=P2^0;
sbitQ01=P2^1;
sbitQ02=P2^2;
sbitQ03=P2^3;
sbitQ04=P2^4;
sbitQ05=P2^5;
sbitQ06=P2^6;
sbitQ07=P2^7;
sbitQ10=P3^6;
sbitQ11=P3^7;
bitC;//全局变量
unsignedlongreg=0;
unsignedcharcodeseg[]={
0x3F,/*0*/
0x06,/*1*/
0x5B,/*2*/
0x4F,/*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D,/*6*/
0x07,/*7*/
0x7F,/*8*/
0x6F,/*9*/
0x77,/*A*/
0x7C,/*b*/
0x39,/*C*/
0x5E,/*d*/
0x79,/*E*/
0x71,/*F*/};
unsignedchari;
//初始化函数
voidinit()
{
I00=HIGH;
I01=HIGH;
I02=HIGH;
I03=HIGH;
I04=HIGH;
I05=HIGH;
I06=HIGH;
I07=HIGH;
//I10=HIGH;
//I11=HIGH;
I12=HIGH;
I13=HIGH;
I14=HIGH;
I15=HIGH;
Q00=LOW;
Q01=LOW;
Q02=LOW;
Q03=LOW;
Q04=LOW;
Q05=LOW;
Q06=LOW;
Q07=LOW;
Q10=LOW;
Q11=LOW;
}
//晶振12MHz时,大约延时j*10ms
voiddelay_10ms(unsignedintj)
{
unsignedinti;
while(j--)
{
for(i=0;i<767;i++)
{
_nop_();
}
}
}
voidbutton()
{
if(I00==LOW)//启动按键
{
delay_10ms
(1);//延时再检测,去抖动
if(I00==LOW)i++;//加一
while(!
I00);//释放按键才退出按键识别
}
if(I01==LOW)//保持按键
{
delay_10ms
(1);//延时再检测,去抖动
if(I01==LOW)//如果大于0,则减一
{
if(i==0){i=16;}
i--;
}
while(!
I01);//释放按键才退出按键识别
}
if(I02==LOW)//停止按键
{
delay_10ms
(1);//延时再检测,去抖动
if(I02==LOW)i=0;//清零
while(!
I02);//释放按键才退出按键识别
}
}
//主函数
voidmain()
{
init();
i=0;
while
(1)
{
if(i>=0&&i<=15)
{
button();//从这里加入按键识别
P2=seg[i];//显示当前数值,
}
else
{
i=0;
}
}
}
五、实验步骤
1、按照输入和输出两个配置表,将单片机的输入输出与相应面板符号的插孔用连接线连好;
2、按照输入输出配置,参照参考程序,编写实验程序;
3、下载编写程序到单片机,运行程序;
4、观看实验效果。
修改程序后让数码管每次加减2.
3.5定时器控制数码显示
在LED数码显示实验区完成本实验。
一、实验目的
1、通过对工程实例的模拟,熟练地掌握单片机的编程和程序调试方法。
2、进一步熟悉单片机的I/O连接。
3、熟悉数码显示指令的应用。
二、控制要求
按启动按钮后,由八组LED发