因为准备期末考试,停更了一个月,今天回老家开始继续学习~~~~~~
有了前两个代码的经验,我们第三个LED流水灯就容易完成了!
首先我们先打开keil,点击新建工程项目
新建一个文件夹
点击进去,文件名写project
点击保存,选择器件,输入AT89C52搜索出来,选择它点击OK
弹出一个窗口,点击否
左栏点击添加新项目
选择C文件,命名main,点击添加
此时已经创建了一个main.c文件
先插入一个头文件#include <REGX52.H>
然后把点亮一个灯的程序写上
再调用一个让灯闪烁起来的函数
以下就是Delay500ms函数的定义:
怎么定义让灯闪烁起来的函数?
这个上一节已经讲过了,可以看看上一篇(让LED闪烁起来)
接下来写出一个流水灯程序:
完整的代码如下:
点击编译,0错误,0警告
然后点击左上角这个图标
再次点击编译(一定要编译一下,要不然不生成Hex文件!),下栏提示创建好了一个Hex文件
选择,点击打开
下载
重启板子就能看到LED以500ms为间隔在向左移动
成功!
但是,假如我们想要把500ms改成200ms或者100ms等等情况,如果每次都要改变很多处的数字是不是很麻烦?
接下来我们可以升级一下代码。
我们重新建立一个文件,名字叫做1-4流水灯Plus
在1-4的文件里新建一个工程project
保存
新建项目
选择C文件,创建main.c文件
空白处右击insert一个头文件#include <REGX52.H>
然后我们要改造一下Delay500ms函数,我们想要延时多少毫秒就是多少毫秒,而不是每次想要延时多少毫秒都要生成新的延时函数
我们先在STC上面定义一个延时1ms的延时函数,点击复制代码
我们改造一下这个函数
给它传个参数过去,类型是unsigned int
我们在函数定义里面增加一个while循环
这样我们就能保证传过来几毫秒就延时几毫秒了
点击编译无错误。
然后我们就把前面写的流水灯代码复制粘贴过来,把Delay500ms函数名改成Delay1ms,实参我们可以假设传个500过去。
完整的代码如下:
点击编译无错误,创建Hex文件,再点击编译
再STC上面打开Hex文件,然后下载程序,重启板子,看效果
功能和前面Delay500ms函数一样
成功!
那如果我们想要让流水灯更快,可以把实参改为100
点击编译,下载,重启板子,可以看到流水灯比之前运行得更快了!
我们也可以把流水灯的间隔改成不一样的,比如前两个500,后面是100
编译,下载,重启板子,看看效果
这时我们发现前两个运行的慢,后面的就变快了。
成功!