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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2967|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

車內(nèi)兒童檢測系統(tǒng)單片機源程序-帶散熱

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:239041 發(fā)表于 2017-10-12 23:44 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本實用新型公開一種車內(nèi)兒童檢測報警裝置,包括:紅外線發(fā)射器和接收器、攝像頭、控制裝置及接收器。所述發(fā)射器和接收器分別設(shè)置在車座兩側(cè),所述每對發(fā)射器和接收器位置一一對應(yīng)。所述攝像頭設(shè)置在車內(nèi)車頂上。所述控制裝置設(shè)置在車內(nèi),其分別與紅外線發(fā)射器和接收器、攝像頭及汽車中控連接。所述控制裝置控制攝像頭。所述控制裝置通過無線網(wǎng)絡(luò)傳輸數(shù)據(jù),并與接收器連接。本實用新型有益效果在于:采用紅外傳感器檢測兒童是否在車內(nèi),同時通過攝像頭確認(rèn)是否誤報警,避免兒童被困車內(nèi),引致兒童窒息。

1.  主程序
#include"reg52.h"
#include "uart.c"
#include "tc35.c"
#include "18b20.h"
#include "stdio.h"
//sfr PCON=0x87;




#define bug  while(1){bee=1;delayms_100ms();delayms_100ms();bee=0;delayms_100ms();delayms_100ms();}


sbit Sw=P1^2;
sbit hongwai=P1^3;
sbit zhengdong=P1^5;
sbit bee=P1^0;
sbit feng=P1^6;
//#define bug while(1){led=1;delayms_100ms();led=0;delayms_100ms();}
//#define RsBuf_N                        50


//char RsBuf[RsBuf_N];        //定義串口接收數(shù)據(jù)緩沖區(qū)
//uchar RsPoint=0;
uchar code PhoneNO[]= "+8613796629206";
uchar  Text[40]={0};
//uchar code center[]="+8613800566500";
uchar flag,num,a;
bit Q,PD=0;
int n;
float T;


void MinDelay(uint X)
{
    uchar i,l;
    uint j;
    for(i=X;i>0;i--)
        for(j=1000;j>0;j--)
            for(l=110;l>0;l--);
}






//void T0_Init()
//{
//    TMOD|=0x01;
//    TH0=(65536-50000)/256;
//    TL0=(65536-50000)%256;
//    EA=1;
//    TR0=1;
//    ET0=1;
//}


void main()
{
//   T0_Init();
    Uart_init();
//   init_1602();
    bee=0;
    feng=0;
    flag=1;
                       n= ReadTemperature();
                       n= ReadTemperature();
                       n= ReadTemperature();
    while(1)
    {


//      n= ReadTemperature();
//        T=(float)n*0.0625;
//             sprintf(Text,"Temp : %2.2f ",(float)T);
//            SendString(Text);


        
      while(!Sw)
      {
        Q=0;
          flag=1;
          bee=0;
          feng=0;
      }
        while(Sw&&flag)
        {
          num++;
          delayms_10s() ;
            if(num>10)
            {
               // bee=0;
                Q=1;
                flag=0;      
                break;
            }               
        }


                num=0;

        if(Q)
        {
            if(hongwai==1)
            {
                bee=1;
                feng=1;
                      n= ReadTemperature();
                        T=n*0.0625;
                    sprintf(Text,"Your Chind in Car and Temp is %2d C ",(int)T);
        //        TR0=0;
                        Send_AT();        
                    Set_MODE(1);           //設(shè)置短消息模式                                                                                                                                       
                    TransmitText(PhoneNO,Text);
                 //   delayms_10s();
                bee=0;
                delayms_10s();delayms_10s();delayms_10s();delayms_10s();
                  bee=0;
                feng=0;
              //     bug
               // TR0=1;
            }
         
            if(zhengdong==0)
            {
                delayms_100ms();delayms_100ms();
                if(zhengdong==0)
                {
                   bee=1;
                     delayms_1000ms();
           //   TR0=0;
                        Send_AT();        
                    Set_MODE(1);           //設(shè)置短消息模式                                                                                                                                       
                    TransmitText(PhoneNO,"There are situations!");
                    bee=0;
           //         TR0=1;
                }
            }
        }
        

   
    }
}





// void t0_ser() interrupt 1
// {
//     TH0=(65536-50000)/256;
//    TL0=(65536-50000)%256;
//     
//            
//     a++;
//     if(a>20)
//     {
//         EA=0;
//        a=0;
//               n= ReadTemperature();
//        T=(float)n*0.0625;
//        // T=30.0;
//             sprintf(Text,"Temp : %3.1f ",(float)T);
//            SendString(Text);
//         
//              EA=1;
//     }




