男女午夜激情_www.天堂av.com_亚洲综合小说区_亚洲欧美自拍视频_成年精品_久久www免费人成—看片_激情综合五月天_久久高潮视频_最新国产成人ab网站_国产精品卡一

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發
培訓信息
贊助商
24C02在PIC單片機系統中的應用
24C02在PIC單片機系統中的應用
 更新時間:2008-7-26 17:09:09  點擊數:4
【字體: 字體顏色
    MICROCHIP公司的PIC16系列單片機以其精簡的指令和較強的端口驅動能力在各個領域得到廣泛的應用。在需要儲存較大數量數據的控制領域,24C02可以解決PIC16C8×系列片內EEPROM不足的問題,用以保存諸如用戶設置參數、采集到的數據等。
    由于部分PIC單片機不具備I2C總線接口,在應用時必須用軟件法加以解決。
    在軟件編制時應當嚴格遵循I2C總線規則,并注意24C02的片內讀寫周期時間,調整好程序流程,以避免寫不進、讀不出的問題。
    下面將筆者在實際工作中遇到的問題和解決的方法進行簡單的介紹,希望可以給同行一些幫助。
    首先約定,數據由微處理器發送到24C02稱“寫”、“發”,反之稱“讀”、“收”。24C02支持順序讀寫和隨機讀寫,文中以隨機讀寫方式為例進行介紹。
    一、硬件電路(如圖1所示)。
    使用微處理的任意兩個通用I/O端口(圖中用RA2、RA3)作為與24C02的連接,其中一個作為時鐘SCL線,另外一個作為數據SAD線。兩個端口均接22kΩ上拉電阻。
    二、軟件設計
    首先簡要介紹一下用EEPROM的I2C總線的規則。
    初始狀態時,SCL、SDA兩線都為高。
    當SCL為高電平時,如果SDA線跌落,認為是“起始位”。
    當SCL為高電平時,如果SDA線上升,認為是“停止位”。
    除此之外,在發送數據的過程中當SCL為高電平時,SDA應保持穩定。
    ACK應答位指在此時鐘周期內由從器件(EEPROM)把SDA拉低,表示回應。這時主器件(PIC16微處理器)的SDA口的屬性應該變為輸入以便檢測。
    1. 在寫數據周期應該依次執行以下過程:
    1)發“起始位”。2)發“寫入代碼”(8bit),1010(A1A2A3)0,其中的A1、A2、A3三位是片地址,由24C02的硬件決定,文中采用000。3)收“ACK”應答(1bit)。4)發EEPROM片內地址(即要寫入EEPROM的什么位置)(8bit)。從00到FF中的任意一個,對應EEPROM中的相應位。5) 收“ACK”應答(1bit)。6)發要發送的數據(8bit),即要存儲到EEPROM中的數據。7)發“停止位”。
    接下來,如圖2所示,進入輪詢程序以便檢驗24C02片內寫周期是否完成。如果已經完成則進入下一個字節的寫操作過程。如果沒有完成則繼續等待,直到完成。
    2. 在讀數據周期,依次執行以下過程:
    1)發“起始位”。2)發“寫入代碼”(8bit),1010(A1A2A3)0,其中A1、A2、A3三位是片地址,由24C02的硬件決定,文中采用000。3)收“ACK”應答(1bit)。4)發“EEPROM”片內地址(即要讀出EEPROM的位置)(8bit)。從00到FF中的任意一個,對應EEPROM中的相應位。5)收“ACK”應答(1bit)。6)發“起始位”(1bit)。7)發“讀出代碼”(8bit),1010(A1A2A3)1,其中A1、A2、A3三位是片地址,由24C02的硬件接線決定,文中采用000。8)接收。9)發ACK應答。10)發“停止位”。
    要特別注意的兩個問題是:1)24C02有一個約10ms的片內寫周期。在這個周期內,24C02是不對外界的操作作出反應的。2)在發送數據的過程中,要確保當SCL為高電平時,SDA保持穩定。
    解決第一個問題的常見方法有兩個,其一為采用延時等待,確保在寫過程中,在一個字節完成發送了停止位之后,微處理器等待足夠的時間,通常應該超過10ms,再送下一個字節,這段時間用來等待EEPROM完成片內寫周期。另一個是采用輪詢的方式,判斷EEPROM是否完成了片內寫周期。這種方式的主導思想是,當向EEPROM發送寫標志后,正常情況下,EEPROM應該有ACK應答。但是當EEPROM在進行片內寫周期的時候,則不會產生這樣的應答。程序據此判斷,EEPROM是否完成了片內的寫周期程序。如果完成,則可以繼續寫入下一個要寫的內容,否則繼續等待。
    第一種方法編程較為簡單,但是會浪費大量的機器時間,并且程序的延時時間不好確定。第二種方法的優點在于,雖然編程較為復雜,但是較為快速,對其余的程序模塊影響較少,便于完成程序的模塊化設計。
    對于在發送數據的過程中,要確保當SCK為高電平時,SDA必須保持穩定,應該在程序中利用軟件給予保證。
    如果可以很好的解決以上兩個問題,數據的寫入和讀出是方便快捷和可靠的。

  • 上一篇: LCD驅動HT1621的PIC源代碼
  • 下一篇: 采用PIC16F639的被動無鑰門禁系統設計
  • 發表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發消息66821730(技術支持)點擊這里給我發消息66821730(廣告投放) 點擊這里給我發消息41031197(編輯) 點擊這里給我發消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業自行提供,該企業負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(濱江)機電一體化學會
    中國行業電子商務100強網站

    網站經營許可證:浙B2-20080178-1
    主站蜘蛛池模板: 舟曲县| 酉阳| 公主岭市| 鄂温| 武定县| 靖江市| 光泽县| 临猗县| 咸宁市| 米泉市| 从化市| 镇康县| 得荣县| 聊城市| 增城市| 古田县| 桐庐县| 句容市| 保康县| 鲁山县| 疏附县| 庄河市| 兖州市| 黑山县| 郓城县| 青神县| 沛县| 剑阁县| 玛曲县| 甘谷县| 毕节市| 广汉市| 双牌县| 洪洞县| 化隆| 广东省| 易门县| 宁蒗| 策勒县| 庄浪县| 彰化市|