標(biāo)題:
單片機(jī)紅外通信控制繼電器源程序
[打印本頁]
作者:
xql
時(shí)間:
2017-5-6 10:59
標(biāo)題:
單片機(jī)紅外通信控制繼電器源程序
可以參考的一個(gè)程序
0.png
(45.47 KB, 下載次數(shù): 28)
下載附件
2017-5-6 18:47 上傳
/***************************************************************************
本實(shí)驗(yàn)例程是用NEC紅外線接收解碼程序(紅外線接收部分為板子配的林洋電子程序)
程序功能:
1、運(yùn)行程序,按遙控器按鍵,在數(shù)碼管上顯示相應(yīng)的控制碼(以16進(jìn)制顯示);
2、對特別的幾個(gè)鍵,有相應(yīng)的現(xiàn)象出現(xiàn):
(1)電源鍵,使繼電器工作或斷開;
(2)靜音鍵,使蜂鳴器響或不響;
(3)快進(jìn)鍵讓LED燈向右出現(xiàn)一次走馬燈現(xiàn)象;
(4)快退鍵讓LED燈向左出現(xiàn)一次走馬燈現(xiàn)象;
(5)按0~9,數(shù)碼管顯示所按的鍵號;
(6)按其它鍵,不會(huì)改變已經(jīng)按的數(shù)字鍵的顯示,表示看電視臺(tái)開關(guān)電源或靜音、快進(jìn)快退,都不會(huì)
改變臺(tái)號。
(7)其它鍵沒想好怎么以現(xiàn)有板產(chǎn)生相應(yīng)功能,所以按下后,沒有特別現(xiàn)象,只有顯示其控制碼。
******************************************************************************/
#include "reg51.h"//頭文件:
#define LED8 P2//紅外遙控功能之一是讓LED燈亮,所以要將P2口改名
sbit hwx=P3^3; //紅外接收數(shù)據(jù)引腳,也是外部中斷1的I/O口
sbit SMG_q = P1^0; //定義數(shù)碼管陽級控制腳(千位)
sbit SMG_b = P1^1; //定義數(shù)碼管陽級控制腳(百位)
sbit SMG_s = P1^2; //定義數(shù)碼管陽級控制腳(十位)
sbit SMG_g = P1^3; //定義數(shù)碼管陽級控制腳(個(gè)位)
sbit JDQ=P1^4; //繼電器
sbit Beep = P1^5 ; //蜂鳴器
code unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x8c,0xc6,0xa1,0x86,0x8e}; //共陽數(shù)碼管段值表 0-9 a-f
unsigned char ly_disdate[4]={0,0,0,0};
unsigned char ly_lhj[4],i;
bit ly_flag=1;
void display();
void delay(void);
void Delay10ms(unsigned int c)
{
unsigned char a,b;
for(c;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
void main(void)//主函數(shù)
{
EA=1;
EX1=1;
IT1=1;
TMOD=0X10;
JDQ=1;
ly_flag=0;
while(1){
if(ly_flag){
ly_flag=0;
if ((ly_lhj[2]==0x45))
{
JDQ=~JDQ;
}
if ((ly_lhj[2]==0x47))
{
Beep=~Beep;
}
if ((ly_lhj[2]==0x40))
{
LED8=0xfe;
for(i=0;i<8;i++)
{
Delay10ms(10);
LED8=LED8<<1;
}
LED8=0xff;
}
if ((ly_lhj[2]==0x43))
{
LED8=0x7f;
for(i=0;i<8;i++)
{
Delay10ms(10);
LED8=LED8>>1;
}
LED8=0xff;
}
if ((ly_lhj[2]==0x16))
{
ly_disdate[0]=0;
}
if ((ly_lhj[2]==0x0c))
{
ly_disdate[0]=1;
}
if ((ly_lhj[2]==0x18))
{
ly_disdate[0]=2;
}
if ((ly_lhj[2]==0x5e))
{
ly_disdate[0]=3;
}
if ((ly_lhj[2]==0x08))
{
ly_disdate[0]=4;
}
if ((ly_lhj[2]==0x1c))
{
ly_disdate[0]=5;
}
if ((ly_lhj[2]==0x5a))
{
ly_disdate[0]=6;
}
if ((ly_lhj[2]==0x42))
{
ly_disdate[0]=7;
}
if ((ly_lhj[2]==0x52))
{
ly_disdate[0]=8;
}
if ((ly_lhj[2]==0x4a))
{
ly_disdate[0]=9;
}
ly_disdate[2]=ly_lhj[2]/16;
ly_disdate[3]=ly_lhj[2]%16;
}
display();
}
}
void hongwai(void) interrupt 2
{
unsigned char i,ia;
TL1=0;
TH1=0;
TR1=1;
while(!hwx);
TR1=0;
if(TH1<30||TH1>40)
{
return;
}
TH1=0;
TR1=1;
while(hwx) //
{
delay();
if(TH1>22)
return;
}
TR1=0;
if(TH1<12)
return;
for(i=0;i<4;i++)
{
for(ia=0;ia<8;ia++)
{
while(!hwx);
TH1=0;
TR1=1;
while(hwx)
{
delay();
if(TH1>15)
return;
}
TR1=0;
ly_lhj[i]>>=1;
if(TH1>4)
ly_lhj[i]|=0x80;
}
}
ly_flag=1;
TF1=0;
}
void display()
{
SMG_q=0; //選擇千位數(shù)碼管(亮)
P0=table[ly_disdate[0]]; //
delay(); //
P0=0XFF; //
SMG_q=1; //(滅)
SMG_s=0; //選擇十位數(shù)碼管
P0=table[ly_disdate[2]]; //
delay(); //
P0=0XFF; //
SMG_s=1; //
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
下載:
hwx.rar
(1.54 KB, 下載次數(shù): 30)
2017-5-6 10:58 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1