//
// }






2.  18B20 溫度傳感器
/*-----------------------------------------------
  名稱:18B20溫度傳感器
  日期:2009.5
  修改:無
  內(nèi)容:18B20單線溫度檢測的應(yīng)用樣例程序
------------------------------------------------*/


#include"18b20.h"






/*------------------------------------------------
uS????,?????? unsigned char t,????
unsigned char ??????????,??????
0~255 ??????12M,?????????,????
???? T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{   
while(--t);
}
/*------------------------------------------------
mS????,?????? unsigned char t,????
unsigned char ??????????,??????
0~255 ??????12M,?????????
------------------------------------------------*/
void DelayMs(unsigned char t)
{
     
while(t--)
{
     //????1mS
     DelayUs2x(245);
         DelayUs2x(245);
}
}


/*------------------------------------------------
                    18b20初始化
------------------------------------------------*/
bit Init_DS18B20(void)
{
bit dat=0;
DQ = 1;    //DQ復(fù)位
DelayUs2x(5);   //稍做延時
DQ = 0;         //單片機將DQ拉低
DelayUs2x(200); //精確延時 大于 480us 小于960us
DelayUs2x(200);
DQ = 1;        //拉高總線
DelayUs2x(50); //15~60us 后 接收60-240us的存在脈沖
dat=DQ;        //如果x=0則初始化成功, x=1則初始化失敗
DelayUs2x(25); //稍作延時返回
return dat;
}


/*------------------------------------------------
                    讀取一個字節(jié)
------------------------------------------------*/
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
  DQ = 0; // 給脈沖信號
  dat>>=1;
  DQ = 1; // 給脈沖信號
  if(DQ)
   dat|=0x80;
  DelayUs2x(25);
}
return(dat);
}
/*------------------------------------------------
                    寫入一個字節(jié)
------------------------------------------------*/
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
  DQ = 0;
  DQ = dat&0x01;
  DelayUs2x(25);
  DQ = 1;
  dat>>=1;
}
DelayUs2x(25);
}


/*------------------------------------------------
                    讀取溫度
------------------------------------------------*/
unsigned int ReadTemperature(void)
{
unsigned char a=0;
unsigned int b=0;
unsigned int t=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳過讀序號列號的操作
WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換
DelayMs(10);
Init_DS18B20();
WriteOneChar(0xCC); //跳過讀序號列號的操作
WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
a=ReadOneChar();   //低位
b=ReadOneChar();   //高位


b<<=8;
t=a+b;


return(t);
}



3.中斷
/******************************************************************
MADE BY lyq


my BLOG      http://hi.baidu.com/282280072


*******************************************************************/


#include "uart.c"


#include "delay.h"


#define uchar unsigned char
#define uint unsigned int
#define NULL 0


#define ATwaits                        10
#define DWWwaits                10
#define Readwaits                10
#define Sendwaits                10


#define RsBuf_N                        50


char RsBuf[RsBuf_N];        //定義串口接收數(shù)據(jù)緩沖區(qū)
uchar RsPoint;
//以標(biāo)示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時在其他模塊中尋找其定義。


void Send_AT(void);
char *mystrstr(char *s, char *t);
void Num2char(uchar i);


/***********************TC35模塊初始化******************************
*功    能: TC35模塊初始化,           P0.0輸出低電平至少100ms
*形    參:
*返 回 值:
*備    注:
*****************************************************************/
//void TC35_init()
//{
//        
//        P1|=0x01;
//        P1&=~0x01;
//        delayms_100ms();delayms_100ms();delayms_100ms();delayms_100ms();
//        delayms_100ms();delayms_100ms();
//        P0|=0x01;
//        delayms_10s();delayms_10s();delayms_10s();
//}


