msp430單片機(jī)的測溫系統(tǒng)的研究與設(shè)計(jì)畢業(yè)論文_第1頁
已閱讀1頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p>  摘 要…………………………………………………………… ……………………………10</p><p>  第一章 概述…………………………………………………… ………………… ………12</p><p>  1.1設(shè)計(jì)目標(biāo)…………………………………………………………………………12

2、</p><p>  1.2組成模塊及實(shí)現(xiàn)原理……………………………………………………………12</p><p>  第二章 硬件描述……………………………………………………… …………………10</p><p>  2.1 電源電路…………………………………………………………………………10</p><p>  2.2 復(fù)位電路…………

3、………………………………………………………………11</p><p>  2.3 鍵盤電路…………………………………………………………………………12</p><p>  2.4 告警電路…………………………………………………………………………12</p><p>  2.5 實(shí)時(shí)時(shí)鐘電路…………………………………………………… ……………13</p>

4、<p>  2.5.1 DS1302的結(jié)構(gòu)及工作………………………………… ………………… …13</p><p>  2.5.2 DS1302的引腳功能……………………………… ………………… ……14</p><p>  2.5.3 DS1302的控制字節(jié)………………………………………… ………………15</p><p>  2.5.4 DS1

5、302的寄存器………………………………………………………………15</p><p>  2.5.5 DS1302實(shí)時(shí)顯示時(shí)間的軟硬件………………………………………………16</p><p>  2.6 單片機(jī)電路…………………………………………………………… …………16</p><p>  2.7 DS18B20溫度傳感器單元……………………………………………

6、…………16</p><p>  2.7.1 DS18B20的工作原理…………………………………………………………17</p><p>  2.7.2 DS1820的特性………………………………………………………………17</p><p>  2.7.3 DS18B20的特性內(nèi)部結(jié)構(gòu)及管腳排列……………………………………18</p><p&

7、gt;  2.8 液晶顯示屏……………………………………………………………… ………18</p><p>  2.8.1液晶顯示屏1602LCD的參數(shù)………………………………………………19</p><p>  2.8.2 1602LCD管腳介紹…………………………………………………………19</p><p>  2.9 指示燈電路………………………………………

8、………………… … ………19</p><p>  2.10 JTAG電路………………………………………………………………… ……20</p><p>  第三章 軟件設(shè)計(jì)……………………………………………………………………………21</p><p>  3.1 主程序……………………………………………………………………… ……22</p><

9、;p>  3.2 鍵盤電路…………………………………………………………………………22</p><p>  3.3 實(shí)時(shí)時(shí)間程序……………………………………………………………………22</p><p>  3.4 LCD顯示程序………………………………………………………………………33</p><p>  3.5 指示燈電路程序……………………………………

10、………………………………40</p><p>  3.6 溫度傳感器程序……………………………………………………………………41</p><p>  第四章 測試現(xiàn)象及結(jié)果……………………………………………………………………46</p><p>  4.1調(diào)試步驟…………………………………………………………………………46</p><p>

11、;  4.2顯示現(xiàn)象……………………………………………………………………………47</p><p>  第五章 總結(jié)…………………………………………………………………………………48</p><p>  參考文獻(xiàn)……………………………………………………………………………………49</p><p>  MSP430單片機(jī)的測溫系統(tǒng)的研究與設(shè)計(jì)</p>

12、<p>  【摘 要】 MSP430F149單片機(jī)是TI推出的一種具有超低功耗的16位Flash單片機(jī)。特別適合應(yīng)用在對(duì)功耗敏感的場所。MSP430Fl47共有五種低功耗模式,即低功耗模式O(LPMO)一低功耗模式4 (LPM4)。利用MSP430FlX系列單片機(jī),可以簡便快捷地構(gòu)建一個(gè)低電壓平臺(tái),通過各功能模塊的智能運(yùn)行管理和MCU功耗模式相結(jié)合,可以解決運(yùn)行速度與低功耗設(shè)計(jì)之間的矛盾,將各功能模塊的電流消耗降至最低狀態(tài)。

