matlab实验二 闪烁灯

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二闪烁灯
一、实验目的
1、学习Keil软件的程序调试方法。

2、学习单片机HEX文件的下载。

3、学会KEIL C程序设计及调试,重点学会预处理命令、数据类型的定义
二、实验仪器
P4计算机、Keil软件、STC_ISP软件、实验板
三、实验内容
1、依据电路图,实现LED的闪烁,每隔0.2秒更替一次亮灭
2、按照KEIL软件的使用步骤,建立工程。

3、编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成
HEX文件。

4、用STC-ISP下载软件下载HEX文件到单片机系统。

5、运行、调试程序,观察实验结果。

四、STC-ISP下载软件的使用方法
该软件将已生成的HEX文件下载到单片机中。

具体步骤如下:
1、双击STC-ISP图标:
2、然后在“MCU Type”列表中选择单片机型号(应选择单片机板中的CPU型号),
如下图:
3、点击“Open File”按钮,找到所要下载的HEX文件,并选中,选择“打开”,
如下图:
4、选择串口的对应端口号,(根据自己的硬件连接端口)(如COM1)。

5、然后选“MaxBuad”中的波特率,也可以选默认值。

6、点击”Download/下载”,进行文件下载,如图:
7、稍等几秒,即可下载完成,如图:
五、电路原理图与实验参考程序实验板的原理图如下:
复位
电源接头
LED灯的连接图如下:
S1
S2
P10
P11
INT0
INT1
T0
P 32
P 33
P 34
独立按键
Y015Y114Y213Y312Y411Y510Y69Y7
7U15SN74HC138N
DPY.A DPY.B DPY.C DPY.D DPY.E DPY.F DPY.G DPY.DP a b
f c
g
d e DPY 117421105a
b
c d e f
g
3
dp
dp C O M
12
a b
f c
g
d e DPY a
b
c d e f
g
dp
dp C O M
9
a b
f c
g
d e DPY a
b
c d e f
g
dp
dp C O M
8
a b
f c
g
d e DPY a
b
c d e f
g
dp
dp C O M
6
U12
SM420394
V
S3
S4P 14
P 15
RO 1RE 2DE 3DI
4
VCC 8B 7A 6GND
5
U5
M AX485
C381041
2
J20RS485
R33120
R3210K
P30P31
P0012345678910111213141516
J8
CON16
W1
10K
+5V +5V
P00P01P02P03P04P05P06P07
P25P26P2712345
6
J19
HEADER 3X2
P30_3P31_3
P00_3P30_3P31_3
P00_3+5V
1. 实验一
/*****************************************************************
***
* 文件名 : 闪烁灯一.c
* 描述 : 该程序实现LED 的闪烁,每隔0.2秒更替一次亮灭。

在使用某款新单片机时,经常就用类似的闪烁灯程序来判断单片机
是否正常工作。

本程序通过软件延时,并且通过软件调试。

在“HOT-51\开发板配套资料\经典学习资料\单片机相关”下面有
KEIl 软件仿真的教程。

注:因为我们P0口LED 和数码管是公用的,LED 闪烁的同时数码
管也会闪烁。

你可以通过改变J1跳线位置然后给P3.7付低电平,让数码管不显
示。

* 创建人 : 东流,2009年8月27日
* 版本号:1.0
****************************************************************** *****/
#include<reg52.h>
#define uchar unsigned char //这里用"uchar"代替"unsigned char","uchar"用来定义无符号字符型数。

#define uint unsigned int //"uint"用来定义无符号整型数。

sbit Show_LED = P0^0; //用来声明P0.0口为程序所要控制的端口,"sbit"是KEIL专门用来声明某位IO口
/***************************************************************** ***
* 名称: Delay()
* 功能: 延时,延时时间为10ms * del。

这是通过软件延时,有一定误差。

* 输入: del
* 输出: 无
****************************************************************** *****/
void Delay(uint del)
{
uint i,j;
for(i=0; i<del; i++)
for(j=0; j<1827; j++) //这个是通过软件仿真得出的数
;
}
/***************************************************************** ***
* 名称: Main()
* 功能: 实现灯的闪烁
* 输入: 无
* 输出: 无
****************************************************************** *****/
void Main(void)
{
//P0 = 0x00; //用于灭数码管
//Delay(1);
//P3 = 0x7f; //注意J1要跳到下方才起作用,P3.7位低,数码管锁存
//Delay(1);
//P0 = 0xff; //灭所有的LED
while(1)
{
Show_LED = 0;
Delay(20); //Delay(del)中的数为延时的时间参数,延时时间为10ms * del.
Show_LED = 1;
Delay(20);
}
}
2.实验二
/***************************************************************** ***
* 文件名:闪烁灯二.c
* 描述:
* 创建人:东流,2009年8月27日
* 版本号:1.0
****************************************************************** *****/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/***************************************************************** ***
* 名称: Delay()
* 功能: 延时,延时时间为10ms * del
* 输入: del
* 输出: 无
****************************************************************** *****/
void Delay(uint del)
{
uint i,j;
for(i=0; i<del; i++)
for(j=0; j<1827; j++)
;
}
/***************************************************************** ***
* 名称: Main()
* 功能: 实现灯的闪烁
* 输入: 无
* 输出: 无
****************************************************************** *****/
void Main(void)
{
P0 = 0xff;
P2 = 0x00;
while(1)
{
/*下面四行用于控制LED每隔一个亮*/
P0 = 0xaa;
Delay(50);
P0 = 0x55;
Delay(50);
/*下面四行用于控制LED每隔一个亮*/
P0 = 0xcc;
Delay(50);
P0 = 0x33;
Delay(50);
/*下面四行用于控制LED 高四位或者低四位亮*/
P0 = 0x0f;
Delay(50);
P0 = 0xf0;
Delay(50);
/*下面八行用于控制LED的两次全亮全灭*/
P0 = 0x00;
Delay(25);
P0 = 0xff;
Delay(25);
P0 = 0x00;
Delay(25);
P0 = 0xff;
Delay(25);
Delay(200); //延时两秒
}
}
六、实验报告要求
编写程序实现LED1到LED8的顺序点亮和熄灭。

具体要求如下:
1、每次只亮一个灯。

2、亮灯的顺序是LED1到LED8循环往复。

要点:使用C语言的移位命令。

相关文档
最新文档