历史上的今天
今天是:2025年08月16日(星期六)
2021年08月16日 | 51单片机-闪烁的LED
2021-08-16 来源:eefocus
延时是单片机入门必学的应用!
1.序
上一讲我们已经实现点亮一盏灯,但是很多时候程序的执行都是要死循环的,不能让程序像是停在那里不执行了。所以这一讲在前面的原理图基础上实现让LED2从点亮一段时间到熄灭一段时间再点亮一段时间如此循环下去,实现闪烁LED2的功能。
2.代码普及
我们知道CPU执行一条语句是很快的,如果我们这样写程序来实现灯的闪烁:
#include sbit LED2 = P0^0; sbit ADDR2 = P1^2; sbit ADDR1 = P1^1; sbit ADDR0 = P1^0; sbit ENLED = P1^4; sbit ADDR3 = P1^3; void main() { ADDR3 = 1;//使能三八译码器 ENLED = 0;// ADDR2 = 1;//************************** ADDR1 = 1;//让三八译码器的IO6输出低电平 ADDR0 = 0;//************************** while (1) { LED2=0;//点亮最右端的灯 LED2=1;//熄灭最右端的灯 } } 那我们看到的现象就是灯一直亮着,不会闪烁。原因就是执行“LED2=0;”把灯点亮之后执行“LED2=1;”去熄灭,但是这个熄灭语句只持续一瞬间就循环又开始执行“LED2=0;”了,熄灭状态的持续时间太短我们人眼也就观察不到闪烁的现象。 3.延时语句 要想实现LED2闪烁,必须让LED2被点亮持续一段时间,被熄灭持续一段时间,也就是IO端口保持低电平一段时间,接着跳变保持高电平一段时间,此时我们需要用上延时。 #include sbit LED2 = P0^0; sbit ADDR2 = P1^2; sbit ADDR1 = P1^1; sbit ADDR0 = P1^0; sbit ENLED = P1^4; sbit ADDR3 = P1^3; void main() { unsigned int i;//定义一个16位无符号整形变量 ADDR3 = 1;//使能三八译码器 ENLED = 0;// ADDR2 = 1;//************************** ADDR1 = 1;//让三八译码器的IO6输出低电平 ADDR0 = 0;//************************** while (1) { LED2=0;//点亮最右端的灯 for(i=0;i<30000;i++);//延时一段时间 LED2=1;//熄灭最右端的灯 for(i=0;i<30000;i++);//延时一段时间 } } “for(i=0;i<30000;i++);”其实就是CPU空运行让i不断相加到30000之后不满足“i<30000”的判断条件就结束这条运行代码,接着去执行下一条语句了,通过占用CPU的执行时间来达到短暂的电平保持状态,也就能让LED2亮一小段时间,接着又灭一小段时间,这样LED2在while(1)的死循环下就实现不停循环的亮灭闪烁了。 4.补充 对刚入门单片机编程的初学者来说,以前我们C语言基础上机操作的时候都是只见过别人int,char的去定义变量,而在单片机入门编程中看到的都是unsigned int,unsigned char这样定义,原因是单片机在入门的时候用的变量的取值都是0和正整数(正整数不包括0),所以才会用unsigned去定义无符号整形变量。
上一篇:51单片机-点亮LED
下一篇:51单片机-软件调试查看运行时间
史海拾趣
|
2008 电子设计 A题 原创作品 基于ARM (省二等奖内附参赛论文) 本帖最后由 paulhyde 于 2014-9-15 03:32 编辑 这可是我们8天7夜奋斗的结果哦,虽然我们得了省二等奖,但是我们能成功的运用ARM,也很满足了!~!~ 下载不了的可以留下你们的邮箱!~!~! [ 本帖最后由 歹匕示申 于 2008-12-25 14:50 编辑 ] ...… 查看全部问答> |
|
我做课程设计其中写的一个模块的程序老出错,改了很多遍仍不能用。这个模块的功能就像是电话机号码输入,计算器的数字输入差不多。 程序要求: 用10个按键控制0-9数字输入。 每次按键输入,前一个数都向前进一位,例如:输入一个5,显示00000005 ...… 查看全部问答> |
|
最近忙一个项目,时间紧迫了,可目前遇到一个严重的问题,详情是这样:我用EVC.0编一个程序来把采集的数据保存在嵌入式设备的SQLCE数据库中,但弄来弄去发现保存速度跟不上,不知道各位大侠是否知道有什么方法能实现数据库的高速保存。感激不尽啊, ...… 查看全部问答> |
|
请登陆淘宝进行详细的细节查询 淘宝地址: http://auction1.taobao.com/auction/0/item_detail-0db2-a975eaf6e989403d6987eeb2fde3c9d9.jhtml 欢迎购买. … 查看全部问答> |
|
小弟刚入道,就遇到棘手的问题,希望大家帮忙啊,谢谢! 问题如下 在Wince下 我在Form1中添加了一个PictureBox1,想在上面画个点,或者圆 结果发现连Paint()函数都没 ,郁闷;还有 CreatGraphic函数也没,该怎么办啊? 使用VB.net2005 谁能发个 ...… 查看全部问答> |




