matlab实验二 闪烁灯.docx
《matlab实验二 闪烁灯.docx》由会员分享,可在线阅读,更多相关《matlab实验二 闪烁灯.docx(11页珍藏版)》请在冰豆网上搜索。
matlab实验二闪烁灯
实验二闪烁灯
一、实验目的
1、学习Keil软件的程序调试方法。
2、学习单片机HEX文件的下载。
3、学会KEILC程序设计及调试,重点学会预处理命令、数据类型的定义
二、实验仪器
P4计算机、Keil软件、STC_ISP软件、实验板
三、实验内容
1、依据电路图,实现LED的闪烁,每隔0.2秒更替一次亮灭
2、按照KEIL软件的使用步骤,建立工程。
3、编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。
4、用STC-ISP下载软件下载HEX文件到单片机系统。
5、运行、调试程序,观察实验结果。
四、STC-ISP下载软件的使用方法
该软件将已生成的HEX文件下载到单片机中。
具体步骤如下:
1、双击STC-ISP图标:
2、然后在“MCUType”列表中选择单片机型号(应选择单片机板中的CPU型号),如下图:
3、点击“OpenFile”按钮,找到所要下载的HEX文件,并选中,选择“打开”,如下图:
4、选择串口的对应端口号,(根据自己的硬件连接端口)(如COM1)。
5、然后选“MaxBuad”中的波特率,也可以选默认值。
6、点击”Download/下载”,进行文件下载,如图:
7、稍等几秒,即可下载完成,如图:
五、电路原理图与实验参考程序
实验板的原理图如下:
LED灯的连接图如下:
1.实验一
/********************************************************************
*文件名:
闪烁灯一.c
*描述:
该程序实现LED的闪烁,每隔0.2秒更替一次亮灭。
在使用某款新单片机时,经常就用类似的闪烁灯程序来判断单片机是否正常工作。
本程序通过软件延时,并且通过软件调试。
在“HOT-51\开发板配套资料\经典学习资料\单片机相关”下面有KEIl软件仿真的教程。
注:
因为我们P0口LED和数码管是公用的,LED闪烁的同时数码管也会闪烁。
你可以通过改变J1跳线位置然后给P3.7付低电平,让数码管不显示。
*创建人:
东流,2009年8月27日
*版本号:
1.0
***********************************************************************/
#include
#defineucharunsignedchar//这里用"uchar"代替"unsignedchar","uchar"用来定义无符号字符型数。
#defineuintunsignedint//"uint"用来定义无符号整型数。
sbitShow_LED=P0^0;//用来声明P0.0口为程序所要控制的端口,"sbit"是KEIL专门用来声明某位IO口
/********************************************************************
*名称:
Delay()
*功能:
延时,延时时间为10ms*del。
这是通过软件延时,有一定误差。
*输入:
del
*输出:
无
***********************************************************************/
voidDelay(uintdel)
{
uinti,j;
for(i=0;ifor(j=0;j<1827;j++)//这个是通过软件仿真得出的数
;
}
/********************************************************************
*名称:
Main()
*功能:
实现灯的闪烁
*输入:
无
*输出:
无
***********************************************************************/
voidMain(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
#defineucharunsignedchar
#defineuintunsignedint
/********************************************************************
*名称:
Delay()
*功能:
延时,延时时间为10ms*del
*输入:
del
*输出:
无
***********************************************************************/
voidDelay(uintdel)
{
uinti,j;
for(i=0;ifor(j=0;j<1827;j++)
;
}
/********************************************************************
*名称:
Main()
*功能:
实现灯的闪烁
*输入:
无
*输出:
无
***********************************************************************/
voidMain(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语言的移位命令。