教師推薦書籍如下:
1.如果要學(xué)C語(yǔ)言基本知識(shí)請(qǐng)看
譚浩強(qiáng)寫的《C程序設(shè)計(jì)》
教師推薦的單片機(jī)書籍為以下兩本:
2. 新編MCS-51單片機(jī)應(yīng)用設(shè)計(jì)
哈爾濱工業(yè)大學(xué)出版社 張毅剛
上書主要以匯編語(yǔ)言為主,對(duì)單片機(jī)內(nèi)部結(jié)構(gòu)介紹較詳細(xì),初學(xué)者可選擇本書,在聽講本課程的同時(shí),不但學(xué)會(huì)了C語(yǔ)言,而且通過(guò)查看本書還可了解匯編語(yǔ)言。
3.8051系列單片機(jī)C程序設(shè)計(jì)完全手冊(cè)
人民郵電出版社 求是科技
上書主要講了單片機(jī)的C語(yǔ)言編程及很多例子,大家可參考,是一本非常好的書。
有以上三本書基本就夠了。

IIC總線(Inter Integrated Circuit Bus):是Philips公司推出的串行總線標(biāo)準(zhǔn)(為二線制)。總線上擴(kuò)展的外圍器件及外設(shè)接口通過(guò)總線尋址,是具備總線仲裁和高低速設(shè)備同步等功能的高性能多主機(jī)總線。
I2C總線工作原理
串行數(shù)據(jù)線SDA和串行時(shí)鐘線SCL構(gòu)成的,可發(fā)送和接收數(shù)據(jù)。
[size=111%]n所有掛接在I2C總線上的器件和接口電路都應(yīng)具有I2C總線接口,且所有的SDA/SCL同名端相連。總線上所有器件要依靠SDA發(fā)送的地址信號(hào)尋址,不需要片選線。
[size=111%]n特點(diǎn):組成系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,占用空間小,芯片管腳的數(shù)量少,無(wú)需片選信號(hào),價(jià)格低。允許若干兼容器件共享總線,應(yīng)用比較廣泛。總線的長(zhǎng)度可達(dá)7.6m,傳送速度可達(dá)400kbps,標(biāo)準(zhǔn)速率為100kbps。支持多個(gè)組件。支持多主控器件(某時(shí)刻只能有一個(gè)主控器件)。I2C總線上所有設(shè)備的SDA, SCL引腳必須外接上拉電阻。
典型的I2C總線系統(tǒng)結(jié)構(gòu),如圖所示

I2C總線器件的尋址方式 由于所有器件都通過(guò)SCL和SDA連接在I2C總線上,因此,主器件在進(jìn)行數(shù)據(jù)傳輸前需要通過(guò)尋址,選擇需要通信的從器件。I2C總線上所有外圍器件都需要有唯一的7位地址,由器件地址和引腳地址兩部分組成。 器件地址是I2C器件固有的地址編碼,器件出廠時(shí)就已經(jīng)給定,不可更改。 引腳地址是由I2C總線外圍器件的地址引腳(A2,A1,A0)決定,根據(jù)其在電路中接電源正極、接地或懸空的不同,形成不同的地址代碼。
[size=244%] I2C總線概述
? I2C總線采用兩線制,由數(shù)據(jù)線SDA和時(shí)鐘線SCL構(gòu)成。I2C總線對(duì)數(shù)據(jù)通信時(shí)序進(jìn)行了嚴(yán)格的定義。 I2C總線數(shù)據(jù)操作 在I2C總線上,數(shù)據(jù)是伴隨著時(shí)鐘脈沖,一位一位地傳送的,數(shù)據(jù)位由高到低傳送,每位數(shù)據(jù)占一個(gè)時(shí)鐘脈沖。I2C總線上的在時(shí)鐘線SCL高電平期間,數(shù)據(jù)線SDA的狀態(tài)就表示要傳送的數(shù)據(jù),高電平為數(shù)據(jù)1,低電平為數(shù)據(jù)0。在數(shù)據(jù)傳送時(shí),SDA上數(shù)據(jù)的改變?cè)跁r(shí)鐘線為低電平時(shí)完成,而SCL為高電平時(shí),SDA必須保持穩(wěn)定,否則SDA上的變化會(huì)被當(dāng)作起始或終止信號(hào)而致使數(shù)據(jù)傳輸停止。 2C總線在傳送數(shù)據(jù)過(guò)程中共有三種類型信號(hào):開始信號(hào)、停止信號(hào)和應(yīng)答信號(hào)。 開始信號(hào):SCL保持高電平的狀態(tài)下,SDA出現(xiàn)下降沿。出現(xiàn)開始信號(hào)以后,總線被認(rèn)為“忙”。 停止信號(hào):SCL保持高電平的狀態(tài)下,SDA出現(xiàn)上升沿。停止信號(hào)過(guò)后,總線被認(rèn)為“空閑”。 應(yīng)答信號(hào):接收數(shù)據(jù)的器件在接收到8位數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的器件發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。 總線空閑:SCL和SDA都保持高電平。 總線忙:在數(shù)據(jù)傳送開始以后,SCL為高電平的時(shí)候,SDA的數(shù)據(jù)必須保持穩(wěn)定,只有當(dāng)SCL為低電平的時(shí)候才允許SDA上的數(shù)據(jù)改變。 - I2C協(xié)議起始信號(hào)時(shí)序
起始信號(hào)用于開始I2C總線通信。其中,起始信號(hào)是在時(shí)鐘線SCL為高電平 期間,數(shù)據(jù)SDA上高電平向低電平變化的下降沿信號(hào)。起始信號(hào)出現(xiàn)以后, 才可以進(jìn)行后續(xù)的I2C總線尋址或數(shù)據(jù)傳輸?shù)?/p> - I2C協(xié)議終止信號(hào)時(shí)序
終止信號(hào)用于終止I2C總線通信。其中,終止信號(hào)是在時(shí)鐘線SCL為高電平期間,數(shù)據(jù)線SDA上低電平到高電平變化的上升沿信號(hào)。終止信號(hào)一出現(xiàn),所有I2C總線操作都結(jié)束,并釋放總線控制權(quán)。終止信號(hào)的時(shí)序如下: 
- I2C協(xié)議應(yīng)答信號(hào)時(shí)序
應(yīng)答信號(hào)用于表明I2C總線數(shù)據(jù)傳輸?shù)慕Y(jié)束。 I2C總線數(shù)據(jù)傳送時(shí),一個(gè)字節(jié)數(shù)據(jù)傳送完畢后都必須由主器件產(chǎn)生應(yīng)答信號(hào)。主器件在第9個(gè)時(shí)鐘位上釋放數(shù)據(jù)總線SDA,使其處于高電平狀態(tài),此時(shí)從器件輸出低電平拉低數(shù)據(jù)總線SDA為應(yīng)答信號(hào)。應(yīng)答信號(hào)的時(shí)序,如圖所示。

