[信息與通信]基于msp430溫濕度測(cè)量?jī)x設(shè)計(jì)-集美大學(xué)畢業(yè)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  基于MSP430的溫濕度測(cè)量?jī)x設(shè)計(jì)</p><p>  集美大學(xué)信息工程學(xué)院</p><p>  電子信息工程專業(yè)2006屆 楊燕宇 學(xué)號(hào):2002820036</p><p>  【摘要】本設(shè)計(jì)以MSP43F437單片機(jī)為核心,采用集成化的數(shù)字溫度濕度傳感器,實(shí)現(xiàn)了對(duì)溫度濕度的測(cè)量、顯示、存儲(chǔ)、傳輸、打印。來(lái)

2、自溫濕度傳感器信號(hào)IIC總線進(jìn)入MSP430F437,在MSP430F437中,溫度濕度數(shù)據(jù)一方面送LCD顯示;另一方面將溫度濕度數(shù)據(jù)存儲(chǔ)在AT25256中,存儲(chǔ)下來(lái)的溫度濕度數(shù)據(jù)可以經(jīng)RS232總線傳輸?shù)絇C中,在PC應(yīng)用程序中,可以對(duì)溫度濕度數(shù)據(jù)進(jìn)行曲線顯示,并可以打印報(bào)表。同時(shí)還可以通過(guò)按鍵對(duì)溫度濕度測(cè)量的時(shí)間間隔、是否存儲(chǔ)、起始時(shí)間等參數(shù)進(jìn)行設(shè)置。此外,還采用VB編寫(xiě)了PC端應(yīng)用程序。整個(gè)系統(tǒng)可以外接9V DC電源供電,可以采用

3、9V鋰電池供電,由于MSP430單片機(jī)的超低功耗特性,以及程序設(shè)計(jì)中采用低功耗設(shè)計(jì)方式,使得整個(gè)系統(tǒng)非常省電,特別適合于手持式儀表。</p><p>  【關(guān)鍵詞】溫度測(cè)量 濕度測(cè)量 MSP430</p><p>  The Design of Temperature and Humidity Meter Based on MSP430</p><p>  I

4、nformation Technology College of Jimei University</p><p>  Major of Electronic Engineering ,2006 YANYU YANG ,NO:2002820036</p><p>  [Abstract] In this design, I use the MSP43F437 for core and t

5、ake an integration numerical temperature sensor to carry out the measuring of the temperature degree and the humidity, and to show, to save, to transmit, to print the result of the measuring. The signal coming from the s

6、ensor is transmitted to the MSP430F437 through the IIC BUS. The data that we have gathered will be show in the LCD and will be deposited in the AT25256. The data we have deposited can be transmitted to the pc through th&

7、lt;/p><p>  [Key Words] Temperature Measure Humidity Measure MSP430</p><p><b>  目 錄</b></p><p><b>  摘 要i</b></p><p>  Abstractii</p>

8、<p><b>  目 錄iii</b></p><p><b>  引 言2</b></p><p>  第一章 溫濕度測(cè)量?jī)x設(shè)計(jì)方案2</p><p>  1.1 系統(tǒng)基本要求2</p><p>  1.2系統(tǒng)基本結(jié)構(gòu)2</p><p>  1.

9、3各個(gè)模塊的功能2</p><p>  第二章 溫濕度測(cè)量?jī)x的硬件設(shè)計(jì)3</p><p>  2.1 MSP430F437介紹3</p><p>  2.2溫濕度測(cè)量電路4</p><p>  2.2.1溫濕度傳感器介紹4</p><p>  2.2.2溫度濕度測(cè)量電路6</p><p&

10、gt;  2.3溫度濕度數(shù)據(jù)存儲(chǔ)電路6</p><p>  2.3.1 AT25256介紹6</p><p>  2.3.2 SPI協(xié)議介紹7</p><p>  2.3.3溫度濕度數(shù)據(jù)存儲(chǔ)電路7</p><p>  2.4 RS232通信電路8</p><p>  2.4.1 RS232協(xié)議介紹8<

11、/p><p>  2.4.2 RS232通信電路9</p><p>  2.5段式LCD顯示電路9</p><p>  2.5.1段式LCD顯示原理9</p><p>  2.5.2段式LCD顯示電路11</p><p>  2.6按鍵電路12</p><p>  2.7電源電路13&l

12、t;/p><p>  2.8 JTAG接口電路14</p><p>  第三章 溫度濕度測(cè)量?jī)x的軟件設(shè)計(jì)15</p><p>  3.1系統(tǒng)設(shè)計(jì)的總體流程圖15</p><p>  3.2系統(tǒng)參數(shù)設(shè)置程序設(shè)計(jì)16</p><p>  3.3傳感器溫度濕度數(shù)據(jù)讀取程序17</p><p> 

13、 3.4溫濕度數(shù)據(jù)存儲(chǔ)程序設(shè)計(jì)18</p><p>  3.5 RS232通信程序設(shè)計(jì)19</p><p>  3.6段式LCD顯示程序設(shè)計(jì)20</p><p>  3.7按鍵程序20</p><p>  第四章 PC應(yīng)用程序設(shè)計(jì)21</p><p>  4.1 Visual Basic介紹21</p

14、><p>  4.2 VB串口通信控件MSComm介紹22</p><p>  4.3 PC應(yīng)用程序設(shè)計(jì)23</p><p>  第五章 溫度濕度測(cè)量?jī)x的系統(tǒng)調(diào)試25</p><p><b>  結(jié) 語(yǔ)26</b></p><p><b>  致 謝27</b&g

15、t;</p><p><b>  參考文獻(xiàn)28</b></p><p><b>  引 言</b></p><p>  溫濕度測(cè)量是現(xiàn)代測(cè)量新發(fā)展出來(lái)的一個(gè)領(lǐng)域,尤其濕度的測(cè)量更是不斷前進(jìn)。經(jīng)歷了長(zhǎng)度法、干濕法直至今天的電測(cè)量的歷程,使?jié)穸葴y(cè)量技術(shù)日漸成熟。時(shí)至今日,由于我們不再滿足于溫濕度的測(cè)量,尤其是一些場(chǎng)所的

16、監(jiān)控直接要求實(shí)時(shí)測(cè)量并記錄其全過(guò)程溫濕度變化,并依據(jù)這些變化認(rèn)定儲(chǔ)運(yùn)過(guò)程的安全性,導(dǎo)致了新的溫濕度測(cè)量?jī)x的誕生。溫濕度測(cè)量?jī)x是將溫濕度參數(shù)進(jìn)行測(cè)量并按照預(yù)定的時(shí)間間隔將其儲(chǔ)存在內(nèi)部存儲(chǔ)器中,在完成記錄功能后將其聯(lián)接到PC機(jī),利用適配軟件將存儲(chǔ)的數(shù)據(jù)提出并按其數(shù)值、時(shí)間進(jìn)行分析的儀器。利用該儀器可確定儲(chǔ)運(yùn)過(guò)程、實(shí)驗(yàn)過(guò)程等相關(guān)過(guò)程沒(méi)有任何危及產(chǎn)品安全的事件發(fā)生。目前,溫濕度測(cè)量?jī)x在食品儲(chǔ)運(yùn)、博物館文物、檔案管理、建材實(shí)驗(yàn)、農(nóng)業(yè)及畜牧業(yè)的應(yīng)用

