




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、PCF8591讀寫程序(一)、PCF85911、引腳說明ANI0ANI3 為模擬信號輸入端,不使用的輸入端應接地A0A2 地址輸入端GND、VCC 地和電源端(+5V)SDA 為I2C數(shù)據輸入與輸出端SCL 為I2C時鐘輸入端EXT 內外部時鐘選擇端,使用內部時鐘時接地,使用外部時鐘時接+5VOSC 外部時鐘輸入、內部時鐘輸出端,不使用時應懸空AGND 模擬信號地VREF 基準電壓輸入端AOUT D/A轉換后的電壓輸出端2、功能說明PCF8591是具有I2C總線接口的8位A/D及D/A轉換器,具有4路A/D輸入,1路D/A輸出。PCF8591采用典型的I2C總線接口器件尋址方法,即總線地址由器
2、件地址(1001)、引腳地址(由A0A2接地或+5V來確定,接地代表0;接+5V代表1)、方向位(即R/W)組成。因此,在I2C總線系統(tǒng)中最多可接8個這樣的器件。D7D6D5D4D3D2D1D01001A2A1A0R/WR/W=1表示讀操作,R/W=0表示寫操作。本例將A0A2接地,則讀地址為91H;寫地址為90H。地址字節(jié):由器件地址、引腳地址、方向位組成,它是通信時主機發(fā)送的第一字節(jié)數(shù)據。控制字節(jié):用于控制PCF8951的輸入方式、輸入通道、D/A轉換等,是通信時主機發(fā)送的第二字節(jié)數(shù)據,其格式如下:D7D6D5D4D3D2D1D0未用 (寫0)D/A輸出允許位 0為禁止 1為允許A/D輸入
3、方式選擇位00:4路單端輸入 01:3路差分輸入 10:單端與差分 11:2路差分輸入 未用 (寫0)自動增益選擇位 0為禁用 1為啟用AD通道選擇位 00:選擇通道0 01:選擇通道1 10:選擇通道2 11:選擇通道3 A/D輸入方式選擇說明:3、通信格式第一字節(jié)第二字節(jié)第三字節(jié)寫入器件地址(90H)寫入控制字節(jié)要寫入的數(shù)據向PCF8591寫入格式(高位在前)第一字節(jié)第二字節(jié)第三字節(jié)第四字節(jié)寫入器件地址(90H寫)寫入控制字節(jié)寫入器件地址(91H讀)讀出一字節(jié)數(shù)據從PCF8591讀數(shù)據格式(高位在前)(二)、I2C總線1、I2C總線數(shù)據位的傳輸 它通過2根線:串行數(shù)據線(SDA)和串行時鐘
4、線(SCL)組成。連接到總線上的每一個器件都有一個唯一的地址,而且都可以作為一個發(fā)生器或接收器,SDA和SCL都是雙向線路,分別通過一個電阻連接到電源(+5V)端。前提是連接到總線上的器件的SDA和SCL端必須是漏極或集電極開路型。I2C總線上的數(shù)據傳輸速率在標準模式下可達100Kb/s,快速模式可達400Kb/s,高速模式下可達3.4Mb/s。連接到總線的器件數(shù)量只由總線的電容(400PF)限制決定。 I2C總線上每傳輸一個數(shù)據位必須產生一個時鐘脈沖,I2C總線上數(shù)據傳輸?shù)挠行砸骃DA線上的數(shù)據必須在時鐘線SCL的高電平期間保存穩(wěn)定,數(shù)據線的改變只能在時鐘線為低電平期間。在標準模式下,高
5、低電平寬度必須大于4.7us(即每次時鐘線需延時4.7us后才能改變)。2、I2C總線數(shù)據的傳輸數(shù)據傳輸?shù)淖止?jié)格式發(fā)送到SDA線上的每一個字節(jié)必須為8位,每次發(fā)送的字節(jié)數(shù)量不受限制,從機在接收完一個字節(jié)后向主機發(fā)送一個應答位,主機在收到從機應答后才會發(fā)送第二字節(jié)數(shù)據,發(fā)送數(shù)據時先發(fā)數(shù)據的最高位。數(shù)據傳輸中的應答相應的應答位由接收方(從機)產生,在應答的時鐘脈沖期間,發(fā)送方(主機)應釋放SDA線(使其為高電平)。在應答過程中,接收方(從機)必須將數(shù)據線SDA拉低,使它在這個時鐘脈沖的高電平期間保持穩(wěn)定的低電平。3、I2C總線的傳輸協(xié)議尋址字節(jié)主機產生起始條件后,發(fā)送的第一字節(jié)為尋址字節(jié),該字節(jié)的
6、前7位為從機地址,最低位決定了傳輸?shù)姆较?,該最低位為?”表示主機寫數(shù)據到從機,“1”表示主機從從機中讀數(shù)據。從機地址由一個固定的部分(如高4位1001)和可編程部分(如低3位A0A2)及一個方向位(R/W)組成。傳輸格式主機產生起始條件后,首先發(fā)送一個尋址字節(jié),收到從機應答后,接著就傳輸數(shù)據,數(shù)據傳輸一般由主機產生的停止位終止。但如果主機仍希望在總線上通信,則它可以產生重復起始條件和尋址另一個從機,而不必產生一個停止條件。主機寫數(shù)據到從機的通信格式如下:1234567NN-1主機產生起始位發(fā)從機地址90H等待從機應答發(fā)送數(shù)據等待從機應答發(fā)送數(shù)據等待從機應答。停止位主機從從機中讀數(shù)據的通信格式
7、如下:1234567NN-1主機產生起始位發(fā)從機地址91H等待從機應答接收從機發(fā)出的數(shù)據向從機應答接收從機發(fā)出的數(shù)據向從機應答。主機產生停止位原理圖如下:匯編源代碼如下:;/本測試程序將AIN0通道的模擬電壓進行A/D轉換后,將數(shù)字量通過LED數(shù)碼管顯示出來,同時再將該數(shù)字;/量寫入PCF8591中,通過其內部的D/A轉換為模擬電壓輸出驅動LED發(fā)光二極管。ACK BIT 20H.0 ;應答標志位ACK=0表示無應答SCL BIT P1.0 ;時鐘線SDA BIT P1.1 ;數(shù)據線WADD EQU 21H ;器件地址(即從地址)SUBD EQU 22H ;器件內部地址(即子地址)NUMBR
8、EQU 23H ;需讀取的字節(jié)數(shù)NUMBW EQU 24H ;需寫入的字節(jié)數(shù)RDATA EQU 25H ;讀出數(shù)據的存放首地址WDATA EQU 26H ;寫入數(shù)據的存放首地址ORG 0000HSJMP MAINORG 0030HMAIN: MOV WADD,#90H ;寫入PCF8591的地址MOV P0,#0FFH ;關閉顯示MOV P2,#0FFHMOV SUBD,#40H ;寫入PCF8591的控制字MOV NUMBR,#1 ;寫入需讀取的字節(jié)數(shù)MOV NUMBW,#1 ;寫入需寫入的字節(jié)數(shù)MOV RDATA,#30H ;送入首地址MOV WDATA,#40H ;送入首地址MOV 50
9、H,#0 ;顯示的百位清零MOV 51H,#0 ;顯示的十位清零MOV 52H,#0 ;顯示的個位清零M1: LCALL READI2C ;讀PCF8591子程序MOV 40H,30HMOV NUMBR,#1MOV NUMBW,#1LCALL DATLCALL DISPLAYLCALL WRITEI2C ;寫PCF8591子程序SJMP M1;數(shù)據處理子程序DAT: MOV A,30HMOV B,#100DIV ABMOV 50H,AMOV A,#10XCH A,BDIV ABMOV 51H,AMOV 52H,BRET;顯示子程序DISPLAY: MOV DPTR,#TABMOV A,50HM
10、OVC A,A+DPTRMOV P0,AMOV P2,#01HLCALL TIM2MSMOV A,51HMOVC A,A+DPTRMOV P0,AMOV P2,#02HLCALL TIM2MSMOV A,52HMOVC A,A+DPTRMOV P0,AMOV P2,#04HLCALL TIM2MSRET;2ms延時子程序TIM2MS: MOV R6,#2TIM1: MOV R5,#250TIM2: NOPNOPDJNZ R5,TIM2DJNZ R6,TIM1RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH,8CH,0C6H
11、,0C7H,86H,0FFH ;共陽數(shù)碼管;從I2C總線讀取N個字節(jié)數(shù)據子程序READI2C: LCALL STARTI2C ;啟動I2C總線MOV A,WADD ;送入器件地址LCALL WI2C ;向I2C總線發(fā)送一個字節(jié)數(shù)據子程序LCALL RACK ;讀取從機應答位子程序JNB ACK,ROUT ;判斷從機有無應答ACK=0則無應答MOV A,SUBD ;送入器件內部地址LCALL WI2CLCALL RACKLCALL STARTI2CMOV A,WADDINC A ;改總線為讀取狀態(tài)LCALL WI2CLCALL RACKJNB ACK,READI2CMOV R0,RDATA ;送
12、入讀出數(shù)據的存放首地址RI2C2: LCALL RI2CMOV R0,ADJNZ NUMBR,RI2C1 ;判斷字節(jié)讀取完否LCALL NMACK ;調主機非應答子程序ROUT: LCALL STOPI2C ;調I2C總線停止子程序MOV RDATA,#30HRETRI2C1: LCALL MACK ;調主機應答子程序INC R0SJMP RI2C2;向I2C總線發(fā)送N個字節(jié)數(shù)據子程序WRITEI2C: LCALL STARTI2C ;啟動I2C總線MOV A,WADD ;送入器件地址LCALL WI2C ;向I2C總線發(fā)送一個字節(jié)數(shù)據子程序LCALL RACK ;讀取從機應答位子程序JNB
13、ACK,WOUT ;判斷從機有無應答ACK=0則無應答MOV A,SUBD ;送入器件內部地址LCALL WI2CLCALL RACKJNB ACK,WOUTMOV R0,WDATA ;送入寫入數(shù)據的存放首地址WI2C1: MOV A,R0LCALL WI2CLCALL RACKJNB ACK,WRITEI2CINC R0DJNZ NUMBW,WI2CWOUT: LCALL STOPI2CMOV WDATA,#40HRET;I2C總線啟動子程序STARTI2C: SETB SDASETB SCLNOPNOPNOPNOPNOPCLR SDANOPNOPNOPNOPNOPCLR SCLRET;I2C總線停止子程序STOPI2C: CLR SDASETB SCLNOPNOPNOPNOPNOPSETB SDARET;主機應答子程序MACK: CLR SDASETB SCLNOPNOPNOPNOPNOPCLR SCLRET;主機非應答子程序NMACK: SETB SDASETB SCLNOPNOPNOPNOPNOPCLR SCLRET;向I2C總線發(fā)送一個字節(jié)數(shù)據子程序WI2C: MOV R7,#8WLP: RLC AMOV SDA,CNOPSETB SCLNOPNOPNOPNOPNOPCLR SCLDJNZ R7,WLPRET;從I2C總線
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 戶外探險策劃師筆試試題及答案
- 紡織品檢測工程師筆試試題及答案
- 2025年淮安市清江浦區(qū)招聘教師筆試考試試題【答案】
- 2025年非離子型纖維素醚項目發(fā)展計劃
- 工程造價暑期實習報告范文
- 項目部安全事故應急方案與預案
- 2025年氣體檢測監(jiān)控系統(tǒng)項目建議書
- 2025年立式加工中心合作協(xié)議書
- 醫(yī)療培訓中的混合學習模式與技術應用探討
- 數(shù)據分析在優(yōu)化教育機構工作流程中的應用
- 《植物生長與環(huán)境》課程標準(含課程思政)
- 鐵路行車組織(高職)全套教學課件
- 注塑標準成型條件表電子表格模板
- 道閘系統(tǒng)施工方案
- 配置管理與漏洞修復
- 新版中國復發(fā)難治性急性髓系白血病診療指南
- 汽車維修輪胎服務方案范本
- 保潔巡查記錄表
- 成事的時間管理
- 國開大學2023年01月22503《學前兒童健康教育活動指導》期末考試答案
- 建筑工地九牌一圖內容僅供參考模板
評論
0/150
提交評論