单片机实验指导书机电专业.docx

上传人:b****3 文档编号:27284425 上传时间:2023-06-28 格式:DOCX 页数:16 大小:171.31KB
下载 相关 举报
单片机实验指导书机电专业.docx_第1页
第1页 / 共16页
单片机实验指导书机电专业.docx_第2页
第2页 / 共16页
单片机实验指导书机电专业.docx_第3页
第3页 / 共16页
单片机实验指导书机电专业.docx_第4页
第4页 / 共16页
单片机实验指导书机电专业.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

单片机实验指导书机电专业.docx

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

单片机实验指导书机电专业.docx

单片机实验指导书机电专业

 

“单片机应用技术”

实验指导书

本课程实验前要预习实验内容,读懂范例程序,并按实验要求准备程序流程图并编制C51程序

本课程实验报告要求

1、实验要求

2、实现控制要求的硬件电路原理图

3、程序流程图

4、课上要求完成的程序清单(加注释)

5、实验遇到问题及解决

6、实验评价

实验一单片机开发环境的建立

一、实验目的:

1、熟悉V51/L伟福仿真系统及KeilC开发环境;

2、建立单片机最小系统概念、学习P0口的使用方法;

3、学习C51程序的编写方法。

二、实验要求:

P0口做输出口,接八只发光二极管,编写程序,控制发光二极管的点亮状态。

1、八只LED管L1-4亮,L5-8灭;1秒后L1-4灭,L5-8亮。

依此循环------。

2、八只LED管从L1~L8依次循环点亮,每个LED点亮的延时时间为2秒。

三、实验设备:

1、V51/L伟福仿真器一套;

2、μp51s学习开发板一块;

3、微机一台套及Keil开发软件,USB通讯线一根;电源线两根。

四、实验电路:

1、单片机最小系统电路:

单片机的正常工作,是在以建立单片机最小系统的条件下实现的。

单片机最小系统包括电源电路、时钟电路、复位电路、存储器选择电路四部分。

典型电路如下图所示:

2、发光二极管输出电路:

本实验板的P0端口接了8个发光二极管,这些发光二极管的负极通过一个排电阻接到P0端口各引脚,而正极接到正电源端,发光二极管点亮的条件是P0口相应的引脚为低电平,即如果P0口某引脚输出为0,相应的灯亮,如果输出为1,相应的灯灭。

五、练习范例程序:

#include"reg51.h"//51单片机头文件

typedefunsignedcharuchar;//数据类型说明

typedefunsignedintuint;

sbitP0_0=P0^0;//输出端口定义

voiddelayms(uint);//延时函数定义

voidmain(void)//主函数

{

while

(1)//无限循环体

{

P0_0=!

P0_0;//P0.0状态取反

delayms(1000);//延时1s

}

}

voiddelayms(uintj)//1ms延时函数

{uchari;//字符型变量i定义

while(j--)

for(i=0;i<121;i++);//1ms延时

}

实验前读懂范例程序,实现的功能?

画出流程图。

六、程序说明:

1)数据类型说明typedefunsignedcharuchar;typedefunsignedintuint,即为系统固有数据类型定义个别名。

这样在之后的编程中,就可以用uchar代替unsignedchar,用uint代替unsignedint来定义变量,

2)1ms延时函数的延时计算说明

在系统晶振为12MHz时,一个机器周期时间长度为12/12MHZ=1μS

循环结构“for(i=0;i<121;i++);”的执行时间约1ms,通过改变循环次数,可得到不同时间的延时。

七、实验步骤:

1、检查仿真头在μp51s实验板CPU芯片座上插好、插座扳手位于锁紧位置(实验过程严禁用手触摸仿真头电路表面);打开仿真器开关,开启实验板开关;

2、运行桌面Keil软件;

3、在Keil环境下建立项目并输入范例程序,编译无误后运行查看执行结果;

4、熟悉程序运行及调试方法,理解单片机程序的运行机制。

具体操作详见桌面“KEILC软件使用说明2016”。

5、按实验要求编程,并调试成功。

提示:

由右向左的循环(左循环)可以有多种方法实现,如指令“<<”或函数“_crol_(a,b)”实现。

实验二数码管显示实验

一、实验目的:

1、了解八段数码显示数字的原理、学习LED显示接口技术;

2、进一步了解V51/L伟福仿真系统及KeilC开发环境。

二、实验要求:

本实验用1位LED数码管,段选信号接P0口,位选信号接P2口的第0位:

1、循环显示0~9,每隔2秒显示数加1,字形码放在程序存储器内;

2、顺序显示自己身份证号码,每位停留显示1秒,数据更新时灭0.5秒。

三、实验设备:

1、V51/L伟福仿真器一套;

2、μp51s学习开发板一块;

3、微机一台套及Keil开发软件,USB通讯线一根;电源线两根。

四、实验原理与电路:

共阳型LED显示器

