编程检测 led灯闪周期 求高手帮忙编写一个程序 能够检测LED灯的闪烁周期 多谢

编程检测 led灯闪周期 求高手帮忙编写一个程序 能够检测LED灯的闪烁周期 多谢,第1张

检测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闪烁程序代码、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10099879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存