欧美多人爱爱视频网站_免费午夜视频在线观看_国模人体一区二区_欧美专区一区二区三区_牛人盗摄一区二区三区视频_在线看片国产福利你懂的_在线免费观看视频黄_亚洲国产精品嫩草影院久久av

TDA2030功放電路圖 電動車充電器電路圖 電子電路 功放電路 電子制作 集成塊資料 電子報 pcb 變壓器 元器件知識 逆變器電路圖 電路圖 開關電源電路圖 傳感器技術 led 電磁兼容
電子電路圖
當前位置: 首頁 > 電子電路 > 設計編程

單片機的I2C通信設計

時間:2019-12-05 09:15:30來源:電子發燒友 作者:admin 點擊:
I2C每一位信號的時序流程,而I2C通信在字節級的傳輸中,也有固定的時序要求。I2C通信的起始信號(Start)后,首先要發送一個從機的地址,這個地址一共有 7位,緊跟著的第 8

bit I2CAddressing(unsigned char addr);

extern void InitLcd1602();

extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);

void main(){

bit ack;

unsigned char str[10];

InitLcd1602(); //初始化液晶

ack = I2CAddressing(0x50); //查詢地址為 0x50 的器件

str[0] = ‘5’; //將地址和應答值轉換為字符串

str[1] = ‘0’;

str[2] = ‘:’;

str[3] = (unsigned char)ack + ‘0’;

str[4] = ‘’;

LcdShowStr(0, 0, str); //顯示到液晶上

ack = I2CAddressing(0x62); //查詢地址為 0x62 的器件

str[0] = ‘6’; //將地址和應答值轉換為字符串

str[1] = ‘2’;

str[2] = ‘:’;

str[3] = (unsigned char)ack + ‘0’;

str[4] = ‘’;

LcdShowStr(8, 0, str); //顯示到液晶上

while (1);

}

/* 產生總線起始信號 */

void I2CStart(){

I2C_SDA = 1; //首先確保 SDA、SCL 都是高電平

I2C_SCL = 1;

I2CDelay();

I2C_SDA = 0; //先拉低 SDA

I2CDelay();

I2C_SCL = 0; //再拉低 SCL

}

/* 產生總線停止信號 */

void I2CStop(){

I2C_SCL = 0; //首先確保 SDA、SCL 都是低電平

I2C_SDA = 0;

I2CDelay();

I2C_SCL = 1; //先拉高 SCL

I2CDelay();

I2C_SDA = 1; //再拉高 SDA

I2CDelay();

}

/* I2C 總線寫操作,dat-待寫入字節,返回值-從機應答位的值 */

bit I2CWrite(unsigned char dat){

bit ack; //用于暫存應答位的值

unsigned char mask; //用于探測字節內某一位值的掩碼變量

for (mask=0x80; mask!=0; mask》》=1){ //從高位到低位依次進行

if ((mask&dat) == 0){ //該位的值輸出到 SDA 上

I2C_SDA = 0;

}else{

I2C_SDA = 1;

}

I2CDelay();

}

I2C_SCL = 1; //拉高 SCL

I2CDelay();

I2C_SCL = 0; //再拉低 SCL,完成一個位周期

I2C_SDA = 1; //8 位數據發送完后,主機釋放 SDA,以檢測從機應答

I2CDelay();

I2C_SCL = 1; //拉高 SCL

ack = I2C_SDA; //讀取此時的 SDA 值,即為從機的應答值

I2CDelay();

I2C_SCL = 0; //再拉低 SCL 完成應答位,并保持住總線

return ack; //返回從機應答值

}

/* I2C 尋址函數,即檢查地址為 addr 的器件是否存在,返回值-從器件應答值 */

bit I2CAddressing(unsigned char addr){

bit ack;

I2CStart(); //產生起始位,即啟動一次總線操作

//器件地址需左移一位,因尋址命令的最低位

//為讀寫位,用于表示之后的操作是讀或寫

ack = I2CWrite(addr《《1);

I2CStop(); //不需進行后續讀寫,而直接停止本次總線操作

return ack;

}

我們把這個程序在 KST-51開發板上運行完畢,會在液晶上邊顯示出來我們預想的結果,主機發送一個存在的從機地址,從機會回復一個應答位,即應答位為 0;主機如果發送一個不存在的從機地址,就沒有從機應答,即應答位為 1。

