智能散熱系統(tǒng)課程設(shè)計(jì)報(bào)告_第1頁(yè)
智能散熱系統(tǒng)課程設(shè)計(jì)報(bào)告_第2頁(yè)
智能散熱系統(tǒng)課程設(shè)計(jì)報(bào)告_第3頁(yè)
智能散熱系統(tǒng)課程設(shè)計(jì)報(bào)告_第4頁(yè)
智能散熱系統(tǒng)課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、單片機(jī)原理及接口課程設(shè)計(jì)報(bào)告題 目: 智能散熱系統(tǒng) 專(zhuān)業(yè)名稱(chēng): 通信工程 班 級(jí): 創(chuàng)新 142 學(xué) 號(hào): 201411403128 姓 名: 劉小杰 2015年 12月課程設(shè)計(jì)報(bào)告首頁(yè)院、系(部)信息工程學(xué)院專(zhuān)業(yè)通信工程 班級(jí)創(chuàng)新142學(xué)號(hào)201411403128姓名劉小杰任課教師陳瑋課程名稱(chēng)單片機(jī)原理及接口成績(jī)?cè)u(píng)語(yǔ) 簽字: 年 月 日復(fù)核人意見(jiàn) 簽字: 年 月 日課程設(shè)計(jì)報(bào)告的要求:首先應(yīng)先介紹課程設(shè)計(jì)的基本內(nèi)容(包括設(shè)計(jì)目標(biāo))、設(shè)計(jì)的背景及意義。其次是方案論證:說(shuō)明設(shè)計(jì)的原理并進(jìn)行方案選擇,再然后進(jìn)行硬件電路的設(shè)計(jì)及原理說(shuō)明,和軟件的流程說(shuō)明。第三是過(guò)程(設(shè)計(jì)或?qū)嶒?yàn))論述:對(duì)設(shè)計(jì)調(diào)試工作

2、的詳細(xì)表述。最后是結(jié)論或總結(jié):對(duì)整個(gè)研究工作進(jìn)行歸納和綜合、包括心得體會(huì)。大致內(nèi)容按上面要求來(lái)寫(xiě),也可以參考網(wǎng)上“單片機(jī) 課程設(shè)計(jì)報(bào)告”來(lái)擴(kuò)充。文章中的格式規(guī)定:圖:圖的名稱(chēng)采用中文,圖名在圖片下面格式為:圖1-1,后接圖名。表格:表名在表格上面。正文五號(hào)字一級(jí)標(biāo)題 四號(hào) 加粗二級(jí)標(biāo)題 小四 加粗行距:1.5倍附錄的程序:兩列頁(yè)邊距:上下2.5厘米 左右2.8厘米不要目錄需要中文摘要 排版參考畢業(yè)設(shè)計(jì)論文格式(見(jiàn)下頁(yè))參考文獻(xiàn)若有可寫(xiě)打印的報(bào)告里面不需要附錄程序 電子版里面需要報(bào)告里面應(yīng)該有各模塊電路圖 調(diào)試現(xiàn)象圖刻盤(pán)要求:最后,除了打印的,全班把每個(gè)人的程序(keil項(xiàng)目及hex文件)、電路

3、(proteus文件或硬件的照片及電路原理圖)和報(bào)告打包壓縮后命名為“班級(jí)名-學(xué)號(hào)-姓名”(如電信091-123456-陳瑋)刻盤(pán)。散熱系統(tǒng)劉小杰信息工程學(xué)院摘要:由于單片機(jī)體積小、成本低、使用方便,所以被廣泛地應(yīng)用于儀器儀表、現(xiàn)場(chǎng)數(shù)據(jù)的采集和控制。通過(guò)本次課程設(shè)計(jì)掌握單片機(jī)硬件和軟件方面的知識(shí),更深入的了解單片機(jī)的實(shí)際應(yīng)用。關(guān)鍵詞:?jiǎn)纹瑱C(jī),程序,DS18B20溫度傳感器,LCD1602液晶顯示屏,定時(shí)器,直流電機(jī)等等1課程設(shè)計(jì)的基本內(nèi)容為實(shí)現(xiàn)系統(tǒng)能采集當(dāng)前環(huán)境溫度,當(dāng)溫度達(dá)到一定值時(shí)觸發(fā)直流風(fēng)扇的轉(zhuǎn)動(dòng)進(jìn)行主動(dòng)散熱,并且隨著溫度的變化而改變風(fēng)力大小,風(fēng)力與溫度成正比,本系統(tǒng)設(shè)置了三個(gè)檔來(lái)控制風(fēng)

