首先,I2C有2個(gè)重要的線,SDA數(shù)據(jù)線SCL時(shí)鐘線,當(dāng)總線上沒(méi)有進(jìn)行信息傳送時(shí),SDA和SCL都為高電平,我們稱之為釋放總線。開(kāi)始傳送信息時(shí),要有一個(gè)開(kāi)始信號(hào),開(kāi)始信號(hào):定義為在SCL為高電平的時(shí)候,SDA從高電平拉低。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供江海企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、做網(wǎng)站、H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為江海眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
沒(méi)有4位機(jī)制,有8位51單片機(jī)的匯編程序。還有一個(gè)C語(yǔ)言的,可以給你參考,這都是我項(xiàng)目中用到的程序。給你作個(gè)參考,在產(chǎn)品的實(shí)際工作中也很穩(wěn)定。
因?yàn)殚_(kāi)始讀取完或者寫(xiě)完一組數(shù)據(jù)需要一個(gè)開(kāi)始信號(hào)和一個(gè)終止信號(hào),而這個(gè)信號(hào)就是數(shù)據(jù)線的上升下降沿。而后面數(shù)據(jù)線拉高的原因是為了能正確讀取到數(shù)據(jù),因?yàn)閱纹瑱C(jī)如果是低電平外部器件很有可能不能拉高而一直讀到低。
這種東西不要糾結(jié),就是按照iic協(xié)議用單片機(jī)模擬了要求的時(shí)序,實(shí)屬蛋疼,在實(shí)際設(shè)計(jì)中一般會(huì)選擇硬件支持iic的芯片。這個(gè)就當(dāng)成單片機(jī)C語(yǔ)言的練習(xí)就好了,完成的功能就是用單片機(jī)的IO口模擬了IIC的讀寫(xiě)時(shí)序。
code是存儲(chǔ)在單片機(jī)的flash里面,不是存在內(nèi)存里面了。所以一般固定意義的數(shù)據(jù),比如數(shù)碼管的段碼,一個(gè)圖片的數(shù)據(jù)信息,都是用code定義,讓這些數(shù)據(jù)放在flash里面,節(jié)省內(nèi)存空間。
因?yàn)殚_(kāi)始讀取完或者寫(xiě)完一組數(shù)據(jù)需要一個(gè)開(kāi)始信號(hào)和一個(gè)終止信號(hào),而這個(gè)信號(hào)就是數(shù)據(jù)線的上升下降沿。而后面數(shù)據(jù)線拉高的原因是為了能正確讀取到數(shù)據(jù),因?yàn)閱纹瑱C(jī)如果是低電平外部器件很有可能不能拉高而一直讀到低。
所謂的開(kāi)始信號(hào)跟終止信號(hào)也只是雙方默認(rèn)的方式而已,就像是“點(diǎn)頭YES,搖頭NO”,你也可以選擇相反的方式,只要兩臺(tái)通信的機(jī)子能懂就好。不過(guò)最好是采用大家一起的,這樣在軟件移植的時(shí)候會(huì)有幫助,也方便別人看懂。
return(1);///4,為什么要寫(xiě)這句?--讀取成功,返回1 --- 51 單片機(jī)具有《位操作》功能。就是說(shuō),它的變量,可以是一位二進(jìn)制數(shù)字,其數(shù)值就是 0、1。
1、你這個(gè)例程應(yīng)該是用io口模仿i2c,這里你沒(méi)有給出sda的定義。我理解還有程序?qū)ζ溥M(jìn)行判斷if(sda==1)輸出編碼‘1’else 輸出編碼‘0’。經(jīng)過(guò)for循環(huán)8次就輸出了一個(gè)完整的8bit二進(jìn)制數(shù)。
2、首先,I2C有2個(gè)重要的線,SDA數(shù)據(jù)線SCL時(shí)鐘線,當(dāng)總線上沒(méi)有進(jìn)行信息傳送時(shí),SDA和SCL都為高電平,我們稱之為釋放總線。開(kāi)始傳送信息時(shí),要有一個(gè)開(kāi)始信號(hào),開(kāi)始信號(hào) :定義為在SCL為高電平的時(shí)候,SDA從高電平拉低。
3、這么長(zhǎng)的代碼,反正我是懶得一點(diǎn)一點(diǎn)看啊,這個(gè)程序我原來(lái)寫(xiě)過(guò),給你點(diǎn)建議啊,你的延時(shí)算什么?匯編學(xué)多了?延時(shí)長(zhǎng)點(diǎn)沒(méi)事,還有就是一點(diǎn)就是你最好拿示波器看看數(shù)據(jù)口和時(shí)鐘口有沒(méi)有波形輸出。
4、讀或者寫(xiě)入一個(gè)字節(jié)后,一般要加一段延時(shí),最小要是2Ms。
5、這種東西不要糾結(jié),就是按照iic協(xié)議用單片機(jī)模擬了要求的時(shí)序,實(shí)屬蛋疼,在實(shí)際設(shè)計(jì)中一般會(huì)選擇硬件支持iic的芯片。這個(gè)就當(dāng)成單片機(jī)C語(yǔ)言的練習(xí)就好了,完成的功能就是用單片機(jī)的IO口模擬了IIC的讀寫(xiě)時(shí)序。
當(dāng)前標(biāo)題:i2c起始函數(shù)c語(yǔ)言 i2c庫(kù)函數(shù)代碼實(shí)現(xiàn)
轉(zhuǎn)載源于:http://chinadenli.net/article20/degpdjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、Google、品牌網(wǎng)站建設(shè)、做網(wǎng)站、服務(wù)器托管、小程序開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)