小規模プロジェクト:シングルチップマイクロコンピューターの盗難防止システムの設計+人体の赤外線誘導(シミュレーション+ソースコード+ PCBファイル)

設計説明
1.システム機能要件に従い、製品のコストパフォーマンスを考慮して、システムの選択、選択したチップの機能、チップ周辺回路の合理的な設計など、システム全体のスキームを設計します。
2.システムハードウェアジャム防止技術とソフトウェアジャム防止技術の研究と実装。
3.システムのハードウェアとソフトウェアの協調シミュレーションとデバッグ。

この設計は、一般の家庭用盗難防止用に設計されており、同様の機能システムと比較して、次の革新的機能を備えています
このデザインは、現代の家の特性を考慮し、家族の使用に適した、盗まれた状況のほとんどを指します。
(2)低コスト。この設計では、コントロールチップとしてシングルチップマイクロコンピューターを使用し、必要な周辺回路が少なく、すべてのサブ回路を市場から購入でき、製造コストが低くなっています。
(3)機能拡張性が良い。設計をわずかに変更して、火災やガス漏れのチェックなどの機能を追加することができ、大きな開発の見通しがあります。
(4)高いセキュリティ。この設計は、セキュリティを考慮し、完全に密閉された設置を使用しているため、泥棒が機器を破壊したり、セキュリティを強化したりすることはできません。

次のように盗難防止システムの回路図である51マイクロコントローラおよびヒト赤外線センサモジュールに基づいて製造:
ここに画像の説明を挿入
物理マップ
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
盗難シミュレーション概略システム(プロテウスシミュレーションプロジェクトファイル)を次のように
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
次のように盗難防止システムの回路図とPCB Altium Designerの絵は:
ここに画像の説明を挿入SCM手順草試験コードは次のとおりです。

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit huang = P2 ^ 0; //黄色のライト
sbit lv = P2 ^ 2; //緑色のライト
sbit hong = P2 ^ 4; //赤色のライト

sbit hongwai = P1 ^ 0; //焦電
sbitバター= P2 ^ 6; //低レベルのブザーがブザーをオンにする

sbit baojing = P1 ^ 1 //ダイレクトアラームボタン;
sbit bufang = P1 ^ 7; //アーミングボタン
sbit quxiao = P3 ^ 4; //キャンセルボタン
uchar tt = 0; //タイマー変数
uchar num = 0; / /タイミングタイミング変数
ucharフラグ= 0; //フラグビット
void timer1init(void)//タイマー1、16ビットモード2
{EA = 0;
TMOD = 0x11; //タイマー0を作業モード1に
設定TH0 = (65536-10000)/ 256;
TL0 =(65536-10000)%256;
ET0 = 1; //タイマー0割り込みの開始
TR0 = 1; //タイマー0の開始
tt = 0; //
EA = 0; / /オフ合計割り込み
}
void delay(uint z)//遅延関数
{
uint x、y;
for(x = z; x> 0; x–)
for(y = 110; y> 0; y–);
}
void main()//メイン関数
{
huang = 0; //初期の黄色のライトがオン
lv = 0; //初期の緑のライトが点灯
hong = 0; //初期の赤いライトが
点灯timer1init(); //初期化タイマー
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()割り込み1
{
TH0 =(65536-50000)/ 256;
TL0 =(65536-50000)%256;
tt ++;
if(tt10)
{tt = 0; num ++;}
if((flag
5)&&(num%20))//フラグ= 15秒間武装した後、5、numは薄い
ホン= 1、
if((フラグ
5)&&(num%21))// 15秒間の武装後、flag = 5、numは奇数、ライトはオフです。Hong
= 0;
if((flag
2)&&(num%20))//キーが準備された後、フラグは2に等しくなり、numは偶数のライトで
lv = 1;
if((flag
2)&&(num%21))//キーが装備された後、フラグは2に等しく、numは奇数であり、ライトはオフです
lv = 0;
if((flag
2)&&(num == 30))//アーミング時間、num = 30は15秒です。これを変更して、アーミング遅延時間を達成できます
flag = 4;
}

最後に、コメントや提案があれば、私にメッセージを残してください。一緒に学び、一緒に進めましょう。
完全なコードまたはデザインファイルが必要な場合は、私に書いてください。できるだけ早く返信します。
ありがとう!

97件の元の記事を公開 200件の賞賛 80,000回以上の閲覧

おすすめ

転載: blog.csdn.net/weixin_44212493/article/details/105072787