Petit projet: conception d'un système antivol de micro-ordinateur monopuce + induction infrarouge du corps humain (simulation + code source + fichier PCB)

Description de la conception
1. Selon les exigences de la fonction du système et compte tenu des performances de coût du produit, le schéma global du système est conçu, y compris la sélection du système, la fonction de la puce sélectionnée, la conception raisonnable du circuit périphérique de la puce, etc.
2. Recherche et mise en œuvre de la technologie anti-brouillage matériel du système et de la technologie anti-brouillage logiciel.
3. Co-simulation et débogage du matériel et des logiciels du système.

Cette conception est conçue pour les antivols ménagers ordinaires.Par rapport aux systèmes de fonctions similaires, elle présente les innovations suivantes:
(1) Haute portabilité. Cette conception tient compte des caractéristiques des maisons modernes et fait référence à la plupart des situations volées, adaptées à toute utilisation familiale.
(2) Faible coût. Cette conception utilise un micro-ordinateur monopuce comme puce de commande, moins de circuits périphériques sont nécessaires, et tous les sous-circuits peuvent être achetés sur le marché, et le coût de fabrication est faible.
(3) L'extensibilité de la fonction est bonne. La conception peut être légèrement modifiée pour ajouter des fonctions telles que la vérification des incendies ou des fuites de gaz, et offre de grandes perspectives de développement.
(4) Haute sécurité. Cette conception tient compte de sa sécurité et utilise une installation entièrement fermée afin que les voleurs ne puissent pas détruire leur équipement et avoir une bonne sécurité.

Le schéma de circuit du système antivol basé sur le micro-ordinateur monopuce 51 et le module de capteur infrarouge du corps humain est le suivant:
Insérez la description de l'image ici
carte physique Le
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici
schéma de simulation du système antivol est le suivant (fichier d'ingénierie de simulation de proteus)
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici
Le schéma de circuit du système antivol et le schéma de circuit imprimé dessinés par Altium Designer sont les suivants:
Insérez la description de l'image iciprogramme monopuce Le code est le suivant:

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit huang = P2 ^ 0; // Yellow light
sbit lv = P2 ^ 2; // Green light
sbit hong = P2 ^ 4; // Red light

sbit hongwai = P1 ^ 0; //
Beurre pyroélectrique sbit = P2 ^ 6; // Le niveau bas du buzzer active le buzzer

sbit baojing = P1 ^ 1 // bouton d'alarme directe;
sbit bufang = P1 ^ 7; // bouton d'armement
sbit quxiao = P3 ^ 4; // bouton d'annulation
uchar tt = 0; // variable de minuterie
uchar num = 0; / / Variable de minutage temporisé
uchar flag = 0; // bit de drapeau
void timer1init (void) // Minuterie 1, mode 16 bits 2
{EA = 0;
TMOD = 0x11; // Régler la minuterie 0 en mode de travail 1
TH0 = (65536-10000) / 256;
TL0 = (65536-10000)% 256;
ET0 = 1; // Démarrage du temporisateur 0 interruption
TR0 = 1; // Démarrage du temporisateur 0
tt = 0; //
EA = 0; / / Off total interruption
}
void delay (uint z) // Delay function
{
uint x, y;
for (x = z; x> 0; x–)
for (y = 110; y> 0; y–);
}
void main () // Fonction principale
{
huang = 0; // La lumière jaune initiale est allumée
lv = 0; // La lumière verte initiale est allumée
hong = 0; // La lumière rouge initiale est
allumée timer1init (); // Minuterie d'initialisation
while (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;//开中断
                                }
                       }
                              
             }

}

void time0 () interruption 1
{
TH0 = (65536-50000) / 256;
TL0 = (65536-50000)% 256;
tt ++;
si (tt10)
{tt = 0; num ++;}
if ((indicateur
5) && (num% 20)) // flag = 5 après armement pendant 15 secondes, num est même
hong léger = 1;
if ((flag
5) && (num% 21)) // Après 15 secondes d'armement, flag = 5, num est un nombre impair et la lumière est éteinte. Hong
= 0;
if ((flag
2) && (num% 20)) // le drapeau est égal à 2 après que la clé est armée, num est une lumière paire et
lv = 1;
if ((flag
2) && (num% 21)) // Une fois la clé armée, le drapeau est égal à 2, num est un nombre impair et le voyant est éteint
lv = 0;
if ((flag
2) && (num == 30)) // temps d'armement, num = 30 est de 15 secondes, vous pouvez le changer pour obtenir l'
indicateur de temps de retard d'armement = 4;
}

Enfin, si vous avez des commentaires ou des suggestions,
n'hésitez pas à me laisser un message, laissez-nous apprendre ensemble et progresser ensemble. Si vous avez besoin du code complet ou du fichier de conception, écrivez-moi en privé et vous répondrez dans les plus brefs délais.
Merci!

Publié 97 articles originaux · 200 éloges · 80 000+ vues

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44212493/article/details/105072787
conseillé
Classement