/***********************發(fā)送聯(lián)機指令******************************
*功    能: 串口發(fā)送數(shù)組命令到TC35,"AT",
*形    參:
*返 回 值:
*備    注: 測試GSM模塊是否連接正確
*****************************************************************/
void Send_AT(void)
{
  uchar *p,i=ATwaits;  //ATwaits=10
  //lcd_disp_str(RsBuf,1);


        
        while(i--)        //測試10次,在某一次成功就退出
        {
            //RsBuf[0]='\0';         //有下一句就不需要這句 //清空接收緩沖區(qū)
                RsPoint=0;
                // 本來只有\(zhòng)r  我添加的\n        后來證明 可以不加的
                SendString("AT\r");
                //****************************等待應(yīng)答"OK"
            ES=1;    //必須中斷  // 串口中斷應(yīng)許
            delayms_100ms();//等待接受數(shù)據(jù)完成//delayms_1000ms();delayms_1000ms();
               
            p=mystrstr(RsBuf,"OK");   //接收到的數(shù)據(jù)存在RsBuf
            if(p!=NULL)         //接收到"OK"
               
                {


                        delayms_1000ms();delayms_1000ms();//delayms_1000ms();delayms_1000ms();


                        break;
                }
        delayms_1000ms();
        
        }


}
/***********************設(shè)置短消息模式******************************
*功    能: 串口發(fā)送數(shù)組命令到TC35,AT+CMGF=1
*形    參:           uchar m =1 text模式      m=0 PDU模式
*返 回 值:
*備    注: 1 TEXT
*****************************************************************/
void Set_MODE(uchar m)
{
  uchar *p,i=ATwaits;  //ATwaits=10
  //lcd_disp_str(RsBuf,1);


        
        while(i--)        //測試10次,在某一次成功就退出
        {
            
                RsPoint=0;
                if(m)
                        SendString("AT+CMGF=1\r");                 //設(shè)置短消息模式  1 TEXT
                else
                        SendString("AT+CMGF=0\r");                 //設(shè)置短消息模式  PDU模式
//        SendASC('\r');                        //發(fā)送回車指令//
                //****************************等待應(yīng)答"OK"
            ES=1;    //必須中斷  // 串口中斷應(yīng)許
            delayms_100ms();//等待接受數(shù)據(jù)完成//delayms_1000ms();delayms_1000ms();
                delayms_100ms();delayms_100ms();
            p=mystrstr(RsBuf,"OK");   //接收到的數(shù)據(jù)存在RsBuf
            if(p!=NULL)         //接收到"OK"
               
                {


                        delayms_1000ms();delayms_1000ms();//delayms_1000ms();delayms_1000ms();


                        break;
                }
delayms_1000ms();


        }


}
/***********************設(shè)置短消息中心******************************
*功    能: 串口發(fā)送數(shù)組命令到TC35, AT+CSCA=“+8613800531500”回車
*形    參:                 uchar *canter 短消息中心           “+8613800531500”
*返 回 值:
*備    注:
*****************************************************************/
//void Set_CENTER(uchar *center)
//{
//  uchar *p,i=ATwaits;  //ATwaits=10
//  //lcd_disp_str(RsBuf,1);


//        
//        while(i--)        //測試10次,在某一次成功就退出
//        {
//            
//                RsPoint=0;
//               
//                SendString("AT+CSCA=");           //設(shè)置短消息中心
//                SendASC('"');
//                SendString(center);   //短消息中心號碼
//                SendASC('"');
//                SendASC('\r');                        //發(fā)送回車指令//
//                //****************************等待應(yīng)答"OK"
//            ES=1;    //必須中斷  // 串口中斷應(yīng)許
//            delayms_100ms();//等待接受數(shù)據(jù)完成//delayms_1000ms();delayms_1000ms();
//               
//            p=mystrstr(RsBuf,"OK");   //接收到的數(shù)據(jù)存在RsBuf
//            if(p!=NULL)         //接收到"OK"
//               
//                {
//                        lcd_disp_str("Set_CENTER is OK",1);
//                        lcd_disp_str("CENTER contimue!  ",2);
//                        delayms_1000ms();delayms_1000ms();//delayms_1000ms();delayms_1000ms();
//                        lcd_disp_str("                ",1);
//                        lcd_disp_str("                ",2);
//                        break;
//                }
//                lcd_disp_str("Set_CENTER failed",1);delayms_1000ms();
//                lcd_disp_str("                ",1);
//        }


