pic單片機(jī)學(xué)習(xí)教材(一):接口設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
PIC單片機(jī)(Peripheral Interface Controller)是一種用來(lái)開(kāi)發(fā)去控制外圍設(shè)備的集成電路(IC)?,F(xiàn)在PIC單片機(jī)應(yīng)用領(lǐng)域已經(jīng)相當(dāng)廣泛,為了方便廣大工程師能夠很好的學(xué)習(xí) PIC單片機(jī),電子發(fā)燒友網(wǎng)整理了PIC單片機(jī)的相關(guān)知識(shí)應(yīng)用,現(xiàn)在先帶您學(xué)習(xí)下PIC單片機(jī)在接口設(shè)計(jì)中的應(yīng)用吧。
一、SPI串行EEPROM與PIC單片機(jī)的接口設(shè)計(jì)
目前市場(chǎng)上有許多種單片機(jī)用在嵌入式控制系統(tǒng)設(shè)計(jì)中,這些嵌入式控制系統(tǒng)中的很大一部分都要用到非易失性存儲(chǔ)器。由于串行EEPROM 具有封裝尺寸小,存儲(chǔ)容量靈活,對(duì)I/O 引腳要求低,和低功耗低成本等特點(diǎn),已成為非易失性存儲(chǔ)器的首選。
二、觸摸傳感器QST108與PIC單片機(jī)的接口設(shè)計(jì)
QST108是意法半導(dǎo)體公司針對(duì)人機(jī)界面的觸摸按鍵控制而推出的電容觸摸傳感器。
其工作原理采用了美國(guó)昆騰公司的電荷轉(zhuǎn)移電容專(zhuān)利技術(shù)(QProx),支持8個(gè)獨(dú)立按鍵,且可選擇按鍵狀態(tài)檢測(cè)輸出或I2C總線(xiàn)控制2種正常工作方 式;同時(shí),通過(guò)軟件命令可使其進(jìn)入低功耗模式,當(dāng)有按鍵按下時(shí)可被喚醒。QST108特有的相鄰按鍵抑制算法使得一個(gè)按鍵在按下未松開(kāi)時(shí),其他按鍵處于無(wú) 效狀態(tài);自校準(zhǔn)和自動(dòng)漂移補(bǔ)償功能使其無(wú)須人工校準(zhǔn),從而進(jìn)一步降低了QST108的應(yīng)用難度。引腳配置如圖1所示,各引腳功能如表1所列。
三、PIC單片機(jī)與串行閃存的SPI接口設(shè)計(jì)
PIC單片機(jī)以性能穩(wěn)定、品種眾多等特點(diǎn)在工業(yè)控制、儀器儀表、家電、通信等領(lǐng)域得到廣泛應(yīng)用。雖然很多型號(hào)自身集成了存儲(chǔ)器,但在很多情況下難以滿(mǎn) 足系統(tǒng)對(duì)大容量存儲(chǔ)的要求,需要外擴(kuò)非易失性的存儲(chǔ)器。與并行Flash存儲(chǔ)器相比,串行Flash存儲(chǔ)器占用MCU引腳少,體積小,易于擴(kuò)展,接線(xiàn)簡(jiǎn) 單,工作可靠,故而越來(lái)越多地應(yīng)用在各類(lèi)電子產(chǎn)品和工業(yè)測(cè)控系統(tǒng)中。本文主要討論P(yáng)IC16F877A單片機(jī)與串行閃存M25P16之間的SPI通信,在 要求大容量數(shù)據(jù)存儲(chǔ)且MCU引腳資源有限的情況下具有實(shí)用價(jià)值。
1 SPI工作原理
SPI(Serial Peripheral Interface)是一種常用的串行通信協(xié)議,用于MCU系統(tǒng)與外圍設(shè)備的通信,可用來(lái)連接存儲(chǔ)器、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器、實(shí)時(shí)時(shí)鐘、LCD驅(qū)動(dòng) 器、傳感器,甚至其他處理器。SPI主要使用4個(gè)信號(hào):MOSI(主機(jī)輸出/從機(jī)輸人)、MISO(主機(jī)輸入/從機(jī)輸出)、SCK(串行時(shí)鐘)和CS(片 選)。其中,SCK由主機(jī)產(chǎn)生,作為傳輸?shù)耐綍r(shí)鐘,控制所有數(shù)據(jù)傳輸。主機(jī)通過(guò)觸發(fā)從設(shè)備的CS決定二者之間的SPI傳輸是否能夠進(jìn)行。主機(jī)和外設(shè)都包 含1個(gè)串行移位寄存器。主機(jī)通過(guò)向自己的SPI串行寄存器寫(xiě)入1個(gè)字節(jié)來(lái)發(fā)起1次傳輸,然后通過(guò)MOSI信號(hào)線(xiàn)將數(shù)據(jù)傳給外設(shè),同時(shí)外設(shè)將自己移位寄存器 中的內(nèi)容通過(guò)MISO信號(hào)線(xiàn)返回給主機(jī),如圖1所示。這樣,兩個(gè)移位寄存器中的內(nèi)容就交換了。也就是說(shuō),外設(shè)的寫(xiě)操作和讀操作是同步完成的。在實(shí)際應(yīng)用 中,如果只進(jìn)行寫(xiě)操作,則主機(jī)只需忽略收到的字節(jié)即可;如果主機(jī)要讀外設(shè)的數(shù)據(jù),必須發(fā)送1個(gè)字節(jié)來(lái)引發(fā)從機(jī)的傳輸,發(fā)送的這個(gè)字節(jié)可以是任意數(shù)據(jù)。
四、數(shù)字電位器X9241與PIC單片機(jī)的接口及程序設(shè)計(jì)電路圖
X9241概述
X9241是XICOR公司生產(chǎn)的、把4個(gè)E2POT數(shù)字電位器集成在單片的CMOS集成電路上的一種數(shù)字電位器。它包含4個(gè)電阻陣列,每個(gè)陣列包含 63個(gè)電阻單元,在每個(gè)單元之間和2個(gè)端點(diǎn)之間都有被滑動(dòng)單元訪(fǎng)問(wèn)的抽頭點(diǎn)。滑動(dòng)單元在陣列中的位置由用戶(hù)通過(guò)2線(xiàn)串行總線(xiàn)接口控制。每個(gè)電阻陣列與1個(gè) 滑動(dòng)端計(jì)數(shù)寄存器(WCR)和4個(gè)8位數(shù)據(jù)寄存器聯(lián)系在一起。這4個(gè)數(shù)據(jù)寄存器可由用戶(hù)直接寫(xiě)入和讀出。WCR的內(nèi)容控制滑動(dòng)端在電阻陣列中的位置,其功 能框圖如圖1所示。
X9241與PIC16CXX單片機(jī)的接口及程序清單
五、PIC單片機(jī)的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
;************************************************************