基于XC164CM的LED汽車燈控制系統設計
3.1 主函數部分
1)初始化部分:設置各端口的輸入輸出狀態,對各個模塊進行初始化并開啟定時器。
2)開關掃描:選用6路開關控制10路燈的開啟和關閉。當開關閉合時輸出低電平,此時對應LED燈的開啟狀態;開關斷開時輸出高電平,對應LED燈的關閉狀態。
3)狀態數字量生成:狀態數字量為16位數據,狀態位(高八位)表示驅動器狀態,標志位(低八位)表示驅動器編號。車燈的初始亮度設為6級。
4)使能全局中斷,等待定時器中斷信號和CAN總線通信中斷信號,并在接收到中斷信號后進入相應的中斷服務程序。
3.2 定時器中斷子程序
定時器每20 ms產生一次定時中斷信號,進入定時器中斷服務程序。在定時器中斷服務程序中實現的操作有:
1)開啟AD轉換,等待AD轉換完成,并將對AD采樣結果做歸一化處理。
2)環境亮度檢測:為避免亮度信息的誤判斷,只有當位于車身前向、側面和頂部3個方向的光敏電阻器同時檢測到亮度值變化時(且同時超過判斷門限),才認為檢測結果有效,判斷所處環境亮度等級,并將結果送至車燈亮度調整程序。若3個光敏電阻未同時檢測到亮度值變化,則認為只是外界干擾造成的亮度差異,而行車環境的亮度未發生變化。
3)在檢測環境亮度的同時,對10路LED燈的開關量也進行檢測和更新。
4)車燈亮度調整:將檢測到的外界環境亮度和前一次檢測到的環境亮度進行比較,并根據比較結果對亮度進行相應調整。具體調整策略在2.2節中。
5)過溫保護:對采樣的溫度結果進行比較判斷,若溫度超過80度,首先產生一個過溫提示信息,提示控制系統進入降額應用,將降額標志位置1,驅動器功率減半,隨后將降額標志位歸零。
6)狀態數字量更新:首先,對AD采樣結果做歸一化處理,將驅動器電壓信號的轉化結果與測定的工作電壓范同比較,超出范圍的認定為故障態,生成狀態位101,否則使用亮度級寄存器的值作為狀態位。其次,將得到的狀態位與開關寄存器值相與(開關寄存器取值表:開啟為1,關閉為0)得到最終狀態位。最后,狀態位與驅動器標志位形成狀態數字量,并將其放入CAN發送緩沖區。
3.3 CAN接收中斷子程序
1)CAN總線接口正確接收信息后,置位中斷標志位,進入接收中斷服務程序。
2)判斷中斷是否為遠程幀中斷,是則將狀態量信息寫CAN模塊發送緩存區,并啟動自動發送;否則進一步判斷是否為數據幀接收中斷。如果是數據幀接收中斷,則讀CAN接收緩存區的值并將其寫入CAN調整量。最后清除相應的標志位,返回到主函數。流程圖如圖5所示。本文引用地址:http://www.j9360.com/article/159682.htm
4 結論
文中設計了基于XC164CM單片機的高端車用燈光控制模塊,該模塊不僅完成了對每個車燈的亮度控制,而且可實現對每個車燈的狀態檢測。汽車燈光控制模塊的工作過程是一個不斷循環的檢測過程,通過對比前后兩次的檢測結果對亮度信息不斷更新,再根據更新的亮度信息來調節車燈亮度,從而實現了燈光的亮度自適應調整。在實驗過程中,選用LED5050白燈作為車燈實驗燈,并配以車燈罩,制成車燈模擬演示板。在車燈負載和單片機接口之間由自主研發的實驗電路連接,并在實驗電路上設置6路開關,實現對10路車燈的接通、斷開控制。實驗結果證明,本系統性能穩定,實現了設計的所有功能,并可以正確返回結果。
評論