我刚刚看了一些关于单片机的知识,第一个就是关于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就是好方法了。本质上延时都是运行时间相乘运行次数。
关键字:单片机 延时闪烁
引用地址:
单片机的延时闪烁
推荐阅读最新更新时间:2024-03-16 13:51
瑞萨发布血糖仪的V850微控制器展示平台
支持大量软件功能,同时还能将移动行业标准医疗器械的电池寿命最大化 2011年8月9日 日本东京讯 —高级半导体解决方案厂商瑞萨电子株式会社(TSE:6723,以下简称“瑞萨电子”)宣布推出基于瑞萨电子V850节能型微控制器(MCU)的Continua演示平台,以及已经通过Continua认证的血糖代理软件。该平台实现了Continua健康联盟(Continua Health Alliance)的规定,展示了V850 MCU如何确保电池寿命长效使用的能效等级和全面增强的软件功能。由于血糖仪之类的医疗器械要求具有符合Continua指南要求的连接功能,高能效的V850 MCU具备350uA/DMIPS的高性能,具备高达1MB Fla
[单片机]
基于MSP430F133的电子镇流器综合测试仪
引言 电子节能灯是走进千家万户的产品,提高它的品质对于提倡节能的现代化建设有重要意义,对于生产企业则是增强产品竞争力的必由途径,电子节能灯实现节能的主要原理是以电子镇流器代替传播电感镇流器,提高电子节能灯品质最重要的是要保证电子镇流器的品质,我校受企业的委托研制了本综合测试仪,用于生产过程中的分析,测试电子镇流器的性能。 1 电子镇流器主要测试项目 电子镇流器原理可以简化为图1所示的电路,影响电子镇流器性能的主要指标有:启动阶段的预热灯管电压,预热灯丝电流和预热时间,稳定后的灯管电压、灯管电流、灯丝电流、振荡频率、输入电流、输入功率和功率因素,为此须放置传感器采集输出端的灯管电压,灯丝电流,阴极电路和振荡频率,采集输入端的功
[测试测量]
基于AVR单片机设计的加热控制系统
1 引言 温度是工业生产中主要的被控参数之一,与之相关的各种温度控制系统广泛应用于冶金、化工、机械、食品等领域。文中介绍的文化测量及加热控制系统以 ATmega8型AVR系列单片机为核心部件,通过对系统软件和硬件设计的合理规划,发挥单片机自身集成众多系统级功能单元的优势,在不减少功能的前提下有效降低了硬件成本,系统操控简便。实验证明该温控系统具有很高的可靠性和稳定性。 2 系统结构及控制算法 2.1系统总体结构 温度测量及加热系统控制的总体结构如图1所示。系统主要包括现场温度采集、实时温度显示、加热控制参数设置、加热电路控制输出、与上位机串行通信和系统核心ATmega8型单片机等。 温度采集电路以模拟电压形式将现场温度传至单片机。
[单片机]
单片机ATmega8读取165串入的拨码开关程序
/***********74HC165并入串出例子程序************/ // 单片机 ATmega8读取165串入的拨码开关地址 // // 晶振:内部1M // // Author:wanghu // // AVRGCC @2008.6.1 // /**********************************************/ #include avr/io.h #include util/delay.h /**********定义位操作的位移宏 by wanghu********/ #define setb
[单片机]
NE555+74LS90+74LS08分频器的单片机频率计仿真与源码
有分频器NE555计数器芯片+74LS90与74LS08电路构成,然后信号送入单片机的T1脚进行检测与数码管显示 频率计仿真原理图如下 单片机源程序如下: #include reg52.h #include intrins.h typedef unsigned char u8; typedef unsigned int u16; typedef unsigned long int u32; #define shumag P2 #define gongy P1 sbit RED_KHZ=P0^1; sbit Blue_HZ=P0^0; sbit fengmingqi=P0^7; unsigned char code
[单片机]
使用AVR微控制器Atmega16连接伺服电机的方法
伺服电机广泛用于需要精确控制的场合,例如机器人、自动机械、机械臂等。然而,伺服电机的范围不仅限于此,并且可以用于许多应用中。要了解伺服电机的基础知识,理论和工作原理,请阅读论坛的其他内容。 在本篇文章中,我们将使用Atmel Studio 7.0将Micro Servo Motor伺服电机与Atmega16 AVR微控制器连接起来。伺服电机的额定工作电压为4.8-6V。我们可以通过应用脉冲或PWM信号来控制其旋转角度和方向。请注意,伺服电机无法完全旋转360度,因此可以在不需要连续旋转的情况下使用。旋转角度为0-180度或(-90) - (+ 90)度。 所需的组件 ● SG90 Tower Pro微型伺服电机 ● A
[单片机]
STC89单片机+TM1638超级秒表程序
超级秒表,具有计时功能,暂停功能,定时器功能,用起来超级好玩。 单片机源程序如下: #ifndef _TM1638_H #define _TM1638_H #include REG52.H #define DATA_COMMAND 0X40 #define DISP_COMMAND 0x80 #define ADDR_COMMAND 0XC0 //TM1638模块引脚定义 sbit DIO=P1^0; sbit CLK=P1^1; sbit STB=P1^2; //共阴数码管显示代码 unsigned char code tab ={0
[单片机]
通过利用C8051F020单片机实现立体声信号相位差电平差测试仪的设计
将LR立体声信号经频谱分析、整形及占空比检测电路进行处理,采用过零鉴相法,通过测矩形波占空比,实现相位差的测试。将LR信号用AD736专用芯片实现AC/DC转换,通过单片机编程,得到LR电平差。 在立体声播音或放音时,如果左右声道信号存在相位差和电平差,对播音或放音质量将会产生一定影响,出现声像漂移、音量减小、噪音增大和失真等故障现象。左右声道相位差电平差越大,音质也越差,严重时还会造成无音故障。 为此文中设计了立体声信号相位差电平差测试仪,只有准确测出相位差电平差,再用补偿电路进行修正,才能保证播音或放音质量,更好地满足人们欣赏到音质优美的广播或音乐的需要。 1 设计方案 如图1所示,是立体声信号相位差电平差测试仪原理方
[单片机]