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

正文內(nèi)容

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

2024-12-23 22:14 本頁面
 

【文章內(nèi)容簡介】 下 const uchar table1[ ] 基 PIC 單片機 。 const uchar table2[ ] 多路溫度 。 const uchar table3[ ] 巡回檢測系統(tǒng) 。 const uchar table4[ ] 2020 年 12 月 01 日 。 send_i 0x80 。 // 定位在第一行 writelcd table1 。 // 寫:基 PIC 單片機 send_i 0x90 。 // 定位在第二行 writelcd table2 。 // 寫:多路溫度 send_i 0x88 。 // 定位在第三行 writelcd table3 。 // 寫:巡回檢測系統(tǒng) send_i 0x98 。 // 定位在第四行 writelcd table4 。 // 寫: 2020 年 12 月 01 日 與單片機的接口實現(xiàn) 12864 液晶的電路連線圖如圖 1 所示,實物位置如圖 2 所示 圖 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)部原理。整屏畫圖可以使用 PCtoLCD2020 把圖片轉(zhuǎn)換成 16 進制數(shù),局部畫曲線、直線、圓等需要一些算法,比較復(fù)雜 DS18B20 原理介紹及接口實現(xiàn) DS18B20 是 DALLAS 公司的 圖 內(nèi)部結(jié)構(gòu)圖 DS18B20 的內(nèi)部結(jié)構(gòu)圖如圖 所示。由此我們可以看出 DS18B20 主要由 4部分組成: 64 位 ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器 TH 和 TL、配置寄存器。 DS18B20 的管腳排列如圖所示, DQ 為數(shù)字信號輸入/輸出端; GND 為電源地; VDD 為外接供電電源輸入端在寄生電源接線方式時接地 圖 DS18B20 復(fù)位時序圖 程序?qū)崿F(xiàn)如下: /******************************************************************** * 名 稱: reset * 功 能: 18b20 復(fù)位 ********************************************************************/ define DQ RB7 define DQ_HIGH TRISB7 1 define DQ_LOW TRISB7 0。DQ 0 void reset uchar st 1。 DQ_HIGH 。 // 先拉至高電平 NOP 。NOP 。 while st DQ_LOW 。 // 低電平 delayus 70,30 。 // 延時 503us DQ_HIGH 。 //釋放總線等電阻拉高總線 delayus 4,4 。 //延時 60us if DQ 1 //沒有接收到應(yīng)答信號,繼續(xù)復(fù)位 st 1。 else //接收到應(yīng)答信號 st 0。 delayus 50,10 。 //延時 430us 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 。 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 保留 7 CRC 校驗值 8 DS18B20 所包含的操作指令如表 3 所示。 表 3 DS18B20 操作指令 ROM 操作指令 指令 約定代碼 功能 讀 ROM 33H 讀 DS18B20溫度傳感器 ROM 中的編碼(即 64 位地址) 匹配 ROM 55H 發(fā)出命令后接著發(fā)出 64 位 ROM 編碼,訪問總線上與該編碼對應(yīng)的芯片 搜索 ROM F0H 用于確定掛接在同一總線上 DS18B20 的個數(shù) 跳過 ROM CCH 忽略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) EEPROM B8H 將 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 位 0 23 22 21 20 21 22 23 24 位 15 位 14 位 13 位 12 位 11 位 10 位 9 位 8 S S S S S 26 25 24 DS18B20 在出廠是默認配置為 12 位,其中最高位為符號位,即溫度值共 11位,單片機在讀取數(shù)據(jù)時,一次會讀 2 字節(jié)共 16 位,讀完后將低 11 位的二進制數(shù)轉(zhuǎn) 化為十進制數(shù)后再乘以 便為所測的實際溫度值。另外,還需要判斷溫度的正負。前 5 個數(shù)字為符號位,這 5 位同時變化,我們只需要判斷 11 位就可以了。前 5 位為 1 時,讀取的溫度為負值,且測到的數(shù)值需要取反加 1 再乘以 才可得到實際溫度值。前 5 位為 0 時,讀取的溫度為正值,且溫度為正值時,只要將測得的數(shù)值乘以 即可得到實際溫度值??紤]到實際使用的需要,在這里我們只使用一個 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。num 0。num //確保溫度轉(zhuǎn)換完成所需要的時間 reset 。 //再次復(fù)位,等待從機應(yīng)答 write_byte 0xCC 。 //忽略 ROM 匹配 write_byte 0xBE 。 //發(fā)送讀溫度命令 tem1 read_byte 。 //讀出 溫度低 8 tem2 read_byte 。 //讀出溫度高 8 位 shu tem2 4|tem1 4 。 //溫度整數(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 在本次設(shè)計中接線圖如圖 所示,實驗板硬件圖如圖 所示 這次實驗只焊了兩個溫度傳感器而已,其
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1