新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的角度測(cè)量?jī)x的設(shè)計(jì)

基于單片機(jī)的角度測(cè)量?jī)x的設(shè)計(jì)

作者: 時(shí)間:2012-04-30 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://butianyuan.cn/article/171541.htm

  1. 3 與外圍器件的數(shù)據(jù)通信

  與光電編碼器:因?yàn)楣怆娋幋a器獲得值的速度遠(yuǎn)大于的工作速度,所以,單片機(jī)可以認(rèn)為光電編碼器上的數(shù)據(jù)總是處于準(zhǔn)備好狀態(tài),單片機(jī)隨時(shí)可以讀取有效數(shù)據(jù),16 位的值分成高8 位和低8 位兩次讀取,它們之間的數(shù)據(jù)是并行無條件傳送。

  單片機(jī)與MAX7219 :從單片機(jī)和MAX7219的工作速度來看,CPU 兩次發(fā)送數(shù)據(jù)給MAX7219 的時(shí)間間隔,足以保證單片機(jī)訪問MAX7219 時(shí),MAX7219 總是處于準(zhǔn)備好狀態(tài)。而MAX7219 又是串行L ED 顯示驅(qū)動(dòng)器,因此,單片機(jī)與MAX7219 的數(shù)據(jù)傳送是串行無條件傳送。

  單片機(jī)與MAX813 :因?yàn)閱纹瑱C(jī)向MAX813發(fā)送數(shù)據(jù)時(shí),MAX813 只等待接收單片機(jī)的初始化數(shù)據(jù)而并無其它的工作其工作速度足夠快,可以認(rèn)為MAX813 總是處于準(zhǔn)備好狀態(tài)。因此,單片機(jī)與MAX813 的數(shù)據(jù)傳送也是串行無條件傳送。

  2 軟件原理

  啟動(dòng)工作后,單片機(jī)的工作過程是:系統(tǒng)啟動(dòng)后,初始化外部看門狗,初始化顯示驅(qū)動(dòng)芯片MAX7219 ,給看門狗計(jì)數(shù)器賦初值,讀取光電編碼器獲取的角度值,當(dāng)角度偏差值處在某一特定范圍時(shí),單片機(jī)發(fā)出控制信號(hào)點(diǎn)亮與該范圍相對(duì)應(yīng)的指示燈,將當(dāng)前的角度值轉(zhuǎn)換成密位值顯示在數(shù)碼屏,又重新給看門狗計(jì)數(shù)器賦初值,進(jìn)入下一個(gè)工作循環(huán)。主函數(shù)的工作流程如圖3 所示。

圖3  主函數(shù)流程圖

圖3 主函數(shù)流程圖

請(qǐng)注意,流程圖中,帶雙線邊的矩形框表示該部分為函數(shù)。在本課題的軟件中,采用了C51 編程語言,因?yàn)橛肅51 編程不僅效率高,而且可讀性很強(qiáng)。

  下面給出主函數(shù)的源代碼。

  void main (void)

  {

  WDI = 0 ; / / 初始化看門狗

  InitMax7219 () ; / / 初始化MAX7219 的函數(shù)

  while (1) {

  WDI = 1 ; / /喂狗

  WDI = 0 ; / /喂狗

  GetAngle () ; / / 讀角度值的函數(shù)

  MachView() ; / / 指示燈匹配顯示的函數(shù)

  GetMil () ; / / 計(jì)算密位值的函數(shù)

  DisplayMil () ; / / 顯示密位的函數(shù)

  }

  }

  在主函數(shù)調(diào)用的幾個(gè)函數(shù)中,InitMax7219() 的功能是初始化L ED 顯示驅(qū)動(dòng)器MAX7219 ,單片機(jī)向MAX7219 發(fā)送消影控制、亮度、掃描范圍、譯碼方式信息。

  GetAngle () 的功能是從光電編碼器讀角度值,先讀高8 位,再讀低8 位,然后將高8 位和低8 位合并,最后舍去最低位(光電編碼器的有效數(shù)據(jù)是15 位) .

  MachView() 的功能是角度偏差指示燈匹配顯示,將該角度值與系統(tǒng)預(yù)設(shè)的角度值比較,判斷瞄準(zhǔn)的角度值是偏高、偏低還是適中。如果角度值偏高,那么單片機(jī)就發(fā)出控制命令,使偏高指示燈亮,如果偏低,則令偏低指示燈亮,否則令適中指示燈亮。

  值得注意的是,計(jì)算密位值的函數(shù)GetMil() 的代碼編寫,要考慮角度的轉(zhuǎn)換精度,在本課題中,采用了C51 中的long 型變量來分別存放密位的整數(shù)和小數(shù)部分,并將角度的小數(shù)部分放大十萬倍后參加運(yùn)算,保證轉(zhuǎn)換精度。

  DisplayMil( )的功能是驅(qū)動(dòng)MAX7219 顯示密位。首先顯示密位,判斷此角度是否進(jìn)入預(yù)設(shè)區(qū),如果是,熄滅符號(hào)燈,各位顯示0;如果沒有,判斷角度值是否為負(fù),如果是,顯示負(fù)號(hào),如果是正,不顯示負(fù)號(hào),然后將角度值顯示在L ED顯示屏上。

  由于篇幅所限,程序的源代碼沒有給出。

  3 結(jié)束語

  為了使角度能在各種可能的惡劣環(huán)境下(如高溫、低溫、振動(dòng)等環(huán)境) 正常工作,在整個(gè)過程中,要著重考慮的問題是硬件的可靠性和軟件的可靠性。設(shè)計(jì)時(shí)的注意事項(xiàng)如下: (1)電源芯片的額定功率選擇要留有余量。(2) 元器件選擇工業(yè)級(jí)或軍用級(jí)產(chǎn)品。(3) 采用硬件看門狗方案,防止單片機(jī)程序鎖死。本課題設(shè)計(jì)的樣機(jī)已處于測(cè)試階段,目前已通過了常溫和多種環(huán)境試驗(yàn)的測(cè)試。


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