13、</p><p>  概括來說,MSP430F1X系列單片機(jī)其有超低功耗、強(qiáng)大的處理能力。豐富的片上外圍模塊。DS18B20溫度傳感器對(duì)現(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量。本</p><p>  【關(guān)鍵詞】:MSP430F149 溫度采集 溫度控制 溫度顯示 實(shí)時(shí)時(shí)鐘</p><p> 

14、 MSP430 MCU and Design Temperature System</p><p><b>  Hu Daming</b></p><p>  0701 Applicable Electronics</p><p>  Abstract: TI MSP430F149 microcontroller is introduced i

15、n a kind of ultra-low power16-bitFlash microcontroller. Particularly suitable for power-sensitive sites in the. MSP430Fl47 total of five low-power mode, the low-power mode O (LPMO) a low-power mode 4 (LPM4). Using MSP430

16、FlX MCU can quickly and easily build a low voltage platform, through the operation of each functional module of the intelligent management and integrated MCU power mode, speed can be solved with the contradiction between

17、 the </p><p>  Key words: MSP430F149 computer management measurement temperature controller</p><p><b>  第一章 概述</b></p><p><b>  1.1設(shè)計(jì)目標(biāo)</b></p><

18、;p>  本設(shè)計(jì)采用TI公司的MSP430F149作為一個(gè)中央控制器,當(dāng)傳感器測量的溫度不在所測量的范圍之內(nèi)時(shí),會(huì)自動(dòng)發(fā)出報(bào)警。此時(shí)的現(xiàn)象是LED發(fā)光二極管亮暗閃動(dòng),蜂鳴器(揚(yáng)聲器)發(fā)出單音報(bào)警聲。具體的設(shè)計(jì)思路見系統(tǒng)框圖1-1。</p><p><b>  1-1 系統(tǒng)框圖</b></p><p>  1.2組成模塊及實(shí)現(xiàn)原理</p><p

19、>  本設(shè)計(jì)由硬件和軟件兩部分共同實(shí)現(xiàn)系統(tǒng)功能。硬件部分主要包括電源電路、復(fù)位電路、鍵盤電路、告警電路、實(shí)時(shí)時(shí)間電路、單片機(jī)電路、DS18B20溫度傳感器單元、液晶顯示屏、指示燈電路、JTAG電路等基本單元。其中DS18B20溫度傳感器電路用于采集實(shí)時(shí)溫度,實(shí)時(shí)時(shí)鐘DS1302部分則用來顯示實(shí)時(shí)時(shí)間,實(shí)時(shí)時(shí)間、實(shí)時(shí)溫度及上下限溫度最終按系統(tǒng)設(shè)定依次顯示在液晶顯示屏上。軟件使用C語言編寫,主函數(shù)main先對(duì)各功能部件進(jìn)行定義,然后各

20、分支程序通過函數(shù)調(diào)用,最終實(shí)現(xiàn)程序控制的功能。軟件部分調(diào)試成功以后,通過JTAG電路即可對(duì)系統(tǒng)進(jìn)行仿真測試。</p><p><b>  第二章 硬件描述</b></p><p><b>  2.1 電源電路</b></p><p>  由于MSP430系列單片機(jī)的工作電壓一般是1.8V~3.6V,并且功耗極低,因此選用

21、TI公司的TPS70633作為電源芯片。該電源芯片輸出為3.3V,電流為50mA,完全能滿足大多數(shù)低功耗應(yīng)用場合的要求,也能滿足本系統(tǒng)功耗要求,圖2-1為具體電路,由圖可以看出:該電路非常的簡單,只需要簡單的外圍器件。為了使輸出電源的紋波小,在輸出部分用了一個(gè)2.2uF和0.1uF的電容,另外在芯片的輸入端也放置一個(gè)0.1uF的濾波電容,減小輸入端受到的干擾。</p><p>  圖2-1 電源電電路</p

22、><p><b>  2.2 復(fù)位電路</b></p><p>  復(fù)位電路是微處理器開始工作的起點(diǎn),因此了解復(fù)位過程和復(fù)位結(jié)束時(shí)微處理器的狀態(tài)對(duì)正確使用微處理器是至關(guān)重要的。MSP430的復(fù)位信號(hào)有兩種:上電復(fù)位信號(hào)和上電清除信號(hào)。不管是哪種方式的復(fù)位,都會(huì)使MSP430在地址OxFFFE處讀取復(fù)位中斷向量,程序從中斷向量所指的地址處開始執(zhí)行,作出相應(yīng)的處理。</

23、p><p><b>  圖2-2 復(fù)位電路</b></p><p>  這種復(fù)位電路的工作原理是:通電時(shí),電容E1兩端相當(dāng)于短路,RST引腳上為高電平,然后電源通過電阻R1對(duì)電容E1充電,RST端電壓慢慢下降,降到一定電壓值以下,即為低電平,于是芯片復(fù)位,接近vcc時(shí)芯片復(fù)位腳近高電平,于是芯片停止復(fù)位,復(fù)位完成。 單片機(jī)開始正常工作。</p><p&

24、gt;<b>  2.3 鍵盤電路</b></p><p>  單片機(jī)的P1.0、P1.1、P1.2、P1.3分別接按鍵電路,具體的按鍵電路如圖2-3所示,在該按鍵電路中,單片機(jī)的一般I/O端口對(duì)應(yīng)一個(gè)按鍵輸入,這樣的按鍵電路實(shí)現(xiàn)比較簡單,只需分別從不同的管腳值就可以獲得相應(yīng)的輸入值,程序?qū)崿F(xiàn)起來也非常簡單。</p><p><b>  圖2-3 鍵盤電路&

25、lt;/b></p><p><b>  2.4 告警電路</b></p><p>  告警電路主要通過單片機(jī)發(fā)出單音信號(hào),如圖2-4所示為具體的告警電路圖。DS18B20作為溫度傳感器,可以直接采集溫度并且轉(zhuǎn)換為數(shù)字信號(hào)發(fā)送到單片機(jī)P6.7口,然后判斷高低電平,在本系統(tǒng)中,如果檢測到電壓低于下限溫度或高于上限溫度時(shí)發(fā)出告警信號(hào)。由圖可以看出,單片機(jī)產(chǎn)生的單音信

