Pequeño proyecto: diseño de sistema antirrobo de microordenador de un solo chip + inducción infrarroja del cuerpo humano (simulación + código fuente + archivo PCB)

Descripción del diseño
1. De acuerdo con los requisitos de la función del sistema y teniendo en cuenta la rentabilidad del producto, se diseña el esquema general del sistema, incluida la selección del sistema, la función del chip seleccionado y el diseño razonable del circuito periférico del chip.
2. Investigación e implementación de la tecnología anti interferencia de hardware del sistema y la tecnología anti interferencia de software.
3. Co-simulación y depuración de hardware y software del sistema.

Este diseño está diseñado para el antirrobo doméstico común. En comparación con sistemas de funciones similares, tiene las siguientes innovaciones:
(1) Alta portabilidad. Este diseño considera las características de los hogares modernos y se refiere a la mayoría de las situaciones de robo, adecuadas para cualquier uso familiar.
(2) Bajo costo. Este diseño utiliza un microordenador de un solo chip como chip de control, se requieren menos circuitos periféricos, y todos los subcircuitos se pueden comprar en el mercado, y el costo de fabricación es bajo.
(3) La capacidad de expansión de la función es buena. El diseño puede modificarse ligeramente para agregar funciones como la verificación de incendios o fugas de gas, y tiene grandes perspectivas de desarrollo.
(4) Alta seguridad. Este diseño tiene en cuenta su seguridad y utiliza una instalación completamente cerrada para que los ladrones no puedan destruir sus equipos y tengan una buena seguridad.

El diagrama de circuito del sistema antirrobo basado en el microordenador de un solo chip 51 y el módulo sensor infrarrojo del cuerpo humano es el siguiente:
Inserte la descripción de la imagen aquí
mapa físico El
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
diagrama esquemático de simulación del sistema antirrobo es el siguiente (archivo de ingeniería de simulación de proteus)
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
El diagrama esquemático del circuito del sistema antirrobo y el diagrama de PCB dibujado por Altium Designer son los siguientes:
Inserte la descripción de la imagen aquíprograma de un solo chip El código es el siguiente:

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit huang = P2 ^ 0; // Luz amarilla
sbit lv = P2 ^ 2; // Luz verde
sbit hong = P2 ^ 4; // Luz roja

sbit hongwai = P1 ^ 0; //
mantequilla piroeléctrica sbit = P2 ^ 6; // El nivel bajo del zumbador activa el zumbador

sbit baojing = P1 ^ 1 // botón de alarma directa;
sbit bufang = P1 ^ 7; // botón de armado
sbit quxiao = P3 ^ 4; // botón de cancelación
uchar tt = 0; // variable del temporizador
uchar num = 0; / / Variable de temporización temporizada
uchar flag = 0; // bit de indicador
void timer1init (void) // Timer 1, modo de 16 bits 2
{EA = 0;
TMOD = 0x11; // Configure el temporizador 0 en el modo de trabajo 1
TH0 = (65536-10000) / 256;
TL0 = (65536-10000)% 256;
ET0 = 1; // Iniciar temporizador 0 interrupción
TR0 = 1; // Iniciar temporizador 0
tt = 0; //
EA = 0; / / Off total interrupt
}
void delay (uint z) // Delay function
{
uint x, y;
for (x = z; x> 0; x–)
for (y = 110; y> 0; y–);
}
void main () // Función principal
{
huang = 0; // Luz amarilla inicial encendida
lv = 0; // Luz verde inicial encendida
hong = 0; // Luz roja inicial encendida
timer1init (); // Temporizador de inicialización
mientras (1)
{

        if(!baojing)//如果直接报警键被按下
                            {
                                    delay(5);//延时消抖
                                    if(!baojing)//判断报警键是不是被按下
                                    { 
                                      hong=1;//红灯亮
                                      lv=0;        //绿灯灭
                                      flag=7;//标志位等于7
                                      butter=0;//蜂鸣器响
                                      EA=0;//关中断
                                    }
                                    while(!baojing);//判断按键是不是弹开
                                    delay(5);//如果弹开延时消抖
                                    while(!baojing);//弹开后跳出程序
                            }            
         if((!bufang)&&(flag<4))//在初始状态和按下取消键后可以进去这个函数
                            {
                                    delay(5);//延时消抖
                                    if(!bufang)//如果布防被按下
                                    { 
                                       EA=1;   //开定时器
                                       flag=2;//另=2
                                    }
                                    while(!bufang);//布防键是不是弹开
                                    delay(5);//延时
                                    while(!bufang);//布防键弹开
                            }
                    if(!quxiao)//如果取消键按下
                            {
                                    delay(5);//延时消抖
                                    if(!quxiao)//取消键是不是按下
                                    {   
                                      flag=3;//FLAG等于3
                                      butter=1;//蜂鸣器不响
                                      tt=0;//
                                      num=0;//定时初始0
                                      EA=0;//关中断
                                      lv=0;//绿灯灭
                                      hong=0;//红灯灭
                                    }
                                    while(!quxiao);//取消按键抬开
                                    delay(5);//延时消抖
                                    while(!quxiao);//如果弹开跳出

                            }
                if(flag==4)//如果布防时间到
                      {
                       tt=0;//清计数为0
                       EA=0;//关中断
                       num=0;//记的秒数清零
                       lv=1;//关绿灯
                       flag=5;//flag等于5

                      }        
                    if(hongwai)//如果感应到人黄灯亮
                       huang=1;
                    else  huang=0;//感应不到人黄灯灭

                    if(flag==5)//如果flag等于5
                       {
                         if(hongwai)//如果感应到人
                               {
                                butter=0;//蜂鸣器响
                                EA=1;//开中断
                                }
                       }
                              
             }

}

tiempo nulo0 () interrupción 1
{
TH0 = (65536-50000) / 256;
TL0 = (65536-50000)% 256;
tt ++;
si (tt10)
{tt = 0; num ++;}
if ((flag
5) && (num% 20)) // flag = 5 después de armar durante 15 segundos, num es incluso luz
hong = 1;
if ((flag
5) && (num% 21)) // Después de 15 segundos de armado, flag = 5, num es un número impar y la luz está apagada. Hong
= 0;
if ((flag
2) && (num% 20)) // la bandera es igual a 2 después de que la tecla está armada, num es una luz par y
lv = 1;
if ((bandera
2) && (num% 21)) // Después de que la tecla está armada, la bandera es igual a 2, num es un número impar y la luz está apagada
lv = 0;
if ((bandera
2) && (num == 30)) // tiempo de armado, num = 30 son 15 segundos, puede cambiar esto para lograr el
indicador de tiempo de retardo de armado = 4;
}

Finalmente, si tiene algún comentario o sugerencia, puede dejarme un mensaje, permítanos aprender y progresar juntos.
Si necesita el código completo o el archivo de diseño, escríbame en privado y responderá tan pronto como lo vea.
Gracias

97 artículos originales publicados · 200 alabanzas · 80,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/weixin_44212493/article/details/105072787
Recomendado
Clasificación