4、力的大小,20C°-22C°為一檔,22C°-24C°為二檔,24C°-26C°為三檔(為了演示方便而設(shè)計(jì)的三檔,在實(shí)際用途中可依據(jù)要求來(lái)設(shè)置)。本智能散熱系統(tǒng)根據(jù)環(huán)境溫度智能調(diào)控風(fēng)力的功能可以放置在一些硬件中以達(dá)到降溫的功能。2 方案論證2.1 設(shè)計(jì)原理及方案選擇通過(guò)DS18B20溫度傳感器來(lái)采集當(dāng)前環(huán)境的溫度,通過(guò)LCD1602液晶顯示屏來(lái)顯示溫度以及工作時(shí)間,CPU根據(jù)當(dāng)前溫度來(lái)控制電機(jī)的速度。2.2 硬件電路設(shè)計(jì)及原理說(shuō)明 使用P1.1口來(lái)連接電機(jī),P0口連接LCD1602,P2.5口為讀/寫(xiě)選擇端,P2.6為命令/數(shù)據(jù)選擇端

5、,P2.7為使能端,P3.7口為數(shù)據(jù)總線,P3.4口為定時(shí)器0,P3.5為定時(shí)器1. 圖為DS18B20原理圖 圖為L(zhǎng)CD1602原理圖 圖為外部電路接線圖 3 設(shè)計(jì)過(guò)程論述3.1 DS18B20溫度傳感器DS18b20采用單總線的結(jié)構(gòu),單總線的特點(diǎn)就是只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換都由這根線進(jìn)行。DS18B20的一線工作協(xié)議流程是:初始化ROM操作指令存儲(chǔ)器操作指令數(shù)據(jù)傳輸。其工作時(shí)序包括:1、初始化時(shí)序2、寫(xiě)時(shí)序3、讀時(shí)序DS18B20的初始化主機(jī)首先發(fā)出一個(gè)480960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖?,并在隨后的480微秒時(shí)間內(nèi)對(duì)總線進(jìn)行檢測(cè),如果有低電平出現(xiàn)說(shuō)明總線上有器件已

6、做出應(yīng)答。若無(wú)低電平出現(xiàn)一直都是高電平說(shuō)明總線上無(wú)器件應(yīng)答。做為從器件的DS18B20在一上電后就一直在檢測(cè)總線上是否有480960微秒的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為高電平后等待1560微秒后將總線電平拉低60240微秒做出響應(yīng)存在脈沖,告訴主機(jī)本器件已做好準(zhǔn)備。若沒(méi)有檢測(cè)到就一直在檢測(cè)等待 初始化時(shí)序圖初始化程序unsigned char Ds18b20Init()unsigned int i;DSIO=0; /將總線拉低480us960usi=70;while(i-);/延時(shí)642usDSIO=1;/然后拉高總線,若DS18B20做出反應(yīng)會(huì)將在15us60us后將總線拉低i=0;whil

7、e(DSIO)/等待DS18B20拉低總線i+;if(i>50000)/等待>50MSreturn 0;/初始化失敗return 1;/初始化成功主機(jī)發(fā)出各種操作命令都是向DS18B20寫(xiě)0和寫(xiě)1組成的命令字節(jié),接收數(shù)據(jù)時(shí)也是從DS18B20讀取0或1的過(guò)程。寫(xiě)周期最少為60微秒,最長(zhǎng)不超過(guò)120微秒。寫(xiě)周期一開(kāi)始做為主機(jī)先把總線拉低1微秒表示寫(xiě)周期開(kāi)始。隨后若主機(jī)想寫(xiě)0,則將總線置為低電平,若主機(jī)想寫(xiě)1,則將總線置為高電平,持續(xù)時(shí)間最少60微秒直至寫(xiě)周期結(jié)束,然后釋放總線為高電平至少1微秒給總線恢復(fù) 。而DS18B20則在檢測(cè)到總線被拉底后等待15微秒然后從15us到45us開(kāi)始

