TypechoJoeTheme

记录生活

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

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

2023-12-31
/
0 评论
/
14 阅读
/
正在检测是否收录...
12/31

设计背景

当我们的狗狗出门玩耍后,你是否还担心狗狗走失?出门寻找时却无头乱撞,是的,这都一直困扰着我们。设计一款用于狗狗丢失寻找的设备,用于寻找消失在视线下的狗子。

硬件介绍

  1. STC8G1K08单片机;
  2. 蜂鸟无线,远-R1,433/315M接收模块;
  3. HX4057单节锂电池充电IC;
  4. 有源蜂鸣器SMD9050一颗。

原理图、pcb


3D仿真

程序代码

#include <STC8G.H>
unsigned char timer_num[25];
unsigned char code_num[25];
unsigned char start;

unsigned char data_num;
unsigned char num=0;
unsigned char timer=0;
unsigned char flag=0;//接收完成标志
unsigned char i;
unsigned char timer1_num=0;
unsigned char timer1_num1;
sbit bb=P5^4;
void Timer0_Init()        //30微秒@11.0592MHz
{
    AUXR |= 0x80;            //定时器时钟1T模式
    TMOD &= 0xF0;            //设置定时器模式
    TL0 = 0xB4;                //设置定时初始值
    TH0 = 0xFE;                //设置定时初始值
    TF0 = 0;                //清除TF0标志
    TR0 = 0;                //定时器0开始计时
}
void Timer1_Init()        //5毫秒@11.0592MHz
{
    AUXR |= 0x40;            //定时器时钟1T模式
    TMOD &= 0x0F;            //设置定时器模式
    TL1 = 0x00;                //设置定时初始值
    TH1 = 0x28;                //设置定时初始值
    TF1 = 0;                //清除TF1标志
    TR1 = 0;                //定时器1开始计时
}
void Init()
{
    P3M0=0;
    P3M1=0;
    P1M0=0;
    P1M1=0;
    P5M0=0;
    P5M1=0;
    Timer0_Init();    //用于计时
    Timer1_Init();
    EA=1;    h
    ET0=1;
    ET1=1;
}
void main()
{
    Init();    
    while(1)
    {
        if(P32==1)
        {
            TR0=1;
            while(P32==1);
            TR0=0;
            timer_num[0]=num;
            num=0;

            
            if(timer_num[0]>100&&timer_num[0]<150)
            {
                start=1;
                while(P32==0);
                TR0=1;
            }            
        }          
        if(start==1)
        {
            start=0;
            for(i=1;i<25;i++)
            {    
                while(P32);
                timer_num[i]=num;  
                while(P32==0);
                num=0;    
            }
            TR0=0;
            flag=1;    
        } 
        if(flag==1)
        {
            flag=0;
            for(i=0;i<25;i++)
            {
                
                if(timer_num[i]>0x11)
                    code_num[i] = 1;
                else
                    code_num[i] = 0;
                    
            }
            data_num = 0x00;
            for(i=21;i<25;i++)
            {
                data_num = data_num << 1;
                
                if(code_num[i]==1)
                    data_num |= 0x01;    
            }
            
            switch(data_num)  //判断接收的数值
            {
                case 0X00:break;
                case 0X01:break;
                case 0X02:break;
                case 0X03:break;
                case 0X04:break;
                case 0X05:break;
                case 0X06:break;
                case 0X07:break;
                case 0X08:break;
                case 0X09:timer1_num1=20;TR1=1;break;
                case 0X0A:break;
                case 0X0B:break;
                case 0X0C:break;
                case 0X0E:break;
                case 0X0F:break;
                default:break;
            }                       
        }
    }
}

void timer0()interrupt 1
{
        num++;
}
void timer1()interrupt 3
{
    timer1_num++;
    if(timer1_num==100)
    {
        timer1_num=0;
        bb = ~bb;
        timer1_num1--;
    }    
    if(timer1_num1==0)
    {
        bb = 1;
        timer1_num=0;
        TR1=0;
    }
}
朗读
赞(0)
版权属于:

记录生活

本文链接:

http://junyangcloud.cn/archives/46/(转载时请注明本文出处及文章链接)

评论 (0)

距离2024年结束还有


00 00 00 00

及时宜自勉,岁月不待人

最新回复

  1. fsqrrrrump
    2024-09-27
  2. aksssutlln
    2024-09-23
  3. wbcphmxpxw
    2024-09-23
  4. njgiypljhe
    2024-09-23
  5. ynvxbuuuvy
    2024-09-23