26、號(hào)通過PNP 圖2-4告警電路 進(jìn)行放大,放大后的單音信號(hào)由揚(yáng)聲器發(fā)出告警聲音。 </p><p>  2.5 實(shí)時(shí)時(shí)鐘電路</p><p>  圖2-5為實(shí)時(shí)時(shí)間電路,用于顯示年、月、日、周日、時(shí)、分、秒等

27、實(shí)時(shí)時(shí)間數(shù)據(jù)。下面簡單介紹一下實(shí)時(shí)時(shí)鐘DS1302的結(jié)構(gòu)及工作模式。</p><p>  圖2-5 實(shí)時(shí)時(shí)間電路</p><p>  2.5.1 DS1302的結(jié)構(gòu)及工作原理</p><p>  DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,主要特點(diǎn)是采用串行數(shù)據(jù)

28、傳輸,可為掉電保護(hù)電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通32.768kHz晶振,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。<

29、/p><p>  2.5.2 DS1302的引腳功能</p><p>  圖2-5示出DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32

30、.768kHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST必須保持低電平。只有在S

31、CLK為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),SCLK始終是輸入端。 </p><p>  2.5.3 DS1302的控制字節(jié)</p><p>  DS1302 的控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)

32、如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。</p><p>  2.5.4 DS1302的寄存器</p><p>  DS1302有12個(gè)寄存器,其

33、中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性

34、讀寫所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)。</p><p>  2.5.5 DS1302實(shí)時(shí)顯示時(shí)間的軟硬件</p><p>  DS1302與CPU的連接需要三條線,即SCLK(7)、I/O(6)、RST(5)。圖3示出DS1302與89C2051的連接圖,其中,時(shí)鐘的顯示用LCD。 在上面的電路中加入DS18B20,同時(shí)顯示實(shí)時(shí)溫度。只要占用CPU一個(gè)口線即

35、可。DS1302 與微處理器進(jìn)行數(shù)據(jù)交換時(shí),首先由微處理器向電路發(fā)送命令字節(jié),命令字節(jié)最高位MSB(D7)必須為邏輯1,如果D7=0,則禁止寫DS1302,即寫保護(hù);D6=0,指定時(shí)鐘數(shù)據(jù),D6=1,指定RAM數(shù)據(jù);D5~D1指定輸入或輸出的特定寄存器;最低位LSB(D0)為邏輯0,指定寫操作(輸入), D0=1,指定讀操作(輸出)。 </p><p>  在DS1302的時(shí)鐘日歷或RAM進(jìn)行數(shù)據(jù)傳送時(shí),DS13

36、02必須首先發(fā)送命令字節(jié)。若進(jìn)行單字節(jié)傳送,8位命令字節(jié)傳送結(jié)束之后,在下2個(gè)SCLK周期的上升沿輸入數(shù)據(jù)字節(jié),或在下8個(gè)SCLK周期的下降沿輸出數(shù)據(jù)字節(jié)。 </p><p>  DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的RAM寄存器,在此方式下可一次性讀、寫所有的RAM

37、的31個(gè)字節(jié)。 </p><p>  要特別說明的是備用電源B1,可以用電池或者超級(jí)電容器(0.1F以上)。雖然DS1302在主電源掉電后的耗電很小,但是,如果要長時(shí)間保證時(shí)鐘正常,最好選用小型充電電池??梢杂美鲜诫娔X主板上的3.6V充電電池。如果斷電時(shí)間較短(幾小時(shí)或幾天)時(shí),就可以用漏電較小的普通電解電容器代替。100 μF就可以保證1小時(shí)的正常走時(shí)。DS1302在第一次加電后,必須進(jìn)行初始化操作。初始化后就

38、可以按正常方法調(diào)整時(shí)間。 </p><p><b>  2.6 單片機(jī)電路</b></p><p>  本系統(tǒng)采用MSP430F1491單片機(jī)。下圖主要實(shí)現(xiàn)與串行存儲(chǔ)器的接口,并在低于某個(gè)設(shè)定的值是發(fā)出告警信號(hào),同時(shí)通過LED來實(shí)現(xiàn)狀態(tài)顯示。由圖可以看出,單片機(jī)的P2.0 ,P2.1作為一般I/O接口管腳實(shí)現(xiàn)LED的狀態(tài)顯示。P4腳作為數(shù)據(jù)輸出端口接LCD顯示器。&l

39、t;/p><p>  圖2-6 單片機(jī)電路</p><p>  MSP430是德州公司新開發(fā)的一類具有16位總線的帶FLASH 的單片機(jī),由于其性價(jià)比和集成度高,受到廣大技術(shù)開發(fā)人員的青睞.它采用16位的總線,外設(shè)和內(nèi)存統(tǒng)一編址, 2-7 溫度傳感器</p><p>  尋址范圍可達(dá) 64K,還可以外擴(kuò)展存儲(chǔ)器.具有統(tǒng)一的中斷管理,具有豐富的片上外圍模塊,片內(nèi)有精

