单片机实验指导书C语言范文Word格式文档下载.docx
- 文档编号:22148891
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:62
- 大小:789.47KB
单片机实验指导书C语言范文Word格式文档下载.docx
《单片机实验指导书C语言范文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书C语言范文Word格式文档下载.docx(62页珍藏版)》请在冰豆网上搜索。
实验一实验板使用,KeilC51软件使用6
实验二单片机控制LED灯点亮12
实验三模拟开关灯16
实验四单片机控制数码管实验21
实验五中断系统应用实验25
实验六LED数码管的动态驱动29
实验七定时器/计数器使用32
实验八数字电子钟36
实验九矩阵键盘识别实验37
实验十自动演奏乐曲41
实验十一综合实验交通信号灯控制器的设计45
实验十二教学板自检程序设计46
实验十三综合实验:
数据采集—火灾报警装置的软硬件设计47
附录:
实验教学板电路原理图48
实验一实验板使用,KeilC51软件使用
1.熟悉单片机实验板、KeilC51软件使用
二、实验说明
本实验介绍实验板的组成、KeilC51软件使用以及烧录软件的使用。
通过该实验学生可以了解单片机编程、调试方法。
三、实验内容及步骤
1.启动PC机,安装好KeilC51软件以及烧录软件,用串口线连接计算机与实验板(USB线提供电源)。
2.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着建立源程序,编译无误后,全速运行程序。
3.可把源程序编译成可执行文件,用烧录器烧录到89芯片中。
四、Keilc软件使用说明
1、打开程序:
双击程序
2、新建工程:
Project→NewProject→保存工程→选择CPU(一般选ATMEL公司的AT89S51)
-17-
3、设置工程:
右击
→Optionsfor‘Target1’→
→选择CreateHEX
(输出HEX文件)。
-18-
4、新建源文件:
选File→New→输入、编辑源程序→保存
(汇编源程序:
文件名.asm;
C源程序:
文件名.c)
5、为工程添加源文件:
在Project出口File页上单击文件组,选择AddFilestoGroup‘SourceGroup1’选项,选择你的源文件和文件类型,然后点击ADD,再点击close。
-19-
6、编译:
点击
,或右击Target1→BuildTargetF7,就可对源程序进行编译。
当程序有语法错误时,会在输出窗口(OutputWindows)中显示错误信息和警告信息,修改编译成功后会生成HEX文件。
7、下载、调试:
编译成功后,用在线烧录程序将.HEX文件下载到单片机内部ROM中运行,在运行过程中若发现错误要重新修改程序,并编译后再下载运行。
五、烧录软件的使用
1、打开在线烧录程序
2、选择MCU类型(STC89C51RC)
1、点击
,打开工程目录下的hex文件
2、选择端口(一般是COM1)
3、点击Download烧录程序
4、打开实验板上的电源(如果烧录的时候出现问题,点击stop)
注意:
5、6两步骤的顺序不能颠倒!
即在点击Download之前要先关掉实验板上的电源。
实验二单片机控制LED灯点亮
1.进一步熟悉编程和程序调试
2.学习P1口的使用方法
3.学习延时子程序的编写和使用
(1)输出控制。
如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;
当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;
我们可以使用SETBP1.0指令使P1.0端口输出高电平,使用CLRP1.0指令使P1.0端口输出低电平。
(2)延时子程序的设计方法
作为单片机的指令的执行时间是很短的,数量达微秒级,因此,如果我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?
下面具体介绍其原理:
石英晶体为12MHz,因此,1个机器周期为1微秒
机器周期微秒
MOVR6,#202个机器周期 2
D1:
MOVR7,#2482个机器周期 2×
20
DJNZR7,$2个机器周期 2×
248×
20
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
MOVR6,#20
D2:
MOVR7,#248
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
C语言延时子程序如下:
voiddelay02s(void)//延时0.2秒子程序
{
unsignedchari,j,k;
for(i=20;
i>
0;
i--)
for(j=20;
j>
j--)
for(k=248;
k>
k--);
}
三、实验步骤及参考例子
实验步骤说明:
本实验需要用到单片机最小应用系统。
用P1口做输出口,程序功能使发光二极管点亮。
1.用串行数据通信线连接计算机与实验板,用USB给实验板提供电源
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,输入源程序(参考程序1),进行编译,直到编译无误。
生成hex文件。
5.通过STC-ISP下载软件,将hex文件下载到实验板内,观察发光二极管显示情况。
参考例子:
(1)点亮板子上的第一个灯D0
(2)让第一个灯闪烁
四、参考程序
(一)适用于mini80E实验板
1)
#include<
reg52.h>
voidmain()
{
P1=0xfe;
2)
#defineuintunsignedint
#defineucharunsignedchar
delay();
while
(1)
{P1=0xfe;
P1=0xff;
voiddelay()
uintx,y;
for(x=100;
x>
x--)
for(y=600;
y>
y--);
(二)适用于自制最小系统实验板
(1)
#include<
voidmain(void)
{P2=0x00;
P2=0x10;
P0=0xfe;
(2)
voiddelay(void);
while
(1)
{P2=0x10;
//P2=0x00;
P0=0xff;
}
voiddelay(void)
{intx,y;
for(x=600;
for(y=100;
y--);
六、实验内容
请在keil环境下编写以下程序:
1)点亮最后一个LED(或者任意一个LED,或者任意几个LED)
2)让点亮的LED闪烁
3)点亮板子上的D0、D2、D4、D6灯,与D1、D3、D5、D7灯交替闪烁
4)设计出流水灯程序,从D7—D0或从D0-D7
实验三模拟开关灯
1.实验目的
2.学习独立按键的使用方法
2.实验说明
如果系统只需几个按键,可直接采用I/O线构成单个按键电路,各个按键之间相互独立,一根线上的按键状态不会影响其他输入线上的工作状态,又称独立式键盘接口电路。
检测是否有键闭合,如有键闭合,则去除键抖动,判断键号并转入相应的按键处理。
编写单片机的键盘检测程序时,一般在检测按下时加入去抖延时,检测松手时就不用加了。
3、参考例子
1)通过四个按键来控制LED灯的显示情况:
S1:
D0点亮
S2:
D1点亮
S3:
D2点亮
S4:
D3点亮
4、参考程序
(一)适用于自制实验板
REG51.H>
ucharflag;
ucharkey_down;
sbitLED2=P0^0;
sbitLED3=P0^1;
sbitLED4=P0^2;
sbitLED5=P0^3;
/****************************/
voiddelay(uintk)
{
uintdatai,j;
for(i=0;
i<
k;
i++)
{for(j=0;
j<
121;
j++)
{;
}}
}
/**********************************/
ucharscan_key(void)
uchartemp;
temp=P3;
returntemp;
/***********************************/
voidmain(void)
key_down=0;
P3=0xf7;
P2=0x10;
P0=0xff;
while
(1)
{
if((P3!
=0xf7)&
&
(key_down==0))
{
delay(20);
if((P3!
{
flag=scan_key();
key_down=1;
switch(flag)
case0xe7:
LED2=~LED2;
break;
case0xd7:
LED3=~LED3;
case0xb7:
LED4=~LED4;
case0x77:
LED5=~LED5;
default:
break;
}
if(P3==0xf7)
}
(二)适用与mini80E板
P3=0xff;
if(P3!
=0xff)
{delay(20);
if(P3!
=0xff)flag=scan_key();
elseflag=0;
switch(flag)
case0xfe:
P1=0xfe;
case0xfd:
P1=0xfd;
case0xfb:
P1=0xfb;
case0xf7:
P1=0xf7;
或者
include<
sbitLED2=P1^0;
sbitLED3=P1^1;
sbitLED4=P1^2;
sbitLED5=P1^3;
P1=0xff;
=0xff)&
if(P3==0xff)
5、实验内容
1)8个按键分别对应8盏led灯的亮灭(针对自制教学板)
2)通过四个按键来控制LED灯的显示情况:
D0-D3点亮
D0-D7点亮
D0-D5点亮
实验四单片机控制数码管实验
1.掌握数码管是如何显示出字符
2.进一步掌握延时子程序的使用
二、实验原理
1.数码管两种接法
2.共阴极数码管编码
▪0x3f,0x06,0x5b,0x4f,0x66,0x6d,
▪012345
▪0x7d,0x07,0x7f,0x6f,0x77,0x7c,
▪6789AB
▪0x39,0x5e,0x79,0x71,0x00
▪CDEF无显示
请思考共阳极数码管的编码。
三、参考例子
1)让第一个数码管显示一个8字
A)对于MINI80E实验板(共阴极),数码管的选通是通过P2口控制三八译码器得到的,要让第一个数码管显示8字,那么别的数码管的位选就要关闭,即只打开第一个数码管的位选。
控制位选的P2口要输出的数据位0xf7(二进制为11110111)。
位选确定后,在确定段选,要显示的是8,那么只有dp段为0,其余段为1,所以P0口要输出0x7f(二进制01111111)。
B)对于自制实验板(共阳极),数码管的选通是通过P2口控制的。
要让第一个数码管显示8字,那么别的数码管的位选就要关闭,即只打开第一个数码管的位选。
控制位选的P2口要输出的数据位0x08(二进制为00001000)。
位选确定后,在确定段选,要显示的是8,那么只有dp段为1,其余段为0,所以P0口要输出0x80(二进制10000000)。
2)在四个数码管上显示1,2,3,4
位选:
接P2口
左边四个数码管DS3DS2DS1DS0
对应的P2口:
0xf30xf20xf10xf0
右边四个数码管DS3DS2DS1DS0
0xf70xf60xf50xf4
段选:
接P0口
(一)mini80e实验板
voidmain(void)
{
while
(1)
P2=0xf7;
P0=0x7f;
}
#include<
#defineuintunsignedint
#defineucharunsignedchar
voiddelay();
P0=0x66;
delay();
P2=0xf6;
P0=0x4f;
P2=0xf5;
P0=0x5b;
P2=0xf4;
P0=0x06;
}
voiddelay()//延时程序1
for(x=2;
for(y=112;
y--)
;
(二)自制教学实验板(共阳极数码管)
P2=0x08;
P0=0x80;
P0=0x99;
P2=0x04;
P0=0xb0;
P2=0x02;
P0=0xa4;
P2=0x01;
P0=0xf9;
五、原理图
1)用一位数码管循环显示0-9;
2)用数码管显示字母A-F;
3)交替点亮4个数码管。
(例如:
开始时在数码显示器的最右边一位上显示1个“0”字,以后每隔0.5秒将“0”字左移1位,直到最左边一位后则停止显示。
)
4)结合实验3,实现按键与数字的一一对应。
实验五中断系统应用实验
1.掌握外部中断技术的基本使用方法
2.掌握中断处理程序的编写方法
1.外部中断的初始化设置共有三项内容:
中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断触发方式设置。
中断触发方式设置一般有两种方式:
电平触发方式和脉冲(边沿)触发方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。
因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.3)引入,本实验由INT0(P3.2)引入。
2.中断控制原理:
中断控制是提供给用户使用的中断控制手段。
实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:
TCON、IE、SCON及IP。
3.中断响应的过程:
首先中断采样然后中断查询最后中断响应。
采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0或IE1置“1”;
否则继续为“0”。
所谓查询就
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 指导书 语言 范文