8、對(duì)總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。寫(xiě)操作時(shí)序圖向DS18B20寫(xiě)入一個(gè)字節(jié)void Ds18b20WriteByte(unsigned char dat)unsigned int i,j;for(j=0;j<8;j+)DSIO=0;/每寫(xiě)入一位數(shù)據(jù)之前先把總線拉低1usi+;DSIO=dat&0x01; /然后寫(xiě)入一個(gè)數(shù)據(jù),從最低位開(kāi)始i=6;while(i-); /延時(shí)68us,持續(xù)時(shí)間最少60usDSIO=1;/然后釋放總線,至少1us給總線恢復(fù)時(shí)間才能接著寫(xiě)入第二個(gè)數(shù)值dat>>=1; 讀周期是從主機(jī)把單總線拉低1微秒之后就

9、得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。作為從機(jī)DS18B20在檢測(cè)到總線被拉低1微秒后,便開(kāi)始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機(jī)在一開(kāi)始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時(shí)間內(nèi)完成對(duì)總線進(jìn)行采樣檢測(cè),采樣期內(nèi)總線為低電平則確認(rèn)為0。采樣期內(nèi)總線為高電平則確認(rèn)為1。完成一個(gè)讀時(shí)序過(guò)程,至少需要60微秒才能完成讀操作時(shí)序圖讀取一個(gè)字節(jié)unsigned char Ds18b20ReadByte()unsigned char byte,bi;unsigned int i,j;for(

10、j=8;j>0;j-)DSIO=0;/先將總線拉低1usi+;DSIO=1;/然后釋放總線i+;i+;/延時(shí)6us等待數(shù)據(jù)穩(wěn)定bi=DSIO; /讀取數(shù)據(jù),從最高位開(kāi)始讀取byte=(byte>>1)|(bi<<7); /*將byte右移一位,然后或上左移7位后的bi,注意移動(dòng)之后移掉那位補(bǔ)0。*/ i=4;/讀取完之后等待48us再接著讀取下一個(gè)數(shù)while(i-);return byte; DS18B20 內(nèi)部結(jié)構(gòu)主要由四部分組成: 64 位光刻 ROM 、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器 TH 和 TL 、配置寄存器。光刻 ROM 中的 64 位序列號(hào)是出

11、廠前被光刻好的,它可以看作是該 DS18B20 的地址序列碼。 64 位光刻 ROM 的排列是:開(kāi)始 8 位(地址: 28H )是產(chǎn)品類(lèi)型標(biāo)號(hào),接著的 48 位是該 DS18B20 自身的序列號(hào),并且每個(gè) DS18B20 的序列號(hào)都不相同,因此它可以看作是該 DS18B20 的地址序列碼;最后 8 位則是前面 56 位的循環(huán)冗余校驗(yàn)碼( CRC=X8+X5+X4+1 )。由于每一個(gè) DS18B20 的 ROM 數(shù)據(jù)都各不相同,因此微控制器就可以通過(guò)單總線對(duì)多個(gè) DS18B20 進(jìn)行尋址,從而實(shí)現(xiàn)一根總線上掛接多個(gè) DS18B20 的目的。DS18B20的存儲(chǔ)器由一個(gè)高速暫存RAM和一個(gè)非易失性

12、、電可擦除(E2)RAM組成。DS18B20經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。所以當(dāng)我們只想簡(jiǎn)單的讀取溫度值的時(shí)候,只用讀取暫存器中的第0和第1個(gè)字節(jié)就可以了。簡(jiǎn)單的讀取溫度值的步驟如下:1、跳過(guò)ROM操作2、發(fā)送溫度轉(zhuǎn)換命令3、跳過(guò)ROM操作4、發(fā)送讀取溫度命令5、讀取溫度值開(kāi)始轉(zhuǎn)換溫度void Ds18b20ChangTemp()Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0xcc);/跳過(guò)ROM操作命令 Ds18b20WriteByte(0x44); /溫度轉(zhuǎn)換命令Delay1ms(100);發(fā)送讀取溫度命

13、令void Ds18b20ReadTempCom()Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0xcc); /跳過(guò)ROM操作命令Ds18b20WriteByte(0xbe); /發(fā)送讀取溫度命令讀取溫度int Ds18b20ReadTemp()unsigned int temp=0;unsigned char tmh,tml;Ds18b20ChangTemp();/先寫(xiě)入轉(zhuǎn)換命令Ds18b20ReadTempCom();/然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令tml=Ds18b20ReadByte();/讀取溫度值共16位,先讀低字節(jié)tmh=Ds18b20