40、密硬件乘法器、兩個(gè)16位定時(shí)器、一個(gè)14路的12位的模數(shù)轉(zhuǎn)換器、一個(gè)看門狗、6路P口、兩路USART通信端口、一個(gè)比較器、一個(gè)DCO內(nèi)部振蕩器和兩個(gè)外部時(shí)鐘,支持8M 的時(shí)鐘.由于為FLASH型,則可以在線對(duì)單片機(jī)進(jìn)行調(diào)試和下載,且JTAG口直接和FET(FLASH EMULATION TOOL)的相連,不須另外的仿真工具,方便實(shí)用,而且,可以在超低功耗模式下工作,對(duì)環(huán)境和人體的輻射小,測量結(jié)果為100mw左右的功耗(電流為14mA左右

41、),可靠性能好,加強(qiáng)電干擾運(yùn)行不受影響,適應(yīng)工業(yè)級(jí)的運(yùn)行環(huán)境,適合與做手柄之類的自動(dòng)控制的設(shè)備.它是通向DSP系列的橋梁,隨著自動(dòng)控制的高速化和低功耗化。 </p><p>  2.7 DS18B20溫度傳感器單元</p><p>  圖2-7為溫度傳感器電路,用于現(xiàn)場溫度的測量。傳感器DS18B20具有體積更小、精度更高、適用電壓更寬、采用圖2-7 溫度傳感器

42、電路。</p><p>  一線總線、可組網(wǎng)等優(yōu)點(diǎn),在實(shí)際應(yīng)用中取得了良好的測溫效果。下面簡單介紹一下DS18B20的結(jié)構(gòu)及工作模式。</p><p>  2.7.1 DS18B20的工作原理</p><p>  DS1820是美國Dallas半導(dǎo)體公司生產(chǎn)的世界上第一片支持 “一線總線”接口的溫度傳感器,在其內(nèi)部使用了在板(ON-B0ARD)專利技術(shù)。全部傳感元件

43、及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。“一線總線”獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。同DS1820一樣,DS18B20也支持“一線總線”接口,測量溫度范圍為-55°C~+125°C,在-10~+85°C范圍內(nèi),精度為±0.5°C?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控

44、制、設(shè)備或過程控制、測溫類消費(fèi)電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~5.5V的電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。</p><p>  2.7.2 DS1820的特性</p><p> ?。?)適應(yīng)電壓范圍更寬,電壓范圍:3.0~5.5V,寄生電源方式之下可由數(shù)據(jù)線供。 </p><p>  (2)獨(dú)特的單線接口方式,DS18

45、B20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。 </p><p> ?。?)DS18B20支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測溫。 </p><p> ?。?)DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。 </p><p> ?。?)溫范圍

46、-55℃~+125℃,在-10~+85℃時(shí)精度為±0.5℃。 </p><p> ?。?)可編程的分辨率為9~12位,對(duì)應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實(shí)現(xiàn)高精度測溫。 </p><p>  (7)在9位分辨率時(shí)最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時(shí)最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快。 </p>

47、<p> ?。?)測量結(jié)果直接輸出數(shù)字溫度信號(hào),以“一線總線”串行傳送給CPU,同時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力。 </p><p> ?。?)負(fù)壓特性:電源極性接反時(shí),芯片不會(huì)因發(fā)熱而燒毀,但不能正常工作。 </p><p>  2.7.3 DS18B20的特性內(nèi)部結(jié)構(gòu)及管腳排列</p><p>  64位光刻ROM是出廠前被光刻好的,它

48、可以看作是該DS18B20的地址序列號(hào)。不同的器件地址序列號(hào)不同。DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM,溫度傳感器,非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL,高速暫存器。圖2-7電路中DS18B20的引腳定義: </p><p>  (1)DQ為數(shù)字信號(hào)輸入/輸出端 </p><p>  (2)GND為電源地 </p><p>  (3)VDD為外接供電

49、電源輸入端(在寄生電源接線方式時(shí)接地)。</p><p><b>  2.8 液晶顯示屏</b></p><p>  液晶顯示器以其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧的等多優(yōu)點(diǎn),在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中被廣泛的應(yīng)用。</p><p>  本設(shè)計(jì)采用Yj-162A的液晶屏.屏幕顯示數(shù)字日歷、理論值的上下限溫度和實(shí)際溫度.屏幕上行顯示的是

50、日期和上下限溫度,可通過按鍵進(jìn)行設(shè)定。上限溫度設(shè)定范圍為20---49度,下限溫度設(shè)定范圍為0--19度,設(shè)定時(shí)上限溫度不能低于下限溫度。當(dāng)實(shí)時(shí)溫度高于設(shè)定溫度上限時(shí),溫度上限指示燈亮(P2.0),當(dāng)實(shí)時(shí)溫度低于設(shè)定溫度下限時(shí),溫度下限指示燈亮(P2.1)亮。上下限溫度均是兩位數(shù),無小數(shù)位。下行顯示的是時(shí)鐘時(shí)間和實(shí)際溫度,實(shí)際溫度整數(shù)部分有兩位,小數(shù)部分四位,精度為0.0125。</p><p>  2.8.1液

