单片机原理实验指导书.docx

上传人:b****5 文档编号:12359067 上传时间:2023-04-18 格式:DOCX 页数:118 大小:753.57KB
下载 相关 举报
单片机原理实验指导书.docx_第1页
第1页 / 共118页
单片机原理实验指导书.docx_第2页
第2页 / 共118页
单片机原理实验指导书.docx_第3页
第3页 / 共118页
单片机原理实验指导书.docx_第4页
第4页 / 共118页
单片机原理实验指导书.docx_第5页
第5页 / 共118页
点击查看更多>>
下载资源
资源描述

单片机原理实验指导书.docx

《单片机原理实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机原理实验指导书.docx(118页珍藏版)》请在冰豆网上搜索。

单片机原理实验指导书.docx

单片机原理实验指导书

单片机原理实验指导书

第一章单片机系统板说明

一、概述

单片机实验开发系统是一种多功能、高配置、高品质的MCS-51单片机教学与开发设备。

适用于大学本科单片机教学、课程设计和毕业设计以及电子设计比赛。

该系统采用模块化设计思想,减小了系统面积,同时增加了可靠性,使得单片机实验开发系统能满足从简单的数字电路实验到复杂的数字系统设计实验,并能一直延伸到综合电子设计等创新性实验项目。

该系统采用集成稳压电源供电,使电源系统的稳定性大大提高,同时又具备完备的保护措施。

为适应市场上多种单片机器件的应用,该系统采用“单片机板+外围扩展板”结构,通过更换不同外围扩展板,可实验不同的单片机功能,适应了各院校不同的教学需求。

二、单片机板简介

本实验系统因为自带了MCS-51单片机系统,因此没有配置其他单片机板,但可以根据教学需要随时配置。

以单片机板为母板,并且有I/O接口引出,可以很方便的完成所有实验。

因此构成单片机实验系统。

1、主要技术参数

(1)MSC-51单片机板

板上配有ATMEL公司的STC89C51芯片。

STC89C51资源:

32个I/O口;封装DIP40。

STC89C51开发软件:

KEILC51。

2、MSC-51单片机结构

(1)单片机板中央放置一块可插拔的DIP封装的STC89C51芯片。

(2)单片机板左上侧有一个串口,用于下载程序。

(3)单片机板的四周是所有I/O引脚的插孔,旁边标有I/0引脚的脚引。

(4)单片机板与各个模块配合使用时,可形成—个完整的实验系统。

三、母板简介

主要技术参数

(1)实验系统电源

实验系统内置了集成稳压电源,使整个电源具有短路保护、过流保护功能,提高了实验的稳定性。

主板的右上角为电源总开关,当把220V交流电源线插入主板后,打开电源开关,主板得电工作。

为适用多种需要,配置了+5V,+12V,—5V电压供主板和外设需要,通过右上角的插针排和插孔输出到外设。

此外,还设有螺旋保险插孔保护实验箱。

(2)RS232接口

RS232接口通过MAX232芯片实现与计算机的串行通讯,通过接口引出信号。

(3)单片机最小系统

单片机最小系统的核心是ATMEL公司的AT89S51单片机,AT89S51右边的按键是复位键,按下时单片机复位,单片机的放两排插孔,分别是:

P1.0-P1.7,P0.0-P1.7,P3.0—P3.7,P2.0—P2.7,它们可以实现单片机实验和开发。

(4)模拟量接口

一个模拟量接口,由ICL8038产生,通过插孔引出。

(5)D/A转换器

D/A转换器由DA0832,LM324芯片组成,(8位,0-5V电压输出),对应的接口序号为:

数据信号:

D0-D7;片选信号:

/CS;读有效信号/OE。

(6)A/D转换器

A/D转换器和D/A转换器相临,主要由ADC0809组成,(8位)对应的接口序号为:

模拟输入:

IN0-IN7;基准电压:

REF+,REF-;读写信号:

/RD,/WR;输出信号:

D0——D7;检测信号:

I/0;地址锁存允许:

ALE。

(7)8位拨动开关

8位拨动开关由Kl—K8组成,每一位都有相应LED(Dl—D8)指示,当拨码开关拨上边时输出高电平,LED亮;拨下边时输出低电平,由插孔l—8输出。

(8)24位按键开关

24位按键开关位于主板中下方,由按键Kl—K24组成,有六排,第一排按下时是高电平,弹上时是低电平,由插孔1—4输出;第二排按下时是低电平,弹上时高电平,由插孔1—4输出;第三到第六排是4*4的行列式键盘;由L1—L4,H1—H4输出。