14、ReadByte();/再讀高字節(jié)temp=tmh;temp<<=8;temp|=tml;return temp;3.2 LCD1602液晶顯示屏LCD1602的引腳操作步驟:1、初始化2、寫(xiě)命令(RS=L)設(shè)置顯示坐標(biāo)3、寫(xiě)數(shù)據(jù)(RS=H)寫(xiě)入一個(gè)字節(jié)命令void LcdWriteCom(unsigned char com) /寫(xiě)入命令RS=0;RW=0;GPIO_LCD=com;Delay1ms(10);LCDE=1;Delay1ms(10);LCDE=0;寫(xiě)入一個(gè)字節(jié)數(shù)據(jù)void LcdWriteData(unsigned char dat)/寫(xiě)入數(shù)據(jù)RS=1;RW=0;GP

15、IO_LCD=dat;Delay1ms(10);LCDE=1;Delay1ms(10);LCDE=0;初始化void LcdInit() /LCD初始化子程序 LcdWriteCom(0x38); /設(shè)置顯示模式LcdWriteCom(0x0c); /開(kāi)顯示不顯示光標(biāo),光標(biāo)不閃爍LcdWriteCom(0x06); /寫(xiě)一個(gè)指針加1LcdWriteCom(0x01); /清屏LcdWriteCom(0x80); /設(shè)置數(shù)據(jù)指針起點(diǎn)1602的指令碼DL:0時(shí):選擇4位數(shù)據(jù)總線模式。1時(shí):選擇8位數(shù)據(jù)總線模式。N:0時(shí):選擇顯示一行。1時(shí):選擇顯示兩行。F:0選擇5*7模式,1選擇5*10模式。一

16、般只有5*7模式。顯示開(kāi)/關(guān)及按鍵顯示RAM地址映射圖3.3編程調(diào)試過(guò)程出現(xiàn)的問(wèn)題當(dāng)控制電機(jī)速度的程序放在定時(shí)器1的中斷中則會(huì)導(dǎo)致液晶顯示屏出現(xiàn)閃爍,這是因?yàn)槊恐袛嘁淮尉瓦M(jìn)入中斷程序,則讀取溫度的程序就沒(méi)有運(yùn)行,所欲顯示就會(huì)出錯(cuò),而當(dāng)控制電機(jī)的程序放在主程序中,則電機(jī)的速度則無(wú)法控制,只有轉(zhuǎn)或不轉(zhuǎn)。這個(gè)問(wèn)題無(wú)法突破就無(wú)法實(shí)現(xiàn)調(diào)節(jié)風(fēng)力大小以及正確顯示溫度的功能,嘗試了多種辦法后發(fā)現(xiàn)在讀取溫度的時(shí)候先將定時(shí)器關(guān)閉,讀取溫度結(jié)束后就開(kāi)啟定時(shí)器。4、程序清單#include<reg51.h>void Time1Config();/*相關(guān)字符的重定義*/#define uchar unsig

17、ned char#define uint unsigned int#define LCD1602_DATAPINS P0sbit LCD1602_E=P27; /定義P2.7口為使能端sbit LCD1602_RW=P25; /定義P2.5口為讀/寫(xiě)選擇端(H/L)sbit LCD1602_RS=P26; /定義P2.6口為數(shù)據(jù)/命令選擇端(H/L)sbit DSPORT=P37; /定義P3.7口為總線sbit PWM=P11; /定義P1.1為電機(jī)電壓輸出端/*定義一些相關(guān)變量*/unsigned char timer1;float tp;int temp,speed;unsigned c

18、har table='0','1','2','3','4','5','6','7','8','9'int i1=0,n1=0,j1=0,a1,k1=0,m1=0,flag=0,o1=0,p1=0,z1=0;/*LCD1602延時(shí)函數(shù)*/void Lcd1602_Delay1ms(uint c) /誤差 0us uchar a,b;for (; c>0; c-) for (b=199;b>0;b-) for(a=1;a>

19、0;a-); /*向LCD1602寫(xiě)入一個(gè)字節(jié)命令*/void LcdWriteCom(uchar com) /寫(xiě)入命令LCD1602_E = 0; /使能LCD1602_RS = 0; /選擇發(fā)送命令LCD1602_RW = 0; /選擇寫(xiě)入LCD1602_DATAPINS = com; /放入命令Lcd1602_Delay1ms(1);/等待數(shù)據(jù)穩(wěn)定LCD1602_E = 1; /寫(xiě)入時(shí)序Lcd1602_Delay1ms(5); /保持時(shí)間LCD1602_E = 0;/*向LCD1602寫(xiě)入一個(gè)字節(jié)數(shù)據(jù)*/ void LcdWriteData(uchar dat)/寫(xiě)入數(shù)據(jù)LCD1602_