51、晶顯示屏1602LCD的參數(shù)</p><p>  外形尺寸(LxWxH) 80.0mm*36mm*12.0mm </p><p>  視域尺寸(WxHxT) 64.5mm*13.8</p><p>  驅(qū)動(dòng)電壓(V) 5.0V or 3.3V     </p><p>  工作溫度:

52、(oC) 0~50 or -20~70  </p><p>  存儲(chǔ)溫度:(oC) -10~60 or -30~80</p><p>  顯示類型: STN or FSTN          </p><p>  顏色: 黃色(帶背光/不帶背光)&

53、#160;</p><p><b>  生產(chǎn)工藝: SMT</b></p><p>  2.8.2 1602LCD管腳介紹</p><p>  第1腳:VSS為地電源</p><p>  第2腳:VDD接5V正電源</p><p>  第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接

54、地電源時(shí)對(duì)比度最高,對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度</p><p>  第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。</p><p>  第5腳:RW為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和RW共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平RW為低電

55、平時(shí)可以寫入數(shù)據(jù)。</p><p>  第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。</p><p>  第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><p>  第15腳:背光電源接5V正電壓</p><p>  第16腳:背光電源接地</p><p>  圖2-8 液晶顯示電路<

56、;/p><p><b>  2.9 指示燈電路</b></p><p>  芯片由P3.6口輸出,通過串入并出移位寄存器傳到74HC573寄存器中,當(dāng)P3.6口輸出低電平時(shí)控制端導(dǎo)通,本設(shè)計(jì)中指示燈電路用到D1、D2兩個(gè)指示燈。根據(jù)P2.0、P2.1口輸出信號(hào),指示燈顯示電路根據(jù)不同的輸入信號(hào)顯示不同的現(xiàn)象。當(dāng)實(shí)時(shí)溫度高于設(shè)定溫度上限時(shí),溫度上限指示燈亮(P2.0);當(dāng)實(shí)

57、時(shí)溫度低于設(shè)定溫度下限時(shí),溫度下限指示燈亮(P2.1) 。 </p><p>  圖2-9-1 移位寄存器電路</p><p>  圖2-9-2 指示燈顯示電路</p><p>  圖2-10 JTAG電路</p><p>  2.10 JTAG電路</p><p>  JTAG是英文“Joint Test Acti

58、on Group(聯(lián)合測試行為組織)”的詞頭字母的簡寫,JTAG也是一種國際標(biāo)準(zhǔn)測試協(xié)議(IEEE 1149.1兼容)主要應(yīng)用于:電路的邊界掃描測試和可編程芯片的在系統(tǒng)編程。</p><p>  通常所說的JTAG大致分兩類,一類用于測試芯片的電氣特性,檢測芯片是否有問題;一類用于Debug;一般支持JTAG的CPU內(nèi)都包含了這兩個(gè)模塊。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時(shí)

59、鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。 相關(guān)JTAG引腳的定義為:TCK為測試時(shí)鐘輸入;TDI為測試數(shù)據(jù)輸入,數(shù)據(jù)通過TDI引腳輸入JTAG接口;TDO為測試數(shù)據(jù)輸出,數(shù)據(jù)通過TDO引腳從JTAG接口輸出;TMS為測試模式選擇,TMS用來設(shè)置JTAG接口處于某種特定的測試模式;TRST為測試復(fù)位,輸入引腳,低電平有效,GND 接地。在程序完成之后,通過JTAG電路將程序燒入相應(yīng)的芯片,即可進(jìn)行仿真測試。</p><p>&l

60、t;b>  第三章 軟件設(shè)計(jì)</b></p><p>  圖3-1主程序流程圖</p><p>  圖3-1為主程序流程圖,由圖可以看出先對(duì)系統(tǒng)進(jìn)行初始化,接著通過DS1302獲取時(shí)間數(shù)據(jù)進(jìn)而處理并顯示,再由DS18B20獲取實(shí)時(shí)溫度,進(jìn)行相應(yīng)的處理并顯示。在此期間對(duì)按鍵掃描信息進(jìn)行判斷。如果有按鍵按下,根據(jù)相應(yīng)的按鍵進(jìn)入對(duì)應(yīng)的處理程序。按K1鍵進(jìn)入設(shè)置模式并可以選擇更

61、改參數(shù)的位置;按K2鍵單方向增加數(shù)值;按K3鍵放棄當(dāng)前修改回到工作模式;按K4鍵保存當(dāng)前數(shù)值回到工作模式。最后進(jìn)入溫度比較子程序當(dāng)實(shí)時(shí)溫度高于設(shè)定溫度上限時(shí),溫度上限指示燈亮(P2.0);當(dāng)實(shí)時(shí)溫度低于設(shè)定溫度下限時(shí),溫度下限指示燈亮(P2.1)。溫度超過上下限溫度時(shí)告警電路報(bào)警。沒有按鍵按下時(shí),直接進(jìn)入溫度比較子程序。再次從獲取時(shí)間數(shù)據(jù)開始處理。本章將詳細(xì)介紹各模塊軟件的實(shí)現(xiàn)。</p><p><b>

