日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]C代碼#include"my51.h"#include"smg.h"#include"ds18b20.h"voidmain()//測試,6位數(shù)碼管顯示溫度值{u8i=0;u16temp=0;while(1){temp=ds18b20_readTemperaData();for(i=0;i=1;//有效數(shù)據(jù)移動(dòng)到最低位,2次寫數(shù)據(jù)間隙至少

C代碼

#include"my51.h"

#include"smg.h"

#include"ds18b20.h"

voidmain()//測試,6位數(shù)碼管顯示溫度值

{

u8i=0;

u16temp=0;

while(1)

{

temp=ds18b20_readTemperaData();

for(i=0;i<100;i++)

{

displaySMG(ds18b20_processTempData(temp));

}

}

}

C代碼

#ifndef_DS18B20_H

#define_DS18B20_H

#include"my51.h"

#include"smg.h"

externu8smgWela[7];//數(shù)碼管位選數(shù)據(jù)

sbitDQ=P2^2;//總線定義

boolds18b20_init();//初始化函數(shù)

u8*ds18b20_processTempData(u16temp);//將temp數(shù)據(jù)處理成數(shù)碼管可顯示數(shù)據(jù)

u16ds18b20_readTemperaData();//讀溫度

u8ds18b20_readByte();//讀一個(gè)字節(jié)

voidds18b20_writeByte(u8dat);//mcu向18b20寫一個(gè)字節(jié)

#endif

C代碼

#include"ds18b20.h"

/******************************************************************

當(dāng)主機(jī)總線t0時(shí)刻從高拉至低電平時(shí)就產(chǎn)生寫時(shí)間隙

從to時(shí)刻開始的1us之后,15us之前將所需寫的位送到總線上

DSl820在t0后的15-60us對(duì)總線采樣若低電平寫入的位是0,若高電平寫入的位是1

連續(xù)寫2個(gè)位之間的間隙應(yīng)大于1us

寫1,總時(shí)間大于60us,在t0開始延時(shí)1us就可以寫1,15us之后ic來采樣,采樣時(shí)間最大45us

寫0,總時(shí)間是60~120us,15~60us是ic在采樣,120以外就沒必要了,mcu總得釋放總線吧

不管寫1還是寫0,大于60us的話,ic肯定已經(jīng)采樣完成了,那mcu就可以釋放了

*******************************************************************/

voidds18b20_writeByte(u8dat)//mcu向ic寫一個(gè)字節(jié)

{

u8i;

u8tmep=dat;

for(i=0;i<8;i++)

{

DQ=0;//產(chǎn)生讀寫時(shí)序的起始信號(hào)

_nop_();//要求至少1us的延時(shí)

DQ=dat&0x01;//對(duì)總線賦值,從最低位開始寫起

delayXus(10);//延時(shí)74us,寫0在60~120us之間釋放,寫1的話大于60us均可釋放

DQ=1;//釋放總線,為下一次mcu送數(shù)據(jù)做準(zhǔn)備,

dat>>=1;//有效數(shù)據(jù)移動(dòng)到最低位,2次寫數(shù)據(jù)間隙至少需1us

}

}

/**************************************************************************

下降沿產(chǎn)生讀時(shí)序

整個(gè)讀時(shí)序必須至少有60us的持續(xù)時(shí)間,相鄰兩個(gè)讀時(shí)序必須要有至少1us的恢復(fù)時(shí)間

DS18B20在讀時(shí)序產(chǎn)生1us后輸出數(shù)據(jù)到總線上,也有可能需要2~3個(gè)微秒,但不會(huì)更多

而要求主機(jī)釋放總線和采樣總線等動(dòng)作要在15μs內(nèi)完成,那么讓mcu采樣的最佳時(shí)機(jī)

是讀時(shí)序產(chǎn)生后的5~13us之間,在15~60us這段時(shí)間是18b20的私有時(shí)間,它會(huì)在這段

時(shí)間內(nèi)的任意時(shí)刻釋放總線,是不穩(wěn)定期,我們不要讓mcu在這段時(shí)間里對(duì)總線操作

*******************************************************/

u8ds18b20_readByte()//mcu讀一個(gè)字節(jié)

{

u8i,value=0;

for(i=0;i<8;i++)

{

DQ=0;//起始信號(hào)

value>>=1;//順便延時(shí)3~4個(gè)機(jī)器周期

DQ=1;//mcu釋放總線

_nop_();_nop_();_nop_();//再延時(shí)3.3us

if(DQ)

{

value|=0x80;//保存高電平數(shù)據(jù),低電平的話不用保存,移位后默認(rèn)是0

}

delayXus(8);//延時(shí)60.76us

}

returnvalue;

}

u16ds18b20_readTemperaData()//讀取溫度值

{

u16temp=0;

if(ds18b20_init())

{

ds18b20_writeByte(0xcc);//寫指令:跳過rom檢測

ds18b20_writeByte(0x44);//寫指令:溫度轉(zhuǎn)換

//delayms(750);//轉(zhuǎn)換延時(shí)需要750ms以上,我們不等它

//首次轉(zhuǎn)換未完成時(shí),得到的初始化數(shù)據(jù)是85度,處理一下就可以了

//溫度轉(zhuǎn)換電路是硬件獨(dú)立的,不會(huì)阻塞初始化功能

if(ds18b20_init())

{

ds18b20_writeByte(0xcc);//寫指令:跳過檢測rom

ds18b20_writeByte(0xbe);//寫指令:讀取溫度值

temp=ds18b20_readByte();//先讀低8位數(shù)據(jù)

temp|=(u16)ds18b20_readByte()<<8;//再讀高8位數(shù)據(jù),然后合并

temp&=0x0FFF;//高4位數(shù)據(jù)反正沒用上,我們用來存放錯(cuò)誤碼

}

else

{

led5=0;//調(diào)試代碼

temp=0x2000;//錯(cuò)誤碼,初始化失敗

}

}

else

{

led6=0;//調(diào)試代碼

temp=0x1000;//錯(cuò)誤碼,初始化失敗,可能器件損壞

}

returntemp;

}