20、E = 0;/使能清零LCD1602_RS = 1;/選擇輸入數(shù)據(jù)LCD1602_RW = 0;/選擇寫(xiě)入LCD1602_DATAPINS = dat; /寫(xiě)入數(shù)據(jù)Lcd1602_Delay1ms(1);LCD1602_E = 1; /寫(xiě)入時(shí)序Lcd1602_Delay1ms(5); /保持時(shí)間LCD1602_E = 0; /*初始化LCD屏*/void LcdInit() /LCD初始化子程序 LcdWriteCom(0x38); /開(kāi)顯示LcdWriteCom(0x0c); /開(kāi)顯示不顯示光標(biāo)LcdWriteCom(0x06); /寫(xiě)一個(gè)指針加1LcdWriteCom(0x01); /清屏

21、LcdWriteCom(0x80); /設(shè)置數(shù)據(jù)指針起點(diǎn)/*DS18B20的延時(shí)函數(shù)*/void Delay1ms(uint y)uint x;for( ; y>0; y-)for(x=110; x>0; x-);/*DS18B20的初始化*/uchar Ds18b20Init()uchar i;DSPORT = 0; /將總線拉低480us960usi = 70;while(i-);/延時(shí)642usDSPORT = 1;/然后拉高總線,如果DS18B20做出反應(yīng)會(huì)將在15us60us后總線拉低i = 0;while(DSPORT)/等待DS18B20拉低總線i+;if(i>

22、5)/等待>5MSreturn 0;/初始化失敗Delay1ms(1);return 1;/初始化成功/*向DS18B20寫(xiě)入一個(gè)字節(jié)*/void Ds18b20WriteByte(uchar dat)uint i, j;for(j=0; j<8; j+)DSPORT = 0; /每寫(xiě)入一位數(shù)據(jù)之前先把總線拉低1usi+;DSPORT = dat & 0x01; /然后寫(xiě)入一個(gè)數(shù)據(jù),從最低位開(kāi)始i=6;while(i-); /延時(shí)68us,持續(xù)時(shí)間最少60usDSPORT = 1;/然后釋放總線,至少1us給總線恢復(fù)時(shí)間才能接著寫(xiě)入第二個(gè)數(shù)值dat >>= 1;

23、/*讀取一個(gè)字節(jié)*/uchar Ds18b20ReadByte()uchar byte, bi;uint i, j;for(j=8; j>0; j-)DSPORT = 0;/先將總線拉低1usi+;DSPORT = 1;/然后釋放總線i+;i+;/延時(shí)6us等待數(shù)據(jù)穩(wěn)定bi = DSPORT; /讀取數(shù)據(jù),從最高位開(kāi)始讀取/*將byte右移一位,然后與上左移7位后的bi,注意移動(dòng)之后移掉那位補(bǔ)0。*/byte = (byte >> 1) | (bi << 7); i = 4;/讀取完之后等待48us再接著讀取下一個(gè)數(shù)while(i-);return byte;/*

24、開(kāi)始轉(zhuǎn)換溫度*/void Ds18b20ChangTemp()Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0xcc);/跳過(guò)ROM操作命令 Ds18b20WriteByte(0x44); /溫度轉(zhuǎn)換命令/Delay1ms(100);/等待轉(zhuǎn)換成功,而如果你是一直刷著的話,就不用這個(gè)延時(shí)了 /*發(fā)送讀取溫度命令*/void Ds18b20ReadTempCom()Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0xcc); /跳過(guò)ROM操作命令Ds18b20WriteByte(0xbe); /發(fā)送讀取溫度命令/*讀取

25、溫度*/int Ds18b20ReadTemp() int temp = 0;uchar tmh, tml;TR1=0;Ds18b20ChangTemp(); /先寫(xiě)入轉(zhuǎn)換命令Ds18b20ReadTempCom();/然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令tml = Ds18b20ReadByte();/讀取溫度值共16位,先讀低字節(jié)tmh = Ds18b20ReadByte();/再讀高字節(jié)temp = tmh;temp <<= 8;temp |= tml;TR1=1;return temp;/*定時(shí)器1的中斷函數(shù)*/void Time1(void) interrupt 3 TH1

