版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 目 錄</b></p><p> 摘 要…………………………………………………………… ……………………………10</p><p> 第一章 概述…………………………………………………… ………………… ………12</p><p> 1.1設計目標…………………………………………………………………………12
2、</p><p> 1.2組成模塊及實現(xiàn)原理……………………………………………………………12</p><p> 第二章 硬件描述……………………………………………………… …………………10</p><p> 2.1 電源電路…………………………………………………………………………10</p><p> 2.2 復位電路…………
3、………………………………………………………………11</p><p> 2.3 鍵盤電路…………………………………………………………………………12</p><p> 2.4 告警電路…………………………………………………………………………12</p><p> 2.5 實時時鐘電路…………………………………………………… ……………13</p>
4、<p> 2.5.1 DS1302的結構及工作………………………………… ………………… …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實時顯示時間的軟硬件………………………………………………16</p><p> 2.6 單片機電路…………………………………………………………… …………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的特性內部結構及管腳排列……………………………………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> 第三章 軟件設計……………………………………………………………………………21</p><p> 3.1 主程序……………………………………………………………………… ……22</p><
9、;p> 3.2 鍵盤電路…………………………………………………………………………22</p><p> 3.3 實時時間程序……………………………………………………………………22</p><p> 3.4 LCD顯示程序………………………………………………………………………33</p><p> 3.5 指示燈電路程序……………………………………
10、………………………………40</p><p> 3.6 溫度傳感器程序……………………………………………………………………41</p><p> 第四章 測試現(xiàn)象及結果……………………………………………………………………46</p><p> 4.1調試步驟…………………………………………………………………………46</p><p>
11、; 4.2顯示現(xiàn)象……………………………………………………………………………47</p><p> 第五章 總結…………………………………………………………………………………48</p><p> 參考文獻……………………………………………………………………………………49</p><p> MSP430單片機的測溫系統(tǒng)的研究與設計</p>
12、<p> 【摘 要】 MSP430F149單片機是TI推出的一種具有超低功耗的16位Flash單片機。特別適合應用在對功耗敏感的場所。MSP430Fl47共有五種低功耗模式,即低功耗模式O(LPMO)一低功耗模式4 (LPM4)。利用MSP430FlX系列單片機,可以簡便快捷地構建一個低電壓平臺,通過各功能模塊的智能運行管理和MCU功耗模式相結合,可以解決運行速度與低功耗設計之間的矛盾,將各功能模塊的電流消耗降至最低狀態(tài)。
13、</p><p> 概括來說,MSP430F1X系列單片機其有超低功耗、強大的處理能力。豐富的片上外圍模塊。DS18B20溫度傳感器對現(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量。本</p><p> 【關鍵詞】:MSP430F149 溫度采集 溫度控制 溫度顯示 實時時鐘</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設計目標</b></p><
18、;p> 本設計采用TI公司的MSP430F149作為一個中央控制器,當傳感器測量的溫度不在所測量的范圍之內時,會自動發(fā)出報警。此時的現(xiàn)象是LED發(fā)光二極管亮暗閃動,蜂鳴器(揚聲器)發(fā)出單音報警聲。具體的設計思路見系統(tǒng)框圖1-1。</p><p><b> 1-1 系統(tǒng)框圖</b></p><p> 1.2組成模塊及實現(xiàn)原理</p><p
19、> 本設計由硬件和軟件兩部分共同實現(xiàn)系統(tǒng)功能。硬件部分主要包括電源電路、復位電路、鍵盤電路、告警電路、實時時間電路、單片機電路、DS18B20溫度傳感器單元、液晶顯示屏、指示燈電路、JTAG電路等基本單元。其中DS18B20溫度傳感器電路用于采集實時溫度,實時時鐘DS1302部分則用來顯示實時時間,實時時間、實時溫度及上下限溫度最終按系統(tǒng)設定依次顯示在液晶顯示屏上。軟件使用C語言編寫,主函數(shù)main先對各功能部件進行定義,然后各
20、分支程序通過函數(shù)調用,最終實現(xiàn)程序控制的功能。軟件部分調試成功以后,通過JTAG電路即可對系統(tǒng)進行仿真測試。</p><p><b> 第二章 硬件描述</b></p><p><b> 2.1 電源電路</b></p><p> 由于MSP430系列單片機的工作電壓一般是1.8V~3.6V,并且功耗極低,因此選用
21、TI公司的TPS70633作為電源芯片。該電源芯片輸出為3.3V,電流為50mA,完全能滿足大多數(shù)低功耗應用場合的要求,也能滿足本系統(tǒng)功耗要求,圖2-1為具體電路,由圖可以看出:該電路非常的簡單,只需要簡單的外圍器件。為了使輸出電源的紋波小,在輸出部分用了一個2.2uF和0.1uF的電容,另外在芯片的輸入端也放置一個0.1uF的濾波電容,減小輸入端受到的干擾。</p><p> 圖2-1 電源電電路</p
22、><p><b> 2.2 復位電路</b></p><p> 復位電路是微處理器開始工作的起點,因此了解復位過程和復位結束時微處理器的狀態(tài)對正確使用微處理器是至關重要的。MSP430的復位信號有兩種:上電復位信號和上電清除信號。不管是哪種方式的復位,都會使MSP430在地址OxFFFE處讀取復位中斷向量,程序從中斷向量所指的地址處開始執(zhí)行,作出相應的處理。</
23、p><p><b> 圖2-2 復位電路</b></p><p> 這種復位電路的工作原理是:通電時,電容E1兩端相當于短路,RST引腳上為高電平,然后電源通過電阻R1對電容E1充電,RST端電壓慢慢下降,降到一定電壓值以下,即為低電平,于是芯片復位,接近vcc時芯片復位腳近高電平,于是芯片停止復位,復位完成。 單片機開始正常工作。</p><p&
24、gt;<b> 2.3 鍵盤電路</b></p><p> 單片機的P1.0、P1.1、P1.2、P1.3分別接按鍵電路,具體的按鍵電路如圖2-3所示,在該按鍵電路中,單片機的一般I/O端口對應一個按鍵輸入,這樣的按鍵電路實現(xiàn)比較簡單,只需分別從不同的管腳值就可以獲得相應的輸入值,程序實現(xiàn)起來也非常簡單。</p><p><b> 圖2-3 鍵盤電路&
25、lt;/b></p><p><b> 2.4 告警電路</b></p><p> 告警電路主要通過單片機發(fā)出單音信號,如圖2-4所示為具體的告警電路圖。DS18B20作為溫度傳感器,可以直接采集溫度并且轉換為數(shù)字信號發(fā)送到單片機P6.7口,然后判斷高低電平,在本系統(tǒng)中,如果檢測到電壓低于下限溫度或高于上限溫度時發(fā)出告警信號。由圖可以看出,單片機產(chǎn)生的單音信
26、號通過PNP 圖2-4告警電路 進行放大,放大后的單音信號由揚聲器發(fā)出告警聲音。 </p><p> 2.5 實時時鐘電路</p><p> 圖2-5為實時時間電路,用于顯示年、月、日、周日、時、分、秒等
27、實時時間數(shù)據(jù)。下面簡單介紹一下實時時鐘DS1302的結構及工作模式。</p><p> 圖2-5 實時時間電路</p><p> 2.5.1 DS1302的結構及工作原理</p><p> DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,主要特點是采用串行數(shù)據(jù)
28、傳輸,可為掉電保護電源提供可編程的充電功能,并且可以關閉充電功能。采用普通32.768kHz晶振,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時提供了對后背電源進行涓細電流充電的能力。<
29、/p><p> 2.5.2 DS1302的引腳功能</p><p> 圖2-5示出DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32
30、.768kHz晶振。RST是復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc≥2.5V之前,RST必須保持低電平。只有在S
31、CLK為低電平時,才能將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ù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)
32、如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出。在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。</p><p> 2.5.4 DS1302的寄存器</p><p> DS1302有12個寄存器,其
33、中有7個寄存器與日歷、時鐘相關,存放的數(shù)據(jù)位為BCD碼形式。此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內容。 DS1302與RAM相關的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性
34、讀寫所有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。</p><p> 2.5.5 DS1302實時顯示時間的軟硬件</p><p> DS1302與CPU的連接需要三條線,即SCLK(7)、I/O(6)、RST(5)。圖3示出DS1302與89C2051的連接圖,其中,時鐘的顯示用LCD。 在上面的電路中加入DS18B20,同時顯示實時溫度。只要占用CPU一個口線即
35、可。DS1302 與微處理器進行數(shù)據(jù)交換時,首先由微處理器向電路發(fā)送命令字節(jié),命令字節(jié)最高位MSB(D7)必須為邏輯1,如果D7=0,則禁止寫DS1302,即寫保護;D6=0,指定時鐘數(shù)據(jù),D6=1,指定RAM數(shù)據(jù);D5~D1指定輸入或輸出的特定寄存器;最低位LSB(D0)為邏輯0,指定寫操作(輸入), D0=1,指定讀操作(輸出)。 </p><p> 在DS1302的時鐘日歷或RAM進行數(shù)據(jù)傳送時,DS13
36、02必須首先發(fā)送命令字節(jié)。若進行單字節(jié)傳送,8位命令字節(jié)傳送結束之后,在下2個SCLK周期的上升沿輸入數(shù)據(jù)字節(jié),或在下8個SCLK周期的下降沿輸出數(shù)據(jù)字節(jié)。 </p><p> DS1302與RAM相關的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的RAM寄存器,在此方式下可一次性讀、寫所有的RAM
37、的31個字節(jié)。 </p><p> 要特別說明的是備用電源B1,可以用電池或者超級電容器(0.1F以上)。雖然DS1302在主電源掉電后的耗電很小,但是,如果要長時間保證時鐘正常,最好選用小型充電電池??梢杂美鲜诫娔X主板上的3.6V充電電池。如果斷電時間較短(幾小時或幾天)時,就可以用漏電較小的普通電解電容器代替。100 μF就可以保證1小時的正常走時。DS1302在第一次加電后,必須進行初始化操作。初始化后就
38、可以按正常方法調整時間。 </p><p><b> 2.6 單片機電路</b></p><p> 本系統(tǒng)采用MSP430F1491單片機。下圖主要實現(xiàn)與串行存儲器的接口,并在低于某個設定的值是發(fā)出告警信號,同時通過LED來實現(xiàn)狀態(tài)顯示。由圖可以看出,單片機的P2.0 ,P2.1作為一般I/O接口管腳實現(xiàn)LED的狀態(tài)顯示。P4腳作為數(shù)據(jù)輸出端口接LCD顯示器。&l
39、t;/p><p> 圖2-6 單片機電路</p><p> MSP430是德州公司新開發(fā)的一類具有16位總線的帶FLASH 的單片機,由于其性價比和集成度高,受到廣大技術開發(fā)人員的青睞.它采用16位的總線,外設和內存統(tǒng)一編址, 2-7 溫度傳感器</p><p> 尋址范圍可達 64K,還可以外擴展存儲器.具有統(tǒng)一的中斷管理,具有豐富的片上外圍模塊,片內有精
40、密硬件乘法器、兩個16位定時器、一個14路的12位的模數(shù)轉換器、一個看門狗、6路P口、兩路USART通信端口、一個比較器、一個DCO內部振蕩器和兩個外部時鐘,支持8M 的時鐘.由于為FLASH型,則可以在線對單片機進行調試和下載,且JTAG口直接和FET(FLASH EMULATION TOOL)的相連,不須另外的仿真工具,方便實用,而且,可以在超低功耗模式下工作,對環(huán)境和人體的輻射小,測量結果為100mw左右的功耗(電流為14mA左右
41、),可靠性能好,加強電干擾運行不受影響,適應工業(yè)級的運行環(huán)境,適合與做手柄之類的自動控制的設備.它是通向DSP系列的橋梁,隨著自動控制的高速化和低功耗化。 </p><p> 2.7 DS18B20溫度傳感器單元</p><p> 圖2-7為溫度傳感器電路,用于現(xiàn)場溫度的測量。傳感器DS18B20具有體積更小、精度更高、適用電壓更寬、采用圖2-7 溫度傳感器
42、電路。</p><p> 一線總線、可組網(wǎng)等優(yōu)點,在實際應用中取得了良好的測溫效果。下面簡單介紹一下DS18B20的結構及工作模式。</p><p> 2.7.1 DS18B20的工作原理</p><p> DS1820是美國Dallas半導體公司生產(chǎn)的世界上第一片支持 “一線總線”接口的溫度傳感器,在其內部使用了在板(ON-B0ARD)專利技術。全部傳感元件
43、及轉換電路集成在形如一只三極管的集成電路內?!耙痪€總線”獨特而且經(jīng)濟的特點,使用戶可輕松地組建傳感器網(wǎng)絡,為測量系統(tǒng)的構建引入全新概念。同DS1820一樣,DS18B20也支持“一線總線”接口,測量溫度范圍為-55°C~+125°C,在-10~+85°C范圍內,精度為±0.5°C?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控
44、制、設備或過程控制、測溫類消費電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~5.5V的電壓范圍,使系統(tǒng)設計更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。</p><p> 2.7.2 DS1820的特性</p><p> ?。?)適應電壓范圍更寬,電壓范圍:3.0~5.5V,寄生電源方式之下可由數(shù)據(jù)線供。 </p><p> ?。?)獨特的單線接口方式,DS18
45、B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。 </p><p> ?。?)DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫。 </p><p> ?。?)DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉換電路集成在形如一只三極管的集成電路內。 </p><p> ?。?)溫范圍
46、-55℃~+125℃,在-10~+85℃時精度為±0.5℃。 </p><p> (6)可編程的分辨率為9~12位,對應的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實現(xiàn)高精度測溫。 </p><p> ?。?)在9位分辨率時最多在93.75ms內把溫度轉換為數(shù)字,12位分辨率時最多在750ms內把溫度值轉換為數(shù)字,速度更快。 </p>
47、<p> (8)測量結果直接輸出數(shù)字溫度信號,以“一線總線”串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力。 </p><p> ?。?)負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。 </p><p> 2.7.3 DS18B20的特性內部結構及管腳排列</p><p> 64位光刻ROM是出廠前被光刻好的,它
48、可以看作是該DS18B20的地址序列號。不同的器件地址序列號不同。DS18B20內部結構主要由四部分組成:64位光刻ROM,溫度傳感器,非揮發(fā)的溫度報警觸發(fā)器TH和TL,高速暫存器。圖2-7電路中DS18B20的引腳定義: </p><p> (1)DQ為數(shù)字信號輸入/輸出端 </p><p> (2)GND為電源地 </p><p> (3)VDD為外接供電
49、電源輸入端(在寄生電源接線方式時接地)。</p><p><b> 2.8 液晶顯示屏</b></p><p> 液晶顯示器以其微功耗、體積小、顯示內容豐富、超薄輕巧的等多優(yōu)點,在袖珍式儀表和低功耗應用系統(tǒng)中被廣泛的應用。</p><p> 本設計采用Yj-162A的液晶屏.屏幕顯示數(shù)字日歷、理論值的上下限溫度和實際溫度.屏幕上行顯示的是
50、日期和上下限溫度,可通過按鍵進行設定。上限溫度設定范圍為20---49度,下限溫度設定范圍為0--19度,設定時上限溫度不能低于下限溫度。當實時溫度高于設定溫度上限時,溫度上限指示燈亮(P2.0),當實時溫度低于設定溫度下限時,溫度下限指示燈亮(P2.1)亮。上下限溫度均是兩位數(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> 驅動電壓(V) 5.0V or 3.3V </p><p> 工作溫度:
52、(oC) 0~50 or -20~70 </p><p> 存儲溫度:(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為液晶顯示器對比度調整端,接正電源時對比度最弱,接
54、地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調整對比度</p><p> 第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。</p><p> 第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電
55、平時可以寫入數(shù)據(jù)。</p><p> 第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(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寄存器中,當P3.6口輸出低電平時控制端導通,本設計中指示燈電路用到D1、D2兩個指示燈。根據(jù)P2.0、P2.1口輸出信號,指示燈顯示電路根據(jù)不同的輸入信號顯示不同的現(xiàn)象。當實時溫度高于設定溫度上限時,溫度上限指示燈亮(P2.0);當實
57、時溫度低于設定溫度下限時,溫度下限指示燈亮(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也是一種國際標準測試協(xié)議(IEEE 1149.1兼容)主要應用于:電路的邊界掃描測試和可編程芯片的在系統(tǒng)編程。</p><p> 通常所說的JTAG大致分兩類,一類用于測試芯片的電氣特性,檢測芯片是否有問題;一類用于Debug;一般支持JTAG的CPU內都包含了這兩個模塊。標準的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時
59、鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。 相關JTAG引腳的定義為:TCK為測試時鐘輸入;TDI為測試數(shù)據(jù)輸入,數(shù)據(jù)通過TDI引腳輸入JTAG接口;TDO為測試數(shù)據(jù)輸出,數(shù)據(jù)通過TDO引腳從JTAG接口輸出;TMS為測試模式選擇,TMS用來設置JTAG接口處于某種特定的測試模式;TRST為測試復位,輸入引腳,低電平有效,GND 接地。在程序完成之后,通過JTAG電路將程序燒入相應的芯片,即可進行仿真測試。</p><p>&l
60、t;b> 第三章 軟件設計</b></p><p> 圖3-1主程序流程圖</p><p> 圖3-1為主程序流程圖,由圖可以看出先對系統(tǒng)進行初始化,接著通過DS1302獲取時間數(shù)據(jù)進而處理并顯示,再由DS18B20獲取實時溫度,進行相應的處理并顯示。在此期間對按鍵掃描信息進行判斷。如果有按鍵按下,根據(jù)相應的按鍵進入對應的處理程序。按K1鍵進入設置模式并可以選擇更
61、改參數(shù)的位置;按K2鍵單方向增加數(shù)值;按K3鍵放棄當前修改回到工作模式;按K4鍵保存當前數(shù)值回到工作模式。最后進入溫度比較子程序當實時溫度高于設定溫度上限時,溫度上限指示燈亮(P2.0);當實時溫度低于設定溫度下限時,溫度下限指示燈亮(P2.1)。溫度超過上下限溫度時告警電路報警。沒有按鍵按下時,直接進入溫度比較子程序。再次從獲取時間數(shù)據(jù)開始處理。本章將詳細介紹各模塊軟件的實現(xiàn)。</p><p><b>
62、; 3.1 主程序</b></p><p> 主程序通過對各部分進行定義 ,使得最終可以實現(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> //順序:秒,分,時,日,月,周,年;格式:BCD</p><p> uchar times[7];</p><p> uchar wendu_set[4];
66、 //溫度設定單元十、個位</p><p> uchar wendu[4]; //液晶顯示數(shù)字編碼</p><p> uchar shuzi[] = {"0123456789"}; //游標位置變量</p><p> uchar
67、PP = 0; //是否處于修改狀態(tài)標志,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; //關閉看門狗</p><p> BoardConfig(0xb0); // 關閉數(shù)碼管\電平轉換,流水燈</p><p> P2DI
71、R = 0xff; //P2端口設置為輸出</p><p> P2OUT = 0xff; //關閉LED</p><p> P1DIR = 0x80; //P1.7設置為輸出,其余為輸入為鍵盤</p><p> P1OUT = 0x00;&l
72、t;/p><p> Buzzer_DIR |=Buzzer; //設置蜂鳴器</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; //清除晶振失敗標志</p><p> for (i = 0xFF; i > 0; i--); //等待8MHz晶體起振 }</p><p&g
74、t; while ((IFG1 & OFIFG)); //晶振失效標志仍然存在?</p><p> BCSCTL2 |= SELM_2 + SELS; //MCLK和SMCLK選擇高頻晶振</p><p> //計數(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為鍵盤電路對應的程序設計流程圖,在程序處理過程中,根據(jù)硬件部分的操作,相應的進入不同的設置模塊。</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> 功 能:用于消抖的延時</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> 功 能:掃描四個獨立式按鍵</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(); //延時消抖</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) //轉換鍵值 </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> 當進入按鍵處理程序時,先判斷K1是否按
91、下。沒有按下K1鍵時進入進入后續(xù)處理子程序。按下K1后再根據(jù)之后的按鍵做出相應的處理。若按下K1時,轉入設置模式并可以選擇更改參數(shù)的位置,當按下K2鍵單方向增加數(shù)值,按K3鍵放棄當前修改回到工作模式,按K4鍵保存當前數(shù)值回到工作模式。</p><p> 3.3 實時時間程序</p><p> 在實時時間程序部分,DS1302實時時鐘可控制年,月,日,時,分,秒等顯示狀態(tài)。程序先通過對D
92、S1302各引腳進行定義并進行復位操作。接下來進行一系列的寫入、讀出數(shù)據(jù)的操作。在讀取DS1302當前時間部分,又調用: 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> 功 能:延時一段時間</p><p> 參 數(shù):time--延時長度</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> 功 能:對DS1302進行復位操作</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對應的IO設置為輸出狀態(tài)</p><p> DS_SCL_OUT; //SCLK對應的IO設置為輸出狀態(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> 功 能:對DS1302寫入1個字節(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對應的IO設置為輸出狀態(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個字節(jié)的數(shù)據(jù)</p><p><b> 參 數(shù):無</b></p><p
109、> 返回值 :讀出的一個字節(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對應的IO設置為輸入狀態(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> 功 能:向某個寄存器寫入一個字節(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> 功 能:從某個寄存器讀出一個字節(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- msp430單片機的測溫系統(tǒng)的研究與設計畢業(yè)論文
- 2017畢業(yè)論文-基于msp430單片機的時鐘設計
- 基于msp430單片機的測壓系統(tǒng)設計
- 基于msp430單片機的智能門禁系統(tǒng)
- 基于MSP430單片機的測距系統(tǒng).pdf
- msp430單片機實踐篇---msp430單片機控制io口操作-led燈閃爍
- msp430教程1msp430 單片機系列簡介
- 測控技術與儀器 畢業(yè)論文范文——基于msp430單片機的壓力測試系統(tǒng)設計
- 基于msp430單片機循跡小車
- 基于msp430單片機的倒車雷達設計畢業(yè)設計
- msp430單片機的時鐘信號小結
- 基于msp430單片機的智能樓宇安檢系統(tǒng)
- msp430單片機溫度單片機課程設計--溫度測試系統(tǒng)設計
- 測控技術與儀器 畢業(yè)論文范文——基于msp430單片機的數(shù)據(jù)采集系統(tǒng)的設計
- 電子工程畢業(yè)設計(論文)- 基于msp430單片機數(shù)據(jù)采集系統(tǒng)設計
- 測控技術與儀器 畢業(yè)論文范文——基于msp430單片機的數(shù)據(jù)采集系統(tǒng)的設計
- 基于MSP430單片機的智能電表設計.pdf
- 基于msp430單片機的計算器設計
- 基于msp430單片機的液位測量儀設計畢業(yè)論文外文翻譯
- 基于msp430單片機的溫度測控裝置的設計
評論
0/150
提交評論