久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1946|回復: 5
收起左側

如何在電路圖和單片機代碼上添加自動上鎖功能?

[復制鏈接]
回帖獎勵 100 黑幣 回復本帖可獲得 10 黑幣獎勵! 每人限 1 次
ID:793358 發表于 2021-6-20 01:09 | 顯示全部樓層 |閱讀模式
求思路 在電路圖和代碼上添加自動上鎖功能。師傅不滿足現在的功能,讓我們自己鉆研,在代碼和電路圖添加上一旦蜂鳴器警報響起就可以使窗戶自動上鎖的代碼和電路圖,這部分師傅沒講過,我是真的沒辦法了,求各位幫幫忙。

單片機源程序如下:
#include <reg52.h>                 //調用單片機頭文件
#define uchar unsigned char  //無符號字符型 宏定義        變量范圍0~255
#define uint  unsigned int         //無符號整型 宏定義        變量范圍0~65535

//紅外熱釋電傳感器 平時為0  有輸出為1


sbit safe_key = P2^3;  //安全按鈕,應對在家的時候用,按下代表啟動安全開關
sbit hw_B   = P2^4;           //紅外熱釋傳感器定義--窗
sbit hw_A   = P2^5;           //紅外熱釋傳感器定義--門
sbit beep   = P2^7;           //蜂鳴器定義

//指示燈
sbit red    = P2^0;           //紅色發光二極管定義
sbit green  = P2^1;           //綠色發光二極管定義
sbit yellow = P2^2;  //黃燈

bit flag_300ms = 0;
uchar flag_alarm ;     //報警標志位
uchar flag_bufang ;    //布防標志位
uchar flag_bufang_en ; //布防標志位使能
uint  flag_value;      //用做定時器的變量

/***********************1ms延時函數*****************************/
void delay_1ms(uint q)
{
        uint i,j;
        for(i=0;i<q;i++)
                for(j=0;j<120;j++);
}
void voice() //蜂鳴器報警函數
{
  uchar nn;
  for(nn=0;nn<50;nn++)
   {
     beep=0;
     delay_1ms(1);
     beep=1;
     delay_1ms(1);
   }
}
/********************獨立按鍵程序*****************/
uchar key_can;         //按鍵值

void key()         //獨立按鍵程序
{
        static uchar key_new;
        key_can = 20;                   //按鍵值還原
        P1 |= 0x1c;
        if((P1 & 0x1c) != 0x1c)                //按鍵按下
        {
                delay_1ms(1);                     //按鍵消抖動
                if(((P1 & 0x1c) != 0x1c) && (key_new == 1))
                {                                                //確認是按鍵按下
                        key_new = 0;
                        switch(P1 & 0x1c)
                        {
                                case 0x18: key_can = 1; break;          //得到按鍵值
                                case 0x14: key_can = 2; break;          //得到按鍵值
                                case 0x0c: key_can = 3; break;          //得到按鍵值

//                                00011100   P17--P10          0x1c
//                                11111011   P12
//                                00011000   0x18
                        }
                }                        
        }
        else   //按鍵松開
                key_new = 1;        
}


/******************對應不同按鍵處理**********************/           
void key_with()
{
        if(key_can==1)         //按鍵緊急報警
         {
                flag_alarm = 1;  //報警標志位 ;                 
         }
        if(key_can==2)     //布防按鍵
        {
                flag_bufang_en=1;        
        }
        if(key_can==3)         //取消報警  把變量清零
        {
                flag_alarm=0;   
                flag_bufang=0;
                flag_bufang_en=0;        
                flag_value=0;        
                beep = 1;
                red = 1;  //關閉紅燈
                green = 1; //關閉綠燈     

        }                        
}

/*************定時器0初始化程序***************/
void time_init()         
{
        EA   = 1;                   //開總中斷
        TMOD = 0X01;          //定時器0工作方式1
        ET0  = 1;                  //開定時器0中斷
        TR0  = 1;                  //允許定時器0定時
}

