<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > P87LPC767單片機在微功耗智能定位器中的應用

          P87LPC767單片機在微功耗智能定位器中的應用

          作者: 時間:2011-12-28 來源:網絡 收藏

          1 P87LPC767的引腳排列及主要特性

          P87LPC767是PHILIPS半導體公司推出的OTP系列單片機,它采用20腳封裝,可提供高速和低速的晶振和RC振蕩方式,也可以通過軟件編程選擇時鐘。該單片機具有較寬的操作電壓范圍,可通過控制寄存器編程來選擇I/O口的輸出模式,內含數字看門狗電路和I2C總線,其內部的二個模擬比較器可組成8位A/D及D/A轉換器,同時具有上電復位檢測和欠壓復位檢測功能,其I/O口的驅動電流可達到20mA。P87LPC767采用80C51加速處理結構?指令執(zhí)行速度是標準80C51MCU的兩倍,溫度范圍為-40~+85℃,該單片機本身的電磁兼容性極好,并繼承了PHILIPS半導體的低功耗特性以及不可破譯性等特性。圖1所示為P87LPC767單片機的引腳圖。該芯片的主要特點如下:

          ●采用20腳DIP和SO封裝,可滿足不同用戶的需求?

          ●時鐘頻率最大可達20MHz,除乘法和除法指令外,其加速執(zhí)行時間可提高到300~600ns。

          ●內含4通道多路8位A/D轉換器,在振蕩頻率fosc為20MHz時?轉換時間只有9.3μs。

          ●具有極寬的電壓適用范圍。在用于數字功能時,其操作電壓的變化范圍為2.7~6.0V。

          ●內含4k字節(jié)OTP程序存儲器和128字節(jié)的RAM。另有32Byte的用戶代碼區(qū)?可用來存放序列碼及設置參數。

          ●內含2個16位的定時/計數器,每一個定時器都可設置為溢出時觸發(fā)相應端口輸出方式。其內部含有2個模擬比較器。

          ●帶有全雙工通用異步接收/發(fā)送(UART)及I2C通信接口,并具有2個外部中斷輸入和8個鍵盤中斷輸入以及4個中斷優(yōu)先級。

          ●具有內部數字看門狗電路,看門狗定時器利用片內獨立振蕩器工作。由于不需要外接元器件,因此可以用于振蕩器的失效檢測。其看門狗溢出時間有8種選擇方式。

          ●具有低電平和低電壓兩種復位方式。在低電平復位時,可通過片內上電復位而不需要外接元件;在低電壓復位時,可選擇事先預設的兩種電壓之一來復位,并可在掉電時使系統(tǒng)安全關閉。此外,也可將其設定為一個中斷源。

          ●可編程I/O口輸出模式具有準雙向口、開漏輸出口、上拉和輸入口等模式,并可通過施密特觸發(fā)輸入模式來控制口線輸出轉換速度以降低EMI。所有I/O口線均具有20mA的驅動能力。

          ●通過串行EPROM可在線編程,并有2位E-PROM安全碼可防止程序被讀出。

          ●具有低功耗功能,當電壓為3.3V,頻率為20kHz~100kHz時的靜態(tài)電流只有9~44μA 。并有空閑和掉電兩種省電模式,具有掉電喚醒功能。

          2?。校福罚蹋校茫罚叮返闹饕δ?/B>

          P87LPC767本身具有多種功能,圖2所示是該器件的邏輯符號圖。

          2.1 增強型的MCU

          由于P87LPC767單片機采用80C51加速處理結構,運行速度是標準80C51的2倍,這就意味著P87LPC767在10MHz時的性能與標準的80C51采用20MHz時的性能相同。它的一個機器周期由6個振蕩周期組成,而大多數指令執(zhí)行時間為6個或12個振蕩周期,因此可通過內部寄存器選擇為標準80C51 MCU時序來使一個機器周期變?yōu)椋保矀€振蕩周期。

          2.2 可設定的模擬功能

          P87LPC767內部集成有1個A/D轉換器、2個模擬比較器和2個D/A轉換器,因此,在使用中,為了提高性能和降低功耗,可通過置位和清除內部寄存器PTOAD和PXM1、PXM2的相應位,以使用于模擬功能管腳的數字信號輸入(DAC輸出腳除外)和輸出功能關閉。

          2.3 A/D轉換器

          P87LPC767內部帶有一個四通道的8位A/D轉換器。四個P0口可選擇為A/D轉換的輸入。其A/D轉換的電源和參考電壓與MCU共用VCC和VSS。而A/D轉換的最低工作在為3V,A/D轉換器的連結方法如圖3所示。

          A/D轉換器包括一個4模擬多路開關選擇器和一個8位逐次逼近ADC。其中A/D還帶有一個比率電位計以保證DAC的單調性。該A/D轉換器可由特殊功能寄存器ADCON控制,并可通過置位ENADC位來使能A/D,同時可通過置位ADCS位來啟動A/D轉換。在A/D轉換結束后,ADCS位清零,中斷標志位ADCI被置位,并通過查詢或中斷方式進行采樣,同時在轉換完成時,將結果放入DAC0中。理想A/D轉換的結果(V)如下:

          V=(VIX-VSS)×256/(VDD-VSS)(將結果四舍五入)

          2.4 I2C總線接口

          P87LPC767的I2C總線通過兩條線(SDA和SCL)在總線和裝置中間傳遞信息??偩€在傳輸信息時具有主-從設備間數據雙向傳輸、從設備串行尋址、每傳送完一字節(jié)產生應答位及多主機同時傳送時進行仲裁以避免總線上數據沖突等特性。

          I2C總線系統(tǒng)包括一個可簡化軟件驅動的I2C總線硬件。除了必要的總線仲裁、幀錯誤檢測、時鐘擴展和總線超時外,還可通過一個一位接口來循環(huán)查詢和中斷以同步軟件。

          2.5 中斷

          P87LPC767具有四個優(yōu)先級的中斷結構,這為P87LPC767的多中斷源處理提供了極大的靈活性。P87LPC767可支持多達13個中斷源。任何一個中斷源都可以通過對IEN0和IEN1中的相應位置位或清零來單獨使能或禁止。每個中斷源可通過清零或置位IP0、IP0H、IP1、IP1H中的相應位來實現(00為最低,11為最高)。同級中斷可以通過仲裁隊列的查詢順序來處理。

          P87LPC767允許端口0的部分或全部引腳被使能為鍵盤中斷,并可通過對內部特殊功能寄存器KBI的相應位置位來實現。當打開KBI中斷功能后,任一被使能的引腳拉低都會使AUXRI寄存器內鍵盤中斷標志(KBF)置位。由于人的操作存在著對時間分辨精度及鍵開關閉合的機械延遲,因此,通常將KBI特性用于中斷服務程序的輪流查詢端口0,以確定按下的是哪個鍵,而且有時甚至可決定是否將處理器從低功耗模式下喚醒。



          3?。校福罚蹋校茫罚叮返膽?/B>

          根據P87LPC767單片機抗干擾能力強、溫度適應范圍寬、內含高質量的A/D轉換器、可提供增強的MCU、可對模擬功能進行設定、強大的鍵盤中斷功能以及微功耗等特點?結合智能定位控制器的技術要求,筆者以P87LPC767單片機為核心設計了一個微功耗,以取代噴嘴—檔板力平衡式結構的定位器,從而提高了系統(tǒng)的自動化水平,減小了運行人員的工作強度。這種微功耗的電路原理圖如圖4所示。

          該定位器利用控制室安全柵(AQS)提供的4-20mA信號經穩(wěn)壓及信號轉換電路來為定位器提供電源,同時也為定位器提供輸入信號并送至AD1口。當由位置檢測器檢測的位置信號(FW)送至AD0口后,經單片機采樣并進行運算處理,同時將輸出控制信號送到復用開關,最后經微型馬達(WXMD)即可控制汽動執(zhí)行機構以實現位置控制。

          4 結論

          由于定位器的電源是由安全柵的輸出電流提供的,所以其負載能力有限,為了使定位器的微型馬達和復用開關可靠動作,除了選擇低功耗器件外,還應盡量減少外圍芯片的數量,因為P87LPC767具有內部A/D轉換器、比較器和極強的I/O口驅動能力,而且具有很好的溫度特性,因此,用它可以很好地解決一些技術難題,并可大大提高可靠性。

          安全柵相關文章:安全柵原理




          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();