当前位置:首页 » 编程语言 » 红外传感器的c语言程序
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

红外传感器的c语言程序

发布时间: 2022-03-31 09:01:29

㈠ 人体感应开关的c语言程序

人体感应开关有微波感应开关,有人把红外的感应开关也称为人体感应开关,你是用在什么地方,起到什么样的功能,人体感应开关只是提供一个开光量信号,负载接灯具的话,就是人体感应开关了,负载接其他的话,又是另外一个称呼,

㈡ c程序怎么把红外传感器采回来的数数字量存到数组里

a[i]=n%10;
i++;
这两句可以写成一句话
a[i++]=n%10;

printf("%d \n",a[i]);
主要是这句错了,因为i没有变,加一个for循环
但是打印出来时反序的
但是用这个更好一些
while(i--)
printf("%d \n",a[i]);

㈢ 热释电红外传感器C语言源程序

你想做的是流量计呀?

㈣ 请问一对红外对射传感器在plc编程中如何编写程序

对射型红外线光电开关,在有光on无光off,或者有光off无光on,只需把这个开关量信号给plc的输入,plc就采集到信号,这个过程是不用编程的,是根据采集到的信号再进行编程的。
望采纳。。。。。。

㈤ C51红外测距的C语言程序

给楼主建议: 去 我的领地 5d6d 的 proteus 论坛看看那里有很多 仿真实例,包括仿真图 和 源码

㈥ 请教红外对管计数的C语言程序

//思路主要是red1对外面的红外计数,red2对里面的红外计数,通过比较
//二者大小可以知道是进人还是出人,另外要是有人站了一下又出去,
//red1就会比red2大2,可以判断出教室里人数没变。

#include<reg51.h>
int renshu;//教室里人数
int red1;//计数
int red2;//计数

int0()
{
red1++;
}

int1()
{
if(red1==red2+1){renshu++;}
elseif(red1==red2-1){renshu--;}
elseif(red1=red2+2){red1=red1-2;}
elseif(red1=red2-2){red2=red2-2;renshu--;}
else{;}
red2++;
}

main()
{
red1=0;red2=0;renshu=0;
while(1)//在这里你可以添加显示程序什么的
{
;
}

}
//程序没调试,不过思路应该没问题,你把格式再规范话一下,没带书,关于中断的格式我忘了

㈦ 用C语言编写一个红外发送和接收的程序

给你一段430单片机遥控器解码的程序吧,也就是接收部分
毕竟世界太现实只能这么帮你
#ifndef _IR_
#define _IR_

char t0,t1,t2;

uchar IR;
void DelayIR()
{
uint i=130;
while(i--);
}
void init_port2(void)
{
P2DIR&=~BIT0;
P2SEL&=~BIT0;
P2IES|=BIT0;
P2IE|=BIT0;
}
#pragma vector=PORT2_VECTOR
__interrupt void PORT2_ISR(void)
{
char CounterIR;
P2IES&=~BIT0;
if(P2IFG&BIT0)
{
P2IFG&=~BIT0;
}
CounterIR=0;
while(!(P2IN&BIT0))
{
DelayIR();
CounterIR++;
}

if(CounterIR>85)
{
if(CounterIR<95)
{
t1++;
for(char k=0;k<17;k++)
{
CounterIR=0;
while((P2IN&BIT0)&&(CounterIR<50))
{
DelayIR();
CounterIR++;
}
CounterIR=0;
while((!(P2IN&BIT0))&&(CounterIR<10))
{
DelayIR();
CounterIR++;
}
}
for(char j=0;j<8;j++)
{
CounterIR=0;
while((P2IN&BIT0)&&(CounterIR<25))
{
DelayIR();
CounterIR++;
}
IR<<=1;
if(CounterIR>11)
IR|=BIT0;
CounterIR=0;
while((!(P2IN&BIT0))&&(CounterIR<10))
{
DelayIR();
CounterIR++;
}
}

if((IR!=0xff)&&(IR!=0x00))
{
if(!(flag&dataflag))
{
if(IR==0x22)
{
flag|=runflag;
}
else
{
Tar[0]=Tar[1];
Tar[1]=Tar[2];
Tar[2]=Tar[3];
Tar[3]=Tar[4];
switch (IR)
{
//case 0x22 : flag|=runflag;break;
case 0x68 : Tar[4]=0;flag|=dataflag;break;
case 0x30 : Tar[4]=1;flag|=dataflag;break;
case 0x18 : Tar[4]=2;flag|=dataflag;t2++;break;
case 0x7a : Tar[4]=3;flag|=dataflag;break;
case 0x10 : Tar[4]=4;flag|=dataflag;break;
case 0x38 : Tar[4]=5;flag|=dataflag;break;
case 0x5a : Tar[4]=6;flag|=dataflag;break;
case 0x42 : Tar[4]=7;flag|=dataflag;break;
case 0x4a : Tar[4]=8;flag|=dataflag;break;
case 0x52 : Tar[4]=9;flag|=dataflag;break;
default : break;
}
}
}
}
IR=0;
}
}
for(int m=0;m<250;m++)
DelayIR();
P2IES|=BIT0;
}
#endif