(9)静态显示数码管

静态显示区由数码管DP1—DP6组成,由插孔输出,供静态显示用。

(10)发光二极管显示区

8位红色发光二极管,高电平亮,可作为状态指示用;另一部分是交通灯,由东西南北四组红绿黄发光二极管构成,高电平亮。

(11)动态扫描显示区

系统的显示采用8位8段共阴或共阳数码管(高电平有效),所对应的接口序号为:

段码:

a,b,c,d,e,f,g,h;位选:

L1,L2,L3,L4,L5,L6,L7,L8。

(12)蜂鸣器

蜂鸣器(高电平TTL驱动)从其下方对应输入口,会产生lKHz的信号响声。

(13)继电器控制区

继电器控制区主要由KJ1—KJ3三个继电器及其驱动电路组成,高电平TTL驱动,输出接口分别为JJ1,JJ2,JJ3。

(14)数字温度计

数字温度计使用DS1302温度传感器,输出接口为SCLK、I/O、RESET。

(15)EEPROM

EEPROM(AT24C16),用来保存数据信息,接口序号为:

串行数据线:

SDA;时钟线:

SCL;写保护线:

WP。

(16)串行A/D

A/D转换器主要由MAX192组成,(8位)对应的接口序号为:

模拟输入:

IN0-IN7;片选信号:

/CS;输出信号:

DOUT;时钟信号:

SCLK;转换开始:

SSTRB。

(17)变频模块

(18)直流斩波模块

(19)红外模块

四、主要实验项目

本实验系统由于采用模块化设计,各模块之间既相互独立,又可相互组合,完成各种类型实验。

其中包括验证性基础实验,综合性、设计性、创新性实验以及研究开发性、创新性、及全国电子大赛赛前培训实验等。

以下列举了本实验系统能做的部分单片机原理课程实验及课外开放性备选实验项目。

单片机原理课程实验

实验一LED显示器指示

实验二软件延时及灯光控制实验

实验三多级外部中断实验

实验四脉冲频率的测量实验

实验五串行口扩展实验

实验六串行EEPROM的读出和写入实验

实验七8位A/D、D/A转换器的应用实验

实验八串行A/D、D/A的应用实验

实验九直流继电器的驱动及控制实验

实验十数据采集的软件抗干扰实验

实验十一密码锁控制器的设计

实验十二数字温度控制器的设计

实验十三8255扫描键盘显示实验

实验十四音乐编程实验

实验十五声光报警实验

实验十六可预置可逆计数器实验

实验十七DS1302时钟芯片的应用实验

实验十八红外通信接口实验

实验十九单片机变频调速实验

实验二十交通灯控制实验

部分备选实验项目

实验一闪烁灯

实验一模拟开关灯

实验一多路开关状态指示

实验一广告灯的左移右移

实验一广告灯(利用取表方式)

实验一报警产生器

实验一I/O并行口直接驱动LED显示

实验一按键识别方法之一

实验一00-99计数器

实验一定时计数器T0作定时应用技术

(一)

实验一动态数码显示技术

实验一4×4矩阵式键盘识别技术

实验一定时计数器T0作定时应用技术

(一)

实验一定时计数器T0作定时应用技术

(二)

实验一“叮咚”门铃

实验一数字钟

实验一ADC0809A/D转换器基本应用技术

第二章  KeilC软件使用

KeilC51软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM语言和C语言的程序设计,界面友好,易学易用。

下面介绍KeilC51软件的使用方法

进入KeilC51后,屏幕如下图所示。

几秒钟后出现编辑界

启动KeilC51时的屏幕

                   进入KeilC51后的编辑界面

 简单程序的调试

 学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。

下面通过简单的编程、调试,引导大家学习KeilC51软件的基本使用方法和基本的调试技巧。

 1)建立一个新工程

 单击Project菜单,在弹出的下拉菜单中选中NewProject选项

 

 2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51

如下图所示,然后点击保存.

 3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keilc51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定.

 4)完成上一步骤后,屏幕如下图所示

 到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。

 5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项

  

 新建文件后屏幕如下图所示

此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“SaveAs”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。

注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。

然后,单击“保存”按钮。

 6)回到编辑界面后,单击“Target1”前面的“+”号,然后在“SourceGroup1”上单击右键,弹出如下菜单

 然后单击“AddFiletoGroup‘SourceGroup1’”屏幕如下图所示

 选中Test.c,然后单击“Add ”屏幕好下图所示

 注意到“SourceGroup1”文件夹中多了一个子项“Text1.c”了吗?

