例說單片機(jī)數(shù)據(jù)通信之單總線數(shù)據(jù)傳輸
純單片機(jī)干不了大事,必須得配上各種外設(shè),那么了解單片機(jī)與傳感器之間的數(shù)據(jù)通信就顯得必不可少了。常見的單片機(jī)數(shù)據(jù)通信方式有SPI,IIC,RS232,單總線等等。每種通信方式都有相應(yīng)的時序圖,分析時序圖并完成代碼的編寫是單片機(jī)學(xué)習(xí)者的必修課。本文以DS18B20為例分析一下單總線數(shù)據(jù)傳輸,完整的程序以及仿真的下載鏈接:單片機(jī)單總線數(shù)據(jù)通信例子程序及仿真.zip
本文引用地址:http://www.ex-cimer.com/article/203009.htmDS18B20是單總線數(shù)據(jù)傳輸,因此對于時序的要求就非常的高,學(xué)會分析其時序圖是非常有必要的。
1.初始化時序圖分析:
首先是由總線控制器拉低總線,維持480us。在480us后釋放總線,由上拉電阻講總線拉高。等待5-60us后,DS18B20開始響應(yīng),會將數(shù)據(jù)總線拉低60-240us.之后便釋放總線,由上拉電阻拉高總線。轉(zhuǎn)換為代碼如下:
u8 dsbInit() //初始化,返回0表示DS18B20無反應(yīng),反之有響應(yīng)
{
????? dsbDQStat(0); //控制器拉低總線
????? delay500us(); //拉低總線一段時間
????? dsbDQStat(1); //釋放總線
????? delay60us(); //等待DS18B20響應(yīng)
????? if(dsb_DQ) //如果沒有相應(yīng)直接返回0
????? {
????? return 0;
}
delay240us(); //有響應(yīng)則等待響應(yīng)結(jié)束
return 1; //返回初始化狀態(tài)
}
2.讀時序圖分析:
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
數(shù)字通信相關(guān)文章:數(shù)字通信原理
通信相關(guān)文章:通信原理
上拉電阻相關(guān)文章:上拉電阻原理
評論