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

正文內(nèi)容

基于51單片機的電熱水器控制系統(tǒng)設計p-資料下載頁

2024-12-06 07:37本頁面

【導讀】是人們通常會對其使用過程中的一些危險,如一氧化碳中毒和燃氣泄漏的擔心,的成熟,安全性也能很好的得到保證。摒棄傳統(tǒng)的機械式的控制方式,轉(zhuǎn)而采用全新的控制方式,,以微處理器為核心,器的智能使控制方法。其現(xiàn)有接口外接各種硬件模塊,主要有:溫度測量電路,實時時鐘電路,鍵盤,看門狗電路,加熱開關(guān),LED顯示電路。軟件部分主要是為實現(xiàn)系統(tǒng)功能而進行的C語言編程。的各種數(shù)據(jù),便于用戶的操作,通過用戶的各種事先指令,對單片機進行操作,達到控制熱水器的加熱系統(tǒng)的工作狀態(tài),基本達到了對熱水器的控制的目的。

  

【正文】 [4](即外接一排阻連接到 VCC 上,如圖 48 所示)。其硬件顯示模塊如圖 所示。 [16] 圖 液晶顯示模塊原理圖 南京工程學院康尼學院本科畢業(yè)設計(論文 ) 28 其余硬件模塊設計 蜂鳴器電路在輸入為低電平時導通,作為某些按鍵按下的指示音。 LED 燈在繼電器斷開即加熱工作時亮,在加熱電路斷開時, LED 燈熄滅。 圖 串口通信模塊 圖 蜂鳴器報警電路及 LED 顯示燈模塊 南京工程學院康尼學院本科畢業(yè)設計(論文 ) 29 南京工程學院康尼學院本科畢業(yè)設計(論文 ) 30 第五章系統(tǒng)軟件設計 根據(jù)系統(tǒng)所需要實現(xiàn)的功能,軟件設計主要分為如下的幾個模塊:主程序、溫度讀取模塊設計、實時時鐘模塊設計、 LCD 顯示模塊設計、鍵盤掃描程序以及按鍵消抖程序。 本系統(tǒng)的工作流程是:系統(tǒng)上電后,對電路板上的各部分初始化;然后按下按鍵 2,對時間進行設定;按下按鍵 3 之后,對燒水溫度進行設定;按下按鍵 4后,對燒水時間進行設定,當溫度超過設 定的溫度之后,蜂鳴器工作,系統(tǒng)停止工作;在系統(tǒng)受到較強干擾時,按下按鍵 1 可以對單片機進行復位。 主程序模塊 主程序主要完成的是對個全局變量進行定義,對時鐘與時間的初始化,調(diào)用子函數(shù)功能。 具體流程圖如圖 所示。 主程序清單如下: void main() { bit bz=0。 float ttt。 char we[6]。 unsigned int i。 int te。 delayms(1)。 chushishizhong()。 //初始時鐘 chushishijian()。 //初始時間 //writetime()。 kaishi: write(0x01)。 //清零 while(1) { readtime()。 //讀取時間 t[0]=shijian[4]/10+0x30。 //時間數(shù)據(jù)處理 t[1]=shijian[4]%10+0x30。 t[3]=shijian[5]/10+0x30。 南京工程學院康尼學院本科畢業(yè)設計(論文 ) 31 t[4]=shijian[5]%10+0x30。 t[6]=shijian[6]/10+0x30。 t[7]=shijian[6]%10+0x30。 tt[2]=shijian[1]/10+0x30。 tt[3]=shijian[1]%10+0x30。 tt[5]=shijian[2]/10+0x30。 tt[6]=shijian[2]%10+0x30。 tt[8]=shijian[3]/10+0x30。 tt[9]=shijian[3]%10+0x30。 writestr(0,0,tt)。 //顯示時間 處理 writestr(0,10, data)。 writestr(1,0,t)。 writestr(1,10, time)。 aj=keyscan()。 //檢測按鍵 調(diào)用對應的子程序 } 南京工程學院康尼學院本科畢業(yè)設計(論文 ) 32 南京工程學院康尼學院本科畢業(yè)設計(論文 ) 33 DS18B20 測溫模塊 此模塊主要任務是對 DS18B20 進行初始化,然后再進行讀字節(jié)、寫字節(jié)的工作,最后將讀得的 16 進制溫度傳送到處理器內(nèi)進行處理。 DS18B20 測溫流程圖如圖 所示 具體程序如下: sbit wen=P1^0。 //數(shù)據(jù)口選擇 bit chushi18b20() //初始化 DS18B20 的讀數(shù) { bit dat。 wen=1。 //先將數(shù)據(jù)線置高電平 delayus(1)。 //調(diào)用延時 wen=0。 //數(shù)據(jù)線置低電平 delayus(200)。 //調(diào)用延時 delayus(200)。 wen=1。 //數(shù)據(jù)線置高電平 delayus(30)。 //延時等待 dat=wen。 //CPU讀溫度 delayus(50)。 //調(diào)用延時 return dat。 //讀 返回值 } uchar readds() //讀 8 位數(shù)據(jù) 開始 初始化DS18B20 讀 DS18B20測得的溫度 圖 DS18B20 測溫流程圖 南京工程學院康尼學院本科畢業(yè)設計(論文 ) 34 { uchar dat。 uchar i。 for(i=0。i8。i++) //循環(huán) 8 次移位 { wen=0。 dat =1。 //數(shù)據(jù)右移移位 wen=1。 if(wen) dat| =0x80。 //最高位置 1 else dat amp。=0x7f。 //最高位置 0 delayus(30)。 //調(diào)用延時 } return dat。 //得到 8 位數(shù)據(jù) } void writeds(uchar dat) //數(shù)據(jù)寫入 { uchar i。 for(i=0。i8。i++) //循環(huán) 8 次移位 { wen=0。 wen= dat amp。 0x01。 //從字節(jié)的最低位開始傳輸 delayus(30)。 wen=1。 dat =1。 //數(shù)據(jù)右移一位 } delayus(10)。 //寫時序持續(xù) 60us } unsigned int duwendu() //讀溫度 { uchar a。 unsigned int q,w。 //分別定義溫度的高八位,低八位與總溫度 南京工程學院康尼學院本科畢業(yè)設計(論文 ) 35 chushi18b20()。 writeds(0xcc)。 //讀低溫 writeds(0x44)。 //讀高溫 delayms(15)。 chushi18b20()。 writeds(0xcc)。 //忽略 ROM 指令 writeds(0xbe)。 //讀暫存器指令 delayms(15)。 a=readds()。 //低八位數(shù)據(jù) q=readds()。 //高八 位數(shù)據(jù) q= q 8。 w=q+a。 return w。 //得到 2 進制的溫度示值 } 實時時鐘模塊 實時時鐘模塊完成時間的設定與時間的讀取,包括年、月、日、時、分、秒。 具體流程圖如圖 所示 開始 DS1302 初始化 讀取 DS1302時間 顯示 時、分、秒 圖 DS1302 顯示流程圖 南京工程學院康尼學院本科畢業(yè)設計(論文 ) 36 具體程序如下: define uchar unsigned char sbit res= P2^0。 //數(shù)據(jù)命令口選擇 sbit clo= P2^2。 //脈沖信號口選擇 sbit io=P2^1。 //數(shù)據(jù)口選擇 define miao 0x80//秒 define fen 0x82//分 define shi 0x84//時 define ri 0x86//日 define yue 0x88//月 define nian 0x8c//年 define kongzhi 0x8e//光標 uchar shijian[8]={20,12,1,1,0,0,0,0}。 //表示初始時間 uchar shijian1[8]。 void writeda(uchar add,uchar dat) { uchar i。 add =add amp。 0xfe。 //地址清零 res=1。 //復位信號 for(i=0。i8。i++) //循環(huán) 8 次移位 { if(add amp。 0x01) //若地址不為 0 io=1。 //傳輸數(shù)據(jù) else io=0。 clo=1。 //有脈沖信號 delayus(1)。 clo=0。 //無脈沖信號 add =1。 //數(shù)據(jù)右移 南京工程學院康尼學院本科畢業(yè)設計(論文 ) 37 } for(i=0。i8。i++) //寫數(shù)據(jù) { if(dat amp。 0x01) //有數(shù)據(jù) io=1。 else io=0。 clo=1。 delayus(1)。 clo=0。 dat =1。 } res=0。 //不進行復位操作 } uchar readda(uchar add) //讀數(shù)據(jù) { uchar dat。 uchar i。 add |=0x01。 //低位置 1 res=1。 for(i=0。i8。i++) { if(add amp。 0x01) /若低位為 1,則將數(shù)據(jù)傳送到處理器內(nèi),否則傳送 0 io=1。 else io=0。 clo=1。 delayus(1)。 clo=0。 add =1。 } for(i=0。i8。i++) 八位循環(huán)位移 { 南京工程學院康尼學院本科畢業(yè)設計(論文 ) 38 dat =1。 if(io) dat |=0x80。 //高位置 1 else dat amp。=0x7f。 //高位置 0 clo=1。 delayus(1)。 clo=0。 } res=0。 return dat。 } void writetime() //寫時間 { uchar i,te。 for(i=0。i8。i++) { te=shijian[i]/10。 //將時間轉(zhuǎn)換為 10 進制 shijian1[i]=shijian[i]%10。 shijian1[i]=te*16+shijian1[i]。 } writeda(kongzhi,0x00)。 //kongzhi 關(guān) writeda(miao,0x80)。 //miao 停 writeda(miao,shijian1[6])。 writeda(fen,shijian1[5])。 writeda(shi,shijian1[4])。 writeda(ri,shijian1[3])。 writeda(yue,shijian1[2])。 writeda(nian,shijian[1])。 writeda(kongzhi,0x80)。 //kongzhi 開 } void readtime() //讀時間 南京工程學院康尼學院本科畢業(yè)設計(論文 ) 39 { uchar i,te。 shijian1[1]=readda(nian)。 shijian1[2]=readda(yue)。 shijian1[3]=readda(ri)。 shijian1[4]=readda(shi)。 shijian1[5]=readda(fen)。 shijian1[6]=readda(miao)。 for(i=0。i8。i++) //進制轉(zhuǎn)換 { te=shijian1[i]/16。 shijian[i]=shijian1[i]%16。 shijian[i]=te*10+shijian[i]。 } } void chushishijian() //初始時間 將秒位置 0 { res=0。 clo=0。 writeda(miao,0x00)。 } LCD 顯示模塊 LCD 顯示模塊主要實現(xiàn)各個數(shù)據(jù)的顯示功能,
點擊復制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1