子项的多少与所增加的源程序的多少相同

 7)现在,请输入如下的C语言源程序:

 #include         //包含文件

 #include

 voidmain(void)          //主函数

 {    

  SCON=0x52;

  TMOD=0x20;

  TH1=0xf3;

  TR1=1;              //此行及以上3行为PRINTF函数所必须

  printf(“HelloIamKEIL.\n”);  //打印程序执行的信息

  printf(“Iwillbeyourfriend.\n”);

  while

(1);

 }

 在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keilc51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。

程序输入完毕后,如下图所示

 8)在上图中,单击“Project”菜单,再在下拉菜单中单击“BuiltTarget”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/StopDebugSession”(或者使用快捷键Ctrl+F5),屏幕如下所示

 9)调试程序:

在上图中,单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“StopRunning”选项(或者使用快捷键Esc);再单击“View”菜单,再在下拉菜单中单击“SerialWindows#1”选项,就可以看到程序运行后的结果,其结果如下图所示

至此,我们在KeilC51上做了一个完整工程的全过程。

但这只是纯软件的开发过程,如何使用程序下载器看一看程序运行的结果呢?

10)单击“Project”菜单,再在下拉菜单中单击“

”在下图中,单击“Output”中单击“CreateHEXFile”选项,使程序编译后产生HEX代码,供下载器软件使用。

把程序下载到AT89S51单片机中。

第三章  AT89S51单片机下载器软件使用

AT89S51单片机下载器是专门用于下载程序到单片机系统中,该软件使用方便。

启动软件之后进入下面的界面(如图3.1所示):

图3.1

在上图中:

1.界面右边为操作状态显示区;

2.界面左上为下载芯片选择区,该软件支持多种芯片的程序在线下载,对系统板上的单片机AT89S51是其中一种,软件默认情况下为AT89S51单片机。

3.界面左边为在线下载的操作区,它可以提供如下的操作

(1).初始化:

启动AT89S51单片机进入ISP下载状态,若启动成功,则状态显示区就会显示如图3.2所示的文字。

否则,不成功会有“初始化失败”的字样提示。

图3.2

(2).特征字:

点击一下检测器件,会读出单片机的芯片的特征字,对于AT89S51单片机的特征字为:

1E 51 06。

(3).擦除器件:

是把单片机的内容擦除干净,即单片机内部ROM的内容全为FFH。

(4).写器件:

把代码区中的程序代码下载到单片机的内部ROM中。

注意在编程之前,要对单片机芯片进行擦除操作。

(5).效验数据:

是经过编程之后,对下载到单片机内部ROM中的内容与代码区的内容相比较,若程序下载过程中完全正确,则提示校验正确,否则提示出现错误。

那就得需要重新下载程序到ROM中。

(6).自动:

提供了从内部ROM从擦除到编程,最后到校验这三个过程。

(7).读器件:

从单片机内部ROM中读取内容到代码显示区中。

 

第四章  实验及实践课题

1.闪烁灯

1. 实验任务

如图4.1.1所示:

在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。

2. 电路原理图

图4.1.1

3. 系统板上硬件连线

把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。

4. 程序设计内容

(1).延时程序的设计方法

作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?

下面具体介绍其原理:

498*20+2*20+2=10002

如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒

机器周期微秒

MOVR6,#202个 2

D1:

MOVR7,#2482个 2       2+2×248=498 20×