17、、氣候記錄、重要醫(yī)衛(wèi)場(chǎng)所、管路維護(hù)等方面都重要的應(yīng)用。</p><p>  第一章 溫濕度測(cè)量?jī)x設(shè)計(jì)方案</p><p>  1.1 系統(tǒng)基本要求</p><p>  采用MSP430超低功耗單片機(jī)作用系統(tǒng)設(shè)計(jì)的核心;</p><p>  采用段式LCD顯示溫度和濕度;</p><p>  采用集成的數(shù)字式溫度濕度傳感

18、器;</p><p><b>  具有參數(shù)設(shè)計(jì)功能;</b></p><p><b>  具有數(shù)據(jù)存儲(chǔ)功能;</b></p><p><b>  具有通信功能。</b></p><p><b>  1.2系統(tǒng)基本結(jié)構(gòu)</b></p><

19、p>  圖1-1 系統(tǒng)基本結(jié)構(gòu)圖</p><p>  1.3各個(gè)模塊的功能</p><p>  MSP430F437單片機(jī)</p><p>  本系統(tǒng)的核心器件,主要功能是溫度濕度數(shù)據(jù)采集、處理、存儲(chǔ)、傳輸、LCD顯示等。</p><p><b>  溫度濕度傳感器電路</b></p><p&g

20、t;  采用集成的數(shù)字式溫度濕度傳感器,通過(guò)IIC總線與MSP430F437通信。</p><p><b>  LCD顯示電路</b></p><p>  采用段式LCD,顯示采集到的溫度、濕度、時(shí)間等數(shù)據(jù)及系統(tǒng)的工作狀態(tài)信息。</p><p><b>  數(shù)據(jù)存儲(chǔ)電路</b></p><p>  

21、采用4片AT25256,存儲(chǔ)采集到的溫度濕度數(shù)據(jù),并存儲(chǔ)時(shí)間及參數(shù)設(shè)置信息。</p><p><b>  RS232通信電路</b></p><p>  與PC通信,可從PC上設(shè)置系統(tǒng)參數(shù),并可以讀取、擦除AT25256中的數(shù)據(jù)。</p><p><b>  按鍵電路</b></p><p>  完

22、成系統(tǒng)參數(shù)設(shè)置功能。</p><p><b>  JTAG電路</b></p><p>  現(xiàn)實(shí)程序的在線調(diào)試及下載編程功能。</p><p><b>  電源電路</b></p><p>  采用9V鋰電池供電,通信電路轉(zhuǎn)換電路,提供系統(tǒng)工作所需的3.3V電源。</p><p&

23、gt;  第二章 溫濕度測(cè)量?jī)x的硬件設(shè)計(jì)</p><p>  2.1 MSP430F437介紹</p><p>  MSP430系列單片機(jī)是美國(guó)德州儀器(TI)1996年開(kāi)始推向市場(chǎng)的一種16位超低信號(hào)功耗的混合處理器。稱之為混合信號(hào)處理器,主要是由于其針對(duì)實(shí)際應(yīng)用要求,把許多模擬電路、數(shù)字電路和微處理器集成在一個(gè)芯片上,以提供“單片”解決方案。</p><p> 

24、 MSP430單片機(jī)主要特點(diǎn)如下:</p><p>  超低功耗。MSP430系列單片機(jī)的電源電壓采用1.8~3.6V低電壓,RAM數(shù)據(jù)保持方式下耗電僅僅0.1uA,活動(dòng)模式耗電250uA/MIPS,IO輸入端口的漏電流最大僅僅50nA。</p><p>  強(qiáng)大的處理能力。MSP430系列單片機(jī)是16位單片機(jī),采用了目前最流行的精簡(jiǎn)指令集(RISC)結(jié)構(gòu),一個(gè)時(shí)鐘周期可以執(zhí)行一條指令(傳

25、統(tǒng)的MCS51單片機(jī)要12個(gè)時(shí)鐘周期才可以執(zhí)行一條指令),使MSP430在8MHz晶振工作時(shí),指令速度可達(dá)8MIPS。</p><p>  高性能模擬技術(shù)及豐富的片上外圍模塊。MSP430系列單片有機(jī)結(jié)合TI的高性能模擬技術(shù),各成員都集成了較豐富的片內(nèi)外設(shè)。視型號(hào)的不同可能組合有以下功能模塊:看門(mén)狗(WDT),模擬比較器A,定時(shí)器A(Timer_A),定時(shí)B(其Timer_B),串口0,1(USART0、1),硬

26、件乘法器,液晶驅(qū)動(dòng)器,10位/12/14位ADC,12位DAC,IIC總線,直接數(shù)據(jù)存?。―MA),端口1~6(P1~P6),基本定時(shí)器(Basic Timer)等。</p><p>  系統(tǒng)工作穩(wěn)定。上電復(fù)位后,首先由DC0_CLK啟動(dòng)CPU,以保證程序從正確的位置開(kāi)始執(zhí)行,保證晶體振器有足夠的起振及穩(wěn)定時(shí)間。然后軟件可設(shè)置適當(dāng)?shù)募拇嫫鞯目刂莆粊?lái)確定最后的系統(tǒng)時(shí)鐘頻率。如果晶體振蕩器在用作CPU時(shí)鐘MCLK時(shí)發(fā)

27、生故障,DCO會(huì)自動(dòng)啟動(dòng),以保證系統(tǒng)正常工作。這種結(jié)構(gòu)和運(yùn)行機(jī)制,在目前各系列單片機(jī)中是絕無(wú)僅有的。另外,MSP430系列單片機(jī)均為工業(yè)級(jí)器件,運(yùn)行環(huán)境溫度為-40~+85℃,運(yùn)行穩(wěn)定、可靠性高,所設(shè)計(jì)的產(chǎn)品適用于各種民用和工業(yè)環(huán)境。</p><p>  方便高效的開(kāi)發(fā)環(huán)境。目前MSP430系列有OTP型、FLASH型和ROM型3種類型,國(guó)內(nèi)大量使用的是FLASH型。這些器件的開(kāi)發(fā)手段不同,對(duì)于OTP型和ROM型

28、的器件是使用專用仿真器開(kāi)發(fā)成功之后再燒寫(xiě)或掩摸的芯片。對(duì)于FLASH型則有十分方便的開(kāi)發(fā)調(diào)試環(huán)境,因?yàn)槠骷瑑?nèi)有JTAG調(diào)試接口,還有可電擦寫(xiě)的FLASH存儲(chǔ)器,因此采用先通過(guò)JTAG接口下載程序到FLASH內(nèi),再由JTAG接口控制程序運(yùn)行,讀取片內(nèi)CPU狀態(tài),以及存儲(chǔ)器內(nèi)容等信息供設(shè)計(jì)者調(diào)試,整個(gè)開(kāi)發(fā)(編譯、調(diào)試)都可以在同一個(gè)軟件集成環(huán)境中進(jìn)行。這種方式只需要一臺(tái)PC機(jī)和一個(gè)JTAG調(diào)試器,而不需要專用仿真器和編程器。</p&

29、gt;<p>  2.2溫濕度測(cè)量電路</p><p>  2.2.1溫濕度傳感器介紹</p><p>  溫度濕度采用瑞士Sensirion的SHT7x集成的數(shù)字式傳感器,采用IIC總線與MSP430F437通信,電路簡(jiǎn)單,SHT7x命令字很,使得通信程序設(shè)計(jì)很方便。這種傳感器采用獨(dú)特的CMOSens TM技術(shù),具有數(shù)字式輸出、免調(diào)試、免標(biāo)定、免外圍電路及全互換的特點(diǎn)。&l

