延时是单片机入门必学的应用!

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去定义无符号整形变量。

八个led闪烁c语言程序,闪烁的LED相关推荐

  1. keil8个led灯闪烁c语言程序,简单的STM32 汇编程序—闪烁LED

    要移植操作系统,汇编是道不得不跨过去的坎.所以承接上篇的思路,我准备用汇编写一个简单的闪烁LED灯的程式.以此练习汇编,为操作系统做准备. 第一步,还是和上篇一样,建立一个空的文件夹. 第二步,因为是 ...

  2. 52单片机led灯闪烁c语言程序,单片机 LED 灯闪烁程序

    点亮 LED 小灯的程序我们第二课完成了,就是让 LED = 0.熄灭小灯的程序也很简单,就是 LED = 1.点亮和熄灭都会了,那么如果我们在亮和灭中间加个延时,反复不停的点亮和熄灭小灯,就成了闪烁 ...

  3. 单灯闪烁c语言程序,51单片机,C语言编程,控制指示灯闪烁的频率

    c51单片机,c语言编程,关于指示灯定时闪烁的. P1.0 P1.1 P1.2 P1.3上面各接有一个指示灯,P2.0接一个外接按键. 要求: 按一下按键P1.0以1Hz的频率闪烁 半周期为500ms ...

  4. led的c语言程序,单片机C语言LED灯点亮程序完全版

    <单片机C语言LED灯点亮程序完全版>由会员分享,可在线阅读,更多相关<单片机C语言LED灯点亮程序完全版(7页珍藏版)>请在人人文库网上搜索. 1.1例子1第二个灯亮#inc ...

  5. 52单片机led灯闪烁c语言程序,单片机LED灯闪烁程序

    原标题:单片机LED灯闪烁程序 点亮 小灯的程序我们第二课完成了,就是让 LED = 0.熄灭小灯的程序也很简单,就是 LED = 1.点亮和熄灭都会了,那么如果我们在亮和灭中间加个延时,反复不停的点 ...

  6. 忽明忽暗的灯闪烁c语言程序,想一瞬间变成天上忽明忽暗的云。

    原标题:想一瞬间变成天上忽明忽暗的云. 那一天我二十一岁,在我一生的黄金时代,我有好多奢望.我想爱,想吃,还想在一瞬间变成天上半明半暗的云,后来我才知道,生活就是个缓慢受锤的过程,人一天天老下去,奢望 ...

  7. 黄灯闪烁c语言程序,交通灯控制程序 需要加一个黄灯闪烁三次 求求大神

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include "reg52.h" //头文件typedef unsigned char u8;typedef unsigned i ...

  8. 黄灯闪烁c语言程序,模拟交通灯C程序,用定时器0,如何实现黄灯闪烁功能

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include sbit ADDR3 = P1^3; sbit ENLED = P1^4; bit flag1s=1; unsigned char T0 ...

  9. 中断1控制LED左移C语言程序,51单片机控制P2口8位LED灯左移C语言程序

    此程序控制P2.0~P2.7口8个LED(P2.0~P2.7)灯逐个依次点这,又从(P2.7~P2.0)这样的顺序一直到全部被点亮. #include //头文件 void delay(unsigne ...

最新文章

  1. Oracle中的系统权限管理
  2. python引用文件 mode写在后面还是前面,python3 文件操作常用mode参数用法详解
  3. Hive自定义UDF的JAR包加入运行环境的方法
  4. spring-boot-maven-plugin插件的作用
  5. pix4d怎么查看点云数据_python里怎么查看数据类型
  6. Internet Explorer 11:不要再叫我IE
  7. 打造个性化的Internet Explorer
  8. eclipse中js中文乱码问题的解决办法
  9. Android 自动化测试 常用的命令----随时更新
  10. yii2 linkpager ajax,Yii2扩展 - LinkPager 带分页大小
  11. 【MM小贴士】SAP 批次双单位 CWM 的使用演示
  12. 图片片转换成位深度为1的单色bmp照片
  13. c语言中余数恒等于1,恒等于符号怎么打就是“≡”符号在windows里怎么打出来具体到搜狗里怎么打,麻烦说细点儿...
  14. 删除联想硬盘OEM分区——最简单方法
  15. c语言字符串子串问题,C语言计算字符串子串出现的次数
  16. Linux(CentOS 7)、Windows双系统安装图文教程(超详细)适合初学者
  17. m3u8文件格式解析
  18. [中国大学Mooc]Web前端测试题
  19. 硬件工程师必须知道的芯片测试知识
  20. spring源码分析之分析入口

热门文章

  1. JAVA中的观察者模式observer
  2. git的基本使用和多人协作合并管理
  3. Csharp: create Transparent Images in winform
  4. 结对项目——数独扩展
  5. LeetCode91 Decode Ways
  6. PHP中提问频率最高的11个面试题和答案
  7. linux 挂载windows共享目录 is not a valid block device
  8. bzoj 3670: [Noi2014]动物园
  9. BZOJ 1801: [Ahoi2009]chess 中国象棋( dp )
  10. 20141113--SQL 事务