LED流水灯

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

实验三LED流水灯

一、实验目的

1.熟练掌握二进制、十进制和十六进制的转换方法。。

2.掌握C语言变量类型和范围,for、while等基本语句的用法。

3.了解函数的基本结构,能够独立进入程序Debug,熟练Keil软件环境的一些基本

操作。

4.将流水灯左移理解透彻后,独立完成流水灯右移操作以及流水灯先左移后右移等简

单的花样操作

二、实验内容

通过对单片机编程来实现8个LED小灯组成的流水灯左移、右移及循环移动起来,实现流水灯。

三、实验原理

3.1二进制、十进制和十六进制

逢十进位,一个位有十个值:0~9。

二进制就是逢二进位,它的一个位只有两个值:0和1,但它却是实现计算机系统的最基本的理论基础,计算机(包括单片机)芯片是基于成万上亿个的开关管组合而成的,他们每一个都只能有开和关两种状态,书写二进制数据时需加前缀0b,每一位的值只能是0或1。

十六进制就是把4个二进制位组合为一位来表示,于是它的每一位有0b0000~0b1111共16个值,用0~9再加上A~F(或a~f)表示,书写十六进制数据时需加前

我们在进行C语言编程的时候,我们只写十进制和十六进制,那么不带0x的就是十进制,带了0x符号的就是十六进制。

3.2 C语言变量类型和范围

C语言的数据基本类型分为整型、字符型以及浮点型,如图4-1

图3-1 C语言数据类型

图3-1中,三种基本类型,每个基本类型又包含了两个类型。其中字符型和整型,除了有一定的数据大小范围之外,只能表达整数。而unsigned型的又只能表达正数,要表达负数必须用signed型,表达小数,必须用浮点型。

比如上节课最后给的闪烁小灯的程序,我们用的是unsigned int i = 0;这个地方i的范围就是0~65535,我们for语句的写法,如果那个30000改成70000的话,for(i=0;i<70000;i++);大家会发现小灯会一直亮,而不是闪烁了,那理解这个问题,当然我们要来了解for语句的用法了。

这里有一个编程宗旨,就是能用小不用大。就是说定义能用1个字题的,就不定义成int,一方面节省RAM空间可以让其他变量或者中间运算过程使用,另外一方面,占空间小程序运算速度也快一些。

3.3 for循环语句

for语句不仅仅可以用来做延时,还可以用来做一些循环运算。for语句的一般形式如下:

for(表达式1; 表达式2; 表达式3)

{ (需要执行的语句);}

其执行过程是:表达式1首先执行且只执行一次;然后执行表达式2,通常都是一个用于判定条件的表达式,如果表达式2条件成立,就执行(需要执行的语句);然后再执行表达式3;再判断表达式2,再执行表达式3.....一直到表达式2不成立时,跳出循环往下执行。举个例子:

for(i = 0; i<2; i++)

j++;

for语句除了这种标准用法,还有几种特殊用法,我们上节课的闪烁小灯对for语句的用法for(i=0; i<30000; i++) ;我们没有加(需要执行的语句),这个for语句循环判断了30000次,程序执行是会用掉时间的,所以就起到了延时的作用。

还有一种写法for( ; ; ),这样写后,这个for循环就变成了死循环了,就不停的执行(需要执行的语句),和我们前边讲的while(1)的意思是一样的。那while这个语法是如何用的呢?

3.4 while循环语句

在我们单片机C语言编程的时候,每个程序我们都会固定的加一句while(1),这条语句就可以起到死循环的作用。对于while语句来说,他的一般形式是:

While (表达式)

{

循环体语句;

}

在C语言里,通常表达式符合条件,我们叫做真,不符合条件,叫做假。除了表达式外,还有常数,习惯上,我们非0的常数都认为是真,只有0认为是假。

3.5 函数的简单介绍

函数定义的一般形式如下:

函数值类型函数名 (形式参数列表)

{

函数体

}

1、函数值类型,就是函数返回值的类型。Void类型一旦省略,Keil软件会报一个警告,所以我们通常也不省。

2、函数名。可以是任何合法的标示符,但是不能与其他函数或者变量重名,也不能是关键字。

3、形式参数列表,也叫做形参,这个是函数调用的时候,相互传递数据用的。有的函数,不需要传递参数,但是那个括号是不能省略的。

4、函数体。函数体包含了声明语句部分和执行语句部分。声明语句部分主要用于声明函数内部所使用的变量,执行语句部分主要是一些函数需要执行的语句。

5、一个工程文件必须有且仅能有一个main函数,程序执行的时候,都是从main函数开始的。

3.6 Keil软件延时

C语言常用的延时办法,有以下4种

图3-2 C语言延时

图3-2是我们编程语言常用的4种延时方法,其中两种非精确延时,两种精确一些的延时。for语句和while语句都可以通过改变i的范围值来改变延时时间,但是C语言的时间都是不能通过程序看出来的。

LED小灯闪烁的程序,我们用的延时方式是for(i=0;i<30000;i++);大家如果把这里的i 改成100,下载进入单片机,会发现小灯一直亮,而不是闪烁状态,现在大家都把这个程序改一下,都改成100,然后下载观察一下现象再继续。

这里介绍一个常识。我们人的肉眼对闪烁的光线有一个最低分辨能力,通常情况下当闪烁的频率高于50Hz时,我们看到的信号就是常亮的。即,延时的时间低于20ms的时候,我们的肉眼是分辨不出来小灯是在闪烁的,可能最多看到的是小灯亮暗稍微变化了一下。要想清楚的看到小灯闪烁,延时的值必须大一点,那么如何观察延时有多长时间呢?

鼠标点Keil的Project-->Options for Target ‘Target1’,或点Target1右侧图标

,进入设置选项,如图3-3所示,

首先我们打开Target这个选项卡,找到Xtal(MHz)这个位置,这是填写进行模拟时间的晶振选项,我们单片机所配的晶振是11.0592MHz。

图3-3 Options for Target

然后找到Debug这个选项,选择左侧的Use Simulator,点击OK,如图3-4所示。

相关文档
最新文档