30、t;/p><p>  SHT7x溫濕度傳感器的主要特性如下:</p><p>  將溫濕度傳感器、信號(hào)放大調(diào)理、A/D轉(zhuǎn)換、IIC總線接口全部集成于一片(COMSens TM技術(shù));</p><p>  可給出全校準(zhǔn)相對(duì)濕度及溫度值輸出;</p><p>  帶有工業(yè)標(biāo)準(zhǔn)的IIC總線數(shù)字輸出接口;</p><p>  具有

31、露點(diǎn)值計(jì)算輸出功能;</p><p>  具有卓越的長(zhǎng)期穩(wěn)定性;</p><p>  濕度值輸出分辨率為14位,溫度值輸出分辨率為12位,并且可編程;</p><p>  小體積(7.65×5.08×23.5mm),可表面貼裝;</p><p>  具有可靠的CRC數(shù)據(jù)傳輸校驗(yàn)功能;</p><p>

32、;  片內(nèi)裝載的校準(zhǔn)系數(shù)可保證100%互換性;</p><p>  電源電壓范圍為2.4~5.5V;</p><p>  電流消耗,測(cè)量時(shí)為550μA,平均為28μA,休眠時(shí)為3μA。</p><p>  SHT7x溫濕度傳感器采用SMD(LCC)表面貼片封裝形式,其引腳說(shuō)明如下:</p><p><b>  GND:接地端;<

33、;/b></p><p>  DATA:雙向串行數(shù)據(jù)線;</p><p>  SCK:串行時(shí)鐘輸入;</p><p>  VDD電源端:0.4~5.5V電源端;</p><p> ?。?~8)NC:空管腳。</p><p>  SHT7x的測(cè)量原理如下:</p><p>  SHT7x的濕

34、度檢測(cè)運(yùn)用電容式結(jié)構(gòu),并采用具有不同保護(hù)的“微型結(jié)構(gòu)”檢測(cè)電極系統(tǒng)與聚合物覆蓋層來(lái)組成傳感器芯片的電容,除保持電容式濕敏器件的原有特性外,還可抵御來(lái)自外界的影響。由于它將溫度傳感器與濕度傳感器結(jié)合在一起而構(gòu)成了一個(gè)單一的個(gè)體,因而測(cè)量精度較高且可精確得出露點(diǎn),同時(shí)不會(huì)產(chǎn)生由于溫度與濕度傳感器之間隨溫度梯度變化引起的誤差。COMSens TM技術(shù)不僅將溫濕度傳感器結(jié)合在一起,而且還將信號(hào)放大器、模/數(shù)轉(zhuǎn)換器、校準(zhǔn)數(shù)據(jù)存儲(chǔ)器、標(biāo)準(zhǔn)IIC總線

35、等電路全部集成在一個(gè)芯片內(nèi)。SHT7x的每一個(gè)傳感器都是在極為精確的濕度室中校準(zhǔn)的。SHT7x傳感器的校準(zhǔn)系數(shù)預(yù)先存在OTP內(nèi)存中。經(jīng)校準(zhǔn)的相對(duì)濕度和溫度傳感器與一個(gè)14位的A/D轉(zhuǎn)換器相連,可將轉(zhuǎn)換后的數(shù)字溫濕度值送給二線IIC總線器件,從而將數(shù)字信號(hào)轉(zhuǎn)換為符合IIC總線協(xié)議的串行數(shù)字信號(hào)。</p><p>  由于將傳感器與電路部分結(jié)合在一起,因此,該傳感器具有比其它類型的濕度傳感器優(yōu)越得多的性能。首先是傳感

36、器信號(hào)強(qiáng)度的增加增強(qiáng)了傳感器的抗干擾性能,保證了傳感器的長(zhǎng)期穩(wěn)定性,而A/D轉(zhuǎn)換的同時(shí)完成,則降低了傳感器對(duì)干擾噪聲的敏感程度。其次在傳感器芯片內(nèi)裝載的校準(zhǔn)數(shù)據(jù)保證了每一只濕度傳感器都具有相同的功能,即具有100%的互換性。最后,傳感器可直接通過(guò)IIC總線與任何類型的微處理器、微控制器系統(tǒng)連接,從而減少了接口電路的硬件成本,簡(jiǎn)化了接口方式。</p><p>  SHT7x的時(shí)序使用說(shuō)明如下:</p>

37、<p>  傳輸開(kāi)始。初始化傳輸時(shí),應(yīng)首先發(fā)出“傳輸開(kāi)始”命令,該命令可在SCK為高時(shí)使DATA由高電平變?yōu)榈碗娖剑⒃谙乱粋€(gè)SCK為高時(shí)將DATA升高。接下來(lái)的命令順序包含三個(gè)地址位(目前只支持“000”)和5個(gè)命令位,當(dāng)DATA腳的ack位處于低電位時(shí),表示SHT7x正確收到命令。</p><p>  連接復(fù)位順序。如果與STH7x傳感器的通訊中斷,下列信號(hào)順序會(huì)使串口復(fù)位:即當(dāng)DTAA線處于高電

38、平時(shí),觸發(fā)SCK 9次以上,此后應(yīng)接著發(fā)一個(gè)“傳輸開(kāi)始”命令。</p><p>  溫濕度測(cè)量時(shí)序。當(dāng)發(fā)出了溫(濕)度測(cè)量命令后,控制器就要等到測(cè)量完成。使用8/12/14位的分辨率測(cè)量分別需要大約11/55/210ms的時(shí)間。為表明測(cè)量完成,SHT7x會(huì)使數(shù)據(jù)線為低,此時(shí)控制器必須重新啟動(dòng)SCK,然后傳送兩字節(jié)的測(cè)量數(shù)據(jù)與1字節(jié)CRC校驗(yàn)和??刂破鞅仨毻ㄟ^(guò)使DATA為低來(lái)確認(rèn)每一個(gè)字節(jié),所有的量均從右算,MSB

39、列于第一位。通訊在確認(rèn)CRC數(shù)據(jù)位后停止。如果沒(méi)有用CRC-8校驗(yàn)和,則控制器就會(huì)在測(cè)量數(shù)據(jù)LSB后保持ack為高來(lái)停止通訊,SHT7x在測(cè)量和通訊完成后會(huì)自動(dòng)返回睡眠模式。</p><p>  SHT7x傳感器中的一些高級(jí)功能是通過(guò)狀態(tài)寄存器來(lái)實(shí)現(xiàn)的,寄存器各位的類型及說(shuō)明見(jiàn)表1所列。下面對(duì)寄存器的相關(guān)位的功能說(shuō)明:</p><p>  加熱。使芯片中的加熱開(kāi)關(guān)接通后,傳感器溫度大約增加

40、5C,從而使功耗增加至8mA@5V。加熱用途如下:通過(guò)對(duì)啟動(dòng)加熱器前后的溫、濕度進(jìn)行比較,可以正確地區(qū)別傳感器的功能;在相對(duì)濕度較高的環(huán)境下,傳感器可通過(guò)加熱來(lái)避免冷凝。</p><p>  低電壓檢測(cè)。SHT7x工作時(shí)可以自行檢測(cè)VDD電壓是否低于2.45V,準(zhǔn)確度為±0.1V。</p><p>  下載校準(zhǔn)系數(shù)。為了節(jié)省能量并提高速度,OTP在每次測(cè)量前都要重新下載校準(zhǔn)系數(shù),

