检测LED闪烁周期是什么意思,就是LED自由闪烁,单片机不控制LED,仅用单片机检测它的周期吗?如果这样应该需要用到相对的器件吧,检测光的,记录LED两次发光,间隔时间就是它的周期了,如果可以,还可以检测LED电压变化,检测LED电压变化,检测电压变化的周期也就是LED闪烁的周期。我简单写一个检测LED电压的程序吧,检测光源还涉及到光敏器件,比较复杂。
#include<reg52h>
sbit led_in=P3^4; //利用计数器记录电压变化次数
usigned int num;
usigned T_led; //周期
void init()
{
TMOD=0X25; //T0方式一计数,T1方式2定时
TL1=55;
TH1=55; //定时200-55us=200us,中断一次
num=5000; //200us5000=1s
TR0=1;
TR1=1;
EA=1;
}
void test_led()
{
T_led=1/(TH0256+TL0); //定时1S,LED闪烁次数TH0256+TL0
}
void main()
{
init();
while(1);
}
void T1_p()interrupt 3
{
num--;
if(num<=0)
{
num=5000;
TR0=0;//关计数器,开始计算LED周期
test_led();
}
}
由于没有在板子上测试,程序应该还是有问题的,不过大概框架是这样了,这也只是其中一种方案,其实这样的东西方案会比较多的,你可以选一种简单的方案。
#include <reg52h> //包括一个52标准内核的头文件
#define uchar unsigned char
/主函数/
void timer0();
void main() // 主程序
{
TMOD=0x01; //定时器0工作方式1
EA=1;
ET0=1; //定时器0中断
TR0=1; //启动定时器0
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
while(1); //程序循环
}
/定时器0中断/
void timer0() interrupt 1
{
uchar t;//定义变量
TF0=0;//定时器清0
t++; //中断一次累加1
if(t==20) //预置值,溢出20次就是1秒钟,晶振12MHZ
{
t=0;
P3=~P3; //反转LED灯的亮灭
}
}
//
以上就是关于编程检测 led灯闪周期 求高手帮忙编写一个程序 能够检测LED灯的闪烁周期 多谢全部的内容,包括:编程检测 led灯闪周期 求高手帮忙编写一个程序 能够检测LED灯的闪烁周期 多谢、求51单片机定时LED闪烁程序代码、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)