62、;  3.1 主程序</b></p><p>  主程序通過對(duì)各部分進(jìn)行定義 ,使得最終可以實(shí)現(xiàn)整體功能。</p><p>  #include <msp430x14x.h></p><p>  #include "BoardConfig.h"</p><p>  #include "cr

63、y1602.h"</p><p>  #include "DS1302.h"</p><p>  #include "DS18B20.h"</p><p>  #define Buzzer BIT7 //蜂鳴器</p><p>  #

64、define Buzzer_Port P6OUT</p><p>  #define Buzzer_DIR P6DIR</p><p>  #define LED_H_LARM BIT0 //溫度上下限指示燈 </p><p>  #define LED_L_LARM BIT1&l

65、t;/p><p>  uchar dN[6]; //要顯示的6位溫度數(shù)字</p><p>  //順序:秒,分,時(shí),日,月,周,年;格式:BCD</p><p>  uchar times[7];</p><p>  uchar wendu_set[4];

66、 //溫度設(shè)定單元十、個(gè)位</p><p>  uchar wendu[4]; //液晶顯示數(shù)字編碼</p><p>  uchar shuzi[] = {"0123456789"}; //游標(biāo)位置變量</p><p>  uchar

67、PP = 0; //是否處于修改狀態(tài)標(biāo)志,1--是,0--否</p><p>  uchar cflag = 0;</p><p>  uchar Key4Scan(void);</p><p>  void ShowTime(void);</p><p>  void comp_wendu(void);<

68、/p><p>  void Disp_Numb(uint temper);</p><p>  /****************主函數(shù)****************/</p><p>  void main(void)</p><p>  { int i;</p><p>  wendu_set[0]=0x03;&

69、lt;/p><p>  wendu_set[1]=0x00;</p><p>  wendu_set[2]=0x00;</p><p>  wendu_set[3]=0x01;</p><p>  wendu[0]=0x03;</p><p>  wendu[1]=0x00;</p><p>  w

70、endu[2]=0x00;</p><p>  wendu[3]=0x01;</p><p>  WDTCTL = WDTPW + WDTHOLD; //關(guān)閉看門狗</p><p>  BoardConfig(0xb0); // 關(guān)閉數(shù)碼管\電平轉(zhuǎn)換,流水燈</p><p>  P2DI

71、R = 0xff; //P2端口設(shè)置為輸出</p><p>  P2OUT = 0xff; //關(guān)閉LED</p><p>  P1DIR = 0x80; //P1.7設(shè)置為輸出,其余為輸入為鍵盤</p><p>  P1OUT = 0x00;&l

72、t;/p><p>  Buzzer_DIR |=Buzzer; //設(shè)置蜂鳴器</p><p>  Buzzer_Port |=Buzzer;</p><p>  uchar year10 = 0;</p><p>  BCSCTL1 &= ~XT2OFF; //打開XT2高

73、頻晶體振蕩器</p><p><b>  do</b></p><p>  { IFG1 &= ~OFIFG; //清除晶振失敗標(biāo)志</p><p>  for (i = 0xFF; i > 0; i--); //等待8MHz晶體起振 }</p><p&g

74、t;  while ((IFG1 & OFIFG)); //晶振失效標(biāo)志仍然存在?</p><p>  BCSCTL2 |= SELM_2 + SELS; //MCLK和SMCLK選擇高頻晶振</p><p>  //計(jì)數(shù)時(shí)鐘選擇SMLK=8MHz,1/8分頻后為1MHz</p><p>  TACTL |= T

75、ASSEL_2 + ID_3; //打開全局中斷</p><p><b>  _EINT();</b></p><p>  Reset_DS1302(); //初始化DS1302</p><p>  LcdReset(); //初始

76、化液晶</p><p><b>  3.2 鍵盤電路</b></p><p>  圖3-2為鍵盤電路對(duì)應(yīng)的程序設(shè)計(jì)流程圖,在程序處理過程中,根據(jù)硬件部分的操作,相應(yīng)的進(jìn)入不同的設(shè)置模塊。</p><p><b>  圖3-2 鍵盤電路</b></p><p>  #include <msp43

77、0x14x.h></p><p>  typedef unsigned char uchar;</p><p>  typedef unsigned int uint;</p><p>  #define keyin (P1IN & 0x0f)</p><p>  #define Buzzer BIT7

78、 //蜂鳴器</p><p>  #define Buzzer_Port P6OUT</p><p>  #define Buzzer_DIR P6DIR</p><p>  /*******************************************</p><p>  函數(shù)名稱

79、:delay</p><p>  功 能:用于消抖的延時(shí)</p><p><b>  參 數(shù):無</b></p><p><b>  返回值 :無</b></p><p>  ********************************************/</p>

80、<p>  void delay_10ms(void)</p><p>  { uint tmp;for(tmp = 0x3fff;tmp > 0;tmp--); }</p><p>  /*******************************************</p><p>  函數(shù)名稱:Key4Scan</p&g

81、t;<p>  功 能:掃描四個(gè)獨(dú)立式按鍵</p><p><b>  參 數(shù):無</b></p><p><b>  返回值 :鍵值</b></p><p><b>  說 明:無</b></p><p>  ****************

82、****************************/</p><p>  uchar Key4Scan(void)</p><p>  { uchar temp,keyval;</p><p><b>  uint i;</b></p><p>  if(keyin != 0x0f) //如果有鍵

83、被按下 </p><p>  { delay_10ms(); //延時(shí)消抖</p><p>  keyval = 0;</p><p>  if(keyin != 0x0f) //再次檢測按鍵狀態(tài)</p><p>  { temp=keyin;</p><p>  while(

84、keyin != 0x0f); //等待按鍵被放開</p><p>  switch(temp) //轉(zhuǎn)換鍵值 </p><p>  { case 0x0e:</p><p>  keyval = 1;</p><p>  Buzzer_Port &=~Buzzer;</p><p>  

85、for(i = 2000; i > 0; i--);</p><p>  Buzzer_Port |=Buzzer;</p><p><b>  break;</b></p><p>  case 0x0d:</p><p>  keyval = 2;</p><p>  Buzzer_Po

86、rt &=~Buzzer;</p><p>  for(i = 2000; i > 0; i--);</p><p>  Buzzer_Port |=Buzzer;</p><p><b>  break;</b></p><p>  case 0x0b:</p><p>  key

87、val = 3;</p><p>  Buzzer_Port &=~Buzzer;</p><p>  for(i = 2000; i > 0; i--);</p><p>  Buzzer_Port |=Buzzer;</p><p><b>  break;</b></p><p&g

88、t;  case 0x07:</p><p>  keyval = 4;</p><p>  Buzzer_Port &=~Buzzer;</p><p>  for(i =000; i > 0; i--);</p><p>  Buzzer_Port |=Buzzer;</p><p><b>

89、;  break;</b></p><p><b>  default:</b></p><p>  keyval = 0;break;</p><p><b>  }</b></p><p><b>  }</b></p><p><

90、b>  }</b></p><p><b>  else</b></p><p>  keyval = 0;</p><p>  return keyval;</p><p><b>  }</b></p><p>  當(dāng)進(jìn)入按鍵處理程序時(shí),先判斷K1是否按

