freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

單片機課程設(shè)計八路溫度巡回檢測系統(tǒng)(編輯修改稿)

2024-08-26 01:04 本頁面
 

【文章內(nèi)容簡介】 圖 1 12864液晶電路連接圖 圖 2 12864液晶模塊實物圖 設(shè)計心得總結(jié)LCD12864與1602相比需要較大的電流驅(qū)動,如果出現(xiàn)圖片模糊不清晰或者灰暗,除了檢查背光燈外應(yīng)考慮電源問題。最好采用大于5V的電源,經(jīng)7805穩(wěn)壓管穩(wěn)壓驅(qū)動,以保證電流?;掘?qū)動跟1602相似難度不大。中文及圖像顯示是12864最大的特點也是難點,主要是指令較多,還有就是圖像驅(qū)動需要了解液晶內(nèi)部原理。整屏畫圖可以使用PCtoLCD2002把圖片轉(zhuǎn)換成16進制數(shù),局部畫曲線、直線、圓等需要一些算法,比較復(fù)雜4 DS18B20原理介紹及接口實現(xiàn) DS18B20簡介DS18B20是DALLAS半導(dǎo)體公司推出的第一片支持“一線總線”接口的溫度傳感器,他它具有微型化、低功耗、高性能、抗干擾能力強、易配微處理器等優(yōu)點,可直接將溫度轉(zhuǎn)化成串行數(shù)字信號供處理器處理。DS18B20具有以下優(yōu)點:(1) 適應(yīng)電壓范圍寬,~,在寄生電源方式下可由數(shù)據(jù)線供電。(2) 獨特的單線接口方式,與微處理器連接時只需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通信。(3) 支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫。(4) 在使用中不需要任何外圍元件,全部傳感元件以及轉(zhuǎn)換電路集成在形如一直三極管的集成電路內(nèi)。(5) 測溫范圍55℃~+125℃,在10℃~+85℃時進度為177?!妫?) 可編程分辨率為9~12位,℃、℃、℃℃,可實現(xiàn)高精度測溫。(7) 負(fù)壓特性。電源極性接反時,芯片不會因為過熱而燒毀,但不能正常工作。 DS18B20結(jié)構(gòu)及其工作原理。由此我們可以看出DS18B20主要由4部分組成:64位ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。,其中DQ為數(shù)字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端,在寄生電源接線方式時接地。 DS18B20引腳和封裝每顆DS18B20在出廠前都有一個64位光刻ROM,它可以看作該DS18B20的地址序列碼。其各位排列順序是:開始8位為產(chǎn)品類型標(biāo)號,接下來48位是該DS18B20自身的序列號,最后8位是前面56位的CRC循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一條總線 掛接多個DS18B20的目的。由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴(yán)格的時序要求。DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時序:復(fù)位時序、讀時序、寫時序。所有時序都是將主機作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進行寫命令后,主機需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。(1) DS18B20的復(fù)位時序: DS18B20復(fù)位時序圖程序?qū)崿F(xiàn)如下:/********************************************************************* 名 稱:reset() * 功 能:18b20復(fù)位********************************************************************/define DQ RB7define DQ_HIGH() TRISB7=1define DQ_LOW() TRISB7=0。DQ=0void reset(){ uchar st=1。 DQ_HIGH()。 // 先拉至高電平 NOP()。NOP()。 while(st) { DQ_LOW()。 // 低電平 delayus(70,30)。 // 延時503usDQ_HIGH()。 //釋放總線等電阻拉高總線delayus(4,4)。 //延時60us if(DQ==1) //沒有接收到應(yīng)答信號,繼續(xù)復(fù)位 st=1。 else //接收到應(yīng)答信號 st=0。 delayus(50,10)。 //延時430us }}(2) DS18B20的讀時序:對于DS18B20的讀時序分為讀0時序和讀1時序兩個過程。 對于DS18B20的讀時隙是從主機把單總線拉低之后,在15uS之內(nèi)釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。 DS18B20讀時序圖/********************************************************************* 名 稱:read_byte() * 功 能:18b20讀字節(jié)* 出口參數(shù):讀出18B20的內(nèi)容********************************************************************/uch read_byte(){ uch i。 uch value = 0。 //讀出溫度 static bit j。 for (i = 8。i 0。i) { value = 1。 DQ_LOW()。 NOP()。NOP()。NOP()。NOP()。NOP()。NOP()。 //6us DQ_HIGH()。 //拉至高電平 NOP()。NOP()。NOP()。NOP()。NOP()。 //4us j = DQ。 if (j) value |= 0x80。 delay(2, 7)。 //63us } return (value)。}(3) DS18B20的寫時序:對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。 對于DS18B20寫0時序和寫1時序的要求不同,當(dāng)要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單總線。 DS18B20寫時序圖/********************************************************************* 名 稱:write_byte() * 功 能:寫18b20寫字節(jié)* 入口參數(shù):uch val 待寫的數(shù)據(jù)*******************************************************************/void write_byte(uch val){ uch i。 uch temp。 for (i = 8。i 0。i) { temp = val amp。 0x01。 //最低位移出 DQ_LOW()。 NOP()。NOP()。NOP()。NOP()。NOP()。 //從高拉至低電平,產(chǎn)生寫時間隙 if (temp == 1) DQ_HIGH()。 //如果寫1,拉高電平 delay(2, 7)。 //延時63us DQ_HIGH()。 NOP()。NOP()。 val = val 1。 //右移一位 }}DS18B20內(nèi)部帶有共9個字節(jié)的高速暫存器RAM和電可擦除EEPROM,起結(jié)構(gòu)如表2所示。表2 DS18B20高速暫存器結(jié)構(gòu)寄存器內(nèi)容字節(jié)地址溫度值低位(LSB)0溫度值高位(MSB)1高溫限值(TH)2低溫限值(TL)3配置寄存器4保留5保留6保留7CRC校驗值8DS18B20所包含的操作指令如表3所示。表3 DS18B20操作指令ROM操作指令指令約定代碼功能讀ROM33H讀DS18B20溫度傳感器ROM中的編碼(即64位地址)匹配ROM55H發(fā)出命令后接著發(fā)出64位ROM編碼,訪問總線上與該編碼對應(yīng)的芯片搜索ROMF0H用于確定掛接在同一總線上DS18B20的個數(shù)跳過ROMCCH忽略64位ROM地址,直接向DS18B20發(fā)溫度變換命令告警搜索ECH執(zhí)行后只有問多超過上限或下限的芯片才響應(yīng)RAM操作指令指令約定代碼功能溫度轉(zhuǎn)換44H啟動DS18B20溫度轉(zhuǎn)換。12位轉(zhuǎn)換時長典型值750ms讀暫存器BEH讀內(nèi)部RAM中9字節(jié)的數(shù)據(jù)。寫暫存器4EH向RAM第3字節(jié)寫上、下限溫度數(shù)據(jù),緊跟命令之后傳送2字節(jié)數(shù)據(jù)復(fù)制暫存器48H將RAM中第3字節(jié)的內(nèi)容復(fù)制到內(nèi)部EEPROM中重調(diào)EEPROMB8H將EEPROM中內(nèi)容恢復(fù)到RAM中第4字節(jié)溫度數(shù)據(jù)在高速暫存器RAM的第0和第1個字節(jié)中的存儲格式如下表4所示。表4 DS18B20溫度數(shù)據(jù)存儲格式位7位6位5位4位3位2位1位02322212021222324位15位14位13位12位11位10位9位8SSSSS262524DS18B20在出廠是默認(rèn)配置為12位,其中最高位為符號位,即溫度值共11位,單片機在讀取數(shù)據(jù)時,一次會讀2字節(jié)共16位。另外,還需要判斷溫度的正負(fù)。前5個數(shù)字為符號位,這5位同時變化,我們只需要判斷11位就可以了。前5位為1時,讀取的溫度為負(fù)值。前5位為0時,讀取的溫度為正值,且溫度為正值時??紤]到實際使用的需要,在這里我們只使用一個DS18B20,故每次操作前只需復(fù)位后發(fā)出Skip ROM指令(即跳過ROM指令)再讀出溫度的正值、并精確到小數(shù)點后一位,即可滿足設(shè)計需求。/****************************************************************** 名 稱:get_temp() * 功 能:啟動溫度轉(zhuǎn)換*****************************************************************/void get_tem(){ uchar tem1,tem2,num。 float aaa。 reset()。 //復(fù)位 write_byte(0xCC)。 //跳過ROM write_byte(0x44)。 //溫度轉(zhuǎn)換 for(num=100。num0。num) //確保溫度轉(zhuǎn)換完成所需要的時間 reset()。 //再次復(fù)位,等待從機應(yīng)答 write_byte(0xCC)。 //忽略ROM匹配 write_byte(0xBE)。 //發(fā)送讀溫度命令 tem1=read_byte()。 //讀出溫度低8 tem2=read_byte()。 //讀出溫度高8位 shu=(tem24|tem14)。 //溫度整數(shù)部分 aaa=(tem2*256+tem1)*。 //溫度小數(shù)部分 temper=(int)aaa。 //強制轉(zhuǎn)換成整型 a1=temper/1000。 //取溫度十位 a2=temper%1000/100。 //取個位 a3=temper%100/10。 //小數(shù)點后個位 a4=temper%10。 //小數(shù)點后十位} DS18B20的接口實現(xiàn) 硬件設(shè)計 所示,這次實驗只焊了兩個溫度傳感器而已,其他兩個用法一樣,留作外接口,可以方便外用。 DS18B20原理圖 DSB18B20硬件連接實物圖 軟件設(shè)計根據(jù)DS18B20約定的通訊協(xié)議,每次使用DS18B20之前都必須經(jīng)過三個步驟,即先復(fù)位DS18B20,接著發(fā)出ROM操作指令,然后才可以發(fā)出RAM操作指令以進行溫度轉(zhuǎn)換等命令。本系統(tǒng)將實現(xiàn)讀出DS18B20的溫度并實時顯示到LCD12864上,℃。由于DS18B20對時序要求很嚴(yán)格,所以在程序設(shè)計時,時序要多加注意一點,不
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1