欧美中文在线视频,天天干天天射天天插,久久视频这里只精品3国产,久久电影精品久久99久久

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

單片機的I2C通信設計

時間:2019-12-05 09:15:30來源:電子發(fā)燒友 作者:admin 點擊:
I2C每一位信號的時序流程,而I2C通信在字節(jié)級的傳輸中,也有固定的時序要求。I2C通信的起始信號(Start)后,首先要發(fā)送一個從機的地址,這個地址一共有 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-待寫入字節(jié),返回值-從機應答位的值 */

bit I2CWrite(unsigned char dat){

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

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

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 位數據發(fā)送完后,主機釋放 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(); //不需進行后續(xù)讀寫,而直接停止本次總線操作

return ack;

}

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

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

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

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

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


本文標簽:


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

------分隔線----------------------------
發(fā)表評論
請自覺遵守互聯網相關的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
表情:
名稱: E-mail: 驗證碼: 匿名發(fā)表
發(fā)布文章,推廣自己產品。
熱門標簽
 
欧美中文在线视频,天天干天天射天天插,久久视频这里只精品3国产,久久电影精品久久99久久
欧美日韩在线一区二区| 免费精品视频最新在线| 中文字幕亚洲在| 天天综合网 天天综合色| 91福利精品视频| 亚洲大片在线观看| 欧美一区二区三区播放老司机| 亚洲精品国产a| 欧美伦理影视网| 美女脱光内衣内裤视频久久网站 | 日韩精品成人一区二区三区| 欧美日韩不卡一区| 日本欧美一区二区三区| 亚洲精品在线观看网站| 不卡的av网站| 日韩黄色免费网站| 日本一区二区成人在线| 欧美影片第一页| 美女任你摸久久| 欧美国产乱子伦| 欧美日韩一区三区四区| 国产在线视频不卡二| 亚洲六月丁香色婷婷综合久久| 色欧美乱欧美15图片| 麻豆国产精品一区二区三区 | 美女任你摸久久| 最新欧美精品一区二区三区| 在线成人小视频| 成人福利电影精品一区二区在线观看 | 久久久久久综合| 91亚洲精品一区二区乱码| 五月天激情小说综合| 国产精品网友自拍| 日韩欧美高清一区| 欧美日韩在线播放三区四区| 丁香一区二区三区| 麻豆精品在线播放| 亚洲国产一二三| 亚洲精品视频在线| 久久精品视频免费| 久久一区二区三区四区| 日韩欧美一区二区不卡| 欧美一区午夜视频在线观看| 欧美日韩亚洲高清一区二区| 色综合天天性综合| 91麻豆6部合集magnet| 99这里只有久久精品视频| 国产精品一区二区三区99| 九九视频精品免费| 国产在线看一区| 另类小说综合欧美亚洲| 精品无人区卡一卡二卡三乱码免费卡 | 日韩一级免费一区| 欧美日韩成人综合在线一区二区| 欧美最猛黑人xxxxx猛交| 在线观看免费一区| 欧美精品18+| 欧美一区二区三区色| 日韩欧美一级片| 精品久久国产老人久久综合| 久久久久久久久久看片| 国产精品女主播av| 亚洲蜜桃精久久久久久久| 夜夜嗨av一区二区三区中文字幕 | 亚洲一区在线观看网站| 亚洲午夜电影网| 亚洲mv在线观看| 石原莉奈在线亚洲三区| 国产麻豆精品95视频| 成人免费高清在线| 色哟哟欧美精品| 欧美日韩一区二区在线观看| 欧美精品一区二区三区一线天视频| 国产日韩欧美一区二区三区综合| 亚洲色图欧美偷拍| 久久精品国产免费看久久精品| 成人一区在线观看| 欧美精品第一页| 国产欧美日韩在线| 亚洲高清不卡在线| 国产精品亚洲一区二区三区妖精| 欧美性视频一区二区三区| 日韩午夜激情av| 一区二区三区成人| 国产精品中文字幕一区二区三区| 在线观看视频91| 国产欧美日韩在线| 久久99国产精品免费| 欧美色图第一页| 国产精品福利在线播放| 精品一区免费av| 欧美三级乱人伦电影| 中文一区二区在线观看| 精品系列免费在线观看| 欧美高清视频一二三区| 亚洲女人****多毛耸耸8| 国产成人精品www牛牛影视| 欧美日产在线观看| 亚洲最大色网站| 成人av手机在线观看| 久久亚洲影视婷婷| 久久99精品久久久久婷婷| 制服丝袜av成人在线看| 亚洲综合区在线| 91在线视频观看| 国产精品国产精品国产专区不片 | 久久人人97超碰com| 久久电影网站中文字幕| 欧美一区二区观看视频| 亚洲成人av在线电影| 在线观看一区二区精品视频| 中文字幕中文字幕在线一区| av一区二区三区黑人| 欧美韩国日本综合| 不卡高清视频专区| 亚洲欧美一区二区三区国产精品 | 午夜久久久影院| 91老师国产黑色丝袜在线| 夜夜嗨av一区二区三区四季av | 欧美在线播放高清精品| 天堂久久久久va久久久久| 91精品国产91久久久久久最新毛片| 婷婷国产v国产偷v亚洲高清| 欧美一级日韩一级| 国产不卡在线播放| 中文乱码免费一区二区 | 一本高清dvd不卡在线观看| 一区二区高清免费观看影视大全| 欧美喷潮久久久xxxxx| 国产一区二区三区在线观看精品| 国产精品久久久久久久第一福利| 色美美综合视频| 日韩 欧美一区二区三区| 欧美岛国在线观看| 成人ar影院免费观看视频| 亚洲伊人伊色伊影伊综合网| 精品免费一区二区三区| 99精品久久只有精品| 日本亚洲天堂网| 中文字幕av一区二区三区高| 欧美日韩成人激情| www.亚洲色图.com| 美女一区二区在线观看| 亚洲免费成人av| 国产三级久久久| 91麻豆精品国产综合久久久久久| 国产精品亚洲午夜一区二区三区 | 国产精品夫妻自拍| 91精品国产综合久久精品图片| 国产91综合网| 免费xxxx性欧美18vr| 亚洲欧美日韩在线| 欧美激情一区二区三区不卡| 日韩精品一区国产麻豆| 欧美精品视频www在线观看| eeuss鲁一区二区三区| 国产精品12区| 国产呦精品一区二区三区网站| 亚洲123区在线观看| 亚洲图片欧美激情| 国产精品美女一区二区三区| 久久精品欧美一区二区三区麻豆| 在线不卡免费欧美| 欧美性一级生活| 99国产一区二区三精品乱码| 粉嫩av一区二区三区粉嫩| 国产一区三区三区| 国产老肥熟一区二区三区| 蜜桃视频在线观看一区| 麻豆精品国产91久久久久久| 九九久久精品视频| 国产精品一卡二卡| 国产91精品欧美| 99re这里都是精品| 91麻豆swag| 欧美亚洲一区二区在线| 欧美性大战xxxxx久久久| 欧美日韩国产一区| 欧美一区二区视频网站| 欧美高清www午色夜在线视频| 欧美老肥妇做.爰bbww视频| 7777精品伊人久久久大香线蕉完整版 | 久久久久久免费网| 日本一区二区免费在线| 中文字幕中文在线不卡住| 亚洲精品乱码久久久久久日本蜜臀| 亚洲欧美中日韩| 亚洲免费观看在线视频| 五月天中文字幕一区二区| 精品综合久久久久久8888| 激情国产一区二区| 99久久伊人精品| 欧美日韩亚洲综合| 精品国产区一区| 亚洲欧美日本在线| 视频一区二区欧美| 91小视频在线| 日韩欧美中文字幕一区| 成人免费在线播放视频| 精品一区二区三区香蕉蜜桃 |