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

正文內(nèi)容

[信息與通信]溫度自動控制的設(shè)計-資料下載頁

2025-01-18 14:19本頁面
  

【正文】 等內(nèi)容做簡要介紹。1602LCD基本上分為帶背光和不帶背光兩種,基控制器大都為HD44780,一般帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無太大差別。 LCD1602尺寸圖: LCD1602的技術(shù)參數(shù)顯示容量16*2個字符片工作電壓~工作電流()模塊最佳工作電壓字符尺寸*(WXH)mm 溫度數(shù)據(jù)顯示電路 : 數(shù)據(jù)顯示電路圖 Proteus仿真原理圖本溫度自動控制系統(tǒng)采用Proteus電子仿真軟件對本系統(tǒng)的設(shè)計電路進行仿真。 整個溫度自動控制系統(tǒng)電路原理圖在KEIL C中的程序編譯成功后,將其復(fù)制到Proteus原理圖文件中并加載,點運行見后,可觀察到整個運行結(jié)果。其在不同溫度下的運行效果圖見附錄一。第四章 溫度自動控制系統(tǒng)的軟件設(shè)計本章主要介紹了整個溫控系統(tǒng)的軟件設(shè)計思路及部分模塊的程序代碼。在上一章硬件基礎(chǔ)上,根據(jù)溫度自動控制系統(tǒng)硬件的設(shè)計要求,本系統(tǒng)的軟件部分包括溫度采集系統(tǒng)的程序設(shè)計、溫度控制系統(tǒng)的程序設(shè)計和LCD1602顯示模塊的程序設(shè)計三個部分。整個軟件設(shè)計過程采用模塊化結(jié)構(gòu),C語言編程。接下來本章將重點分析溫度采集系統(tǒng)的程序設(shè)計、溫度控制系統(tǒng)的程序設(shè)計和LCD1602顯示模塊的程序設(shè)計三個部分的軟件實現(xiàn)過程,包括程序流程圖和C程序代碼。 溫度采集系統(tǒng)的軟件設(shè)計 溫度傳感器是整個溫度自動控制系統(tǒng)的核心部件,它的選擇成功與否將直接關(guān)系到溫控系統(tǒng)的性能、成本和開發(fā)周期。協(xié)議包括集中單總線信號類型:復(fù)位脈沖、存在脈沖、寫0、寫讀0、和讀1。所有這些信號,除存在脈沖外,都是由總線控制器發(fā)出的[3]。前面已對DS18B20的特性和引腳接口做過詳細介紹,這里就僅對溫度采集模塊的軟件設(shè)計流程和此部分的C程序代碼做一個詳細的說明。 溫度采集模塊的軟件設(shè)計流程圖用DS18B20進行采集溫度數(shù)據(jù)時,首先給單總線復(fù)位,經(jīng)過延時,復(fù)位成功之后選擇DS18B20并發(fā)轉(zhuǎn)換命令,總線復(fù)位,經(jīng)過延時,復(fù)位成功之后發(fā)讀溫度命令,返回采集到的溫度值。 DS18B20溫度采集系統(tǒng)程序流程圖 溫度采集模塊的軟件設(shè)計C程序代碼用DS18B20進行采集溫度數(shù)據(jù)時,先給單總線復(fù)位,經(jīng)過延時,復(fù)位成功之后選擇DS18B20并發(fā)轉(zhuǎn)換命令,總線復(fù)位,經(jīng)過延時,復(fù)位成功之后發(fā)讀溫度命令,返回采集到的溫度值。然后處理溫度數(shù)據(jù),先設(shè)置一個正負溫度標志位flagdat,由于溫度數(shù)據(jù)已被擴大10倍,分別用除以1000得到溫度值百位的值;用模1000再除以100得到溫度值的十位的值;用模100再除以10得到溫度值個位的值;用模10得到溫度數(shù)值小數(shù)位的值。將DS18B20處理溫度數(shù)據(jù)所得的數(shù)據(jù)賦給發(fā)送有效數(shù)據(jù)寄存器。flagdat:溫度為負值時為1,否則為0;disdata[0]:溫度值的百位;disdata[1]:溫度值的十位;disdata[2]:溫度值的個位;disdata[3]:溫度值的小數(shù)位。此部分的具體C程序代碼如下:void delay_18B20(unsigned int i) //延時1微秒// { while(i )。 } void ds1820rst( ) //ds1820復(fù)位// { unsigned char x=0。 DQ = 1。 //DQ復(fù)位// delay_18B20(4)。 //延時// DQ = 0。 //DQ拉低// delay_18B20(100)。 //精確延時大于480us// DQ = 1。 //拉高// delay_18B20(40)。 } uchar ds1820rd( ) //讀數(shù)據(jù)//{ unsigned char i=0。 unsigned char dat = 0。 for (i=8。i0。i) { DQ = 0。 //給脈沖信號// dat=1。 DQ = 1。 //給脈沖信號// if(DQ) dat|=0x80。 delay_18B20(10)。 } return(dat)。}void ds1820wr(uchar wdata) //寫數(shù)據(jù)//{ unsigned char i=0。 for (i=8。 i0。 i) { DQ = 0。 DQ = wdataamp。0x01。 delay_18B20(10)。 DQ = 1。 wdata=1。 }}read_temp( ) //讀取溫度值并轉(zhuǎn)換//{ uchar a,b。 ds1820rst()。 ds1820wr(0xcc)。 //跳過讀序列號// ds1820wr(0x44)。 //啟動溫度轉(zhuǎn)換,發(fā)44H溫度轉(zhuǎn)換命令// ds1820rst()。 ds1820wr(0xcc)。 //跳過讀序列號// ds1820wr(0xbe)。 //讀取溫度// a=ds1820rd( )。 b=ds1820rd( )。 tvalue=b。 tvalue=8。 tvalue=tvalue|a。 if(tvalue0x0fff) //若溫度為正值// tflag=0。 else //若溫度為負值// { tvalue=~tvalue+1。 tflag=1。 } tvalue=tvalue*()。 //溫度值擴大10倍,精確到1位小數(shù)// return(tvalue)。}void ds1820disp( ) //溫度值顯示//{ uchar flagdat。 disdata[0]=tvalue/1000+0x30。 //百位數(shù) disdata[1]=tvalue%1000/100+0x30。 //十位數(shù) disdata[2]=tvalue%100/10+0x30。 //個位數(shù) disdata[3]=tvalue%10+0x30。 //小數(shù)位 if(tflag==0) flagdat=0x20。//正溫度不顯示符號 else flagdat=0x2d。//負溫度顯示負號: if(disdata[0]==0x30) { disdata[0]=0x20。 //如果百位為0,不顯示// if(disdata[1]==0x30) { disdata[1]=0x20。 //如果百位為0,十位為0也不顯示// } } wr_(0xc0)。 wr_dat(flagdat)。 //顯示符號位// wr_(0xc1)。 wr_dat(disdata[0])。 //顯示百位// wr_(0xc2)。 wr_dat(disdata[1])。 //顯示十位// wr_(0xc3)。 wr_dat(disdata[2])。 //顯示個位// wr_(0xc4)。 wr_dat(0x2e)。 //顯示小數(shù)點// wr_(0xc5)。 wr_dat(disdata[3])。 //顯示小數(shù)位//} 溫度控制系統(tǒng)的軟件設(shè)計在此溫度控制系統(tǒng)中,我們采用了AT89C51單片機控制加熱設(shè)備來對溫度進行控制,加熱設(shè)備主要包括兩部分:繼電器和加熱器。由DS18B20溫度傳感器采集來的溫度數(shù)據(jù)經(jīng)過單片機處理后,通過繼電器進行電壓轉(zhuǎn)換,進而為加熱器提供額定電壓驅(qū)動其進行加熱工作。本部分也是整個主程序的主要組成部分。 溫度控制模塊的軟件設(shè)計流程圖 : 對AT89C51的引腳進行定義DS18B20采集到的溫度值tvalue990?Y延 時NHT=1Modeflag=1初始狀態(tài)設(shè)置為加熱狀態(tài),即HT=0,Modeflag=0開 始延 時延 時Modeflag==1?YTvalue800?NNTvalue600?YHT=0YHT=1 圖 溫度控制程序模塊流程圖 溫度控制模塊的軟件設(shè)計C程序代碼 此塊程序設(shè)計部分是在主函數(shù)里,C代碼如下:void main( ){ init_play( )。 //初始化顯示 while(1) { read_temp()。 //讀取溫度 ds1820disp( )。 //顯示 if(tvalue990) //當(dāng)溫度大于99度,不需要加熱 { HT=1。 modeflag=1。 //保溫模式 } if(modeflag==1) { if(tvalue800) //當(dāng)溫度大于80度,不需要加熱 { HT=1。 } if(tvalue600) //當(dāng)溫度小于60度,需要加熱 { HT=0。 modeflag=0。 } } } } 溫度顯示系統(tǒng)的軟件設(shè)計 LCD1602液晶顯示模塊的軟件設(shè)計流程本系統(tǒng)采用LCD1602顯示,它需要用單片機來對其控制。單片機控制LCD1602液晶顯示過程:首先選中該芯片,對LCD進行初始化。當(dāng)執(zhí)行顯示操作時,器件需延時約1 ms后才能開始設(shè)置現(xiàn)實的位置。若按照LCD1602的規(guī)格可顯示8*2個字符。 LCD1602 顯示流程圖 LCD1602液晶顯示模塊的軟件設(shè)計C語言代碼本系統(tǒng)的溫度顯示模塊采用LCD1602的C語言編程代碼如下所示:void delay1ms(unsigned int ms) //延時1毫秒(不夠精確){ unsigned int i,j。 for(i=0。ims。i++) for(j=0。j100。j++)。}void wr_(unsigned char ) //寫指令//{ delay1ms(1)。 RS=0。 RW=0。 EN=0。 P2=。 delay1ms(1)。 EN=1。 delay1ms(1)。 EN=0。}void wr_dat(unsigned char dat) //寫數(shù)據(jù)//{ delay1ms(1)。 RS=1。 RW=0。 EN=0。 P2=dat。 delay1ms(1)。 EN=1。 delay1ms(1)。 EN=0。}void lcd_init() //初始化設(shè)置//{ delay1ms(15)。 wr_(0x38)。 delay1ms(5)。 wr_(0x08)。delay1ms(5)。 wr_(0x01)。delay1ms(5)。 wr_(0x06)。delay1ms(5)。 wr_(0x0c)。delay1ms(5)。}void display(unsigned char *p) //顯示//{ while(*p!=39。\039。) { wr_dat(*p)。 p++。 delay1ms(1)。 }}init_play() //初始化顯示//{ lcd_init()。 wr_(0x80)。 display(str1)。 wr_(0xc0)。 display(str2)。 modeflag=0。 HT=0。} KEIL C 環(huán)境中整個軟件程序設(shè)計本設(shè)計采用 Keil Software 公司的 uVision2 仿真環(huán)境
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1