41、從而使每一次測(cè)量節(jié)省8.2mS的時(shí)間。</p><p>  測(cè)量分辨率設(shè)定。將測(cè)量分辨率從14位(溫度)和12位(濕度)分別減到12位和8位可應(yīng)用于高速或低功耗場(chǎng)合。</p><p>  表1 SHT7x命令字表</p><p>  2.2.2溫度濕度測(cè)量電路</p><p>  在現(xiàn)代電子系統(tǒng)中,有為數(shù)眾多的IC需要進(jìn)行相互之間以及與外界的

42、通信。為了提高硬件效率和簡(jiǎn)化電路設(shè)計(jì)而廣泛使用Inter-IC(IIC)。IIC總線是一種用于內(nèi)部IC控制的具有多端控制能力的雙線雙向串行數(shù)據(jù)總線系統(tǒng)。能夠用于替代標(biāo)準(zhǔn)的并行總線,連接各種集成電路和功能模塊。IIC器件的應(yīng)用能夠減少電路間連線,減小電路板尺寸,降低硬件成本,并提高了系統(tǒng)可靠性 </p><p>  MSP430可以同時(shí)連接多個(gè)IIC設(shè)備,其連接關(guān)系如圖2-1所示。</p><p

43、>  圖2-1 MSP430與多個(gè)IIC總線設(shè)備通信</p><p>  在本系統(tǒng)中,MSP430與溫度濕度傳感器SHT7x的連接關(guān)系如圖2-2所示,電路結(jié)構(gòu)非常簡(jiǎn)單。</p><p>  圖2-2 MSP430與SHT7x通信連接圖</p><p>  2.3溫度濕度數(shù)據(jù)存儲(chǔ)電路</p><p>  2.3.1 AT25256介紹&l

44、t;/p><p>  溫度濕度數(shù)據(jù)存儲(chǔ)芯片采用ATMEL公司的SPI接口的低電壓串行EEPROM AT25256。AT25256主要適用于低功耗場(chǎng)合,內(nèi)部按照32K×8位組織,可以工作在3.3V電壓下,最大串行時(shí)鐘頻率為2.1MHz。支持64字節(jié)的頁(yè)寫(xiě)方式以及字節(jié)寫(xiě)方式。另外,AT25256還可以通過(guò)設(shè)置寫(xiě)保護(hù)引腳/WP的電平來(lái)設(shè)置芯片的只讀或可寫(xiě)狀態(tài)。</p><p>  2.3.

45、2 SPI協(xié)議介紹</p><p>  串行外圍設(shè)備接口SPI(Serial Peripheral Interface)總線技術(shù)是一種同步串行接口,其硬件功能很強(qiáng),因此,與SPI有關(guān)的軟件相當(dāng)簡(jiǎn)單,使CPU有更多的時(shí)間處理其他事務(wù)。SPI總線上可以連接多個(gè)可作為主機(jī)的MCU(微控制器)、裝有SPI接口的輸出設(shè)備、輸出設(shè)備,如液晶驅(qū)動(dòng)、A/D轉(zhuǎn)換等外設(shè),也可以簡(jiǎn)單連接到單個(gè)TTL移位寄存器芯片。總線上允許連接多個(gè)設(shè)

46、備,但在任一瞬間只允許一個(gè)設(shè)備作為主機(jī)。</p><p>  其中SPI總線的時(shí)鐘線由主機(jī)控制,另外還有數(shù)據(jù)線:主機(jī)輸入/從機(jī)輸出線和主機(jī)輸出/從機(jī)輸入線。主機(jī)和哪臺(tái)從機(jī)通信通過(guò)各從機(jī)的選通線進(jìn)行選擇。</p><p>  應(yīng)用SPI的系統(tǒng)可以簡(jiǎn)單,也可以復(fù)雜,主要有多種形式:(1)一臺(tái)主機(jī)MCU和若干從機(jī)MCU;(2)多臺(tái)MCU互相連接成一個(gè)多主機(jī)系統(tǒng);(3)一臺(tái)主機(jī)MCU和若干從機(jī)外圍

47、設(shè)備。MSP40與SPI設(shè)備的連接關(guān)系如圖2-3所示。</p><p>  圖2-3 MSP40與SPI設(shè)備的連接圖</p><p>  2.3.3溫度濕度數(shù)據(jù)存儲(chǔ)電路</p><p>  本系統(tǒng)的采用了2塊SPI接口的AT25256芯片,其電路原理圖如圖2-4所示:</p><p>  圖2-4 溫濕度數(shù)據(jù)存儲(chǔ)電路</p>&

48、lt;p>  2.4 RS232通信電路</p><p>  2.4.1 RS232協(xié)議介紹</p><p>  對(duì)于RS-232C接口,需要說(shuō)明兩點(diǎn)是: 首先,RS-232-C標(biāo)準(zhǔn)最初是遠(yuǎn)程通信連接數(shù)據(jù)終端設(shè)備DTE(Data Terminal Equipment)與數(shù)據(jù)通信設(shè)備DCE(Data Communication Equipment)而制定的。其次,RS-232C標(biāo)準(zhǔn)中所

49、提到的“發(fā)送”和“接收”,都是站在DTE立場(chǎng)上,而不是站在DCE的立場(chǎng)來(lái)定義的。</p><p>  RS-232C標(biāo)準(zhǔn)(協(xié)議)的全稱是EIA-RS-232C標(biāo)準(zhǔn),其中EIA(Electronic Industry Association)代表美國(guó)電子工業(yè)協(xié)會(huì),RS(Recommeded standard)代表推薦標(biāo)準(zhǔn),232是標(biāo)識(shí)號(hào),C代表RS232的最新一次修改(1969),在這之前,有RS232B、RS23

50、2A。。它規(guī)定連接電纜和機(jī)械、電氣特性、信號(hào)功能及傳送過(guò)程。</p><p>  RS-232C對(duì)電器特性、邏輯電平和各種信號(hào)線功能都的規(guī)定如下:</p><p>  在TxD和RxD上:</p><p>  邏輯1(MARK)=-3V~-15V</p><p>  邏輯0(SPACE)=+3~+15V</p><p>

51、;  在RTS、CTS、DSR、DTR和DCD等控制線上:</p><p>  信號(hào)有效(接通,ON狀態(tài),正電壓)=+3V~+15V</p><p>  信號(hào)無(wú)效(斷開(kāi),OFF狀態(tài),負(fù)電壓)=-3V~-15V</p><p>  以上規(guī)定說(shuō)明了RS-323C標(biāo)準(zhǔn)對(duì)邏輯電平的定義。對(duì)于數(shù)據(jù)(信息碼):邏輯“1”(傳號(hào))的電平低于-3V,邏輯“0”(空號(hào))的電平告語(yǔ)+3

