找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 12109|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

基于51單片機的汽車大燈自動控制

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:293108 發(fā)表于 2018-7-24 15:38 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
   最初接觸單片機就是自己想把自己的汽車改成自動大燈(可能是自己懶,又可能是為了安全,但后面實際上耗費了大量精力)。最開始是買了個開發(fā)板在家看教程學習了好幾天,然后就買了繼電器,8個一起的,但我因車的原因,只用了兩個,所以大的開發(fā)板加上長的繼電器放在車上換擋的地方,你們腦補一下有多亂多丑。經(jīng)過了一年多的升級,做了最小系統(tǒng),把最初的光敏二極管換成了紅外線感應(yīng)器(自己焊接的感應(yīng)器),把8組繼電器換成了2個,可以直接放在儀表臺下面。 ————————這里是正題————————-------功能:通過紅外線感應(yīng)器接收自然光,adc轉(zhuǎn)換器處理接收到的光的強度,再發(fā)送到51單片機處理,單片機通過設(shè)定好的判斷程序控制繼電器閉合,延時斷開。
-------材料:單片機最小系統(tǒng) 圖1(電路板+stc8952芯片)、紅外傳感 圖2、繼電器 圖3、pcf8591adc轉(zhuǎn)換器 圖4、車載usb充電器、usb充電線給單片機 供電用,所以要看好單片機的接口是哪種)、杜邦線若干。
------接線及燒寫:繼電器控制接口接單片機p1.4與p1.5,pcf8591的scl與sda分別接單片機的p2.1與p2.0,紅外感應(yīng)器out接口接pcf8591的AIN0或AIN1(兩個接口只有一個是正確的),其余的該接vcc的接vcc,該接gnd的接gnd(汽車部分接線不懂的請咨詢汽車維修工程師,請勿亂接,發(fā)生危險我是不負責的),下載器我用的cp2102,怎么下載請去百度一下。最后附上程序,程序可以根據(jù)自己喜好去修改,若有高手發(fā)現(xiàn)程序中有可以優(yōu)化的地方請指出及把修改后的程序發(fā)出來。

圖1


圖2


圖3


圖4


下載器


紅外線強度+out+按鍵V1.2的單片機源程序如下:
  1. /****************************************************
  2.                                    自動控制

  3.    紅外線感應(yīng)電阻IR與ADC構(gòu)成亮度檢測電路,
  4.    光線弱時繼電器閉合燈光開啟,光線強時繼電器延時斷開燈光關(guān)閉,達到節(jié)約電量同時保證黑夜行駛安全。

  5. ****************************************************/
  6. #include<reg52.h>
  7. #include<intrins.h>
  8. #include"IIC.h"

  9. typedef unsigned int u16;          //對數(shù)據(jù)類型進行聲明定義
  10. typedef unsigned char u8;
  11. unsigned char Voltage;
  12. unsigned char Voltagetwo;

  13. sbit turn1=P1^4;//開關(guān)
  14. sbit turn2=P1^5;
  15. sbit turn3=P1^6;
  16. sbit turn0=P1^7;//懸空
  17. sbit turn4=P1^3;

  18. sbit k1=P3^6;//按鍵

  19. u16 t;
  20. u8 bz;

  21. void delay(int j)   //誤差 0us
  22. {
  23.     int i;
  24.     for(j;j>0;j--)
  25.         for(i=0;i<110;i++);
  26. }


  27. void IR()         //第一感應(yīng)器
  28. {
  29.          ADC_Init();
  30.      Voltage=ADC_Read(); //讀取光敏電阻采樣電壓//最大255,用10進制轉(zhuǎn)換為16進制
  31.        
  32.   if((Voltage<0x0a)&&(bz==0)){bz=1;turn1=0;}  //比較函數(shù)
  33.         if(bz==1){t=t+1;if(t>20){bz=0;t=0;}}   //時鐘延時函數(shù)
  34.         if((Voltage<0x32)&&(bz==0)){bz=0;turn2=0;}
  35.         if(bz==1){t=t+1;if(t>200){bz=0;t=0;}}   //時鐘延時函數(shù)
  36.        
  37.   if((Voltage>0x12)&&(bz==0)){bz=2;turn0=1;}//故意添加一個空指令來延長時間
  38.         if(bz==2){t=t+1;if(t>1100){bz=0;t=0;}}
  39.         if((Voltage>0x50)&&(bz==0)){bz=3;turn1=1;}
  40.         if(bz==3){t=t+1;if(t>1100){bz=0;t=0;}}
  41.         if((Voltage>0xc8)&&(bz==0)){bz=0;turn2=1;}
  42.        
  43.   if(k1==0){t=t+1;if(t>20){turn3=~turn3;t=0;}}//按鍵處理
  44. }
  45. void IRw()        //第二個感應(yīng)器
  46.         {
  47.                 ADC_Inittwo();
  48.         Voltagetwo=ADC_Read();                         //讀取光敏電阻采樣電壓//最大255,用10進制轉(zhuǎn)換為16進制
  49.        
  50.                  //以下是遠光控制
  51.        
  52.             if(Voltagetwo>0x64){turn4=0;}
  53.                 if(Voltagetwo<0x32){turn4=1;}

  54.         }

  55. void main()
  56. {
  57.         turn1=1;    //開機優(yōu)先處理值
  58.     turn2=1;
  59.         turn4=1;
  60.         delay(500);
  61.    while(1)
  62.    {
  63.         IR();
  64.         IRw();
  65.    }
  66. }
復(fù)制代碼


所有資料51hei提供下載:
紅外線強度 out 按鍵V1.2 - 副本.rar (47.56 KB, 下載次數(shù): 63)