/******************紅外報警處理**********************/           
void hongwai_dis()
{
        
        if(safe_key==0)
           {
             yellow=0;        //啟動在家安全模式

                 if((hw_A==0)||(hw_B==0))//如果是孩子開門或者窗,紅燈亮,且報警               
                        flag_alarm = 1;
           }
        else  yellow = 1;
        if(flag_bufang_en == 1) //準備開始布防
          {
                green = ~green;           //綠燈閃                        
          }  
        if(flag_bufang == 1)   //確認布防
          {
                green=0;         //如果延時布防成功 綠燈長亮
                if((hw_A==0)||(hw_B==0))//如果是入侵開門或者窗,紅燈亮,且報警               
                        flag_alarm = 1;        
          }
        if(flag_alarm==1)           //如果是入侵開門,紅燈亮,且報警        
          {
                red = ~red;                   //紅燈報警
                voice();           //蜂鳴器報警
          }
        else
          {

             red  = 1;
                 beep = 1;

      }
                  
}

/******************主程序**********************/           
void main()
{
        time_init();   //定時器初始化程序
        beep = 0;      //開機叫一聲  
        delay_1ms(200);
        P0 = P1 = P2 = P3 = 0xff;  //初始化單片機IO口為高電平
        while(1)
        {
                key();                  
                if(key_can < 10)
                {
                        key_with();         //按鍵設置函數
                }
                if(flag_300ms == 1)
                {
                        flag_300ms = 0;
                        hongwai_dis();           //紅外報警函數
                }        
        }
}

/*************定時器0中斷服務程序***************/
void time0_int() interrupt 1
{        
        static uint value;
        TH0 = 0x3c;
        TL0 = 0xb0;     // 50ms         
        value ++;
        if(value % 6 == 0)
        {
                flag_300ms = 1;
        }
        if(flag_bufang_en == 1)
        {
                flag_value ++;                   // 400 * 50ms = 20000ms = 10秒
                if(flag_value >= 200)  //10秒
                {
                        flag_bufang = 1;
                        flag_bufang_en = 0;
                        flag_value = 0;        
                }
        }
}



回復

使用道具 舉報

ID:748788 發表于 2021-6-20 08:11 | 顯示全部樓層
這個你是不是想多了
回復

使用道具 舉報

ID:88256 發表于 2021-6-20 09:24 | 顯示全部樓層
自動上鎖采用什么執行機構,電磁鐵還是電機?都已經輸出報警信號了,控制執行機構的還不會?
回復

使用道具 舉報

ID:81196 發表于 2021-6-21 09:01 | 顯示全部樓層
蜂鳴器響動自鎖,這個首先你是不是該判斷啥時候蜂鳴器響,然后信號直接控制開關控制量即可,別多想,縷清楚順序再做,別茫然.
回復

使用道具 舉報

ID:123289 發表于 2021-6-21 10:59 | 顯示全部樓層
如果是自己設計,不會有此一問。
回復

使用道具 舉報

ID:584814 發表于 2021-6-22 08:56 | 顯示全部樓層
這部分師傅沒講過 ? 肯定是講過的,只不過師傅如果每個可能都細講的話你十輩子都出不了師。
改動也很簡單,在蜂鳴器的觸發端口加個自鎖的裝置就可以,無需改動程序僅調整電路就可以實現。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天干夜夜操 | 久久精品99 | 欧美日韩国产一区二区三区不卡 | 国产一级一片免费播放 | 在线看日韩 | 国产一区二区在线播放 | 亚洲h在线观看 | 性高朝久久久久久久3小时 av一区二区三区四区 | 欧美日韩大陆 | 精品一区精品二区 | 黄色一级大片在线免费看产 | 久久久久久高潮国产精品视 | 国产激情一区二区三区 | 9色视频在线 | 成人在线视频网 | www日本高清视频 | 日韩欧美中文 | 99精品国自产在线观看 | 国产日产欧产精品精品推荐蛮挑 | 在线视频 亚洲 | 九色在线视频 | 麻豆精品一区二区三区在线观看 | 国产精品久久久久久 | 2021狠狠天天天 | 精品福利视频一区二区三区 | 日韩成人免费视频 | 亚洲精品福利视频 | 99视频 | 免费观看一级特黄欧美大片 | 成人免费观看男女羞羞视频 | 在线视频 欧美日韩 | 国产精品视频免费看 | 国产在线一级片 | 国产精品永久在线观看 | 成人在线国产 | 国产精品久久久久久久 | 国产丝袜一区二区三区免费视频 | 人人种亚洲 | 国产一区二区三区 | 91精品国产91久久久久久三级 | 网站国产|