TypechoJoeTheme

记录美好

登录
用户名
密码
/
注册
用户名
邮箱
标签搜索

用于寻找狗狗的遥控无线报警器设计-报警遥控器

功能描述

报警遥控器采用433Mhz通信发射模块,向接收端发送应答信号,接收端也就是狗狗佩戴的接收器,接收到信号后做出相应的动作,如控制蜂鸣器鸣叫,本遥控器设置有两组功能按键,按下对应按键遥控器将发送对应的控制信号,由接收端解析。遥控器信号范围在200m半径以内。

硬件介绍

  1. STC8G1K08单片机;
  2. 蜂鸟无线,远-T1,433/315M发送模块;
  3. HX4004A无感升压IC;

原理图PCB



3D仿真

C51源码

  1. main.c
#include <STC8G.H>
#include "function.h"
unsigned char flag=0;
unsigned char timer1_num=0;
void Delay20ms()        //@11.0592MHz
{
    unsigned char data i, j, k;

    i = 2;
    j = 32;
    k = 60;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}

void Init()     //初始化函数
{
    P1M0=0;
    P1M1=0;    
    P3M0=0;
    P3M1=0;
    P5M0=0;
    P5M1=0;//GPIO配置

    EA=1;
    ES=1;
    ET0=1;
    EX0=1;
    EX1=1;
    dat = 0;
}
void main()
{
    Init();
    while(1)
    {
        while(flag)
        {
            P54 = ~P54;
            send_data(flag);
            flag=0;
        }    
    }    
}
void ex0()interrupt 0
{
    Delay20ms();
    if(P32==0)
    {
        flag = 1;    
    }    
}
void ex1()interrupt 2
{
    Delay20ms();
    if(P33==0)
    {
        flag = 2;    
    }    
}
  1. function.h
#ifndef     __FUNCTION_H__
#define     __FUNCTION_H__
#include <STC8G.H>
#include <intrins.h>


sbit dat = P1^0;//数据发送端口
void Delay4ms();        //@11.0592MHz

void Delay302us();        //@11.0592MHz
void start();//同步码
void data_low();//发送数据0
void data_high();//发送数据1
void send_data(unsigned char flag);  //发送数据函数;

#endif
  1. 列表项目
#include "function.h"
unsigned char addr_code[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
unsigned char data_code1[4]={1,0,0,1};
unsigned char data_code2[4]={1,0,1,0};
void Delay302us()        //@11.0592MHz
{
    unsigned char data i, j;
    _nop_();
    _nop_();
    i = 5;
    j = 83;
    do
    {
        while (--j);
    }while (--i);
}
void Delay4ms()        //@11.0592MHz
{
    unsigned char data i, j;

    _nop_();
    _nop_();
    i = 58;
    j = 112;
    do
    {
        while (--j);
    } while (--i);
}

void start()//同步码
{
    dat = 1;
    Delay4ms();
    dat = 0;
    Delay4ms();
}
void data_low()//发送数据0
{
    dat = 1;
    Delay302us();
    dat = 0;
    Delay302us();
    Delay302us();
    Delay302us();
}
void data_high()//发送数据1
{
    dat = 1;
    Delay302us();
    Delay302us();
    Delay302us();
    dat = 0;
    Delay302us();    
}
void send_data(unsigned char flag)  //发送数据函数;
{
    unsigned char num;
    start();//发送同步码
    for(num=0;num<20;num++)
    {
        if(addr_code[num]==1)
            data_high();
        else
            data_low();
    }
    switch(flag)
    {
    case 1:
        for(num=0;num<4;num++)
        {
            if(data_code1[num]==1)
                data_high();
            else
                data_low();
        }
    break;

    case 2:
        for(num=0;num<4;num++)
        {
            if(data_code2[num]==1)
                data_high();
            else
                data_low();
        }
    break;
    }        
}
赞 · 0
评论 (2)
  1. hinvxbocpg 作者
    Windows 10 · Google Chrome

    逆境中的反思充满生命韧性。

    2025-03-02 回复
  2. shun011 作者
    Windows 10 · FireFox

    碉堡了

    2024-01-12 回复