26、= 0xfe; TL1 = 0x0c;timer1+;if(timer1>100) /PWM周期為100*0.5ms timer1=0; if(timer1 < speed)/直流電機(jī)的速度與speed的變化成正比PWM=1; elsePWM=0; /*設(shè)置定時(shí)器1*/void Time1Config()TMOD|= 0x10; /設(shè)置定時(shí)計(jì)數(shù)器工作方式1為定時(shí)器/-定時(shí)器賦初始值,12MHZ下定時(shí)0.5ms-/ TH1 = 0xfe; TL1 = 0x0c;ET1 = 1; /開(kāi)啟定時(shí)器1中斷EA = 1;TR1 = 1; /開(kāi)啟定時(shí)器/*LCD顯示讀取到的溫度*/void Lc

27、dDisplay(int temp) /lcd顯示 unsigned char datas = 0, 0, 0, 0, 0; /定義數(shù)組 if(temp< 0)/當(dāng)溫度值為負(fù)數(shù) LcdWriteCom(0xC1);/寫(xiě)地址 80表示初始地址 LcdWriteData('-'); /顯示負(fù)/因?yàn)樽x取的溫度是實(shí)際溫度的補(bǔ)碼,所以減1,再取反求出原碼temp=temp-1;temp=temp;tp=temp;temp=tp*0.0625*100+0.5;/留兩個(gè)小數(shù)點(diǎn)就*100,+0.5是四舍五入,因?yàn)镃語(yǔ)言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù)點(diǎn)/后面的數(shù)自動(dòng)去掉,不管是否大于0.5,

28、而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就/算由?.5,還是在小數(shù)點(diǎn)后面。 else LcdWriteCom(0xC6);/寫(xiě)地址 80表示初始地址 LcdWriteData('+'); /顯示正tp=temp;/因?yàn)閿?shù)據(jù)處理有小數(shù)點(diǎn)所以將溫度賦給一個(gè)浮點(diǎn)型變量/如果溫度是正的那么,那么正數(shù)的原碼就是補(bǔ)碼它本身temp=tp*0.0625*100+0.5;if(temp>=2000 && temp<=2200) speed=30;else if(temp>=2200 && temp<=2400)speed=50;

29、else if(temp>2400) speed=70;else speed=0;/留兩個(gè)小數(shù)點(diǎn)就*100,+0.5是四舍五入,因?yàn)镃語(yǔ)言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù)點(diǎn)/后面的數(shù)自動(dòng)去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就/算加上0.5,還是在小數(shù)點(diǎn)后面。datas0 = temp / 10000;datas1 = temp % 10000 / 1000;datas2 = temp % 1000 / 100;datas3 = temp % 100 / 10;datas4 = temp % 10; LcdWriteCom(0xC8); LcdWrite

30、Data('0'+datas0); LcdWriteCom(0xC9); LcdWriteData('0'+datas1); LcdWriteCom(0xCa);LcdWriteData('0'+datas2); LcdWriteCom(0xCb);LcdWriteData('.'); LcdWriteCom(0xCc); LcdWriteData('0'+datas3); LcdWriteCom(0xCd); LcdWriteData('0'+datas4);LcdWriteCom(0xC0);

31、/寫(xiě)地址 80表示初始地址LcdWriteData('t');LcdWriteCom(0xC1); /寫(xiě)地址 80表示初始地址LcdWriteData('e');LcdWriteCom(0xC2); /寫(xiě)地址 80表示初始地址LcdWriteData('m');LcdWriteCom(0xC3); /寫(xiě)地址 80表示初始地址LcdWriteData('p');LcdWriteCom(0xC4); /寫(xiě)地址 80表示初始地址LcdWriteData(':'); /*lCD上一行顯示時(shí)間*/void Lcddispla

32、y() LcdWriteCom(0x8f); LcdWriteData(tablei1); LcdWriteCom(0x8e); LcdWriteData(tablej1); LcdWriteCom(0x8d); LcdWriteData(':'); LcdWriteCom(0x8c); LcdWriteData(tablek1); LcdWriteCom(0x8b); LcdWriteData(tablem1); LcdWriteCom(0x8a); LcdWriteData(':'); LcdWriteCom(0x89); LcdWriteData(tabl

33、eo1); LcdWriteCom(0x88); LcdWriteData(tablep1); LcdWriteCom(0x87); LcdWriteData(':'); LcdWriteCom(0x86); LcdWriteData(tablez1); LcdWriteCom(0x85); LcdWriteData('D'); LcdWriteCom(0x80); LcdWriteData('t'); LcdWriteCom(0x81); LcdWriteData('i'); LcdWriteCom(0x82); LcdWriteData('m'); LcdWriteCom(0x83); LcdWriteData('e')

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論