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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)(編輯修改稿)

2025-07-12 15:06 本頁面
 

【文章內(nèi)容簡介】 體振蕩器,則復(fù)位信號持續(xù)時(shí)間應(yīng)超過 2μs才完成復(fù)位操作。 圖 36 復(fù)位電路 單片機(jī)與報(bào)警電路 系統(tǒng)中的報(bào)警電路是由發(fā)光二極管和限流電阻組成,并與單片機(jī)的 口連接。 顯示電路 應(yīng)用簡介 模塊內(nèi)部自帶字符發(fā)生存儲器( CGROM) ,字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“ A”的代碼 是( 41H),顯示時(shí)模塊把代碼 41H 發(fā)給液晶模塊,我們就能在液晶上看到字母“ A”。 1602 液晶模塊內(nèi)部的控制器共有 11 條控制指令,豐富的指令可以完成液晶的時(shí)序控制、工作方式式設(shè)置和數(shù)據(jù)顯示等。 采用的 LCD1602 液晶模塊是標(biāo)準(zhǔn) 16針插座,接口電路如 圖 所示: 關(guān)于LCD1602 的詳細(xì)資料見表 。 圖 顯示電路的連接圖 4 軟件設(shè)計(jì) DS18b20 的讀操作 DSl8B20 的主要數(shù)據(jù)元件有: 64 位激光 Lasered ROM,溫度 靈敏元件和非易失性溫度告警觸發(fā)器 TH 和 TL。 DSl8B20 可以從單總線獲取電源,當(dāng)信號線為高電平時(shí),將能量貯存在內(nèi)部電容器中;當(dāng)單信號線為低電平時(shí),將該電源斷開,直到信號線變?yōu)楦唠娖街匦陆由霞纳?(電容 )電源為止。此外,還可外接 5 V電源,給 DSl8B20 供電。 DSl8B20 的供電方式靈活,利用外接電源還可增加系統(tǒng)的穩(wěn)定性和可靠性。 DS18B20 讀寫時(shí)序如 圖 41~43: 圖 41 DS18B20 的復(fù)位時(shí)序圖 圖 42 DS18B20 的寫數(shù)據(jù)時(shí)序圖 圖 43 DS18B20 的讀數(shù)據(jù)時(shí)序圖 由時(shí)序圖可知, DS18B20 在復(fù)位時(shí)需要 480us 的低電平,等待 15us 后 MCU將總線拉高,等待 DS18B20 的響應(yīng)信號; DS18B20 在寫數(shù)據(jù)時(shí)分為寫“ 0”和寫“ 1”操作,寫“ 0”操作時(shí), DS18B20 需要至少 60us 的總線被拉低,然后在 60us 內(nèi)將“ 0”寫入 DS18B20 中,持續(xù)時(shí)間至少 1us,寫“ 1”操作是只需將寫入的“ 0”改為“ 1”即可; DS18B20 讀操作也分為讀“ 0”和讀“ 1”操作,讀“ 0”操作時(shí),總線需要 15us 被拉低,再拉高 45us,然后再 15us 內(nèi)將數(shù)據(jù)讀走,讀“ 1”操作同讀“ 0”操作。程 序流程圖如圖 44: 圖 44 DS18B20 讀取 溫度 的流程圖 DS18b20 的溫度數(shù)據(jù)處理 讀出溫度數(shù)據(jù)后, LOW 的低四位為溫度的小數(shù)部分,可以精確到 ℃ ,LOW 的高四位和 HIGH 的低四位為溫度的整數(shù)部分, HIGH 的高四位全部為 1表示負(fù)數(shù),全為 0 表示正數(shù)。所以先將數(shù)據(jù)提取出來,分為三個(gè)部分:小數(shù)部分、整數(shù)部分和符號部分。小數(shù)部分進(jìn)行四舍五入處理:大于 ℃ 的話,向個(gè)位進(jìn) 1;小于 ℃ 的時(shí)候,舍去不要。當(dāng)數(shù)據(jù)是個(gè)負(fù)數(shù)的時(shí)候,顯示 之前要進(jìn)行數(shù)據(jù)轉(zhuǎn)換,將其整數(shù)部分取反加一。還因?yàn)?DS18B20 最低溫度只能為 55℃ ,所以可以將整數(shù)部分的最高位換成一個(gè) “”,表示為負(fù)數(shù)。圖 42 為溫度數(shù)據(jù)處理程序的流程圖。 開始 DS18B20 的初始化 啟動(dòng)溫度轉(zhuǎn)換 讀取溫度寄存器 跳過讀序列號的操作 跳 過讀序列號的操作 DS18B20 的初始化 RET LOW低八位 HIGH高八位 圖 45 溫度數(shù)據(jù)處理流程圖 1602 顯示部分 1602 的讀寫時(shí)序圖如下: 圖 46 1602液晶的讀時(shí)序圖 開始 提取整數(shù)部分存入HT 提取小數(shù)部分存入 LT LT 右移三位 ,將精度降低到 攝氏度 HT++ 將小數(shù)部分整數(shù)化 提取符號部分存入 sign LT 是否大于 5 是否為負(fù)數(shù) RET 負(fù)數(shù)標(biāo)志 flag=1 Y N N Y 圖 47 1602的寫時(shí)序圖 根據(jù)以上時(shí)序圖可以得出讀寫程序流程圖如下: 開始 選擇寫數(shù)據(jù)寫命令 RS=1||RS=0 選擇寫操作RW=1 使能 EN 準(zhǔn)備好寫入的數(shù)據(jù) DB0~DB7 禁止 EN 結(jié)束 開始 選擇寫數(shù)據(jù)寫命令 RS=1||RS=0 選擇讀操作RW=0 使能 EN 禁止 EN 結(jié)束 圖 48 1602的寫流程圖 圖 48 1602的讀流程圖 5 運(yùn)行 測試 報(bào)警測試 6 結(jié)語 本文重點(diǎn)介紹了單片機(jī)和數(shù)字傳感器 DS18B20 的原理和功能,并用DS18B20 與 AT89S52 單片機(jī)、 LCD1602 組成數(shù)字溫度計(jì),有超溫報(bào)警功能。 在本次設(shè)計(jì)的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設(shè)計(jì)但這次設(shè)計(jì)真的讓我長進(jìn)了很多,單片機(jī)課程設(shè) 計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺的寫好一個(gè)程序并不是一件簡單的事,舉個(gè)例子,以前寫的那幾次,數(shù)據(jù)加減時(shí),我用的都是 BCD碼,這一次,我全部用的都是 16 進(jìn)制的數(shù)直接加減,顯示處理時(shí)在用除法去刪分 ,感覺效果比較好,有好多的東西,只有我們?nèi)ピ囍隽?,才能真正的掌握,只學(xué)習(xí)理論有些東西是很難理解的,更談不上掌握。 參考文獻(xiàn) 【 1】作著:姜濤 【 2】書名: 基于單片機(jī)的數(shù)字式溫度計(jì)設(shè)計(jì) 【 3】出版社:西北電力學(xué)校 【 4】出版年月: 【 5】頁碼 : 27 頁 附錄一:仿真電路圖 附錄 二 :系統(tǒng)程序清單 28 include include define uint unsigned int define uchar unsigned char // sbit S1=P2^0。 //設(shè)置 上下限 sbit S2=P2^1。 //加 sbit S3=P2^2。 //減 //LCD1602 //P07==== D07 define LCDDATA P1 sbit rs=P3^0。 sbit wela=P3^1。 sbit lcden=P3^2。 // sbit DQ1=P2^3。 //傳感器 1 29 sbit LED1=P2^6。 //報(bào)警顯示燈 sbit BUZ=P2^7。 //蜂鳴器 uchar DQ1_SET[2]。 //DQ1 上下限設(shè)置 DQ1_SET[0] 下限 DQ1_SET[1] 上限; uchar Temp。 //溫度報(bào)警 uchar count。 //蜂鳴器定時(shí)用 uchar mode。 //mode=1 正常顯示 mode=2 設(shè)置下限模式 mode=3 設(shè)置上限 uchar code table[]=Temper 。 //////////////////////////////DS18B20//////////////////////////////////////////////// uchar ng。 //負(fù)號標(biāo)志 uchar code df_Table[]= { 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9 }。 //溫度小數(shù)位對照表 uchar CurrentT = 0。 //當(dāng)前讀取的溫度整數(shù)部分 uchar Temp_Value[]={0x00,0x00}。 //從 DS18B20 讀取的溫度值 uchar Display_Digit[]={0,0,0,0,0,0,0,0}。//待顯示的各溫度數(shù)位 bit DS18B20_IS_OK = 1。 //傳感器正常 30 ////////////////////////////////DS18B20/////////////////////////////////////////////// //延時(shí) //************************************************************************/ // 函數(shù) : LCD_Delay() // 描述 : 延時(shí) t ms 函數(shù) // 參數(shù) : t // 返回 : 無 // 備注 : 12MHZ t=1 延時(shí)時(shí)間約 1ms // 版本 : 2021/01/01 First version //************************************************************************/ void Delay_ms(unsigned int t) { unsigned int i,j。 for(i=0。it。i++) for(j=0。j120。j++) 。 } void Delay(uint x) { while(x)。 } 31 //1602 void delayms(uint z) //延時(shí) N ms { uint x,y。 for(x=z。x0。x) for(y=120。y0。y)。 } void write_(uchar ) //1602 液晶寫指令 { rs=0。 lcden=0。 LCDDATA=。 delayms(1)。 lcden=1。 delayms(2)。 lcden=0。 } void write_date(uchar date) //1602 液晶寫數(shù)據(jù) { rs=1。 lcden=0。 32 LCDDATA=date。 delayms(1)。 lcden=1。 delayms(2)。 lcden=0。 } void init_lcd(void) //初始化液晶,及畫面初始化 { uchar num。 wela=0。 lcden=0。 write_(0x38)。 write_(0x0c)。 write_(0x06)。 write_(0x01)。 write_(0x80)。 for(num=0。num13。num++) // temper: 。 { write_date(table[num])。 Delay(10)。 } } 33 //1602 //初始化 DS18B20 uchar Init_DS18B20() { uchar status。 DQ1 = 1。 Delay(8)。 //延時(shí) DQ1 = 0。 Delay(90)。//延時(shí) DQ1 = 1。 Delay(8)。 status = DQ1。 Delay(100)。 DQ1 = 1。 return status。 } //讀一個(gè)字節(jié) uchar ReadOneByte() { 34 uchar i,dat=0。 DQ1 = 1。 _nop_()。 for(i=0。i8。i++) { DQ1 = 0。 dat = 1。 DQ1 = 1。 _nop_()。 _nop_()。 if(DQ1) dat |= 0X80。 Delay(30)。 DQ1 = 1。 } return (dat)。 } //寫一個(gè)字節(jié) void WriteOneByte(uchar dat) { 35 uchar i。 for(i=0。i8。i++) { DQ1 = 0。 DQ1 = datamp。 0x01。 Delay(5)。 DQ1 = 1。 dat = 1。 } } //讀溫度值 void Read_Temperature() { EA=0。 if(Init_DS18B20()==1) DS18B20_IS_OK=0。 else { WriteOneByte(0xcc)。 //跳過序列號 WriteOneB
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1