DJNZR7,$2个 2×248            (498

DJNZR6,D12个   2×20=40           10002

因此,上面的延时程序时间为10.002ms。

由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。

如本实验要求0.2秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如下:

DELAY:

MOVR5,#20

D1:

MOVR6,#20

D2:

MOVR7,#248

DJNZR7,$

DJNZR6,D2

DJNZR5,D1

RET

(2).输出控制

如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。

5.

程序框图

  如图4.1.2所示

                                       

               

                 图4.1.2

6.汇编源程序

ORG0000H

START:

CLRP1.0

LCALLDELAY

SETBP1.0

LCALLDELAY

LJMPSTART

DELAY:

MOVR5,#20;延时子程序,延时0.2秒

D1:

MOVR6,#20

D2:

MOVR7,#248

DJNZR7,$

DJNZR6,D2

DJNZR5,D1

RET

END

7.C语言源程序

#include

sbitL1=P1^0;

voiddelay02s(void)//延时0.2秒子程序

{

unsignedchari,j,k;

for(i=20;i>0;i--)

for(j=20;j>0;j--)

for(k=248;k>0;k--);

}

 

voidmain(void)

{

while

(1)

{

L1=0;

delay02s();

L1=1;

delay02s();

}

}

2.模拟开关灯

1.实验任务

如图4.2.1所示,监视开关K1(接在P3.0端口上),K1拨上为高电平,拨下为低电平。

用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关拨上,L1亮,开关拨下,L1熄灭。

2.电路原理图

图4.2.1

3.系统板上硬件连线

(1).把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”      区域中的L1端口上;

(2).把“单片机系统”区域中的P3.0端口用导线连接到“八路拨动开关”区域中的K1端口上;

4.程序设计内容

(1).开关状态的检测过程

单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。

单片机可以采用JB BIT,REL或者是JNB BIT,REL指令来完成对开关状态的检测即可。

(2).输出控制

如图3所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。

5.程序框图

L1灭

图4.2.2

6.汇编源程序

ORG00H

START:

JBP3.0,LIG

CLRP1.0

SJMPSTART

LIG:

SETBP1.0

SJMPSTART

END

7.C语言源程序

#include

sbitK1=P3^0;

sbitL1=P1^0;

voidmain(void)

{

while

(1)

{

if(K1==0)

{

L1=0;//灯亮

}

else

{

L1=1;//灯灭

}

}

}

 

3.多路开关状态指示

1.实验任务

如图4.3.1所示,AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,P1.4-P1.7接了四个开关K1-K4,编程将开关的状态反映到发光二极管上。

(开关闭合,对应的灯亮,开关断开,对应的灯灭)。

2.电路原理图

图4.3.1

3.系统板上硬件连线

(1.把“单片机系统”区域中的P1.0-P1.3用导线连接到“八路发光二极管指示模块”区域中的L1-L4端口上;

(2.把“单片机系统”区域中的P1.4-P1.7用导线连接到“八路拨动开关”区域中的K1-K4端口上;

4.程序设计内容

(1.开关状态检测

对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用JB P1.X,REL或JNB P1.X,REL指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用MOV A,P1指令一次把P1端口的状态全部读入,然后取高4位的状态来指示。

(2.输出控制

根据开关的状态,由发光二极管L1-L4来指示,我们可以用SETB P1.X和CLR P1.X指令来完成,也可以采用MOV P1,#1111XXXXB方法一次指示。

5.程序框图

ACC内容送入P1口

图4.3.2

6.方法一(汇编源程序)

ORG0000H

START:

MOVA,P1

ANLA,#0F0H

RRA

RRA

RRA

RRA

ORLA,#0F0H

MOVP1,A

SJMPSTART

END

7.方法一(C语言源程序)

#include

unsignedchartemp;

voidmain(void)

{

while

(1)

{

temp=P1>>4;

temp=temp|0xf0;

P1=temp;

}

}

8.方法二(汇编源程序)

ORG00H

START:

JBP1.4,NEXT1

CLRP1.0

SJMPNEX1

NEXT1:

SETBP1.0

NEX1:

JBP1.5,NEXT2

CLRP1.1

SJMPNEX2

NEXT2:

SETBP1.1

NEX2:

JBP1.6,NEXT3

CLRP1.2

SJMPNEX3

NEXT3:

SETBP1.2

NEX3:

JBP1.7,NEXT4

CLRP1.3

SJMPNEX4

NEXT4:

SETBP1.3

NEX4:

SJMPSTART

END

9.方法二(C语言源程序)

#include

voidmain(void)

{

while

(1)

{

if(P1_4==0)

{

P1_0=0;

}

else

{

P1_0=1;

}

if(P1_5==0)

{

P1_1=0;

}

else

{

P1_1=1;

}

if(P1_6==0)

{

P1_2=0;

}

else

{

P1_2=1;

}

if(P1_7==0)

{

P1_3=0;

}

else

{

P1_3=1;

}

}

}

4.广告灯的左移右移

1.实验任务

做单一灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重复循环。

2.电路原理图

图4.4.1

3.系统板上硬件连线

把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L1-L8端口上,要求:

P1.0对应着L1,P1.1对应着L2,……,P1.7对应着L8。

4.程序设计内容

我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。

每次送出的数据是不同,具体的数据如下表1所示

P1.7

P1.6

P1.5

P1.4

P1.3

P1.2

P1.1

P1.0

说明

L8

L7

L6

L5

L4

L3

L2

L1

1

1

1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1