評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:93502 發(fā)表于 2018-9-10 20:08 | 只看該作者
如果在ADC中加入對汽車電瓶電壓進行檢測,這樣可以判斷車輛發(fā)動了電壓達到一定數(shù)值時再工作,這樣對電瓶有一定的保護可能會比較好,另外,當檢測到光線達到一定域值時來控制開關(guān)燈,會不會在黃昏時,燈反復(fù)亮暗?可不可以加入在一定時間內(nèi)達到這個域值的次數(shù)時直接轉(zhuǎn)成黑夜模式,在一定時間內(nèi)超過這個域值的次數(shù)直接轉(zhuǎn)成白天模式?個人看法,歡迎探討。
回復(fù)

使用道具 舉報

板凳
ID:489174 發(fā)表于 2019-3-29 16:56 來自手機 | 只看該作者
解壓密碼是啥
回復(fù)

使用道具 舉報

地板
ID:704284 發(fā)表于 2020-3-7 21:40 來自手機 | 只看該作者
高手高手,改下來多少錢
回復(fù)

使用道具 舉報

5#
ID:293108 發(fā)表于 2020-12-7 10:12 | 只看該作者
胡鬧鬧 發(fā)表于 2018-9-10 20:08
如果在ADC中加入對汽車電瓶電壓進行檢測,這樣可以判斷車輛發(fā)動了電壓達到一定數(shù)值時再工作,這樣對電瓶有 ...

這個是剛學stc時做的,沒有定時器,現(xiàn)在已經(jīng)有更新版本,換成了自帶adc的stc15,體積更小,加入了閥值,用了定時器延時更靈敏。
回復(fù)

使用道具 舉報

6#
ID:832201 發(fā)表于 2020-12-15 09:44 | 只看該作者
感謝分享,不錯的想法
回復(fù)

使用道具 舉報

7#
ID:349543 發(fā)表于 2020-12-25 19:22 | 只看該作者
胡鬧鬧 發(fā)表于 2018-9-10 20:08
如果在ADC中加入對汽車電瓶電壓進行檢測,這樣可以判斷車輛發(fā)動了電壓達到一定數(shù)值時再工作,這樣對電瓶有 ...

樓主說了,電源應(yīng)該是用車載USB充電器,這充電器一般插在點煙器上的,熄火后點煙器一般是沒電的沒必要做一個檢測電瓶電壓的。
回復(fù)

使用道具 舉報

8#
ID:693523 發(fā)表于 2020-12-25 19:59 | 只看該作者
學習了,準備做一個自動巡航,大致原理是通過車速控制油門(目前市面大部分都是電子油門),想法有了關(guān)鍵是懶得動手,也沒有時間
回復(fù)

使用道具 舉報

9#
ID:93502 發(fā)表于 2021-2-16 13:50 | 只看該作者
chentang 發(fā)表于 2020-12-7 10:12
這個是剛學stc時做的,沒有定時器,現(xiàn)在已經(jīng)有更新版本,換成了自帶adc的stc15,體積更小,加入了閥值, ...

新年快樂!可不可以把新版本的分享一下呢?
回復(fù)

使用道具 舉報

10#
ID:5212 發(fā)表于 2021-9-2 20:08 | 只看該作者
LZ把新版本也分享一下呢,謝謝了
回復(fù)

使用道具 舉報

11#
ID:540334 發(fā)表于 2021-9-25 00:35 來自手機 | 只看該作者
胡鬧鬧 發(fā)表于 2018-9-10 20:08
如果在ADC中加入對汽車電瓶電壓進行檢測,這樣可以判斷車輛發(fā)動了電壓達到一定數(shù)值時再工作,這樣對電瓶有 ...

這個苦我吃過了,我在某寶購買了一片光敏電阻控制模塊安裝在我的摩托車上。在夜晚經(jīng)過有路燈的樹蔭下時大燈反復(fù)亮滅,爆閃狀態(tài)。感覺很擾民很失敗,對面來車以為是在挑釁他們。我現(xiàn)在也在想辦法加入適當?shù)难訒r,或者是加入時鐘芯片顯示時鐘,順便讓摩托車在夜晚的時間段禁用光敏電阻,大燈自動開啟,在白天的時候(沒有路燈和樹影)使能光敏方便摩托車進入車庫等光線不足的地方可以自動開關(guān)。這是我的思路也希望作者有所借鑒
回復(fù)

使用道具 舉報

12#
ID:130230 發(fā)表于 2021-9-27 10:16 | 只看該作者
qixiu1342 發(fā)表于 2020-12-25 19:59
學習了,準備做一個自動巡航,大致原理是通過車速控制油門(目前市面大部分都是電子油門),想法有了關(guān)鍵是 ...

。。。你這有點危險吧
回復(fù)

使用道具 舉報

13#
ID:969272 發(fā)表于 2021-10-12 19:47 | 只看該作者
紅外感應(yīng)器可以用成品代替嗎?比如電視機上用的。
回復(fù)

使用道具 舉報

14#
ID:47286 發(fā)表于 2021-10-13 12:57 來自手機 | 只看該作者
Aizlna 發(fā)表于 2021-9-25 00:35
這個苦我吃過了,我在某寶購買了一片光敏電阻控制模塊安裝在我的摩托車上。在夜晚經(jīng)過有路燈的樹蔭下時大 ...

你只需要加一個帶導(dǎo)管的光敏以區(qū)分正向光強變化就行
回復(fù)

使用道具 舉報

15#
ID:969272 發(fā)表于 2021-10-22 18:34 | 只看該作者
看一下新版的?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表