52、V;對(duì)于控制信號(hào);接通狀態(tài)(ON)即信號(hào)有效的電平高于+3V,斷開(kāi)狀態(tài)(OFF)即信號(hào)無(wú)效的電平低于-3V,也就是當(dāng)傳輸電平的絕對(duì)值大于3V時(shí),電路可以有效地檢查出來(lái),介于-3~+3V之間的電壓無(wú)意義,低于-15V或高于+15V的電壓也認(rèn)為無(wú)意義,因此,實(shí)際工作時(shí),應(yīng)保證電平在±(3~15)V之間。</p><p>  RS-232C與TTL轉(zhuǎn)換:EIA-RS-232C是用正負(fù)電壓來(lái)表示邏輯狀態(tài),與TT

53、L以高低電平表示邏輯狀態(tài)的規(guī)定不同。因此,為了能夠同計(jì)算機(jī)接口或終端的TTL器件連接,必須在EIA-RS-232C與TTL電路之間進(jìn)行電平和邏輯關(guān)系的變換。實(shí)現(xiàn)這種變換的方法可用分立元件,也可用集成電路芯片。目前較為廣泛地使用集成電路轉(zhuǎn)換器件,如MC1488、SN75150芯片可完成TTL電平到EIA電平的轉(zhuǎn)換,而MC1489、SN75154可實(shí)現(xiàn)EIA電平到TTL電平的轉(zhuǎn)換。MAX232芯片可完成TTL←→EIA雙向電平轉(zhuǎn)換,<

54、/p><p>  RS-232C規(guī)標(biāo)準(zhǔn)接口有25條線,4條數(shù)據(jù)線、11條控制線、3條定時(shí)線、7條備用和未定義線,常用的只有9根,它們是:(1)聯(lián)絡(luò)控制信號(hào)線:數(shù)據(jù)裝置準(zhǔn)備好(Data set ready-DSR)、數(shù)據(jù)終端準(zhǔn)備好(Data set ready-DTR)、請(qǐng)求發(fā)送(Request to send-RTS)、允許發(fā)送(Clear to send-CTS)、接收線信號(hào)檢出(Received Line det

55、ection-RLSD、振鈴指示(Ringing-RI);(2)數(shù)據(jù)發(fā)送與接收線:發(fā)送數(shù)據(jù)(Transmitted data-TxD)、接收數(shù)據(jù)(Received data-RxD);(3)地線。</p><p>  2.4.2 RS232通信電路</p><p>  RS232通信電路由兩部分組成,一部分在主板上,如圖2-5所示,另一部分電路在RS232的通信電纜上,通信電纜上的電路主要

56、完成TTL電平與RS232電平的相互轉(zhuǎn)換。這兩部分采用立體聲的音頻接口連接。立體聲的音頻接口比較小,制作在便攜式儀表上比采用DB9的RS232接頭更美觀,同時(shí)插拔更方便。</p><p>  圖2-5 RS232通信電路</p><p>  2.5段式LCD顯示電路</p><p>  2.5.1段式LCD顯示原理</p><p>  液晶顯

57、示器的原理是利用液晶的物理特生,通電時(shí)導(dǎo)通,排列變得有秩序,使光線容易通過(guò);不通電時(shí)排列混亂,阻止光線通過(guò)。光線通過(guò)和不通過(guò)的組合就可以在屏幕上顯示出圖象來(lái)。通俗地說(shuō),液晶顯示器就是兩塊玻璃中間夾了一層(或多層)液晶材料,液晶材料在信號(hào)控制下改變自己的透光狀態(tài),于是就能在玻璃面板前看到圖像了。由于液晶是通過(guò)境光來(lái)顯示信息的,液晶本身不主動(dòng)發(fā)光,所以液晶功耗很低,更加適合于單片機(jī)低功耗應(yīng)用系統(tǒng)。另外,液晶只能使用低頻交流電壓驅(qū)動(dòng),直流電壓

58、將損壞液晶。</p><p>  液晶有很多種類,常見(jiàn)的有段式液晶、字符式液晶、圖形式液晶等。其中段式液晶價(jià)格低廉,使用簡(jiǎn)單,被廣泛地用于各種單片機(jī)應(yīng)用系統(tǒng)中,例如各種智能儀表的顯示。</p><p>  在MSP430系列單片機(jī)中,MSPX1XX系列沒(méi)有段式液晶驅(qū)動(dòng)模塊,MSP430F4XX系列片內(nèi)具有段式液晶驅(qū)動(dòng)模塊。具體型號(hào)的液晶驅(qū)動(dòng)段能力不同,參見(jiàn)本書(shū)第1章選型部分。在液晶驅(qū)動(dòng)電路

59、中,液晶等效為電容。兩個(gè)電極板分別為公共極與段極。公共極由COMn信號(hào)驅(qū)動(dòng),段極由SEGn信號(hào)驅(qū)動(dòng)。</p><p>  MSP430液晶驅(qū)動(dòng)模塊主要特點(diǎn)如下:</p><p><b>  具有顯示緩存器</b></p><p>  所需的SEG、COM信號(hào)自動(dòng)產(chǎn)生</p><p><b>  4種驅(qū)動(dòng)方法&l

60、t;/b></p><p><b>  多種掃描頻率</b></p><p>  段輸出端口可以切換為通常輸出端口</p><p>  顯示緩存器可作為一般存儲(chǔ)器</p><p>  用ACLK經(jīng)Basic Timer產(chǎn)生頻率</p><p>  MSP430液晶驅(qū)動(dòng)模塊有4種驅(qū)動(dòng)方法,分別

61、為靜態(tài)驅(qū)動(dòng)、2MUX驅(qū)動(dòng)、3MUX驅(qū)動(dòng)、4MUX驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)方法,除了公共極需要一個(gè)引腳,驅(qū)動(dòng)的每一段還各需要一個(gè)引腳。如果設(shè)計(jì)中涉及很多段數(shù),就需要占用眾多引腳。為了減少引腳個(gè)數(shù),可以根據(jù)需要選擇多路驅(qū)動(dòng)方法:2MUX驅(qū)動(dòng)、3MUX驅(qū)動(dòng)、4MUX驅(qū)動(dòng)方法。增加公共極個(gè)數(shù),可以極大地減少引腳數(shù)。需要驅(qū)動(dòng)的段數(shù)越多,效果越明顯。</p><p>  本系統(tǒng)由于所需要顯示的段碼較多,故采用了4MUX的驅(qū)動(dòng)方式,其顯

62、存與I/O腳的對(duì)應(yīng)關(guān)系如圖2-6所示。</p><p>  圖2-6 4MUX驅(qū)動(dòng)時(shí)顯存與IO腳的對(duì)應(yīng)關(guān)系</p><p>  2.5.2段式LCD顯示電路</p><p>  段式LCD顯示電路接口電路如圖2-7所示。圖中,R15、R16、R17為10K等值電阻,以此分壓產(chǎn)生LCD顯示所需的交流電壓波形。</p><p>  圖2-7 段式

63、LCD顯示電路</p><p><b>  2.6按鍵電路</b></p><p>  按鍵是計(jì)算面系統(tǒng)中最常用的人機(jī)對(duì)話輸入部分。在單片機(jī)應(yīng)用系統(tǒng)中,為了控制系統(tǒng)的工作狀態(tài)以及向系統(tǒng)輸入數(shù)據(jù),一般均設(shè)有按鍵或鍵盤(pán)。鍵盤(pán)一般分為編碼鍵盤(pán)和非編碼鍵盤(pán)兩種。編碼鍵盤(pán)本身除了按鍵之外,還包括產(chǎn)生鍵碼的硬件電路。只要按下某一個(gè)鍵,就能產(chǎn)生這個(gè)鍵的代碼(一般稱為編碼),這種鍵盤(pán)

