单片机4路遥控开关源程序
时间:01-20 14:50 阅读:680次
*温馨提示:点击图片可以放大观看高清大图
简介:在这里和大家分享一个单片机4路遥控开关源程序。
用的是带解码芯片的那种315m的遥控模块,所以单片机只需要用io来检测模块输出的电平即可:
#include "reg52.h"
#define ucahr unsigned char
#define uint unsigned int
uint i=0,j=0,a=0,b=0;
sbit switch1=P2^0;
sbit switch2=P2^1;
sbit switch3=P2^2;
sbit switch4=P2^3;
sbit led1=P1^4;
sbit led2=P1^5;
sbit led3=P1^6;
sbit led4=P1^7;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void led()
{
led1=1;
delay(300);
led1=0;
led2=1;
delay(300);
led2=0;
led3=1;
delay(300);
led3=0;
led4=1;
delay(300);
led4=0;
}
void main(void)
{
led();
while(1)
{
P1=0xff; //P1口设置为输入状态 先全部写1
i=P1;
i=i&0x0f;
switch(i)
{
case 0x04://如果是0x04,则代表无线遥控器的按键A按下,执行命令
i++;
if((i%2)==0)
{
led1=0;//开关1指示灯关闭
switch1=1;//开关1关闭
}
else
{
led1=1;//
switch1=0;//开关1打开
}
case 0x01://如果是0x01,则代表无线遥控器的按键b按下,执行命令
j++;
if((j%2)==0)
{
led2=0;//开关2指示灯关闭
switch2=1;//开关2关闭
}
else
{
led2=1;//
switch2=0;//开关2打开
}
case 0x08://如果是0x08,则代表无线遥控器的按键C按下,执行命令
a++;
if((a/2)==0)
{
led3=0;//开关3指示灯关闭
switch3=1;//开关3关闭
}
else
{
led3=1;//
switch3=0;//开关3打开
}
case 0x02://如果是0x02,则代表无线遥控器的按键d按下,执行命令
b++;
if((b/2)==0)
{
led4=0;//开关4指示灯关闭
switch4=1;//开关4关闭
}
else
{
led4=1;//
switch4=0;//开关4打开
}
break;
default:led();
}
}
}