前面的章節中已經提到利用庫函數_nop_()可以進行精確延時,一個_nop_()的時間就是一個機器周期,這個庫函數包含在 intrins.h 這個文件中,如果要使用這個庫函數,只需要在程序最開始,和包含 reg52.h 一樣,include之后,程序中就可以使用這個庫函數了。

還有一點要提一下,I2C通信分為低速模式 100kbit/s、快速模式 400kbit/s 和高速模式3.4Mbit/s。因為所有的 I2C 器件都支持低速,但卻未必支持另外兩種速度,所以作為通用的I2C 程序我們選擇 100k 這個速率來實現,也就是說實際程序產生的時序必須小于等于 100k的時序參數,很明顯也就是要求 SCL 的高低電平持續時間都不短于 5us,因此我們在時序函數中通過插入 I2CDelay()這個總線延時函數(它實際上就是 4 個 NOP 指令,用 define 在文件開頭做了定義),加上改變 SCL 值語句本身占用的至少一個周期,來達到這個速度限制。如果以后需要提高速度,那么只需要減小這里的總線延時時間即可。

此外我們要學習一個發送數據的技巧,就是I2C通信時如何將一個字節的數據發送出去。大家注意函數 I2CWrite 中,用的那個 for 循環的技巧。for (mask=0x80; mask!=0; mask》》=1),由于 I2C 通信是從高位開始發送數據,所以我們先從最高位開始,0x80 和 dat 進行按位與運算,從而得知 dat 第 7 位是 0 還是 1,然后右移一位,也就是變成了用 0x40 和 dat 按位與運算,得到第 6 位是 0 還是 1,一直到第 0 位結束,最終通過 if 語句,把 dat 的 8 位數據依次發送了出去。其它的邏輯大家對照前邊講到的理論知識,認真研究明白就可以了。容-源-電-子-網-為你提供技術支持

本文地址:http://www.mnu8.com/dz/22/15755085833520.shtml


本文標簽:


.
首頁 上一頁123下一頁尾頁
頂一下
0%
返回首頁
0
0%

------分隔線----------------------------
發表評論
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
表情:
名稱: E-mail: 驗證碼: 匿名發表
發布文章,推廣自己產品。
熱門標簽
 