64、使用比較方便,需要編者按寫(xiě)的鍵盤(pán)輸入程序也比較簡(jiǎn)單。非編碼鍵盤(pán)是由若干個(gè)按鍵組合的開(kāi)關(guān)矩陣,按鍵的作用,只是簡(jiǎn)單地實(shí)現(xiàn)接點(diǎn)的接通和斷開(kāi),非編碼鍵盤(pán)必有一套相應(yīng)的程序與之配合,才能產(chǎn)生出相應(yīng)的鍵碼。</p><p>  本系統(tǒng)采用了單鍵輸入式鍵盤(pán)。單鍵輸入式鍵盤(pán)是指直接用I/O端口線構(gòu)成的單個(gè)按鍵電路。每個(gè)單鍵輸入式按鍵單獨(dú)占用一根I/O線,每根I/O線上的按鍵工作狀態(tài)不會(huì)影響其他I/O線的工作狀態(tài)。按鍵電路如圖2

65、-8所示,按鍵功能分配如表2-1所示。</p><p><b>  圖2-8 按鍵電路</b></p><p>  表2-1 按鍵功能分配表</p><p><b>  2.7電源電路</b></p><p>  電源電路采用是TI公司產(chǎn)品的電池管理芯片TPS71533,其主要特點(diǎn)如下:</p

66、><p>  最大輸入電壓24V;</p><p>  工作在50mA時(shí)的靜態(tài)電流僅為3.2;</p><p><b>  輸出電壓3.3V;</b></p><p>  輸出電流可達(dá)50mA;</p><p>  5PIN SOT小型封裝;</p><p>  穩(wěn)壓工作溫度范

67、圍-40~125。</p><p>  電源電路如圖2-9所示。系統(tǒng)可以由9V的鋰電池供電,也可以由外部的9V DC電源供電。圖中二極管起電源反接保護(hù)作用,9V電源輸入后,經(jīng)過(guò)TPS71533 DC-DC變換后,輸出3.3V的電壓,供系統(tǒng)工作所用。</p><p><b>  圖2-9 電源電路</b></p><p>  2.8 JTAG接口

68、電路</p><p>  JTAG(Joint Test Action Group)聯(lián)合測(cè)試行動(dòng)小組)是一種國(guó)際標(biāo)準(zhǔn)測(cè)試協(xié)議(IEEE 1149.1兼容),主要用于芯片內(nèi)部測(cè)試?,F(xiàn)在多數(shù)的高級(jí)器件都支持JTAG協(xié)議,如DSP、FPGA、MSP430器件等。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、 TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。 </p><p>  JTAG

69、最初是用來(lái)對(duì)芯片進(jìn)行測(cè)試的,基本原理是在器件內(nèi)部定義一個(gè)TAP(Test Access Port&#0;測(cè)試訪問(wèn)口)通過(guò)專用的JTAG測(cè)試工具對(duì)進(jìn)行內(nèi)部節(jié)點(diǎn)進(jìn)行測(cè)試。JTAG測(cè)試允許多個(gè)器件通過(guò)JTAG接口串聯(lián)在一起,形成一個(gè)JTAG鏈,能實(shí)現(xiàn)對(duì)各個(gè)器件分別測(cè)試。現(xiàn)在,JTAG接口還常用于實(shí)現(xiàn)ISP(In-System rogrammable&#0;在線編程),對(duì)FLASH等器件進(jìn)行編程。 </p><

70、;p>  本系統(tǒng)中的JTAG電路如圖2-10所示。</p><p>  圖2-10 JTAG電路</p><p>  第三章 溫度濕度測(cè)量?jī)x的軟件設(shè)計(jì)</p><p>  3.1系統(tǒng)設(shè)計(jì)的總體流程圖</p><p>  軟件系統(tǒng)總體上采用中斷觸發(fā)與中斷處理的方式,其流程圖如圖3-1所示。</p><p>  圖3

71、-1 軟件系統(tǒng)總體流程圖</p><p>  圖3-2 中斷處理流程圖</p><p>  3.2系統(tǒng)參數(shù)設(shè)置程序設(shè)計(jì)</p><p>  系統(tǒng)參數(shù)設(shè)置程序設(shè)計(jì)的過(guò)程其實(shí)就是對(duì)MSP430內(nèi)部Flash的讀寫(xiě)過(guò)程。MSP430內(nèi)部的Flash模塊由以下幾部分組成:</p><p>  控制寄存器:控制FLASH存儲(chǔ)器的檫除與寫(xiě)入 </p

72、><p>  FLASH存儲(chǔ)器陣列:存儲(chǔ)體 </p><p>  地址數(shù)據(jù)鎖存器:檫除與編程時(shí)執(zhí)行鎖存操作 </p><p>  編程電壓發(fā)生器:產(chǎn)生編程電壓 </p><p>  時(shí)序發(fā)生器:產(chǎn)生檫除與編程所需所有時(shí)序控制信號(hào) </p><p>  寫(xiě)信息段A函數(shù)如下:</p><p>  ///

73、/////////////////// write_SegA (void) /////////////////////////////////////////////////////////////</p><p>  void write_SegA (void)</p><p><b>  {</b></p><p>  char *F

74、lash_ptr; // Flash pointer</p><p>  unsigned int i; // test_busy;</p><p>  Flash_ptr = (char *) 0x1000; // Initialize Flash pointer </p><p>  F

75、CTL1 = FWKEY + ERASE; // Set Erase bit </p><p>  FCTL3 = FWKEY; // Clear Lock bit</p><p>  *Flash_ptr = 0; // Dummy write to erase Flash segment<

76、;/p><p>  FCTL1 = FWKEY + WRT; // Set WRT bit for write operation</p><p>  for (i=0; i<128; i++)</p><p><b>  {</b></p><p>  *Flash_ptr++ = CalTb

77、l[i]; // Write value to flash</p><p><b>  }</b></p><p>  FCTL1 = FWKEY; // Clear WRT bit</p><p>  FCTL3 = FWKEY + LOCK; // set LOCK bit

78、</p><p><b>  }</b></p><p>  ///////////////// End write_SegA (void) /////////////////////////////////////////////////////////////</p><p>  Flash擦除程序如下:</p>&

79、lt;p>  //////////////// Flash_Clr(int *Data_ptr ) //////////////////////////////////////////////////////////////</p><p>  void Flash_Clr(int *Data_ptr )</p><p><b>  {</b></p

80、><p>  FCTL3 = 0x0A500; // Lock = 0</p><p>  FCTL1 = 0x0A502; // ERASE = 1 </p><p>  *Data_ptr=0; // erase Flash segment</p><p>  FCTL1 =

81、 0x0A500; // ERASE = 0</p><p>  FCTL3 = 0x0A510; // Lock = 1 </p><p><b>  }</b></p><p>  /////////////// End Flash_Clr(int *Data_ptr ) /////////////

82、/////////////////////////////////////////////</p><p>  3.3傳感器溫度濕度數(shù)據(jù)讀取程序</p><p>  傳感器溫濕度數(shù)據(jù)讀取程序設(shè)計(jì)其實(shí)就寫(xiě)對(duì)IIC總線的讀寫(xiě)操作。其時(shí)序關(guān)系如圖3-3和圖3-4所示。起始位:SCL=1時(shí),SDA上有下降沿;停止位:SCL=1時(shí),SDA上有上升沿。</p><p>  圖3