㈧ 单片机红外线接收的程序谁有(C语言程序的)

//采用24MHz晶振
unsigned char inf_dat,inf_old,inf_num,inf_time,inf_run,inf_run_time;

void int_t1(void) interrupt 3 {
TH1=-0x5;
time++;
s001++;
if ((++inf_run_time)>150) {inf_run=0;inf_run_time=0;}
if (inf_num==0) inf_time=0;
else if (inf_num<11) inf_time++;
}

/* 红外线超时 */
void int_t0(void) interrupt 1{
inf_old=0;
inf_num=0;
inf_time=0;
}

/* 红外线低电平时间 */
void int_e0(void) interrupt 0 {
unsigned char i;
TR0=0;
if (TH0<11) { //判断是否间隔波形
if (inf_num>3) { //前面三个波形是相同的,忽略不计
if (TH0<4) i=0; else i=1; //根据低电平的长短处理
inf_old|=i;inf_old<<=1; //利用inf_old的8个位来纪录波形
} else inf_old=0; //前面三个波形
} else inf_num=0; //如果是把计数器清零
TH0=TL0=0;
TR0=1;
inf_run_time=0;
if ((++inf_num)>11) { //接收到的计数器大于11(一个红外线信息的个数)
if ((inf_time>24) && (inf_time<28)) { //接收到11个波形后判别总时间
if ((++inf_run)>250) inf_run=250; //总时间符合,连续按下标志加一
if ((inf_run==1) || (inf_run>10)) inf_dat=inf_old;
//按下键第一次有效,之后没效,连续10个后有效,表示连按键
}
inf_old=0;
inf_num=0;
}
}

void main(void) {
TMOD=0x19;EA=1;ET1=1;TR1=1;ET0=1;
EX0=1;IT0=1;TH1=-5;
}

㈨ 基于三个循迹传感器(分辨黑白线) 三个红外传感器 写出一个分循迹避障的c语言程序, 有人会吗

首先设定一个黑白的阈值,
如果左黑,中黑,右白,则右转;
如果左黑,中白,右黑,则直行;
如果左白,中黑,右黑,则左转。
(如果左黑,中黑,右黑,则停止)

㈩ 如何用C语言编程将红外传感器的返回值在数码管上用0和1显示

#include<reg52.h>
sbit wei1=P3^0;
sbit wei2=P3^1;
unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
unsigned char Data[8]; //存储显示值的全局变量
void Delay(unsigned int t); //函数声明
main()
{
unsigned char num=0;
unsigned int j;
while(1)
{
Data[1]=DuanMa[num/10];
Data[0]=DuanMa[num%10];
num++;
if(num==100) //用于显示0~99
num=0;
for(j=0;j<5;j++)
{ wei1=0;
wei2=1;
P2=Data[1];
Delay(5000);
wei1=1;
wei2=0;
P2=Data[0];
Delay(5000);
}
}
}
void Delay(unsigned int t)
{
while(--t);
}
用的共阴极数码管,p2口接数码管数据输入端,p3.0和p3.1接使能端
我用proteus仿真了一下,个位总是闪,很是郁闷,不知是何原因,但你可以参考一下,找到原因了可以告诉我一声,谢谢!