懂色一区二区三区av片| 国产精品成人一区二区三区夜夜夜 | 国产精品豆花视频| 午夜影院一区| 一本大道香蕉久久| 国产成人久久精品77777综合 | 欧洲毛片在线| 国产精品yjizz视频网一二区 | 伊人av免费在线观看| 中文字幕色视频| 中文字幕精品三级久久久| 亚洲啪av永久无码精品放毛片 | 自拍偷拍21p| 影音先锋欧美资源| 97香蕉久久夜色精品国产| 日韩欧美www| 亚洲一区二区中文在线| 国产成人精品午夜视频免费| 国产精品久久久久蜜臀| 国产亚洲字幕| 国内在线视频| 国际av在线| www.大网伊人| 一线天自拍视频| 日批视频在线播放| 中文字幕一区二区三区四区视频| 免费一级suv好看的国产网站 | 2023国产精品视频| 可以看av的网站久久看| 久久免费av| 欧美大片网址| 亚洲综合伊人| 在线天堂资源| 欧美人与牲禽动交com| 成黄免费在线| 欧美扣逼视频| 欧美性猛交7777777| 激情亚洲综合网| 婷婷5月激情5月| 四虎永久网址| 五月天激情婷婷| 欧美一级片免费| 不卡的日韩av| www.五月婷婷| 国产不卡av在线播放| 一级久久久久久| 亚洲不卡视频在线观看| 日韩精品手机在线| 国产亚洲精品久久久久久无几年桃| 老头老太做爰xxx视频| 久久久国产精品无码| 女女调教被c哭捆绑喷水百合| 中文字幕在线观看日| 一区二区成人网| 成人在线免费播放视频| 男人天堂999| 欧美女人性生活视频| 337p粉嫩大胆噜噜噜鲁| 狠狠干 狠狠操| 一二三四视频社区在线| 丁香婷婷综合激情| 毛片在线视频播放| 亚洲国产精品久久久久婷蜜芽| 国产精品无码人妻一区二区在线| 人人妻人人澡人人爽欧美一区双| 精品视频在线观看一区二区| www.国产在线视频| 自拍日韩亚洲一区在线| 成人精品视频一区二区| 午夜久久福利视频| 无码人妻精品一区二区三| 亚洲熟女乱综合一区二区三区| 深田咏美中文字幕| 9.1片黄在线观看| 欧日韩不卡视频| 国产精品30p| 伊人影院中文字幕| 性高潮久久久久久久久久| 欧美韩日国产| 白丝美女让我捅| 一级毛片免费看| 国产在线观看网站| 久久久123| 少妇高潮一区二区三区99| 精品深夜福利视频| 性欧美欧美巨大69| 丝瓜av网站精品一区二区| 99久久精品费精品国产一区二区| 日韩码欧中文字| 欧美日韩精品一二三区| 亚洲欧美成人在线| 欧美亚洲国产视频小说| 国产精品视频免费一区二区三区| 中文字幕一区综合| 男女污污的视频| 国产精品美女高潮无套| 亚洲欧美精品一区二区三区| 91成人国产综合久久精品| 青青草原国产在线观看| 天天色综合6| av片哪里在线观看| 国产视频一区二区在线播放| 亚洲欧洲美洲一区二区三区| 黄色精品一二区| 亚洲国产精品一区二区尤物区| 精品乱码亚洲一区二区不卡| 欧美精品久久久久久久| 精品不卡一区二区三区| 久久国产成人精品国产成人亚洲 | 亚洲婷婷免费| av在线播放不卡| 色综合久久久网| 久久精品国产精品亚洲| 波多野结衣久草一区| 91精品91久久久中77777老牛| 国产夫妻性爱视频| 波多野结衣一区二区三区在线| 亚洲精品综合一区二区三区| 伊人春色在线| 国产精品99久久久久久董美香| 欧美在线网站| 中文在线资源观看网站视频免费不卡| 欧美一区二区成人| 国产精品444| 免费在线观看亚洲视频| 欧美日韩生活片| 亚洲成人777777| 日日干夜夜草| 超碰porn在线| 成人精品久久| 久久一二三国产| 精品国产凹凸成av人导航| 国产精品日韩在线播放| 久久久999免费视频| 国模无码国产精品视频| 国内精品久久久久久影院8f | 精品91一区二区三区| 91国模少妇一区二区三区| 黄色小视频免费观看| 一区二区三区高清在线视频 | 日韩精品第1页| 婷婷综合在线视频| 麻豆精品永久免费视频| 老司机精品视频在线观看6| 亚洲免费观看高清完整版在线观| 成人免费看的视频| 精品国产伦一区二区三区观看方式| 91久久精品美女高潮| 精品国产午夜福利在线观看| 亚洲xxxx天美| 岛国在线视频| 五月开心六月丁香综合色啪| 亚洲日本va午夜在线影院| 欧美福利视频在线观看| 日韩视频在线视频| 永久免费看片在线播放| 天天做天天摸天天爽天天爱| 久久的色偷偷| 成人国产电影网| 国产一区二区精品丝袜| youjizz.com亚洲| 国产精选第一页| 国产天堂在线观看| 亚洲国产精品嫩草影院久久av| 欧美极品aⅴ影院| 久久久久女教师免费一区| 国产成人亚洲精品无码h在线| 中文字幕av无码一区二区三区| 在线色视频观看| 郴州新闻综合频道在线直播| 亚洲一二三四在线| 国产精品高清在线观看| 中文字幕在线国产| 国产又白又嫩又紧又爽18p| 中文在线最新版地址| 国产麻豆午夜三级精品| 亚洲欧美福利视频| 免费看又黄又无码的网站| 国产情侣在线播放| 国产乱码在线| 国产91丝袜在线播放九色| 亚洲人午夜精品| 欧美精品色婷婷五月综合| 亚洲风情第一页| 超碰在线视屏| 99久久久国产精品| 久久久久久久久网站| 日本黄色www| 国产成人夜间影院在线观看| 成人h动漫精品一区二区器材| 日韩毛片一二三区| 亚洲a区在线视频| 免费在线观看国产精品| 伊人网在线观看| 噜噜噜91成人网| 国产视频在线观看一区二区| 男人插女人下面免费视频| 国产又粗又大又长| 精品久久中文| 欧美一二三在线|