83、-3 IIC數(shù)據(jù)傳輸時(shí)序圖</p><p>  圖3-4 IIC總線位傳輸時(shí)序圖</p><p>  傳感器溫度濕度數(shù)據(jù)讀取程序主要包括了以下一些函數(shù)子程序:</p><p>  void SendCommand(char data);//發(fā)送命令</p><p>  void TurnOnSensor(void);//啟動(dòng)傳感器&

84、lt;/p><p>  void TurnOffSensor(void);//停止傳感器</p><p>  void MeasureSTemp(void);//測(cè)量溫度</p><p>  void MeasureSHumi(void);//測(cè)量濕度</p><p>  3.4溫濕度數(shù)據(jù)存儲(chǔ)程序設(shè)計(jì)</p>&l

85、t;p>  傳感器溫濕度數(shù)據(jù)讀取程序設(shè)計(jì)其實(shí)就寫(xiě)對(duì)SPI總線器件AT25256的讀寫(xiě)操作SIP的時(shí)序關(guān)系如圖3-5所示。</p><p>  圖3-5 SPI控制時(shí)序圖</p><p>  存儲(chǔ)1個(gè)數(shù)據(jù)記錄的關(guān)鍵語(yǔ)句如下:</p><p>  ////////////// void ReadOneRecord(void) /////////////////

86、/////////////////////////////////////</p><p>  void ReadOneRecord(void)</p><p><b>  {</b></p><p>  Transmit('['); //[M]為存儲(chǔ)命令</p><p>  Transmit(&

87、#39;M');</p><p>  if (temp <= gRecordNum)// 判斷存儲(chǔ)空間是否夠用</p><p><b>  {</b></p><p>  laddr = (temp-1) * 4;// Calculate the record address</p><p>  l

88、addr+=4096;</p><p>  unTADC = SPI_RDInt(laddr);//調(diào)用SPI總線操作函數(shù)</p><p>  unHADC = SPI_RDInt(laddr+2);</p><p>  conversion_ok = IntToStr(gtx,&strlength,unTADC);</p><p&

89、gt;  Transmit0Str(gtx,strlength);</p><p>  conversion_ok = IntToStr(gtx,&strlength,unHADC);</p><p>  Transmit0Str(gtx,strlength); </p><p><b>  }</b></p>&l

90、t;p>  Transmit(']');</p><p>  Transmit(CR);</p><p><b>  }</b></p><p>  ///////////// End void ReadOneRecord(void) /////////////////////////////////////////

91、////////</p><p>  擦除所有記錄的函數(shù)的關(guān)鍵語(yǔ)句如下:</p><p>  //////////// void EraseAllRecord(void) ///////////////////////////////////////////////////////////</p><p>  void EraseAllRecord(void)&

92、lt;/p><p><b>  {</b></p><p><b>  char i;</b></p><p>  Transmit('[');//[E]為擦除命令</p><p>  Transmit('E');</p><p> 

93、 bRecord=0; // Clear record status bit</p><p>  for(i=2;i<4;i++)</p><p>  Transmit(grx[i]);</p><p>  Transmit(']');</p><p>  gRecordNum=0;</p>

94、<p>  SPI_LongWR(adrGroupNum,0);//調(diào)用SPI總線操作函數(shù)</p><p>  SPI_LongWR_Int(adrRecordNum,0);</p><p>  bMemFull=0;// Clear memory full flag</p><p><b>  }</b><

95、;/p><p>  /////////// End void EraseAllRecord(void) /////////////////////////////////////////////////////</p><p>  3.5 RS232通信程序設(shè)計(jì)</p><p><b>  發(fā)送函數(shù)</b></p><p&

96、gt;  //////////// void Transmit(char dataByte) ////////////////////////////////////////</p><p>  void Transmit(char dataByte)</p><p><b>  {</b></p><p>  while(!(UTXIFG

97、0 & IFG1));</p><p>  TXBUF0 =dataByte; </p><p><b>  }</b></p><p>  ////////// End void Transmit(char dataByte) /////////////////////////////////////</p><

98、;p><b>  接收函數(shù)</b></p><p>  ////////// char Receive(void) //////////////////////////////////////////</p><p>  char Receive(void)</p><p><b>  {</b></p&g

99、t;<p>  unsigned long loop=0; </p><p>  while(!(URXIFG0 & IFG1))</p><p><b>  {</b></p><p><b>  loop++;</b></p><p><b>  NOP(2);&

100、lt;/b></p><p>  if(loop>4000) return 0;// Time out</p><p><b>  }</b></p><p>  return (RXBUF0);</p><p><b>  }</b></p><p>  /

101、////////// End char Receive(void) ////////////////////////////////</p><p>  3.6段式LCD顯示程序設(shè)計(jì)</p><p>  圖3-6 LCD顯示子程序流程圖</p><p>  本系統(tǒng)測(cè)量的溫度和濕度數(shù)據(jù)都是采用3位數(shù)據(jù)顯示,其1位為小數(shù)。系統(tǒng)中的溫度濕度數(shù)據(jù)在運(yùn)算時(shí)為浮點(diǎn)類型,因

102、此,轉(zhuǎn)換的第一步是截取有效的數(shù)字,去除多余的小數(shù)部分,接著轉(zhuǎn)換成3位的字符串,然后把十位、個(gè)位和小數(shù)位從表中查出所需要顯示的段碼,把段碼送入MSP430的內(nèi)部顯存即可,MSP430會(huì)根據(jù)顯存中的內(nèi)容自動(dòng)輸出相應(yīng)的交流電壓波形。</p><p><b>  3.7按鍵程序</b></p><p>  MSP430單片機(jī)指令系統(tǒng)具有的散轉(zhuǎn)指令和C430中的SWITCH語(yǔ)名

103、非常適合對(duì)鍵輸入信息的處理,這些指令可以看成是鍵信息輸入的軟件接口。</p><p>  按鍵或鍵盤(pán)通過(guò)接口與CPU相連,在相應(yīng)軟件的配合下,CPU可以采用中斷或者查詢方式了解有無(wú)按鍵信息輸入并檢查是哪個(gè)鍵按下,然后執(zhí)行該按鍵對(duì)應(yīng)的功能程序。最后再回到原始狀態(tài)。</p><p>  但要求信息快速可靠地輸入計(jì)算機(jī),還有如下的一些實(shí)際問(wèn)題需要解決。</p><p>&

104、lt;b> ?。?)去抖動(dòng)問(wèn)題</b></p><p>  目前常用的按鍵或者鍵盤(pán)均利用機(jī)械觸點(diǎn)的閉合與斷開(kāi)來(lái)產(chǎn)生輸入電信號(hào)。由于機(jī)械觸點(diǎn)的彈性作用,在閉合或者斷開(kāi)瞬間有一個(gè)抖動(dòng)問(wèn)題。抖動(dòng)時(shí)間的長(zhǎng)短取決于觸點(diǎn)的機(jī)械特性.一般為5~10ms.為保證CPU對(duì)一次鍵入只作一次處理,必須采取措施去除抖動(dòng)影響.去抖動(dòng)的方法很多,在單片機(jī)系統(tǒng)一般用軟件方法去除抖動(dòng).這種方法是在編程過(guò)程中當(dāng)判斷有鍵按下時(shí),加

