版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計</p><p><b> 單片機(jī)系統(tǒng)設(shè)計</b></p><p> 班 級 </p><p> 姓 名 </p><p> 學(xué) 號 </p><p
2、> 指導(dǎo)教師 </p><p> 二○ 一四 年 十一 月 日</p><p> 課題名稱_______溫度測試系統(tǒng)設(shè)計_______</p><p> 題目的目的和要求: </p><p> 利用溫度傳感器和MSP430單片機(jī)設(shè)計一個溫度測試系統(tǒng),將測試結(jié)果(十進(jìn)制)在LED上顯示出來,
3、并定義一個保持按鍵,當(dāng)按下該鍵時,將當(dāng)前測試值保持不變(按鍵不動作時為正常測量顯示)。溫度顯示格式為:XXX ℃。</p><p><b> 設(shè)計進(jìn)度及完成情況</b></p><p><b> 主要參考文獻(xiàn)及資料</b></p><p> MSP430系列16位低功耗單片機(jī)原理及應(yīng)用</p><
4、p> DS18B20溫度傳感器的使用</p><p><b> 智能儀器原理及應(yīng)用</b></p><p><b> 目錄</b></p><p> I、題目的目的和要求:2</p><p> II、設(shè)計進(jìn)度及完成情況2</p><p> III、
5、主要參考文獻(xiàn)及資料3</p><p> Ⅵ、 成績評定:3</p><p><b> 目錄4</b></p><p> 本次課程設(shè)計的目的和意義5</p><p><b> 設(shè)計題目6</b></p><p> 系統(tǒng)的主要功能、作用以及主要技術(shù)性能指標(biāo)
6、7</p><p> 總體設(shè)計方案、工作和組成原理8</p><p><b> 系統(tǒng)設(shè)計11</b></p><p><b> 設(shè)計總結(jié)26</b></p><p> 作品的使用或操作說明27</p><p> 設(shè)計圖紙或圖表28</p>&
7、lt;p> 本次課程設(shè)計的目的和意義</p><p> 課程設(shè)計是讓我熟練掌握了課本上的一些理論知識,課程設(shè)計也是一個學(xué)習(xí)新知識、鞏固加深所學(xué)課本理論知識的過程,它培養(yǎng)了我們綜合運(yùn)用知識的能力,獨(dú)立思考和解決問題的能力。</p><p> 加深我們對單片機(jī)原理與應(yīng)用課程的理解設(shè)計題目</p><p><b> 溫度測試系統(tǒng)設(shè)計:</b&
8、gt;</p><p> 利用溫度傳感器DS18B20和MSP430單片機(jī)設(shè)計一個溫度測試系統(tǒng),將測試結(jié)果(十進(jìn)制)在LED上顯示出來,并定義一個保持按鍵,當(dāng)按下該鍵時,將當(dāng)前測試值保持不變(按鍵不動作時為正常測量顯示)。溫度顯示格式為:XXX ℃。</p><p> 系統(tǒng)的主要功能、作用以及主要技術(shù)性能指標(biāo)</p><p> 系統(tǒng)的主要功能是單片機(jī)實(shí)時從溫度
9、傳感器讀取溫度數(shù)據(jù)信息,并在數(shù)碼管顯示,同時掃描是否有保持按鍵按下,如果按下則不再繼續(xù)從溫度傳感器讀取溫度數(shù)據(jù)信息,保持溫度值不變。</p><p> 作用是可以實(shí)時讀取環(huán)境中的溫度信息,供用戶查看,同時當(dāng)用戶需要觀察某溫度時,可以按下按鍵保持溫度不變。</p><p><b> 主要技術(shù)指標(biāo):</b></p><p> 1. 基本范圍0
10、℃-99℃</p><p> 2. 精度誤差小于0.5℃</p><p> 3. LED數(shù)碼直讀顯示</p><p> 4. 掃描按鍵保持?jǐn)?shù)值</p><p> 總體設(shè)計方案、工作和組成原理</p><p> 數(shù)字溫度計設(shè)計方案論證方案一 由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫
11、效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。方案二 進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計中,大多都是使用傳感器,所以這是非常容易想到,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計要求。從以上兩種方案,很容易看出,采用方案
12、二,電路比較簡單,軟件設(shè)計也比較簡單,故采用了方案二。</p><p><b> 主控制器</b></p><p> 單片機(jī)采用MSP430單片機(jī),處理能力強(qiáng),功耗低,實(shí)現(xiàn)該功能僅需一個按鍵,8位數(shù)碼管顯示,以及DS18B20溫度傳感器。</p><p> 顯示電路: 顯示電路采用8位共陰LED數(shù)碼管,從P4口輸出段碼。</
13、p><p><b> 圖一總體設(shè)計框圖</b></p><p> 溫度傳感器: DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實(shí)際要求通過簡單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下: ●獨(dú)特的單線接口僅需要一個端口引腳進(jìn)
14、行通信; ●多個DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能; ●無須外部器件; ●可通過數(shù)據(jù)線供電,電壓范圍為3.0~5.5V; ●零待機(jī)功耗; ●溫度以9或12位數(shù)字; ●用戶可定義報警設(shè)置; ●報警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報警條件)的器件; ●負(fù)電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作; DS18B20內(nèi)部結(jié)
15、構(gòu)框圖如圖2所示。64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個DS18B20可以采用一線進(jìn)行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。DS18B2</p><p> 溫度傳感器連接如下圖所示,DQ引腳與單片機(jī)的P5.3相連:</p><p><b> 系統(tǒng)設(shè)計<
16、/b></p><p> 接口電路設(shè)計,程序設(shè)計(程序框圖和程序清單及注釋)其他有關(guān)的理論分析和計算</p><p><b> 接口電路設(shè)計:</b></p><p> 主控制器MSP430</p><p><b> 溫度傳感器</b></p><p><
17、b> 保持按鍵</b></p><p><b> 數(shù)碼管電路</b></p><p><b> 程序框圖:</b></p><p><b> 總體設(shè)計流程圖</b></p><p> 讀取溫度傳感器數(shù)據(jù)流程圖</p><p>
18、<b> 數(shù)碼管溫度顯示</b></p><p><b> 程序設(shè)計:</b></p><p> //*************************定義引腳**********************************</p><p> #define LED8PORT P2OUT
19、 //P2接8個LED燈</p><p> #define LED8SEL P2SEL //P2接8個LED燈</p><p> #define LED8DIR P2DIR //P2接8個LED燈</p><p> #define
20、DATAPORTP4OUT //數(shù)據(jù)口所在端口P4</p><p> #define DATASEL P4SEL //數(shù)據(jù)口功能寄存器,控制功能模式</p><p> #define DATADIR P4DIR //數(shù)據(jù)口方向寄存器</p&
21、gt;<p> #define CTRPORT P6OUT //控制線所在的端口P6</p><p> #define CTRSEL P6SEL //控制口功能寄存器,控制功能模式</p><p> #define CTRDIR P6DIR
22、 //控制口方向寄存器</p><p> #define DCTR0 P6OUT &= ~BIT4 //數(shù)碼管段控制位信號置低</p><p> #define DCTR1 P6OUT |= BIT4 //數(shù)碼管段控制位信號置高</p><p> #d
23、efine WCTR0 P6OUT &= ~BIT3 //數(shù)碼管位控制位信號置低</p><p> #define WCTR1 P6OUT |= BIT3 //數(shù)碼管位控制位信號置高</p><p> #define KEYPORT P1OUT //按鍵
24、所在的端口P1</p><p> #define KEYSEL P1SEL //控制口功能寄存器,控制功能模式</p><p> #define KEYDIR P1DIR //控制口方向寄存器</p><p> #define KEYIN
25、 P1IN //鍵盤掃描判斷需要讀取IO口狀態(tài)值</p><p> uchar key=0xFF; //鍵值變量</p><p> uint temp_value;</p><p> float truetemp;</p><
26、p> uint temp,A1,A2,A3; //定義的變量,顯示數(shù)據(jù)處理</p><p> //*******************共陰數(shù)碼管顯示的斷碼表************************</p><p> uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,<
27、;/p><p> 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};</p><p> // *******************系統(tǒng)時鐘初始化***************************</p><p> void Clock_Init()</p><p><b> {</b&
28、gt;</p><p><b> uchar i;</b></p><p> BCSCTL1&=~XT2OFF; //打開XT2振蕩器</p><p> BCSCTL2|=SELM1+SELS; //MCLK為8MHZ,SMCLK為8MHZ</p><p
29、><b> do{</b></p><p> IFG1&=~OFIFG; //清楚振蕩器錯誤標(biāo)志</p><p> for(i=0;i<100;i++)</p><p><b> _NOP();</b></p><p><b>
30、; }</b></p><p> while((IFG1&OFIFG)!=0); //如果標(biāo)志位1,則繼續(xù)循環(huán)等待</p><p> IFG1&=~OFIFG; </p><p><b> }</b></p><p> //*******************M
31、SP430內(nèi)部看門狗初始化***********************</p><p> void WDT_Init()</p><p><b> {</b></p><p> WDTCTL = WDTPW + WDTHOLD; //關(guān)閉看門狗</p><p><b> }</b&g
32、t;</p><p> //*******************MSP430IO口初始化*****************************</p><p> void Port_Init()</p><p><b> {</b></p><p> LED8SEL = 0x00;
33、 //設(shè)置IO口為普通I/O模式,此句可省</p><p> LED8DIR = 0xFF; //設(shè)置IO口方向?yàn)檩敵?lt;/p><p> LED8PORT = 0xFF; //P2口初始設(shè)置為FF</p><p> DATASEL = 0x00;
34、 //設(shè)置IO口為普通I/O模式,此句可省</p><p> DATADIR = 0xFF; //設(shè)置IO口方向?yàn)檩敵?lt;/p><p> DATAPORT = 0xFF; //P4口初始設(shè)置為FF</p><p> CTRSEL = 0x0
35、0; //設(shè)置IO口為普通I/O模式,此句可省</p><p> CTRDIR |= BIT3 + BIT4 +BIT2; //設(shè)置IO口方向?yàn)檩敵?控制口在P63,P64</p><p> CTRPORT = 0xFF; //P6口初始設(shè)置為FF </p>
36、<p> KEYSEL = 0x00; //設(shè)置IO口為普通I/O模式,此句可省 </p><p> KEYDIR = 0x0F; //高四位輸入模式,低四位輸出模式,外部上拉電阻</p><p> KEYPORT= 0xF0;
37、 //初始值0xF0</p><p><b> }</b></p><p> //*************74HC573控制數(shù)碼管動態(tài)掃描鍵值顯示函數(shù)******************</p><p> void Display_Key(uchar num)</p><p><b> {</
38、b></p><p> uchar i,j;</p><p> j=0x01; //此數(shù)據(jù)用來控制位選</p><p> for(i=0;i<8;i++) //8個數(shù)碼管依次顯示</p><p><b> {</b
39、></p><p> DCTR1; //控制數(shù)碼管段數(shù)據(jù)的74HC573的LE管腳置高</p><p> WCTR1; //控制數(shù)碼管位的74HC573的LE管腳置高</p><p> DATAPORT=~j;
40、 //設(shè)置要顯示的位,也就是哪一個數(shù)碼管亮</p><p> WCTR0; //鎖存位數(shù)據(jù),下面送上段數(shù)據(jù)以后,就顯示出來了 </p><p> DATAPORT=table[num]; //送要顯示的數(shù)據(jù),這里是鍵值</p><p&
41、gt; DCTR0; //鎖存段數(shù)據(jù),數(shù)碼管亮一個時間片刻</p><p> j=j<<1; //移位,準(zhǔn)備進(jìn)行下一位的顯示</p><p> delay_us(500); //顯示一個時間片刻,會影響亮度和閃爍性</p&g
42、t;<p><b> }</b></p><p> Close_LED(); //顯示完8個數(shù)碼管后關(guān)閉數(shù)碼管顯示,否則可能導(dǎo)致各個數(shù)碼管亮度不一致</p><p><b> }</b></p><p> //*****************鍵盤掃描子程
43、序,采用逐鍵掃描的方式******************</p><p> uchar Key_Scan(void) </p><p><b> {</b></p><p> uchar key_check;</p><p> uchar key_checkin;</p><p> k
44、ey_checkin=KEYIN; //讀取IO口狀態(tài),判斷是否有鍵按下</p><p> key_checkin&= 0xF0; //屏蔽掉低四位的不確定值</p><p> if(key_checkin!=0xF0) //IO口值發(fā)生變化則表示有鍵按下</p><p>
45、<b> {</b></p><p> delay_ms(20); //鍵盤消抖,延時20MS</p><p> key_checkin=KEYIN; //再次讀取IO口狀態(tài)</p><p> if(key_checkin!=0xF0) //確定是
46、否真正的有鍵按下</p><p><b> { </b></p><p> key_check=KEYIN; //有鍵按下,讀取端口值</p><p> switch (key_check & 0xF0) //判斷是哪個鍵按下</p><p><b> {&l
47、t;/b></p><p> case 0xE0:key=1;break;</p><p> case 0xD0:key=2;break;</p><p> case 0xB0:key=3;break;</p><p> case 0x70:key=4;break;</p><p><b>
48、}</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> key=0xFF;
49、 //無鍵按下,返回FF</p><p><b> }</b></p><p> return key;</p><p><b> }</b></p><p> //******74HC573控制數(shù)碼管動態(tài)掃描顯示函數(shù),顯示采集到的溫度*****
50、*********</p><p> void Display_DS18B20(uint data_b,uint data_s,uint data_g)</p><p><b> {</b></p><p> uchar i,j;</p><p> j=0x01;
51、//此數(shù)據(jù)用來控制位選</p><p> for(i=0;i<3;i++) //用后3位數(shù)碼管來顯示</p><p><b> {</b></p><p> DCTR1; </p><p> WCTR1;
52、 </p><p> DATAPORT=~j; </p><p> WCTR0; </p><p><b> j=(j<<1);</b></p><p> DATAPORT=0x00; //前5位
53、都不顯示,送數(shù)據(jù)00即可</p><p> DCTR0; </p><p> delay_ms(2); </p><p><b> }</b></p><p> DCTR1; //開始顯示第6
54、位,即十位</p><p> WCTR1; </p><p> DATAPORT=~j; </p><p> WCTR0; </p><p><b> j=(j<<1);</b></p>
55、<p> //DATAPORT=table[A1];</p><p> DATAPORT=table[data_b];</p><p> DCTR0; </p><p> delay_ms(1); </p><p> DCTR1;
56、 //開始顯示個位</p><p> WCTR1; </p><p> DATAPORT=~j; </p><p> WCTR0; </p><p><b> j=(j<<1)
57、;</b></p><p> //DATAPORT=table[A2]|0x80; //顯示小數(shù)點(diǎn) </p><p> DATAPORT=table[data_s]|0x80; //顯示小數(shù)點(diǎn) </p><p> DCTR0; </p><p> d
58、elay_ms(1); </p><p> DCTR1; //開始顯示小數(shù)點(diǎn)后面的數(shù)據(jù)</p><p> WCTR1; </p><p> DATAPORT=~j; </p><p>
59、 WCTR0; </p><p><b> j=(j<<1);</b></p><p> //DATAPORT=table[A3];</p><p> DATAPORT=table[data_g];</p><p> DCTR0;
60、 </p><p> delay_ms(1); </p><p> DCTR1; //開始顯示溫度單位</p><p> WCTR1; </p><p> DATAPORT=~j;
61、 </p><p> WCTR0; </p><p><b> j=(j<<1);</b></p><p> //DATAPORT=table[A3];</p><p> DATAPORT=0x63;</p><p> DCT
62、R0; </p><p> delay_ms(1);</p><p> DCTR1; //開始顯示溫度單位</p><p> WCTR1; </p><p> DATAPORT=~j;
63、 </p><p> WCTR0; </p><p><b> j=(j<<1);</b></p><p> //DATAPORT=table[A3];</p><p> DATAPORT=0x39;</p><p> D
64、CTR0; </p><p> delay_ms(1);</p><p> DCTR1; </p><p> WCTR1; </p><p> DATAPORT=0xff; </
65、p><p> WCTR0; </p><p><b> }</b></p><p> //************************DS18B20初始化*******************************</p><p> unsigned char DS18
66、B20_Reset(void) //初始化和復(fù)位</p><p><b> {</b></p><p> unsigned char i;</p><p><b> DQ_OUT;</b></p><p><b> DQ_CLR;</b>&
67、lt;/p><p> delay_us(500);//延時500uS(480-960)</p><p><b> DQ_SET;</b></p><p><b> DQ_IN;</b></p><p> delay_us(80); //延時80uS</p>
68、;<p><b> i = DQ_R;</b></p><p> delay_us(500);//延時500uS(保持>480uS)</p><p><b> if (i) </b></p><p><b> {</b></p><p>
69、return 0x00;</p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p> return 0x01;</p><p><b> }</b&
70、gt;</p><p><b> }</b></p><p> //**********************DS18B20讀一個字節(jié)函數(shù)**************************** </p><p> unsigned char ds1820_read_byte(void) </p><p>&l
71、t;b> {</b></p><p> unsigned char i;</p><p> unsigned char value = 0;</p><p> for (i = 8; i != 0; i--) </p><p><b> {</b></p><p>
72、value >>= 1;</p><p><b> DQ_OUT;</b></p><p><b> DQ_CLR;</b></p><p> delay_us(4); //*延時4uS</p><p><b> DQ_SET;</b>
73、</p><p><b> DQ_IN;</b></p><p> delay_us(10); //*延時10uS</p><p> if (DQ_R) </p><p><b> {</b></p><p> value|=0x80;&l
74、t;/p><p><b> }</b></p><p> delay_us(60); //*延時60uS</p><p><b> }</b></p><p> return(value);</p><p><b> }</b>
75、;</p><p> //**********************向18B20寫一個字節(jié)函數(shù)************************</p><p> /*DS18B20字節(jié)寫入函數(shù)*/</p><p> void ds1820_write_byte(unsigned char value) </p><p><b&g
76、t; {</b></p><p> unsigned char i;</p><p> for (i = 8; i != 0; i--) </p><p><b> {</b></p><p><b> DQ_OUT;</b></p><p><b
77、> DQ_CLR;</b></p><p> delay_us(4); //延時4uS</p><p> if (value & 0x01) </p><p><b> {</b></p><p><b> DQ_SET;</b></p>
78、<p><b> }</b></p><p> delay_us(80); //延時80uS</p><p> DQ_SET; //位結(jié)束</p><p> value >>= 1;</p><p><b> }</b></p
79、><p><b> }</b></p><p> //********************發(fā)送溫度轉(zhuǎn)換命令*********************************</p><p> /*啟動ds1820轉(zhuǎn)換*/</p><p> void ds1820_start(void) </p>&
80、lt;p><b> {</b></p><p> DS18B20_Reset();</p><p> ds1820_write_byte(0xCC); //勿略地址</p><p> ds1820_write_byte(0x44); //啟動轉(zhuǎn)換</p><p>&l
81、t;b> }</b></p><p> //***********************DS8B20讀取溫度信息************************</p><p> unsigned int ds1820_read_temp(void) </p><p><b> {</b></p>&l
82、t;p> unsigned int i;</p><p> unsigned char buf[9];</p><p> DS18B20_Reset();</p><p> ds1820_write_byte(0xCC); //勿略地址</p><p> ds1820_write_byte(0xBE);
83、 //讀取溫度</p><p> for (i = 0; i < 9; i++) </p><p><b> {</b></p><p> buf[i] = ds1820_read_byte();</p><p><b> }</b></p><p
84、> i = buf[1];</p><p><b> i <<= 8;</b></p><p> i |= buf[0];</p><p> temp_value=i;</p><p> temp_value=(uint)(temp_value*0.625); //不是乘以0.0625的
85、原因是為了把小數(shù)點(diǎn)后一位數(shù)據(jù)也轉(zhuǎn)化為可以顯示的數(shù)據(jù)</p><p> //比如溫度本身為27.5度,為了在后續(xù)的數(shù)據(jù)處理程序中得到BCD碼,我們先放大到275</p><p> //然后在顯示的時候確定小數(shù)點(diǎn)的位置即可,就能顯示出27.5度了</p><p><b> return i;</b></p><p>&
86、lt;b> }</b></p><p> //*********************溫度數(shù)據(jù)處理函數(shù)****************************</p><p> void data_do(uint temp_d)</p><p> { </p><p>
87、; A3=temp_d%10; //分出百,十,和個位</p><p> temp_d/=10;</p><p> A2=temp_d%10;</p><p> A1=temp_d/10;</p><p><b> }</b></p><p> //*********
88、**************處理溫度數(shù)據(jù)*********************</p><p> void handletemp()</p><p><b> {</b></p><p> ds1820_start(); //啟動一次轉(zhuǎn)換</p><p> ds1820_read_tem
89、p(); //讀取溫度數(shù)值</p><p> data_do(temp_value); //處理數(shù)據(jù),得到要顯示的值</p><p> truetemp=0.1*temp_value;</p><p> //judgeAlarm(); //判斷是否觸發(fā)警報//
90、已將其添加至按鍵程序</p><p><b> }</b></p><p> //***********************顯示溫度**********************</p><p> void showtemp()</p><p><b> {</b></p>
91、<p><b> uchar j;</b></p><p> for(j=0;j<100;j++)</p><p><b> { </b></p><p> Display_DS18B20(A1,A2,A3); //顯示溫度值</p><p><
92、;b> }</b></p><p> //delay_ms(100); //延時100ms</p><p><b> }</b></p><p> //***************************主程序************************</
93、p><p> void main(void)</p><p><b> {</b></p><p> uchar flag1,flag2,flag3,flag4;</p><p> //uint key_store=0x00; //沒有按鍵按下時,默認(rèn)顯示1 </p>
94、<p> WDT_Init(); //看門狗初始化</p><p> Clock_Init(); //時鐘初始化</p><p> Port_Init(); //端口初始化,用于控制IO口輸入或輸出</p>&
95、lt;p> //Close_LED();</p><p> DS18B20_Reset(); //復(fù)位D18B20</p><p> delay_ms(100); //延時100ms</p><p><b> while(1)</b></p><p>&
96、lt;b> { </b></p><p> Key_Scan(); //鍵盤掃描,看是否有按鍵按下</p><p> if(key!=0xff) //如果有按鍵按下,則顯示該按鍵鍵值1~4</p><p><b> {</b></
97、p><p><b> {</b></p><p> switch(key)</p><p><b> {</b></p><p> case 1: LED8PORT=0xfc;flag1=1;flag2=0;flag3=0;flag4=0;break;//對溫度數(shù)據(jù)處理判斷警報,然后顯示,han
98、dletemp();showtemp();</p><p> case 2: LED8PORT=0xf3;flag1=0;flag2=1;flag3=0;flag4=0;break;//溫度數(shù)據(jù)處理判斷警報,關(guān)閉顯示,節(jié)省電源,handletemp();Close_LED();</p><p> case 3: LED8PORT=0xcf;flag1=0;flag2=0;flag3=1
99、;flag4=0;break;//關(guān)閉警報,SOUNDOFF;handletemp();</p><p> case 4: LED8PORT=0x3f;flag1=0;flag2=0;flag3=0;flag4=1;break;//測試警報SOUNDON;</p><p><b> }</b></p><p><b> }<
100、;/b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> LED8PORT&=0xff; //</p><p> if(fla
101、g1==1)</p><p><b> {</b></p><p> //handletemp();</p><p> showtemp();</p><p><b> }</b></p><p> if(flag2==1)</p><p>
102、<b> { </b></p><p> handletemp();</p><p> showtemp();</p><p><b> }</b></p><p> if(flag3==1)</p><p><b> {</b>&
103、lt;/p><p><b> SOUNDOFF;</b></p><p> handletemp();</p><p><b> }</b></p><p> if(flag4==1)</p><p><b> {</b></p>&
104、lt;p><b> SOUNDON;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>
105、<p><b> 設(shè)計總結(jié)</b></p><p> 對整個設(shè)計工作過程進(jìn)行歸納和綜合,對設(shè)計中所存在的問題和不足進(jìn)行分析和總結(jié),提出解決的方法、措施、建議和對這次設(shè)計實(shí)踐的認(rèn)識、收獲和提高。</p><p> 在本次設(shè)計的過程中,我發(fā)現(xiàn)很多的問題,也學(xué)到了許多東西。雖然我以前也做過類似的課程設(shè)計,但這次設(shè)計真的讓我長進(jìn)了很多。本次單片機(jī)課程設(shè)計的重
106、點(diǎn)就在于測溫及按鍵編程軟件算法的設(shè)計,其中有許多很巧妙的算法。我以前總是能看懂別人寫的程序,但自己單獨(dú)寫時就會出現(xiàn)很多問題,經(jīng)過這次鍛煉我基本掌握了C語言編程的方法并在以前的基礎(chǔ)上有所提高。 從這次的課程設(shè)計中,我真真正正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計中的最大收獲。作品的使用或操作說明</p&g
107、t;<p> 作品上電后,按下復(fù)位按鍵,數(shù)碼管開始顯示當(dāng)前環(huán)境溫度,并實(shí)時刷新數(shù)據(jù),按下保持按鍵后,溫度會保持在當(dāng)前溫度不變,當(dāng)再次按下顯示按鍵后,溫度又會開始實(shí)時顯示。設(shè)計圖紙或圖表</p><p><b> 數(shù)碼管顯示</b></p><p><b> 按鍵</b></p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計--基于msp430單片機(jī)的溫度測量及顯示系統(tǒng)
- 基于msp430單片機(jī)的溫度測控裝置的設(shè)計
- 單片機(jī)課程設(shè)計---溫度測試系統(tǒng)設(shè)計
- 單片機(jī)課程設(shè)計---基于單片機(jī)溫度測量系統(tǒng)設(shè)計
- msp430單片機(jī)實(shí)踐篇---msp430單片機(jī)控制io口操作-led燈閃爍
- 單片機(jī)溫度控制課程設(shè)計
- 基于msp430單片機(jī)的測壓系統(tǒng)設(shè)計
- 單片機(jī)課程設(shè)計---單片機(jī)控制的溫度測試儀的設(shè)計
- 單片機(jī)課程設(shè)計—基于51單片機(jī)的溫度監(jiān)控系統(tǒng)設(shè)計
- 基于msp430單片機(jī)循跡小車
- msp430單片機(jī)課程設(shè)計-實(shí)時時鐘與鍵盤控制
- 單片機(jī)溫度檢測課程設(shè)計
- 單片機(jī)課程設(shè)計---單片機(jī)數(shù)字顯示溫度計
- 單片機(jī)課程設(shè)計--基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計
- 單片機(jī)課程設(shè)計——基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計
- 單片機(jī)課程設(shè)計報告單片機(jī)的多路溫度測量系統(tǒng)設(shè)計
- 單片機(jī)課程設(shè)計--基于單片機(jī)的溫度數(shù)據(jù)采集系統(tǒng)設(shè)計
- 單片機(jī)課程設(shè)計--基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計
- 單片機(jī)課程設(shè)計--遠(yuǎn)程溫度監(jiān)控系統(tǒng)
- 單片機(jī)溫度控制系統(tǒng)課程設(shè)計
評論
0/150
提交評論