㈠ 人體感應開關的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模擬了一下,個位總是閃,很是郁悶,不知是何原因,但你可以參考一下,找到原因了可以告訴我一聲,謝謝!