单片机
返回首页

单片机的延时闪烁

2015-01-15 来源:51hei

我刚刚看了一些关于单片机的知识,第一个就是关于led灯闪烁的,led灯的发光原理就是加电压,它有一个限流电阻,一个二极管,接地。不同的板子led之间的不同就是改变家的电压还是改变接地。我使用的led灯改变的是接地,即板子上已经给了电压,而我则可以改变接地电压,所以如果我给接地电压高的话,二极管就不会亮,我给低,二极管就亮。
 
         而要想实现闪烁,那就是不断的给led的接地口赋高电平,低电平,这样不断循环,就实现了闪烁。
 
         现在的关键就是停顿时间的实现,比如我想实现1s内的闪烁,就是有0.5s亮,有0.5s灭。这时就要延时函数了,因为你一闪一灭是很快的,必须加延时才能,实现这种功能。
 
         延时函数可以分为好几类,比如你自己写个延时函数如
 
void delay_long(unsigned int uiDelayLong)
 
    {
 
       unsigned int i;
 
       unsigned int j;
 
       for(i=0;i
 
       {
 
          for(j=0;j<500;j++)  //内嵌循环的空指令数量
 
              {
 
                 ; //一个分号相当于执行一条空语句
 
              }
 
       }
 
    }
 
这就是一个延时函数,然后在主程序中你运行这个函数,就会延时了。看起来好像很不错的实现了目标。可是这样会有一个后果,在执行延时函数的过程中,别的任务就不能处理了,就只能完成这一个任务,这当然就不好了。
 
         下面就有了另外一种方法,这种方法是利用主程序中的循环次数来实现延时。原理很简单,因为单片机永远是出于死循环中的,那你实现一个循环需要一定的时间吧,而且基本每次你实现循环的时间也差不了多少,那这样我就可以利用了,我统计你运行的次数,再乘上你每次运行的时间,这样不就能得到一段时间了吗?然后利用这段时间进行延时,不就能达到目标了吗?这种方法的确很棒。
 
         但真的完美吗?不足的就是每次循环究竟需要多长时间,这个需要你不断的估计,你只要往程序中加点内容,那循环时间就好变化,然后就要修改统计次数,这个过程需要一遍一遍的做,效率不高,很烦,对于后期很不好。
 
         人总是最求完美的,虽然永远做不到。下面就有人有了更好的方法了,非常完美。
 
         这个方法跟上面的原理有点类似,也是通过知道运行时间,然后通过统计运行次数来得到一段时间用于循环。想想单片机中有一个部分它的运行时间是固定的,想到了吗?没错,定时器啊!
 
         我们可以通过设置定时器来设定我们所说的运行时间,而且比较不错。TMOD的工作方式设为0X01,就是定时器1模式下的工作方式1。然后高八位TH0=0xf8,低八位TL0=0x2f,其实就是计数值为2000,65535-2000=63535,63535的十六进制值就是f82f。这样利用上面的原理,定时器每隔一段时间就会产生中断,然后在服务程序中设置一个变量,每次中断都自加一次,当达到我们设定的值时,就实现灯亮还是灯灭,然后变量清0,再继续下去,就能实现led灯的闪烁了。
 
         以上就是关于led灯闪烁的知识,硬件上原理很简单,软件上给出了三种方法实现闪烁。三种方法是不断推进的,原理或相同或不同,我是有所悟了。
 
         原理抽象为主动实现,被动实现。后面两个可以认为是接力打力,但第一种方法其实也是,cpu每运行一个指令是多长时间,然后我让它运行多少次,这两个相乘就得到我要的时间。而到了第二个时,也是每次运行时间相乘运行次数得到我要的时间,只是这次它的每次运行时间没有刻意去得到,而是利用了程序中的死循环。到了第三个,也是这样,每次运行时间利用了定时器,这样更加精确了,这到和第一种方法有点像了,只是没浪费cpu,看来不浪费cpu就是好方法了。本质上延时都是运行时间相乘运行次数。
进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 简洁的过零调功器电路设计与分析

  • 光控电路设计与分析

  • 开关电源的基本组成及工作原理

  • 比较常见的功率整流器和滤波电路

  • 基于M66T旋律发​​生器的电路图解析

  • 一个简单的红外耳机电路

    相关电子头条文章