105、入一個(gè)10ms的延時(shí)子程序,然后再次確認(rèn)該按鍵是否被按下.如再次確認(rèn)的結(jié)果仍然處于被按下的狀態(tài).則再做該鍵按下的相應(yīng)處理.這樣就可以避開(kāi)抖動(dòng)時(shí)間段,消除抖動(dòng)影響。</p><p>  (2)對(duì)按鍵進(jìn)行編號(hào)以便于識(shí)別</p><p>  為使CPU識(shí)別出鍵入值或鍵盤(pán)編碼,以便轉(zhuǎn)入相應(yīng)的處理程序。鍵的編碼一般由按鍵必須有不同的鍵入值或鍵盤(pán)編碼,以便轉(zhuǎn)如相應(yīng)的處理程序。鍵的編碼一般由按鍵的硬件連

106、接方式?jīng)Q定。</p><p>  (3)按鍵信息的邏輯處理</p><p>  在實(shí)際應(yīng)用設(shè)計(jì)中,應(yīng)用系統(tǒng)除對(duì)按鍵能作識(shí)別處理外,還要考慮到對(duì)人在操作時(shí)易產(chǎn)生的其他問(wèn)題的邏輯處理。如多個(gè)按鍵同時(shí)被按下一個(gè)鍵功能正在處理的時(shí)候另外按鍵被誤按下、按鍵時(shí)間長(zhǎng)短的影響等,所有這些問(wèn)題一般情況下都能通過(guò)軟件解決。</p><p>  綜合以上,按鍵程序的流程圖如圖3-7所示。

107、</p><p>  圖3-7 按鍵程序流程圖</p><p>  第四章 PC應(yīng)用程序設(shè)計(jì)</p><p>  4.1 Visual Basic介紹</p><p>  Microsoft Visual Basic提供了在Microsoft Windows操作系統(tǒng)下開(kāi)發(fā)功能強(qiáng)大的應(yīng)用程序的迅速、容易的途徑。利用Microsoft Visua

108、l Basic程序設(shè)計(jì)系統(tǒng)能夠創(chuàng)建充分利用圖形用戶界面的功能強(qiáng)大而實(shí)用的應(yīng)用程序。</p><p>  Microsoft Visual Basic提供了適合于圖形用戶界面開(kāi)發(fā)的各個(gè)方面的工具,從而使得程序的開(kāi)發(fā)更具有潛力。以圖形方式繪制對(duì)象是為應(yīng)用程序創(chuàng)建圖形用戶界面的基本方法。通過(guò)這些對(duì)象屬性的設(shè)置,可以改變這些對(duì)象的外觀和行為,從而實(shí)現(xiàn)用戶所需要的圖形用戶界面。然后現(xiàn)為界面中出現(xiàn)的控件事件的響應(yīng)編制代碼,使

109、得這種界面用戶的行為能夠作出反應(yīng)。</p><p>  4.2 VB串口通信控件MSComm介紹</p><p>  在這系統(tǒng)的PC端應(yīng)用程序設(shè)計(jì)過(guò)程中,主要用到了VB串口通信控件MSComm。MSComm控件提供下列兩種處理通信的方式:事件驅(qū)動(dòng)方式和查詢方式。</p><p>  事件驅(qū)件方式是處理串行端口交互作用的一種非常有效的方法。事件驅(qū)動(dòng)方式的優(yōu)點(diǎn)是程序響應(yīng)

110、及時(shí),可靠性高。每個(gè)MSComm控件對(duì)應(yīng)著一個(gè)串行端口。如果應(yīng)用程序需要訪問(wèn)多個(gè)串行端口,必須使用多個(gè)MSComm控件。查詢方式實(shí)質(zhì)上還是事件驅(qū)動(dòng),但在有些情況下,這種方式顯得更為便捷。在程序的每個(gè)關(guān)鍵功能之后,可能通過(guò)檢查Comm Event屬性的值來(lái)查詢事件和錯(cuò)誤。如果應(yīng)用程序較小,這種方法可能是更可取的。</p><p>  MSComm控件有很多重要的屬性,其中的主要的屬性有如下幾個(gè):</p>

111、<p>  (1)CommPort屬性,設(shè)置并返回通信端口號(hào),類型為Integer。設(shè)計(jì)時(shí),CommPort屬性值可以設(shè)置成從1-16的任何數(shù)(缺省值為1)。</p><p>  (2)Settings屬性,設(shè)置并返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位參數(shù)。屬性值由4個(gè)設(shè)置值組成,其格式為:“BBBB,P,D,S”,其中,BBBB為波特率,P為奇偶校驗(yàn),D為數(shù)據(jù)位數(shù),S為停止位數(shù)。</p>

112、<p> ?。?)PortOpen屬性,設(shè)置或返回串口狀態(tài),Boolean類型。</p><p> ?。?)Input屬性,從接收緩沖區(qū)讀取數(shù)據(jù),類型為Variant。它從輸入緩沖區(qū)中刪除一組字符。刪除字符的個(gè)數(shù)由InputLen屬性決定,返回值的類型由InputMode屬性決定。</p><p> ?。?)InputMode屬性,讀取或設(shè)置從接收緩沖區(qū)讀取數(shù)據(jù)的格式,類型為

113、Integer;InputMode屬性值為comInputModeText(0)時(shí)表示以文體格式(ASCII)取回?cái)?shù)據(jù),為comInputModeBinary(1)時(shí)表示二進(jìn)制格式(BIN)取回?cái)?shù)據(jù)。</p><p> ?。?)InBufferCount屬性,讀取接收緩沖區(qū)中的字節(jié)數(shù),類型為Integer。</p><p> ?。?)InBufferSize屬性,讀取或設(shè)置接收緩沖區(qū)的大小

114、,類型為Integer。</p><p>  (8)Output屬性,向發(fā)送緩沖區(qū)寫(xiě)入數(shù)據(jù),類型為Variant。</p><p> ?。?)OutBufferCount屬性,讀取發(fā)送緩沖區(qū)中的字節(jié)數(shù),類型為Integer。可以通過(guò)將該屬性設(shè)為0來(lái)清空緩沖區(qū)。</p><p>  (10)OutBufferSize屬性,讀取或設(shè)置發(fā)送緩沖區(qū)的大小,類型為Intege

115、r。</p><p> ?。?1)RTHreshoLd屬性,設(shè)置在OnComm事件激活前接收緩沖器收到的字節(jié)數(shù)。當(dāng)接收到的字節(jié)數(shù)達(dá)到RTHreshoLd設(shè)置的字?jǐn)?shù)時(shí),就會(huì)引起OnComm事件。</p><p> ?。?2)CommEvent屬性,讀取或設(shè)置串口事件,類型為Integer,常見(jiàn)的串口事件如表4-1如示。</p><p><b>  表4-1

116、串口事件</b></p><p>  MSComm控件事件。將MSComm控件加入Visual Basic項(xiàng)目中后,雙擊該控件可生成控件:Private Sub MSComm Control_OnComm[IndexAsInteger]。當(dāng)CommEvent屬性發(fā)生變化時(shí),表示發(fā)生了一個(gè)能信或錯(cuò)誤事件。參數(shù)Index類型為Integer,它唯一地標(biāo)識(shí)控件組中的一個(gè)控件。如果控件不屬于控件組,則不提供該

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論