1年前制作的单路灯光无线遥控器,
http://bbs.mydigit.cn/read.php?tid=2046631,近来出现遥控距离越来越近,换过电池及遥控都存在这问题,使用不方便,所以重做个,也是原来的图纸,只不过无线模块用普通的,由于4个键功能都一样,所以直接用模块的VT输出脚接入单片机,其它没变,单片机程序就是个双稳态程序,程序不复杂。以下为制作的图片。
PCB是用热转印法做的。
用普通的无线模块,接收是旧的,发射器是新的。
安装好,写入单片机程序
以下为接入灯泡及电源进行测试。
本制作比较简单,电路图看旧贴,只不过把无线模块改为普通型,VT接原图纸的输入就行了,程序重新写过,就是个键盘检测及双稳态控制,以下:
#include <STC15F104.h>
#include <intrins.h>
sbit OUT=P3^4;
sbit KEY1=P3^3;
sbit KEY2=P3^2;//高为开关按下
unsigned char oldkey;
void delay(unsigned int t) //长延时程序,延时t毫秒,STC 1T单片机11.0592M晶振I值为648,22.1I值为1298,12MI值为705。
{
unsigned int i;
while(t--)
{
for(i=705;i>0;i--);
}
}
//***********************键盘扫描子程序。******************
//*********************************************************
unsigned char keyboard()//键盘扫描
{
unsigned char keyboardj;
keyboardj=0;
if(KEY1==0)
{
delay(10);
if(KEY1==0)
{
keyboardj=1;
}
}
if(KEY2==1)
{
delay(10);
if(KEY2==1)
{
keyboardj=1;
}
}
return keyboardj;
}
//************键盘控制子程序***************
void keydisphong()//主要功能是
{
unsigned char keyyy;
keyyy=keyboard();
if (keyyy!=oldkey)
{
if(keyyy==1) //
{
if(OUT==1)
{
OUT=0;
}
else
{
OUT=1;
}
}
}
oldkey=keyyy;
}
void main()
{
OUT=0;
P3M0=0x10;
KEY1=1;
WDT_CONTR=0X3d;//开看门狗,由于是长时间工作,防止死机。2S内喂狗一次。
while(1)
{
WDT_CONTR=0X3d;//开看门狗,由于是长时间工作,防止死机。2S内喂狗一次。
keydisphong();
}
}
}
[ 此帖被落叶风在2018-10-26 13:29重新编辑 ]