91、下。沒有按下K1鍵時(shí)進(jìn)入進(jìn)入后續(xù)處理子程序。按下K1后再根據(jù)之后的按鍵做出相應(yīng)的處理。若按下K1時(shí),轉(zhuǎn)入設(shè)置模式并可以選擇更改參數(shù)的位置,當(dāng)按下K2鍵單方向增加數(shù)值,按K3鍵放棄當(dāng)前修改回到工作模式,按K4鍵保存當(dāng)前數(shù)值回到工作模式。</p><p>  3.3 實(shí)時(shí)時(shí)間程序</p><p>  在實(shí)時(shí)時(shí)間程序部分,DS1302實(shí)時(shí)時(shí)鐘可控制年,月,日,時(shí),分,秒等顯示狀態(tài)。程序先通過對(duì)D

92、S1302各引腳進(jìn)行定義并進(jìn)行復(fù)位操作。接下來進(jìn)行一系列的寫入、讀出數(shù)據(jù)的操作。在讀取DS1302當(dāng)前時(shí)間部分,又調(diào)用: R_Data部分。</p><p>  #include <msp430x14x.h></p><p>  typedef unsigned char uchar;</p><p>  typedef unsigned int ui

93、nt;</p><p>  /**************宏定義***************/</p><p>  #define DS_RST BIT7 //DS_RST = P2.7 </p><p>  #define DS_SCL BIT5 //DS_SCL = P2.5 </p><p>  #de

94、fine DS_SDA BIT6 //DS_SDA = P2.6 </p><p>  #define DS_RST_IN P2DIR &= ~DS_RST</p><p>  #define DS_RST_OUT P2DIR |= DS_RST</p><p>  #define DS_RST0 P2OUT &= ~DS_RST&l

95、t;/p><p>  #define DS_RST1 P2OUT |= DS_RST</p><p>  #define DS_SCL_IN P2DIR &= ~DS_SCL</p><p>  #define DS_SCL_OUT P2DIR |= DS_SCL</p><p>  #define DS_SCL0 P2OUT &

96、= ~DS_SCL</p><p>  #define DS_SCL1 P2OUT |= DS_SCL</p><p>  #define DS_SDA_IN P2DIR &= ~DS_SDA</p><p>  #define DS_SDA_OUT P2DIR |= DS_SDA</p><p>  #define DS_SDA0

97、P2OUT &= ~DS_SDA</p><p>  #define DS_SDA1 P2OUT |= DS_SDA</p><p>  #define DS_SDA_BIT P2IN & DS_SDA</p><p>  /*******************************************</p><p>

98、;  函數(shù)名稱:delay</p><p>  功 能:延時(shí)一段時(shí)間</p><p>  參 數(shù):time--延時(shí)長度</p><p><b>  返回值 :無</b></p><p>  ********************************************/</p>&l

99、t;p>  void delay(uint time)</p><p><b>  {</b></p><p><b>  uint i;</b></p><p>  for(i=0;i<time;i++) _NOP();</p><p><b>  }</b&g