//}
/***********************發(fā)送TEXT短信息********************************
*功    能: TEXT模式發(fā)送短信息
*形    參: char *dialnum 目的號碼+8613333333333    char *text發(fā)送內(nèi)容
*返 回 值: 1 發(fā)送成功  0 發(fā)送失敗
*備    注:發(fā)送TEXT短信息  之前應(yīng)該先  1,設(shè)置短消息模式   AT+CMGF=? (0)=PDU (1)=TEXT
                                  2,設(shè)置短消息中心     AT+CSCA=“+8613800531500”回車                 


*****************************************************************/
char TransmitText(char *dialnum,char *text)   //發(fā)送號碼        發(fā)送內(nèi)容,字母或數(shù)字
{
        uchar i=Sendwaits,j=Sendwaits;
        uchar *p;


        




        SendString("AT+CMGS=");        //信息發(fā)送指令 AT+CMGS=//
        
///////////////////////////////
        SendASC('"');
        SendString(dialnum);   //手機號碼的引號丟了!!!!!!!!! 已經(jīng)加上
        SendASC('"');
////////////////////////////////////
        SendASC('\r');                        //發(fā)送回車指令//
        RsPoint=0;          //清空接收緩沖區(qū)
        //delayms_1000ms();
        while(i--)
        {
               
                delayms_100ms();
                p=mystrstr(RsBuf,">");//">"
                if(p!=NULL)        //如果接受到 >  發(fā)送text
                {        
                    ///////Get">"////////////////////////////
                        
                        SendString(text);
                        RsPoint=0;          //清空接收緩沖區(qū)
                        SendString("\x1a\r");//'\x1a'結(jié)束符(相當(dāng)CTRL+Z) '\r'回車符
                        //delayms_100ms();
//                        while(j--)
//                        {
//                                delayms_100ms();
//                                p=mystrstr(RsBuf,"OK");
//                                if(p!= NULL )
//                                {
//                                        //發(fā)送成功
//                                
//                                       
//                                        return 1;
//                                }
//                        
//                                delayms_1000ms();
//                                
//                                }               
                }
                //else lcd_disp_str("Transmit failure",1);
        }
        return 0;
}
/***********************字符串查找********************************
*功    能: 查找字符串
*形    參: char *s,  char *t  ;在s中查找t
*返 回 值: s_temp(t在s中的位置)成功     0 (失敗 )
*備    注:
*****************************************************************/
char *mystrstr(char *s, char *t)
{
  char    *s_temp;        /*the s_temp point to the s*/
  char    *m_temp;        /*the mv_tmp used to move in the loop*/
  char    *t_temp;        /*point to the pattern string*/


        if ((s == NULL )|| (t == NULL)) return NULL;


        /*s_temp point to the s string*/
        for (s_temp = s; *s_temp != '\0'; s_temp++)
        {
                   /*the move_tmp used for pattern loop*/
                m_temp = s_temp;
            /*the pattern string loop from head every time*/
                for (t_temp = t; *t_temp == *m_temp; t_temp++, m_temp++);
        /*if at the tail of the pattern string return s_tmp*/
                if (*t_temp == '\0') return s_temp;
     
        }
        return NULL;
}






//  通訊中斷接收程序   中斷函數(shù)無返回值
  void uart_rx(void)  interrupt 4        using 3          //放在這里 和放在main()里面是一樣的
{
         EA=0;
           if((RsPoint<RsBuf_N)&&RI) //必須判斷RI是否為1
        //if(RI)
    {
            RI=0;
            RsBuf[RsPoint++]=SBUF;
                //RsBuf[RsPoint]=0x00;   //將下一個數(shù)據(jù)清零
                //SendASC(RsBuf[RsPoint-1]);
                //lcd_disp_str(RsBuf ,2);
    }
        EA=1;
}


車內(nèi)兒童檢測可用程序 - 帶散熱.zip

77.84 KB, 下載次數(shù): 19, 下載積分: 黑幣 -5

策劃內(nèi)兒童檢測

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:201936 發(fā)表于 2017-10-13 08:17 | 只看該作者
下載學(xué)習(xí)下,謝謝
回復(fù)

使用道具 舉報

板凳
ID:248551 發(fā)表于 2017-11-12 22:03 | 只看該作者
樓主用的是什么單片機芯片呢?
回復(fù)

使用道具 舉報

地板
ID:251177 發(fā)表于 2017-11-19 20:25 | 只看該作者
下載學(xué)習(xí)下,謝謝
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 蜜桃毛片| 亚洲欧美国产精品一区二区 | 成人看片在线观看 | 久久精品国产亚洲 | 精品国产视频 | 日韩欧美在线观看视频网站 | 91在线精品一区二区 | www国产成人免费观看视频 | 国产精品成人一区二区 | 久久久激情 | 中文天堂在线一区 | 成人动慢| 九九色九九 | 午夜在线小视频 | 一区二区av | 色综合色综合色综合 | 欧洲妇女成人淫片aaa视频 | 久久精品国产99国产精品亚洲 | 欧美精品一区二区三区在线 | 欧美一区二区三区一在线观看 | 欧美日韩福利 | 一区二区视频在线 | 国产黄色精品 | 日韩一区二区三区在线播放 | 欧美美乳 | 亚洲高清视频在线观看 | 久久久免费在线观看 | 久久久久国产精品一区二区 | 成人在线视频免费看 | 久久久国产精品一区 | 欧美日韩在线免费 | 四虎永久在线精品免费一区二 | 亚洲精品91| 欧美精品久久久久久 | 国产97碰免费视频 | 国产精品18久久久久久久 | 天堂网av在线 | 欧洲视频一区 | 亚洲欧美一区二区三区情侣bbw | 999久久久 | 欧美片网站免费 |