boolds18b20_init()//初始化

{

u8checkState=0;

DQ=1;//總線初始狀態(tài)

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

STM32單片機(jī)在性能、外設(shè)資源、存儲(chǔ)容量、開發(fā)環(huán)境、功耗管理以及應(yīng)用領(lǐng)域等方面通常優(yōu)于51單片機(jī)。然而,51單片機(jī)仍因其簡單的結(jié)構(gòu)和成本效益而在一些特定應(yīng)用中保持競爭力。在選擇單片機(jī)時(shí),應(yīng)根據(jù)具體的應(yīng)用需求和預(yù)算進(jìn)行權(quán)...

關(guān)鍵字: STM32單片機(jī) 51單片機(jī)

采用51單片機(jī)最小開發(fā)板,由8位自制獨(dú)立按鍵控制。單片機(jī)芯片為STC89C52RC,晶振為@12.000 mhz。8X8LED點(diǎn)陣屏模塊由MAX7219驅(qū)動(dòng),MAX7219包含一個(gè)自動(dòng)掃描電路。你只需要把要顯示的數(shù)據(jù)發(fā)送...

關(guān)鍵字: 51單片機(jī) MAX7219 寄存器

在嵌入式系統(tǒng)開發(fā)的廣闊領(lǐng)域,51單片機(jī)和STM32無疑是兩種極具代表性的微控制器。對(duì)于初學(xué)者而言,選擇學(xué)習(xí)路徑時(shí)往往會(huì)面臨一個(gè)抉擇:是直接跨越51單片機(jī),挑戰(zhàn)更高層次的STM32,還是從51開始,逐步進(jìn)階?本文旨在探討直...

關(guān)鍵字: 51單片機(jī) STM32

在嵌入式系統(tǒng)開發(fā)中,特別是在使用8051系列單片機(jī)(簡稱C51)進(jìn)行編程時(shí),數(shù)據(jù)類型的選擇與定義對(duì)程序的性能和可讀性至關(guān)重要。C51語言在標(biāo)準(zhǔn)C語言的基礎(chǔ)上進(jìn)行了擴(kuò)展,以適應(yīng)單片機(jī)特有的硬件結(jié)構(gòu)和操作需求。本文將深入探討...

關(guān)鍵字: C51數(shù)據(jù) 51單片機(jī)

在嵌入式系統(tǒng)領(lǐng)域,51單片機(jī)作為一種經(jīng)典的微控制器,廣泛應(yīng)用于各種自動(dòng)化控制系統(tǒng)中。其外部引腳作為單片機(jī)與外界交互的接口,承載著數(shù)據(jù)傳輸、控制信號(hào)輸出等重要功能。本文將通過對(duì)51單片機(jī)外部引腳的案例分析,結(jié)合實(shí)際代碼,深...

關(guān)鍵字: 51單片機(jī) 單片機(jī)

在電子技術(shù)的浩瀚星空中,LED(發(fā)光二極管)以其獨(dú)特的魅力成為了一顆璀璨的明星。而結(jié)合51單片機(jī)這一經(jīng)典的嵌入式開發(fā)平臺(tái),LED的應(yīng)用更是被賦予了無限可能,其中,花樣流水燈便是一個(gè)生動(dòng)而富有創(chuàng)意的實(shí)例。本文將帶您深入探索...

關(guān)鍵字: 51單片機(jī) LED

在現(xiàn)代嵌入式系統(tǒng)設(shè)計(jì)中,51單片機(jī)作為一種經(jīng)典的微控制器,憑借其豐富的功能和廣泛的應(yīng)用領(lǐng)域,仍然受到工程師們的青睞。定時(shí)器中斷是51單片機(jī)中一個(gè)非常實(shí)用的功能,它可以在特定的時(shí)間間隔內(nèi)自動(dòng)觸發(fā)中斷,執(zhí)行預(yù)設(shè)的操作,從而提...

關(guān)鍵字: 51單片機(jī) 定時(shí)器

DS18B20是常用的數(shù)字溫度傳感器,其輸出的是數(shù)字信號(hào),具有體積小,硬件開銷低,抗干擾能力強(qiáng),精度高的特點(diǎn)。

關(guān)鍵字: ds18b20 溫度傳感器 數(shù)字信號(hào)

STM32與51單片機(jī)之間有什么差異呢?兩者可以說是一場科技與性能的較量了。在科技飛速發(fā)展的今天,微控制器(MCU)已廣泛應(yīng)用于各類電子設(shè)備和系統(tǒng)中,發(fā)揮著舉足輕重的作用。其中,STM32和51單片機(jī)作為兩種常見的微控制...

關(guān)鍵字: STM32 51單片機(jī) MCU

51單片機(jī)將是下述內(nèi)容的主要介紹對(duì)象,通過這篇文章,小編希望大家可以對(duì)51單片機(jī)的相關(guān)情況以及信息有所認(rèn)識(shí)和了解,詳細(xì)內(nèi)容如下。

關(guān)鍵字: 單片機(jī) 51單片機(jī)
關(guān)閉