100、t;</p><p>  /*******************************************</p><p>  函數(shù)名稱:Reset_DS1302</p><p>  功 能:對(duì)DS1302進(jìn)行復(fù)位操作</p><p><b>  參 數(shù):無</b></p><p&

101、gt;<b>  返回值 :無</b></p><p>  ********************************************/</p><p>  void Reset_DS1302(void)</p><p><b>  {</b></p><p>  DS_RST_OU

102、T; //RST對(duì)應(yīng)的IO設(shè)置為輸出狀態(tài)</p><p>  DS_SCL_OUT; //SCLK對(duì)應(yīng)的IO設(shè)置為輸出狀態(tài)</p><p>  DS_SCL0; //SCLK=0</p><p>  DS_RST0; //RST=0</p><p>  delay(10);</p><p>  DS

103、_SCL1; //SCLK=1</p><p><b>  }</b></p><p>  /*******************************************</p><p>  函數(shù)名稱:Write1Byte</p><p>  功 能:對(duì)DS1302寫入1個(gè)字節(jié)的數(shù)據(jù)</p&g

104、t;<p>  參 數(shù):wdata--寫入的數(shù)據(jù)</p><p><b>  返回值 :無</b></p><p>  ********************************************/</p><p>  void Write1Byte(uchar wdata) </p><p

105、><b>  { </b></p><p><b>  uchar i;</b></p><p>  DS_SDA_OUT; //SDA對(duì)應(yīng)的IO設(shè)置為輸出狀態(tài)</p><p>  DS_RST1; //REST=1;</p><p>  for(i=8; i>0;

106、 i--) </p><p><b>  {</b></p><p>  if(wdata&0x01) DS_SDA1;</p><p>  else DS_SDA0;</p><p><b>  DS_SCL0;</b></p><p>  

107、delay(10); </p><p><b>  DS_SCL1;</b></p><p>  delay(10); </p><p>  wdata >>=1; </p><p><b>  } </b></p><p><b>  }</b&

108、gt;</p><p>  /*******************************************</p><p>  函數(shù)名稱:Read1Byte</p><p>  功 能:從DS1302讀出1個(gè)字節(jié)的數(shù)據(jù)</p><p><b>  參 數(shù):無</b></p><p

109、>  返回值 :讀出的一個(gè)字節(jié)數(shù)據(jù)</p><p>  ********************************************/</p><p>  uchar Read1Byte(void) </p><p><b>  { </b></p><p><b>  uchar i;&l

110、t;/b></p><p>  uchar rdata=0X00;</p><p>  DS_SDA_IN; //SDA對(duì)應(yīng)的IO設(shè)置為輸入狀態(tài)</p><p>  DS_RST1; //REST=1;</p><p>  for(i=8; i>0; i--)</p><p><b>  

111、{</b></p><p><b>  DS_SCL1;</b></p><p>  delay(10);</p><p><b>  DS_SCL0;</b></p><p>  delay(10);</p><p>  rdata >>=1;<

112、;/p><p>  if(DS_SDA_BIT) rdata |= 0x80;</p><p><b>  } </b></p><p>  return(rdata); </p><p><b>  }</b></p><p>  /*********************

113、**********************</p><p>  函數(shù)名稱:W_Data</p><p>  功 能:向某個(gè)寄存器寫入一個(gè)字節(jié)數(shù)據(jù)</p><p>  參 數(shù):addr--寄存器地址</p><p>  wdata--寫入的數(shù)據(jù)</p><p><b>  返回值 :無</

114、b></p><p>  ********************************************/</p><p>  void W_Data(uchar addr, uchar wdata)</p><p><b>  {</b></p><p><b>  DS_RST0; <

115、/b></p><p>  DS_SCL0; </p><p><b>  _NOP();</b></p><p><b>  DS_RST1;</b></p><p>  Write1Byte(addr); //寫入地址</p><p>  Write1Byt

116、e(wdata); //寫入數(shù)據(jù)</p><p><b>  DS_SCL1;</b></p><p><b>  DS_RST0;</b></p><p><b>  } </b></p><p>  /***********************************

117、********</p><p>  函數(shù)名稱:R_Data</p><p>  功 能:從某個(gè)寄存器讀出一個(gè)字節(jié)數(shù)據(jù)</p><p>  參 數(shù):addr--寄存器地址</p><p>  返回值 :讀出的數(shù)據(jù)</p><p>  ************************************

118、********/</p><p>  uchar R_Data(uchar addr)</p><p><b>  {</b></p><p>  uchar rdata;</p><p><b>  DS_RST0; </b></p><p><b>  DS_

119、SCL0; </b></p><p><b>  _NOP();</b></p><p><b>  DS_RST1;</b></p><p>  Write1Byte(addr); //寫入地址</p><p>  rdata = Read1Byte(); //讀出數(shù)據(jù) <

120、;/p><p><b>  DS_SCL1;</b></p><p><b>  DS_RST0;</b></p><p>  return(rdata);</p><p><b>  }</b></p><p>  /*******************

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論