I2C總線的傳送格式 I2C總線的傳送格式為主從式,對(duì)系統(tǒng)中的某一器件來(lái)說(shuō)有四種工作方式:主發(fā)送方式、從發(fā)送方式、主接收方式、從接收方式。只講主發(fā)送從接收(單片機(jī)發(fā)送 24C08接收)主器件產(chǎn)生開始信號(hào)以后,發(fā)送的第一個(gè)字節(jié)為控制字節(jié)。前七位為從器件的地址片選信號(hào)。最低位為數(shù)據(jù)傳送方向位(高電平表示讀從器件,低電平表示寫從器件),然后發(fā)送一個(gè)選擇從器件片內(nèi)地址的字節(jié),來(lái)決定開始讀寫數(shù)據(jù)的起始地址。接著再發(fā)送數(shù)據(jù)字節(jié),可以是單字節(jié)數(shù)據(jù),也可以是一組數(shù)據(jù),由主器件來(lái)決定。從器件每接收到一個(gè)字節(jié)以后,都要返回一個(gè)應(yīng)答信號(hào)(ASK=0)。主器件在應(yīng)答時(shí)鐘周期高電平期間釋放SDA線,轉(zhuǎn)由從器件控制,從器件在這個(gè)時(shí)鐘周期的高電平期間必須拉低SDA線,并使之為穩(wěn)定的低電平,作為有效的應(yīng)答信號(hào)。
在起始條件之后,必須是器件的控制字節(jié),其中,高四位為器件類型識(shí)別符(不同的芯片類型有不同的定義,E2PROM為1010),接著三位為片選,最低位為讀寫控制位,為“1”時(shí)為讀操作,為“0”時(shí)為寫操作。如下圖所示。

寫操作分為字節(jié)寫和頁(yè)面寫兩種操作,對(duì)于頁(yè)面寫,根據(jù)芯片的一次裝載的字節(jié)不同有所不同。頁(yè)面寫的地址、應(yīng)答和數(shù)據(jù)傳送的時(shí)序如下圖所示。
讀操作有三種基本操作:當(dāng)前地址讀、隨機(jī)讀和順序讀。下圖給出的是順序讀的時(shí)序圖。應(yīng)當(dāng)注意的是,為了結(jié)束讀操作,主機(jī)必須在第9個(gè)周期間發(fā)出停止條件或者在第9個(gè)時(shí)鐘周期內(nèi)保持SDA為高電平,然后發(fā)出停止條件。
C語(yǔ)言的相關(guān)程序





|