版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計</p><p><b> 單片機系統(tǒng)設(shè)計</b></p><p> 班 級 </p><p> 姓 名 </p><p> 學 號 </p><p
2、> 指導教師 </p><p> 二○ 一四 年 十一 月 日</p><p> 課題名稱_______溫度測試系統(tǒng)設(shè)計_______</p><p> 題目的目的和要求: </p><p> 利用溫度傳感器和MSP430單片機設(shè)計一個溫度測試系統(tǒng),將測試結(jié)果(十進制)在LED上顯示出來,
3、并定義一個保持按鍵,當按下該鍵時,將當前測試值保持不變(按鍵不動作時為正常測量顯示)。溫度顯示格式為:XXX ℃。</p><p><b> 設(shè)計進度及完成情況</b></p><p><b> 主要參考文獻及資料</b></p><p> MSP430系列16位低功耗單片機原理及應(yīng)用</p><
4、p> DS18B20溫度傳感器的使用</p><p><b> 智能儀器原理及應(yīng)用</b></p><p><b> 目錄</b></p><p> I、題目的目的和要求:2</p><p> II、設(shè)計進度及完成情況2</p><p> III、
5、主要參考文獻及資料3</p><p> ?、觥?成績評定:3</p><p><b> 目錄4</b></p><p> 本次課程設(shè)計的目的和意義5</p><p><b> 設(shè)計題目6</b></p><p> 系統(tǒng)的主要功能、作用以及主要技術(shù)性能指標
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è)計也是一個學習新知識、鞏固加深所學課本理論知識的過程,它培養(yǎng)了我們綜合運用知識的能力,獨立思考和解決問題的能力。</p><p> 加深我們對單片機原理與應(yīng)用課程的理解設(shè)計題目</p><p><b> 溫度測試系統(tǒng)設(shè)計:</b&
8、gt;</p><p> 利用溫度傳感器DS18B20和MSP430單片機設(shè)計一個溫度測試系統(tǒng),將測試結(jié)果(十進制)在LED上顯示出來,并定義一個保持按鍵,當按下該鍵時,將當前測試值保持不變(按鍵不動作時為正常測量顯示)。溫度顯示格式為:XXX ℃。</p><p> 系統(tǒng)的主要功能、作用以及主要技術(shù)性能指標</p><p> 系統(tǒng)的主要功能是單片機實時從溫度
9、傳感器讀取溫度數(shù)據(jù)信息,并在數(shù)碼管顯示,同時掃描是否有保持按鍵按下,如果按下則不再繼續(xù)從溫度傳感器讀取溫度數(shù)據(jù)信息,保持溫度值不變。</p><p> 作用是可以實時讀取環(huán)境中的溫度信息,供用戶查看,同時當用戶需要觀察某溫度時,可以按下按鍵保持溫度不變。</p><p><b> 主要技術(shù)指標:</b></p><p> 1. 基本范圍0
10、℃-99℃</p><p> 2. 精度誤差小于0.5℃</p><p> 3. LED數(shù)碼直讀顯示</p><p> 4. 掃描按鍵保持數(shù)值</p><p> 總體設(shè)計方案、工作和組成原理</p><p> 數(shù)字溫度計設(shè)計方案論證方案一 由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫
11、效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉(zhuǎn)換后,就可以用單片機進行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。方案二 進而考慮到用溫度傳感器,在單片機電路設(shè)計中,大多都是使用傳感器,所以這是非常容易想到,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉(zhuǎn)換,就可以滿足設(shè)計要求。從以上兩種方案,很容易看出,采用方案
12、二,電路比較簡單,軟件設(shè)計也比較簡單,故采用了方案二。</p><p><b> 主控制器</b></p><p> 單片機采用MSP430單片機,處理能力強,功耗低,實現(xiàn)該功能僅需一個按鍵,8位數(shù)碼管顯示,以及DS18B20溫度傳感器。</p><p> 顯示電路: 顯示電路采用8位共陰LED數(shù)碼管,從P4口輸出段碼。</
13、p><p><b> 圖一總體設(shè)計框圖</b></p><p> 溫度傳感器: DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9~12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點如下: ●獨特的單線接口僅需要一個端口引腳進
14、行通信; ●多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能; ●無須外部器件; ●可通過數(shù)據(jù)線供電,電壓范圍為3.0~5.5V; ●零待機功耗; ●溫度以9或12位數(shù)字; ●用戶可定義報警設(shè)置; ●報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件; ●負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作; DS18B20內(nèi)部結(jié)
15、構(gòu)框圖如圖2所示。64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。DS18B2</p><p> 溫度傳感器連接如下圖所示,DQ引腳與單片機的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; //清楚振蕩器錯誤標志</p><p> for(i=0;i<100;i++)</p><p><b> _NOP();</b></p><p><b>
30、; }</b></p><p> while((IFG1&OFIFG)!=0); //如果標志位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口方向為輸出</p><p> LED8PORT = 0xFF; //P2口初始設(shè)置為FF</p><p> DATASEL = 0x00;
34、 //設(shè)置IO口為普通I/O模式,此句可省</p><p> DATADIR = 0xFF; //設(shè)置IO口方向為輸出</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口方向為輸出,控制口在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; //移位,準備進行下一位的顯示</p><p> delay_us(500); //顯示一個時間片刻,會影響亮度和閃爍性</p&g
42、t;<p><b> }</b></p><p> Close_LED(); //顯示完8個數(shù)碼管后關(guān)閉數(shù)碼管顯示,否則可能導致各個數(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ù)點 </p><p> DATAPORT=table[data_s]|0x80; //顯示小數(shù)點 </p><p> DCTR0; </p><p> d
58、elay_ms(1); </p><p> DCTR1; //開始顯示小數(shù)點后面的數(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) //初始化和復位</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ù)點后一位數(shù)據(jù)也轉(zhuǎn)化為可以顯示的數(shù)據(jù)</p><p> //比如溫度本身為27.5度,為了在后續(xù)的數(shù)據(jù)處理程序中得到BCD碼,我們先放大到275</p><p> //然后在顯示的時候確定小數(shù)點的位置即可,就能顯示出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; //沒有按鍵按下時,默認顯示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(); //復位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è)計工作過程進行歸納和綜合,對設(shè)計中所存在的問題和不足進行分析和總結(jié),提出解決的方法、措施、建議和對這次設(shè)計實踐的認識、收獲和提高。</p><p> 在本次設(shè)計的過程中,我發(fā)現(xiàn)很多的問題,也學到了許多東西。雖然我以前也做過類似的課程設(shè)計,但這次設(shè)計真的讓我長進了很多。本次單片機課程設(shè)計的重
106、點就在于測溫及按鍵編程軟件算法的設(shè)計,其中有許多很巧妙的算法。我以前總是能看懂別人寫的程序,但自己單獨寫時就會出現(xiàn)很多問題,經(jīng)過這次鍛煉我基本掌握了C語言編程的方法并在以前的基礎(chǔ)上有所提高。 從這次的課程設(shè)計中,我真真正正的意識到,在以后的學習中,要理論聯(lián)系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計中的最大收獲。作品的使用或操作說明</p&g
107、t;<p> 作品上電后,按下復位按鍵,數(shù)碼管開始顯示當前環(huán)境溫度,并實時刷新數(shù)據(jù),按下保持按鍵后,溫度會保持在當前溫度不變,當再次按下顯示按鍵后,溫度又會開始實時顯示。設(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設(shè)計--基于msp430單片機的溫度測量及顯示系統(tǒng)
- 基于msp430單片機的溫度測控裝置的設(shè)計
- 單片機課程設(shè)計---溫度測試系統(tǒng)設(shè)計
- 單片機課程設(shè)計---基于單片機溫度測量系統(tǒng)設(shè)計
- msp430單片機實踐篇---msp430單片機控制io口操作-led燈閃爍
- 單片機溫度控制課程設(shè)計
- 基于msp430單片機的測壓系統(tǒng)設(shè)計
- 單片機課程設(shè)計---單片機控制的溫度測試儀的設(shè)計
- 單片機課程設(shè)計—基于51單片機的溫度監(jiān)控系統(tǒng)設(shè)計
- 基于msp430單片機循跡小車
- msp430單片機課程設(shè)計-實時時鐘與鍵盤控制
- 單片機溫度檢測課程設(shè)計
- 單片機課程設(shè)計---單片機數(shù)字顯示溫度計
- 單片機課程設(shè)計--基于51單片機的溫度控制系統(tǒng)設(shè)計
- 單片機課程設(shè)計——基于51單片機的溫度控制系統(tǒng)設(shè)計
- 單片機課程設(shè)計報告單片機的多路溫度測量系統(tǒng)設(shè)計
- 單片機課程設(shè)計--基于單片機的溫度數(shù)據(jù)采集系統(tǒng)設(shè)計
- 單片機課程設(shè)計--基于51單片機的溫度控制系統(tǒng)設(shè)計
- 單片機課程設(shè)計--遠程溫度監(jiān)控系統(tǒng)
- 單片機溫度控制系統(tǒng)課程設(shè)計
評論
0/150
提交評論