• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > pic單片機學習教材(一):接口設計

    pic單片機學習教材(一):接口設計

    作者: 時間:2012-07-24 來源:網絡 收藏

    PIC(Peripheral Interface Controller)是一種用來開發去控制外圍設備的集成電路(IC)。現在PIC應用領域已經相當廣泛,為了方便廣大工程師能夠很好的 PIC,電子發燒友網整理了PIC單片機的相關知識應用,現在先帶您下PIC單片機在中的應用吧。

    本文引用地址:http://www.czjhyjcfj.com/article/171135.htm

      一、SPI串行EEPROM與PIC單片機的
    目前市場上有許多種單片機用在嵌入式控制系統中,這些嵌入式控制系統中的很大一部分都要用到非易失性存儲器。由于串行EEPROM 具有封裝尺寸小,存儲容量靈活,對I/O 引腳要求低,和低功耗低成本等特點,已成為非易失性存儲器的首選。

      


      二、觸摸傳感器QST108與PIC單片機的設計

      QST108是意法半導體公司針對人機界面的觸摸按鍵控制而推出的電容觸摸傳感器。

      其工作原理采用了美國昆騰公司的電荷轉移電容專利技術(QProx),支持8個獨立按鍵,且可選擇按鍵狀態檢測輸出或I2C總線控制2種正常工作方 式;同時,通過軟件命令可使其進入低功耗模式,當有按鍵按下時可被喚醒。QST108特有的相鄰按鍵抑制算法使得一個按鍵在按下未松開時,其他按鍵處于無 效狀態;自校準和自動漂移補償功能使其無須人工校準,從而進一步降低了QST108的應用難度。引腳配置如圖1所示,各引腳功能如表1所列。

      

      

    三、PIC單片機與串行閃存的SPI接口設計

      PIC單片機以性能穩定、品種眾多等特點在工業控制、儀器儀表、家電、通信等領域得到廣泛應用。雖然很多型號自身集成了存儲器,但在很多情況下難以滿 足系統對大容量存儲的要求,需要外擴非易失性的存儲器。與并行Flash存儲器相比,串行Flash存儲器占用MCU引腳少,體積小,易于擴展,接線簡 單,工作可靠,故而越來越多地應用在各類電子產品和工業測控系統中。本文主要討論PIC16F877A單片機與串行閃存M25P16之間的SPI通信,在 要求大容量數據存儲且MCU引腳資源有限的情況下具有實用價值。

      1 SPI工作原理

      SPI(Serial Peripheral Interface)是一種常用的串行通信協議,用于MCU系統與外圍設備的通信,可用來連接存儲器、A/D轉換器、D/A轉換器、實時時鐘、LCD驅動 器、傳感器,甚至其他處理器。SPI主要使用4個信號:MOSI(主機輸出/從機輸人)、MISO(主機輸入/從機輸出)、SCK(串行時鐘)和CS(片 選)。其中,SCK由主機產生,作為傳輸的同步時鐘,控制所有數據傳輸。主機通過觸發從設備的CS決定二者之間的SPI傳輸是否能夠進行。主機和外設都包 含1個串行移位寄存器。主機通過向自己的SPI串行寄存器寫入1個字節來發起1次傳輸,然后通過MOSI信號線將數據傳給外設,同時外設將自己移位寄存器 中的內容通過MISO信號線返回給主機,如圖1所示。這樣,兩個移位寄存器中的內容就交換了。也就是說,外設的寫操作和讀操作是同步完成的。在實際應用 中,如果只進行寫操作,則主機只需忽略收到的字節即可;如果主機要讀外設的數據,必須發送1個字節來引發從機的傳輸,發送的這個字節可以是任意數據。

      


      四、數字電位器X9241與PIC單片機的接口及程序設計電路圖

      X9241概述

      X9241是XICOR公司生產的、把4個E2POT數字電位器集成在單片的CMOS集成電路上的一種數字電位器。它包含4個電阻陣列,每個陣列包含 63個電阻單元,在每個單元之間和2個端點之間都有被滑動單元訪問的抽頭點。滑動單元在陣列中的位置由用戶通過2線串行總線接口控制。每個電阻陣列與1個 滑動端計數寄存器(WCR)和4個8位數據寄存器聯系在一起。這4個數據寄存器可由用戶直接寫入和讀出。WCR的內容控制滑動端在電阻陣列中的位置,其功 能框圖如圖1所示。

      

      X9241與PIC16CXX單片機的接口及程序清單

      

    五、PIC單片機的IIC接口程序

      InitI2CBusMaster

      ;************************************************************

      TxmtStartBit

      bsf Bus_Busy ; on a start condition bus is busy

      bsf STATUS, RP0 ; Select page 1

      bsf _SDA ; set SDA high

      bsf _SCL ; clock is high

      call Delay40uSec ; This is necessary for setup time

      bcf _SDA ; This gives a falling edge on SDA while clock is high

      call Delay47uSec ; Necessary for START HOLD time

      return

      ;************************************************************

      TxmtStopBit

      bsf STATUS, RP0 ; Select page 1

      bcf _SCL ; clock is low

      bcf _SDA ; set SDA low

      bsf _SCL ; clock is pulled up

      call Delay40uSec ; Setup time for STOP condition

      bsf _SDA ; rising edge on SDA while CLOCK is high

      call Delay47uSec ; makes sure a START isn't sent immediately after a STOP

      bcf Bus_Busy ; The bus isn't busy anymore

      return

      ;************************************************************

    單片機相關文章:單片機教程


    電路圖符號相關文章:電路圖符號大全


    單片機相關文章:單片機視頻教程


    單片機相關文章:單片機工作原理


    存儲器相關文章:存儲器原理




    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 汉川市| 肥城市| 睢宁县| 米易县| 泽库县| 行唐县| 岳西县| 禄丰县| 玉山县| 普宁市| 瑞金市| 蓬安县| 淳安县| 界首市| 德令哈市| 天水市| 大冶市| 五寨县| 偃师市| 通海县| 和硕县| 乌拉特中旗| 聂拉木县| 贡觉县| 油尖旺区| 介休市| 体育| 治县。| 南召县| 吉木萨尔县| 新沂市| 通渭县| 永定县| 阳曲县| 乐至县| 乌拉特中旗| 永宁县| 通榆县| 乐平市| 安达市| 沧州市|