c語言控制紅外,紅外傳感器c語言編程

本文目錄一覽:

基於51單片機紅外遙控代碼(C語言)

以下文件是51單片機實現遙控解碼,通過數碼管顯示鍵碼的程序,P0口驅動數碼管段選,p2.6和p2.7為數碼管位選,接收頭連到P3.2口。此程序以通過驗證,可以直接編譯使用,另外還有一個繼電器和蜂鳴器的控制,不用可以屏蔽掉。

;********************************************************************************

;* 描述: *

;* 遙控鍵值讀取器 *

;* 數碼管顯示, P0口為數碼管的數據口 *

;* *

;********************************************************************************

;遙控鍵值解碼-數碼管顯示 *

;********************************************************************************/

#include reg51.h

#include intrins.h

void IR_SHOW();

void delay(unsigned char x);//x*0.14MS

void delay1(unsigned char ms);

void beep();

sbit IRIN = P3^2;

sbit BEEP = P3^7;

sbit RELAY= P1^3;

sbit GEWEI= P2^7;

sbit SHIWEI= P2^6;

unsigned char IRCOM[8];

unsigned char code table[16] =

{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

main()

{

IE = 0x81; //允許總中斷中斷,使能 INT0 外部中斷

TCON = 0x1; //觸發方式為脈衝負邊沿觸發

delay(1);

IRIN=1;

BEEP=1;

RELAY=1;

for(;;)

{

IR_SHOW();

}

} //end main

void IR_IN() interrupt 0 using 0

{

unsigned char i,j,k,N=0;

EA = 0;

I1:

for (i=0;i4;i++)

{

if (IRIN==0) break;

if (i==3) {EA =1;return;}

}

delay(20);

if (IRIN==1) goto I1; //確認IR信號出現

while (!IRIN) //等 IR 變為高電平

{delay(1);}

for (j=0;j4;j++)

{

for (k=0;k8;k++)

{

while (IRIN) //等 IR 變為低電平

{delay(1);}

while (!IRIN) //等 IR 變為高電平

{delay(1);}

while (IRIN) //計算IR高電平時長

{

delay(1);

N++;

if (N=30) {EA=1;return;}

}

IRCOM[j]=IRCOM[j] 1;

if (N=8) {IRCOM[j] = IRCOM[j] | 0x80;}

N=0;

}//end for k

}//end for j

if (IRCOM[2]!=~IRCOM[3]) {EA=1;return;}

IRCOM[5]=IRCOM[2] 0x0F;

IRCOM[6]=IRCOM[2] 0xF0;

IRCOM[6]=IRCOM[6] 4;

beep();

EA = 1;

}

void IR_SHOW()

{

P0 = table[IRCOM[5]];

GEWEI = 0;

SHIWEI = 1;

delay1(4);

P0 = table[IRCOM[6]];

SHIWEI = 0;

GEWEI = 1;

delay1(4);

}

void beep()

{

unsigned char i;

for (i=0;i100;i++)

{

delay(5);

BEEP=!BEEP;

}

BEEP=1;

}

void delay(unsigned char x)//x*0.14MS

{

unsigned char i;

while(x–)

{

for (i = 0; i13; i++) {}

}

}

void delay1(unsigned char ms)

{

unsigned char i;

while(ms–)

{

for(i = 0; i120; i++)

{

_nop_();

_nop_();

_nop_();

_nop_();

}

}

}

C語言怎麼寫紅外程序?實現遙控控制八個led。求程序和詳細解釋。

下面是一個用C寫的遙控器程序.能在數碼管上顯示鍵碼.

#include reg52.h

#define c(x) (x*110592/120000)

sbit Ir_Pin=P3^3;

unsigned char code Led_Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,

0xf8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //共陽極數碼顯示碼0-F.

unsigned char code Led_Sel[]={0xe,0xd,0xb,0x7};

unsigned char Led_Buf[4]; //顯示緩衝區

char Led_Index; //位選

unsigned char Ir_Buf[4]; //用於保存解碼結果

//==============================================================

//數碼管掃描

timer0() interrupt 1 using 1

{

TL0=65536-1000;

TH0=(65536-1000)/256; //定時器0設定約1000us中斷一次,用於數碼管掃描

P0=0xff;

P2=Led_Sel[Led_Index]; //位選

P0=Led_Tab[Led_Buf[Led_Index]]; //段選

if(++Led_Index3) Led_Index=0; //四個掃描完了,到第一個數碼管

}

//==============================================================

unsigned int Ir_Get_Low()

{

TL1=0;

TH1=0;

TR1=1;

while(!Ir_Pin (TH10x80)==0);

TR1=0;

return TH1*256+TL1;

}

//=============================================================

unsigned int Ir_Get_High()

{

TL1=0;

TH1=0;

TR1=1;

while(Ir_Pin (TH10x80)==0);

TR1=0;

return TH1*256+TL1;

}

//==============================================================

main()

{

unsigned int temp;

char i,j;

Led_Index=1;

TMOD=0x11;

TL0=65536-1000;

TH0=(65536-1000)/256; //定時器0設定約1000us中斷一次,用於數碼管掃描

EA=1;

ET0=1;

TR0=1;

Led_Buf[0]=0;

Led_Buf[1]=0;

Led_Buf[2]=0;

Led_Buf[3]=0; //顯示區設成0

do{

restart:

while(Ir_Pin);

temp=Ir_Get_Low();

if(tempc(8500) || tempc(9500)) continue;//引導脈衝低電平9000

temp=Ir_Get_High();

if(tempc(4000) || tempc(5000)) continue;//引導脈衝高電平4500

for(i=0;i4;i++) //4個字節

for(j=0;j8;j++) //每個字節8位

{

temp=Ir_Get_Low();

if(tempc(200) || tempc(800)) goto restart;

temp=Ir_Get_High();

if(tempc(200) || tempc(2000)) goto restart;

Ir_Buf[i]=1;

if(tempc(1120)) Ir_Buf[i]|=0x80;

}

Led_Buf[0]=Ir_Buf[2]0xf;

Led_Buf[1]=(Ir_Buf[2]/16)0xf;

Led_Buf[2]=Ir_Buf[3]0xf;

Led_Buf[3]=(Ir_Buf[3]/16)0xf; //顯示結果

}while(1);

}

單片機c語言編寫紅外遙控控制小車,按下數字2,小車啟動前進,怎麼寫?

紅外遙控小車,關鍵是小車上要有一個紅外接收頭,接收紅外遙控器發送的紅外信號。按下數字2,是單片機板上的按鍵吧,這首先必須要對所用按鍵編碼,小車接收後再解碼,這樣小車才能識別按鍵。至於小車啟動,就發送數字2的編碼即可。下圖是紅外接收頭。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/182166.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-24 06:18
下一篇 2024-11-24 06:19

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28

發表回復

登錄後才能評論