单片机的P0口和P2口构成了8位LED数码管驱动电路,这里LED数码管采用了共阳型,其数码管的笔段(即对应的abcdefgh)引脚是二极管的负极,与P0口相接,所有二极管的正极连在一起构成公共端,即该位数码管的位选端,对于这种数码管的驱动要求在位选端提供电流,为此,使用了PNP型三极管作为位选端的驱动,共用8只三极管,每只三极管的发射极连在一起,接正电源端;基极则通过限流电阻分别接P2.0—P2.7。

集电极分别向8只数码管供电。

由此可以判断出:

段选P0口送低电平有效,位选(COM端)因集电极需高电平,则P2.0-2.7口应送低电平有效。

硬件连线对应的字形码:

表2-1

0

1

2

3

4

字形码

C0H

F9H

A4H

B0H

99H

5

6

7

8

9

不显示

字形码

92H

82H

F8H

80H

90H

FFH

五、练习范例程序:

#include//51单片机头文件

#defineucharunsignedchar//数据类型说明

#defineuintunsignedint

ucharcodedisplay[]=

{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

//数码管段码0-9

voiddelayms(uintms)//1ms延时函数

{uchari;//字符型变量k定义

while(ms--)

for(i=0;i<121;i++);//1ms延时

}

voidmain(void)//主函数

{uchark;//字符型变量k定义

P0=0xff;//端口初始化

P2=0xff;

while

(1)//无限循环体

{P2=0xfe;//送位码

for(k=0;k<10;k++)

{P0=display[k];//送段码

delayms(1000);//延时1s

}

}

}

实验前熟悉硬件电路原理图,读懂范例程序,并画出流程图。

六、实验内容:

1、检查实验板CPU芯片座上的仿真头;打开仿真器开关、开启实验板开关;

2、运行桌面Keil软件;

3、在Keil环境下建立项目并输入范例程序,编译无误后运行查看执行结果;

4、按实验要求编程,并调试成功。

 

实验三键盘显示实验

一、实验目的:

1、了解键盘电路工作原理;掌握独立键盘接口电路的程序编写方法;

2、学习键盘显示综合运用的程序处理流程与编制方法。

二、实验要求:

P3.2、P3.3分别接AN1、AN2两按钮开关,数码管位选范围P2.0—P2.7。

AN1按下,点亮1位数码管显示0,再按则关显示;在数码管点亮状态下,按AN2一下则显示值加1,若加至10则显示回0。

三、实验设备:

1、V51/L伟福仿真器一套;

2、Up51s学习开发板一块;

3、微机一台套及Keil开发软件,USB通讯线一根;电源线两根。

四、实验电路(数码管显示电路见实验二):

五、实验说明:

单个键盘查询式扫描程序流程:

独立式键盘处理要点:

1、有键按下,相应输入为低,否则为高。

通过这样可以判断按下什么键;

2、在判有键按下后,为防止由于键盘抖动而引起误操作,要有5—10ms的延时。

3、由于程序执行时间很快,在键盘处理时要考虑按下后到抬起的时段控制,应保证每按一次键,只处理一次。

六、练习范例程序:

AN1按下,数码管显示0;再按一下,关显示;依此循环…

#include"reg51.h"

typedefunsignedcharuchar;

typedefunsignedintuint;

sbitK1=P3^2;//定义键端口

sbitP2_0=P2^0;//定义位控码

voiddelayms(uint);

voidmain(void)

{

P0=0xc0;//端口初始化

P2=0xff;

while

(1)

{

if(K1==0)//判键按下?

delayms(10);//延时去抖

if(K1==0)//判键按下?

{

while(!

K1);//等待键抬起

P2_0=~P2_0;//位控状态改变

}

}

}

voiddelayms(uintj)//1ms延时

{

uchark;

while(j--)

{

for(k=0;k<121;k++);

}

}

七、实验操作方法:

1、检查实验板CPU芯片座上的仿真头;打开仿真器开关、开启实验板开关;

2、运行桌面Keil软件;

3、在Keil环境下建立项目并输入范例程序,编译无误后运行查看执行结果;

4、按实验要求编程,并调试成功。

5、提示:

调试查询判键功能:

采用单步运行无法捕捉按键信息,可使用“设置断点”方法,将断点设置在键盘处理的首个语句处,程序若能执行到断点处,说明判键模块准确无误,之后键盘处理部分可使用单步运行来调试。

实验四外部中断控制实验

一、实验目的:

1、掌握外部中断原理,学习中断处理程序的编写方法;

2、熟悉用仿真器调试程序的方法。

二、实验要求:

P3.2接AN1按钮开关,数码管位选P2.0—P2.7任取1位。

初始点亮1位数码管显示0;AN1每按一下,显示值加1,若加至F则显示回0。

三、实验设备:

6、V51/L伟福仿真器一套;

7、Up51a学习开发板一块;

8、微机一台套及Keil开发软件,USB通讯线一根;电源线两根。

四、实验原理及电路:

(见实验二和三)

五、实验说明:

51单片机的P3.2、P3.3引脚为外部中断信号输入端口。

将独立按键AN1一端连接外部中断0引脚P3.2,另一端接地,可模拟外部脉冲的产生(按键动作过程存在抖动的特点,编程时可忽略)。

AN1的按键动作作为INT0的中断请求,用中断服务程序完成计数功能。

六、练习范例程序:

初始点亮1位数码管显示0;AN1每按一下,显示值加1,若加至10则显示回0。

#include//51单片机头文件

#defineucharunsignedchar//数据类型说明

#defineuintunsignedint

ucharcodedisplay[]=

{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

//数码管段码0-9

ucharcount=0;

voidEX0_INT()interrupt0//INT0中断函数

{

count++;

if(count==10)count=0;

}

voidmain(void)//主函数

{

P0=0xff;//端口初始化

P2=0xfe;

//外部中断初始化

IT0=1;//触发信号类型为边沿触发

EA=1;//开中断

EX0=1;

while

(1)//无限循环体

{

P0=display[count];//送段码

}

}

实验前读懂程序,画出流程图。

七、实验操作方法:

1、检查实验板CPU芯片座上的仿真头;打开仿真器开关、开启实验板开关;

2、运行桌面Keil软件;

3、在Keil环境下建立项目并输入范例程序,编译无误后运行查看执行结果;

4、按实验要求编程,并调试成功。

提示:

调试程序对于中断程序功能模块而言,用“单步”运行无法实现进入中断程序的操作,只能用“设置断点”方法。

在中断程序首句处设置断点并全速运行程序(具体操作见“KEILC软件使用说明2016”),若能执行至断点处,说明外部中断初始设置正确。

可观察程序执行到断点处相关的寄存器如何变化。

 

实验五定时器实验

一、实验目的:

2、学习51单片机内部定时器的使用和编程方法;

3、学习掌握中断处理程序的编写方法;

3、熟悉用仿真器调试程序的方法。

二、实验要求:

以下控制要求定时时间均用系统定时器实现:

1、用1位LED数码管实现循环显示0~9,每隔2秒显示数加1;

2、用2位LED数码管稳定显示“12”,位选信号接P2口的第0、1位;

三、实验设备:

9、V51/L伟福仿真器一套;

10、Up51a学习开发板一块;

11、微机一台套及Keil开发软件,USB通讯线一根;电源线两根。

四、实验原理及电路:

(同实验二)

五、实验说明:

1、关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。

内部计数器在单片机中主要有定时器和计数器两个功能。

本实验使用的是定时器。

2、与定时器有关的控制寄存器有工作方式寄存器TMOD和控制寄存器TCON。

TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。

TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

本实验采用定时器0,选用工作方式1。

3、内部计数器用作定时器时,是对机器周期计数。

每个机器周期的长度是12个振荡器周期。

定时器工作于方式1,即采用的是16位定时器。

实验系统的晶振是12MHZ,因此最大定时时间约65ms左右。

若控制要求2秒定时,可设定定时器20ms中断一次,然后对20ms中断次数计数100次,就是2秒钟。

定时常数的设置可按以下方法计算:

机器周期=12÷12MHZ=1uS(65536-定时初值)×1uS=20000us

则定时初值=45536,化为十六进制数是B1E0H,故初始值为TH0=B1H,TL0=E0H。

六、练习范例程序:

#include

typedefunsignedcharuchar;

typedefunsignedintuint;

ucharCount,k;

ucharcodedisplay[]=

{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//数码管段码0-9

voidmain(void)

{

P0=0xff;//端口初始化

P2=0xff;

Count=0x00;

k=0x00;

TMOD=0x01;//设定T0定时器选工作方式1

TH0=0x3C;//装50ms定时初值

TL0=0xB0;

EA=1;//开总中断允许

ET0=1;//开T0中断允许

TR0=1;//启动定时器T0

while

(1)

{

P2=0xfe;//送位码

P0=display[k];//送段码

}

}

voidTimer0()interrupt1

{

TH0=0x3C;//重装50ms定时初值

TL0=0XB0;

++Count;//中断计数单元加1

if(Count==20)//50ms×20=1s

{

Count=0;//清中断计数单元

++k;//段码显示表加1

if(k==10)

k=0;//段码显示表回0

}

}

实验前读懂程序,画出流程图。

七、实验操作方法:

1、检查实验板CPU芯片座上的仿真头;打开仿真器开关、开启实验板开关;

2、运行桌面Keil软件;

3、在Keil环境下建立项目并输入范例程序,编译无误后运行查看执行结果;

4、按实验要求编程,并调试成功。

提示:

调试程序对于定时器功能模块而言,用“单步”运行无法实现进入中断程序的操作,只能用“设置断点”方法。

在中断程序首句处设置断点并全速运行程序(具体操作见“KEILC软件使用说明2016”),若能执行至断点处,说明定时器设置正确。

可观察程序执行到断点处的执行时间、与定时器相关的寄存器如何变化。

 

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

当前位置:首页 > 医药卫生 > 基础医学

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

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