版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 1 概述</b></p><p><b> 1.1 技術(shù)背景</b></p><p> 近年來盜竊、入室搶劫財物的現(xiàn)象日益嚴(yán)重,社會治安涉及到每個人的切身利益,現(xiàn)階段民居和樓宇的安全現(xiàn)狀不容樂觀,樓宇安檢領(lǐng)域產(chǎn)品的需求日益增加。目前市場上生產(chǎn)企業(yè)的智能安檢電子產(chǎn)品的產(chǎn)品種類繁多,它們的特點是功能強大,但是價格
2、昂貴、體積大、操作維護(hù)復(fù)雜。所以,目前在國內(nèi)大多數(shù)家庭都沒有配置實用的樓宇安檢設(shè)備。</p><p><b> 1.2 選題意義</b></p><p> 針對上述原因,我們設(shè)計了一種基于MSP430單片機的智能樓宇安檢系統(tǒng)。其原理是:利用紅外傳感器現(xiàn)場監(jiān)控,并通過異常數(shù)據(jù)信號無線傳輸,送至MSP430單片機進(jìn)行數(shù)據(jù)處理、分析及存儲。對檢測到的異常信號發(fā)出報警,
3、提醒用戶進(jìn)行處理。它采用無線遙傳技術(shù),安裝操作也極為方便。本設(shè)計定位是小型應(yīng)用領(lǐng)域,非常適合家庭安保應(yīng)用。設(shè)計實現(xiàn)了多路實時監(jiān)測功能、異常記錄及回放功能以及人性化的人機對話方式、液晶顯示和語音提示。</p><p> 基于目前普通家庭對安全技術(shù)的迫切需求,其市場需求將十分龐大。如果對其進(jìn)行商業(yè)化運作,必定能夠產(chǎn)生巨大的社會效益和經(jīng)濟(jì)效益。</p><p><b> 1.3
4、功能</b></p><p> 多路巡回、實時監(jiān)測功能。</p><p> 異常事件顯示、提示功能。</p><p> 異常事件時間、次數(shù)記錄及回放功能。</p><p> 精密時鐘及時鐘調(diào)整功能。</p><p> 紅外檢測及信號調(diào)理功能。</p><p> 數(shù)據(jù)編碼、
5、調(diào)制、無線遙傳及解碼功能。</p><p> 語音提示及音量鍵控功能。</p><p><b> 2 方案設(shè)計</b></p><p> 2.1 信號流程圖</p><p> 圖2-1 信號流程圖</p><p> 原理說明:信號采集單元是將有紅外傳感器感應(yīng)到的模擬信號經(jīng)過信號處理
6、單元將模擬信號轉(zhuǎn)換為主控單元需要的矩形脈沖,主控單元對信號進(jìn)行計算等處理,再將結(jié)果顯示出來。</p><p> 2.2 整體結(jié)構(gòu)框圖</p><p> 圖2-2 檢測、編碼及發(fā)射單元</p><p> 圖2-3 接收、解碼及主控單元</p><p><b> 原理說明:</b></p><p
7、> 本系統(tǒng)由兩部分組成:檢測、編碼、發(fā)射單元和接收、解碼、主控單元。</p><p> 圖2-2中,分布在多個監(jiān)測點的熱釋電傳感器,檢測人體信號,經(jīng)信號調(diào)理、整形、數(shù)據(jù)編碼,而后通過射頻調(diào)制并發(fā)送,實現(xiàn)數(shù)據(jù)遙測、遙傳。</p><p> 圖2-3中,接收模塊接收各監(jiān)測點的遙傳數(shù)據(jù)信號,經(jīng)放大、整形后,送至PT2272解碼模塊,解碼后的數(shù)據(jù)信號送至主控單元,MCU掃描、分析各測點
8、狀態(tài),并對異常事件進(jìn)行處理,包括:狀態(tài)漢顯、語音提示、事件時間、次數(shù)記錄等功能。</p><p> 本系統(tǒng)人機對話采用TI公司的微功耗16位單片機—MSP430系列芯片,其它大部分外圍電路,如電源模塊、放大器、基準(zhǔn)電源、通訊模塊(485)等也采用TI公司產(chǎn)品,另外,還有其它外圍電路,如LCD、時鐘、語音、功放等模塊,構(gòu)成主控單元,實現(xiàn)強大的工業(yè)測控功能。</p><p> 本機人機對話
9、采用鍵盤、LCD漢字顯示和語音提示方式,方便且極具人性化。</p><p> 2.3 主控單元連接圖</p><p> 我所完成的是主控單元的軟件設(shè)計,其連接圖如下:</p><p> 圖2-4 主控單元框圖</p><p><b> 原理說明:</b></p><p> 主控單元的
10、核心部件是MSP430F247單片機。由硬件電路處理好的矩形脈沖信號從MSP430F247單片機的端口輸入,MSP430F247單片機對矩形脈沖信號進(jìn)行處理。所完成的功能有:</p><p> 檢測異常信號,顯示發(fā)生的時間和次數(shù),發(fā)出語音提示報警,并存儲在單片機的FLASH內(nèi)。</p><p> 通過鍵盤操作,可以查看異常信號發(fā)生的時間和次數(shù),還可以清除這些信息,并且能設(shè)置時間和更改音
11、量的大小。</p><p> MSP430F2XX介紹</p><p> MSP430F2XX的時鐘模塊</p><p><b> 時鐘輸入源:</b></p><p> MSP430F157基礎(chǔ)時鐘模塊有3個時鐘輸入源:</p><p> ?。?)LFXT1CLK:低頻/高頻時鐘源。&l
12、t;/p><p> 可以外接32768Hz的時鐘芯片或頻率為450kHz~8MHz的標(biāo)準(zhǔn)晶體或共振器。</p><p> ?。?)XT2CLK: 高頻時鐘源。</p><p> 需要外接兩個震蕩電容器??梢酝饨宇l率為450kHz~8MHz的標(biāo)準(zhǔn)晶體、共振器和外部時鐘輸入。較常用的晶體振蕩器是8MHz的。</p><p> ?。?)DCOCL
13、K: 內(nèi)部數(shù)字可控制的RC振蕩器。</p><p><b> 時鐘信號:</b></p><p> MSP430單片機時鐘模塊提供3個時鐘信號以供給片內(nèi)各部電路使用,這3個時鐘信號分別是:</p><p> ?。?)ACLK: 輔助時鐘信號。</p><p> ACLK是從LFXT1CLK信號由1/2/4/8分
14、頻器分頻后所得到的。有BCSCTL1寄存器設(shè)置DIVA相應(yīng)位來決定分頻因子。ACLK可提供給CPU外圍功能模塊作時鐘信號使用。</p><p> ?。?)MCLK: 主時鐘信號。</p><p> MCLK是由3個時鐘源所提供的。它們分別是:LFXT1CLK、XT2CLK和DCO時鐘源信號。MCLK主要用于MCU和相關(guān)系統(tǒng)模塊作時鐘。同樣可設(shè)置相關(guān)寄存器來決定分頻因子及相關(guān)的設(shè)置。&l
15、t;/p><p> (3)SMCLK: 子系統(tǒng)時鐘。</p><p> SMCLK由2個時鐘源信號提供,它們分別是XT2CLK和DCO。同樣可設(shè)置相關(guān)寄存器來決定分頻因子及相關(guān)的設(shè)置。</p><p> 當(dāng)微處理器發(fā)生PUC復(fù)位后,MCLK和SMCLK配置為DCO時鐘模塊(默認(rèn)值為800kHz),ACLK配置為LFXT1時鐘模塊,并且為低頻模式。修改DCOCTL
16、、BCSCTL1和BCSCTL2寄存器的值,可以對系統(tǒng)和各個模塊的時鐘進(jìn)行設(shè)置。</p><p><b> 基本定時器</b></p><p> 所有的MSP430F2XX系列都有一個基本定時器,它由兩個8位的計數(shù)器組成。這兩個8為的計數(shù)器也可以級聯(lián)成一個16位的計數(shù)器?;径〞r器不僅可以向液晶模塊提供分時信號,還可以產(chǎn)生低頻時間間隔中斷。由于基本定時器沒有默認(rèn)狀
17、態(tài),所以在使用之前必需正確設(shè)置基本定時器的控制寄存器BTCTL以及計數(shù)器1和計數(shù)器2,才能保證基本定時器的正常工作。</p><p><b> 定時器A工作原理</b></p><p> TIMER_A寄存器</p><p> ?。?)TACTL 控制寄存器。</p><p> TACTL各位的定義如下:</
18、p><p> SSEL1,SSEL0:選擇定時器進(jìn)入輸入分頻器的時鐘源。</p><p> 00 輸入時鐘源為TACLK,用特定的外部引腳信號;</p><p> 01 輸入時鐘源為ACLK,用輔助時鐘;</p><p> 10 輸入時鐘源為MCLK,用系統(tǒng)時鐘;</p><p> 11 輸入時鐘
19、源為INCLK。</p><p> ID1,ID0:輸入分頻選擇。</p><p><b> 00 不分頻;</b></p><p><b> 01 2分頻;</b></p><p><b> 10 4分頻;</b></p><p>
20、<b> 11 8分頻。</b></p><p> MC1,MC0:計數(shù)模式控制位。</p><p><b> 00 停止模式;</b></p><p> 01 增計數(shù)模式;</p><p> 10 連續(xù)計數(shù)模式;</p><p> 11 增/減計數(shù)模
21、式。</p><p> ?。?)TAR 16為計數(shù)器。</p><p> ?。?)CCTLx 捕獲/比較控制寄存器。</p><p> 該寄存器各位定義如下:</p><p> CM1~0:選擇捕獲模式。</p><p><b> 00禁止捕獲模式;</b></p>&l
22、t;p><b> 01上升沿捕獲;</b></p><p><b> 10下降沿捕獲;</b></p><p> 11上升沿與下降沿都捕獲。</p><p> CCIS1~0:在捕獲模式中用來定義提供捕獲事件的輸入源。</p><p><b> 選擇CCIxA;</b
23、></p><p><b> 選擇CCIxB;</b></p><p><b> 選擇GND;</b></p><p><b> 選擇Vcc。</b></p><p> SCS:選擇捕獲信號與定時時鐘同步、異步關(guān)系。</p><p><
24、;b> 異步捕獲;</b></p><p><b> 同步捕獲。</b></p><p> CAP:選擇捕獲模式還是比較模式。</p><p><b> 比較模式;</b></p><p><b> 捕獲模式。</b></p><
25、p> CCIEx:捕獲/比較模塊中斷允許位。</p><p><b> 禁止中斷;</b></p><p><b> 允許中斷。</b></p><p> CCIFGx:捕獲比較中斷標(biāo)志。</p><p> 捕獲模式:寄存器CCRx捕獲了定時器TAR值時置位。</p>
26、<p> 比較模式:定時器TAR值等于寄存器CCRx值時置位。</p><p> ?。?)CCRx 捕獲/比較寄存器</p><p> 在捕獲方式,當(dāng)滿足捕獲條件,硬件自動將計數(shù)器TAR數(shù)據(jù)寫入該寄存器。其中CCR0經(jīng)常用作周期寄存器。</p><p><b> 捕獲/比較模塊</b></p><p>
27、 TIMER_A有多個相同的捕獲/比較模塊,為實時處理提供靈活的手段,每個模塊都可用于捕獲事件發(fā)生的時間或產(chǎn)生定時間隔。當(dāng)捕獲/比較模塊共有兩種模式:捕獲模式和比較模式。本系統(tǒng)主要用捕獲模式。當(dāng)CCTLx中的CAPx=1,該模塊工作在捕獲模式。這時如果在選定的引腳上發(fā)生設(shè)定的脈沖觸發(fā)沿(上升沿、下降沿或任意跳變),則MSP430會通過硬件自動將計數(shù)器TAR中的值寫入到CCRx中。每個捕獲/比較寄存器都能被軟件用于時間標(biāo)記,可用于各種目的
28、。如果是周期信號,則兩次上升沿或者兩次下降沿之間的時間即為信號的周期,上升沿和下降沿之間的時間則為信號的脈寬(高電平或者低電平的時間長度)。還可以測量軟件程序所用時間、測量硬件事件之間的時間、測量系統(tǒng)頻率。當(dāng)捕獲完成后,中斷標(biāo)志位CCIFGx被置位。如果總的中斷允許位GIE允許,相應(yīng)的中斷允許位CCIEx也允許,則將產(chǎn)生中斷請求。</p><p> 3 各功能模塊程序設(shè)計</p><p&g
29、t; 3.1 總體程序流程圖及原理說明</p><p> 圖3-1 總體程序流程圖</p><p> 系統(tǒng)接通電源后就進(jìn)行系統(tǒng)初始化,包括關(guān)閉看門狗,系統(tǒng)時鐘初始化、端口初始化、LCD初始化,外設(shè)時鐘初始化。初始化完成后進(jìn)入主環(huán)路延時,當(dāng)接到上位機的開始信號時,時鐘、AD開始工作,AD采樣頻率由時鐘決定,每到一個時鐘中斷,AD采一個點,將采到的數(shù)據(jù)發(fā)送到單片機內(nèi),系統(tǒng)開始逐步檢測
30、4路信號是否異常。當(dāng)有異常信號出現(xiàn),系統(tǒng)把每路異常信號發(fā)生的時間、次數(shù)記錄到單片機的FLASH內(nèi)。完成后可以進(jìn)行模式操作、功能操作、增值減值操作等。各操作都有對應(yīng)的子程序及其流程圖。當(dāng)接收到上位機的結(jié)束信號時,時鐘、AD停止工作。</p><p> 3.2 初始化模塊 </p><p> 3.2.1 初始化總體流程及說明</p><p> 3-2 初始
31、化流程圖</p><p><b> 初始化原理說明:</b></p><p> 系統(tǒng)接通電源后就進(jìn)行系統(tǒng)初始化,包括關(guān)閉看門狗,系統(tǒng)時鐘初始化、端口初始化、FLASH初始化,外設(shè)時鐘初始化。</p><p><b> 初始化程序:</b></p><p> void main(void)&l
32、t;/p><p> { WDTCTL=WDTPW+WDTHOLD; //關(guān)狗 </p><p> run_xt2(); //時鐘初始化 </p><p> port_in
33、it(); //端口初始化</p><p> LcdInit0(); //lcd初始化</p><p> InitSys(); //FLASH初始化</p><p> fflash_init();</p><p><b> }</b>
34、</p><p> 3.2.2 系統(tǒng)時鐘初始化模塊程序及說明</p><p> 本系統(tǒng)選擇的時鐘源工作模式為:使用XT2振蕩器,MCLK選擇使用XT2CLK,SMCLK選擇使用XT2CLK </p><p> 根據(jù)本系統(tǒng)要求,設(shè)置相應(yīng)控制字,其時鐘初始化函數(shù)如下</p><p> void run_xt2(void)</p&g
35、t;<p><b> { </b></p><p> unsigned char i; </p><p> BCSCTL1 &= ~XT2OFF; //打開XT2振蕩器</p><p><b> do </b></p><p><
36、;b> {</b></p><p> IFG1 &= ~OFIFG; //清除振蕩器失效標(biāo)志</p><p> for (i = 0xFF; i > 0; i--); //延時,等待XT2起振 </p><p><b> }</b></p>
37、;<p> while ((IFG1 & OFIFG) != 0); //判斷XT2是否起振 </p><p> BCSCTL2 |= SELM1+SELS; // MCLK = SMCLK = XT2 (safe)</p><p><b> }</b></p><p><b>
38、 端口初始化模塊程序</b></p><p> 端口初始化設(shè)置各端口是輸出還是輸入,輸出高電平還是低電平。</p><p> void port_init(void)</p><p><b> {</b></p><p> P1DIR|=BIT1+BIT2+BIT3; </p><
39、p> P1DIR&=~BIT4;</p><p> P1DIR&=~BIT0;</p><p> P1OUT|=BIT1+BIT2+BIT3;</p><p> P2DIR&=0x40;//p2.0 p2.1 p2.2 p2.3,p2.4 p2.5 p2.7為輸出口</p><p> P2OUT=0x0
40、0;</p><p> P3DIR|=BIT1; </p><p> P4DIR=0xFF; </p><p> P4OUT=0x00;</p><p> P5DIR|=BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6;</p><p> P5DIR&=~BIT7;</p
41、><p> P5OUT=0x00;</p><p> P6DIR|=BIT0+BIT3+BIT4+BIT5+BIT6+BIT7;</p><p> P6DIR&=~BIT2;</p><p> P6DIR&=~BIT1;</p><p> P6OUT=0X00; </p><
42、p><b> }</b></p><p> FLASH初始化程序</p><p> 說明:讀OX10B8中的信息給ho,給FLASH賦初始值0</p><p><b> 程序代碼片段如下:</b></p><p> void fflash_init(void)</p>
43、<p><b> { </b></p><p> unsigned char ho[7];</p><p> read_SegA1( ho, 0X10b8);</p><p> n1=ho[0]; n2=ho[1]; n3=ho[2]; n4=ho[3];</p><p> if(n1==0xff
44、) n1=0;</p><p> if(n2==0xff) n2=0;</p><p> if(n3==0xff) n3=0;</p><p> if(n4==0xff) n4=0;</p><p><b> }</b></p><p> 定時器A初始化程序及說明</p>
45、<p> 說明:本系統(tǒng)采用TIMER_A中的捕獲/比較寄存器CCR0,需要設(shè)置的工作方式有:TIMER_A的輸入時鐘源選為輔助時鐘ACLK,計數(shù)模式選為連續(xù)計數(shù)模式。捕獲模式選為下降沿捕獲,提供捕獲事件的輸入源為CCI0B,同步捕獲,捕獲模式,允許中斷。按此要求設(shè)定TIMER_A中CCR0控制寄存器TACTL和捕獲/比較控制寄存器CCTL0,其初始化函數(shù)如下</p><p> void timerA
46、_init(void)</p><p><b> {</b></p><p> TACTL = TASSEL1 + TACLR+ID_3; // SELECT MCLK, clear TAR 8分頻</p><p> CCTL0 = CCIE; // CCR0 interrupt enabled&
47、lt;/p><p> CCR0 = 50000; //中斷時間為50ms(TBCCR0/XT2) </p><p> TACTL|= MC0; // Start Timer_A in continuous mode</p><p><b> }</b></p>
48、<p> 3.3 異常檢測處理模塊流程圖及原理說明</p><p><b> 流程圖:</b></p><p> 圖3-3 異常檢測流程圖</p><p> 原理說明:當(dāng)有異常信號被檢測到,四路紅外傳感器就開始逐一檢測,并對檢測到的信號進(jìn)行處理。</p><p><b> 異常檢測程
49、序片段:</b></p><p> { p2h_value=p2hReadKey(); //</p><p> switch (p2h_value)</p><p> {case p2_4SMW:WriteCommand(0x01);p_4way();//*****四路檢測
50、 break;</p><p> case p2_5SMW:WriteCommand(0x01);p_3way();//*****三路檢測 break;</p><p> case p2_7SMW:WriteCommand(0x01);p_1way();//***一路檢測 bre
51、ak; </p><p> default: break;} </p><p> p1h_value=p1hReadKey();</p><p> if (p1h_value==p1_4SMW) {WriteCommand(0x01);p_2way();}</p><p> } </p
52、><p> 3.4 主環(huán)路操作模塊流程圖及原理說明</p><p><b> 流程圖:</b></p><p> 說明:沒有異常信號被檢測到時</p><p> 就可以進(jìn)行模式、功能、增值、</p><p> 減值等操作,然后就會到正常檢測</p><p><
53、b> 程序片段:</b></p><p> p2l_value=p2lReadKey(); //檢測,有鍵按下并松開,返回一個鍵值.</p><p> switch (p2l_value) //對鍵值進(jìn)行處理.采switch語法結(jié)構(gòu)查詢</p><p><b> {</b></p><p>
54、case p2_0SMW:mod_op(); //p2.0 模式 鍵按下 </p><p><b> break;</b></p><p> case p2_1SMW:fun_op(); //p2.1 功能 鍵按下 </p><p><b> break;<
55、/b></p><p> case p2_2SMW:inc_op();//p2.2 “+” 鍵按下</p><p><b> break;</b></p><p> case p2_3SMW:dec_op();//p2.3 “—” 鍵按下</p><p><b> break;</b&g
56、t;</p><p> default:break;//調(diào)用默認(rèn)處理程序4</p><p><b> }</b></p><p> 圖3-4 主環(huán)路操作流程圖</p><p> 3.5 模式操作模塊流程圖及原理說明</p><p><b> 操作模式流程圖:</b>
57、;</p><p> 圖3-5 操作模式流程圖</p><p><b> 操作模式原理說明:</b></p><p> 只要四路傳感器都沒有異常信號,可以進(jìn)行模式操作。經(jīng)過10MS的延時后,判斷P2.0是否為0,當(dāng)P2.0為0進(jìn)入下一步操作。首先置模式位,同時模式計數(shù)器加1,然后判斷模式計數(shù)器的值并根據(jù)其進(jìn)行相應(yīng)的操作。操作如下:<
58、;/p><p> 模式計數(shù)器計數(shù)值為1:置檢查位;檢查顯示;語音提示</p><p> 模式計數(shù)器計數(shù)值為2:清檢查位;置時鐘設(shè)置位;時鐘設(shè)置顯示;語音提示</p><p> 模式計數(shù)器計數(shù)值為3:清時鐘設(shè)置位;置音量設(shè)置位;音量設(shè)置顯示;語音提示</p><p> 模式計數(shù)器計數(shù)值為4:清音量位;置清除位;清記錄顯示;語音提示</
59、p><p> 模式計數(shù)器計數(shù)值為其它:清記錄位;清模式位;清模式計數(shù)器</p><p> 模式操作軟件設(shè)計可以分為4個主要功能模塊:檢查顯示模塊;時鐘設(shè)置顯示模塊;音量設(shè)置顯示模塊;清記錄顯示模塊。各功能模塊的程序如下:</p><p><b> 模式操作程序:</b></p><p> void mod_op(vo
60、id)</p><p> { switch(MODCNT) </p><p> { case 1:{voice(0x00); //*****檢查顯示模塊程序*****//</p><p> LineDisp(2,str1);LineDisp(3,str0);</p><p> CHKSET=1;}<
61、/p><p><b> break;</b></p><p> case 2:{voice(0x00);</p><p> LineDisp(2,str2);LineDisp(3,str0);//*****時鐘設(shè)置顯示模塊程序*****//</p><p><b> CHKSET=0;</b>&
62、lt;/p><p> CLKSET=1; }</p><p><b> break;</b></p><p> case 3:{voice(0x00);</p><p> LineDisp(2,str3);LineDisp(3,str0);//*****音量設(shè)置顯示模塊程序*****//
63、</p><p><b> CLKSET=0;</b></p><p><b> VOLSET=1;</b></p><p><b> } </b></p><p><b> break;</b></p><p> cas
64、e 4:{voice(0x00);</p><p> LineDisp(2,str4);LineDisp(3,str0);//*****清記錄模顯示塊程序*****//</p><p><b> VOLSET=0;</b></p><p><b> EARSET=1;</b></p><p>
65、<b> } </b></p><p><b> break;</b></p><p> default:{ROOL_OP=1;</p><p><b> break;</b></p><p><b> }}}</b></p>&
66、lt;p> 3.6 功能選擇程序流程圖及原理說明</p><p><b> 功能選擇流程圖:</b></p><p> 圖3-6 功能選擇流程圖</p><p><b> 功能操作原理說明:</b></p><p> 在模式操作的基礎(chǔ)上進(jìn)入功能子程序,也是先延時10MS。然后判斷
67、模式位是否為1(即判斷是否正在進(jìn)行模式操作),當(dāng)模式位為0才能進(jìn)入下一步。再判斷P2.1是否為0,當(dāng)P2.1為0進(jìn)行功能選擇操作,然后根據(jù)功能類型進(jìn)行相應(yīng)的操作。操作如下:</p><p> 檢查操作:檢查操作;語音提示</p><p> 時鐘設(shè)置:時鐘設(shè)置;語音提示</p><p> 音量調(diào)整:音量調(diào)整;語音提示</p><p>
68、清除記錄:清除操作;語音提示 </p><p> 同樣,功能操作程序設(shè)計也可以分為四個功能模塊:檢查操作模塊;時鐘設(shè)置操作模塊;音量調(diào)整操作模塊;清除記錄操作模塊。各模塊程序段如下:</p><p><b> 功能操作程序:</b></p><p><b> 檢查操作模塊程序:</b></p><
69、p> void check(void)</p><p> { LineDisp(3,str02);</p><p> WriteCommand(0x01);</p><p> LineDisp(2,str);</p><p> Delay(1000000);</p><p> WriteComma
70、nd(0x01);</p><p> LineDisp(3,str00);</p><p> LineDisp(2,str01);</p><p><b> return; </b></p><p><b> }</b></p><p> 時鐘設(shè)置操作模塊程序:&l
71、t;/p><p> void clock(void)</p><p> { FUNCNT++;//*****功能計數(shù)器自加1*****//</p><p> switch(FUNCNT%5)</p><p> { case 1:LineDisp(2,str1);LineDisp(3,str00);//*****月調(diào)整操作*****//&
72、lt;/p><p><b> MON_OP=1;</b></p><p><b> break;</b></p><p> case 2:LineDisp(2,str2);LineDisp(3,str02); //*****日調(diào)整操作*****//</p><p> MON_OP=0; <
73、/p><p><b> DAY_OP=1;</b></p><p><b> break;</b></p><p> case 3:LineDisp(2,str3);LineDisp(3,str03); //*****時調(diào)整操作*****//</p><p><b> DAY_OP=0
74、;</b></p><p><b> HOU_OP=1;</b></p><p><b> break;</b></p><p> case 4:LineDisp(2,str4);LineDisp(3,str04); //*****分調(diào)整操作*****//</p><p><
75、b> HOU_OP=0;</b></p><p><b> MIN_OP=1;</b></p><p><b> break;</b></p><p><b> }</b></p><p> 音量調(diào)整操作模塊程序:</p><p&
76、gt; void volume(void)</p><p><b> { …………</b></p><p> FUNCNT++; //*****功能計數(shù)器自加1*****//</p><p> switch (FUNCNT%5) </p><p> { case 1:lv_voi();Line
77、Disp(2,str4);voice(0x20);LineDisp(3,str00); //大音量調(diào)整操作//</p><p><b> break;</b></p><p> case 2:mv_voi();LineDisp(2,str3);voice(0x28);LineDisp(3,str00); //中音量調(diào)整操作//</p><p&g
78、t;<b> break; </b></p><p> case 3:sv_voi();LineDisp(2,str2);voice(0x30);LineDisp(3,str00); //小音量調(diào)整操作//</p><p><b> break;</b></p><p> case 4:nv_voi();LineD
79、isp(2,str1);voice(0x38);LineDisp(3,str00); //靜音調(diào)整操作//</p><p><b> break;</b></p><p> default:FUNCNT=0;LineDisp(2,str5);LineDisp(3,str01); </p><p><b> break;</
80、b></p><p><b> }</b></p><p><b> }</b></p><p> 清除記錄操作模塊程序:</p><p> void earse(void)</p><p><b> {………… </b></p&g
81、t;<p> if (DEL_OP>=2) {LineDisp(2,str1);//*****清除完畢提示****//</p><p> Delay(2000000);</p><p> else {LineDisp(2,str00);//*****確認(rèn)刪除?*****//</p><p> LineDisp(3,str01);//***
82、**刪除提示*****//</p><p><b> }</b></p><p><b> }</b></p><p> 3.7 時鐘調(diào)整程序流程圖及原理說明</p><p> 時鐘增(減)值流程圖:</p><p> 圖3-7 操作模式流程圖</p>
83、;<p> 時鐘增減值原理說明:</p><p> 在功能操作的基礎(chǔ)上進(jìn)入時鐘增減值子程序。也是先延時10MS。然后判斷功能操作上是否時鐘調(diào)整,要進(jìn)行時鐘調(diào)整操作再判斷P2.2是否為0,P2.2為0經(jīng)過調(diào)整緩加1才能進(jìn)入時鐘的各項調(diào)整.調(diào)整操作如下:</p><p> 月調(diào)整:月調(diào)整操作;語音提示</p><p> 日調(diào)整:日調(diào)整操作;語音提示
84、</p><p> 時調(diào)整:時調(diào)整操作;語音提示</p><p> 分調(diào)整:分調(diào)整操作;語音提示</p><p> 時鐘增減值程序同樣可以分為四個功能模塊:月調(diào)整操作模塊;日調(diào)整操作模塊;時調(diào)整操作模塊;分調(diào)整操作模塊。各部分程序片段如下:</p><p><b> 時鐘增減值程序:</b></p>
85、<p> 月調(diào)整操作模塊程序:</p><p> void setime1(void) </p><p> { char *str=" 月調(diào)整: ";</p><p><b> b++;</b></p><p> if(b>12)
86、 //月份控制條件</p><p><b> b=1; </b></p><p> UpData[0] =((UpData1[b]&0x70)>>4)+0x30; //月份的十位</p><p> UpData[1] = (UpData1[b]&0x0f)+0x30;
87、 //月份的個位</p><p> WriteCommand(0x88);</p><p> LineDisp( 2,str); </p><p> WriteCommand(0x8D); //寫數(shù)據(jù)</p><p> for(i=0;i<2;i++)
88、</p><p><b> {</b></p><p> WriteOperate(UpData[i],1); //寫數(shù)據(jù)</p><p><b> } </b></p><p><b> }</b></p><p>
89、; 日調(diào)整操作模塊程序:</p><p> void setime2(void) </p><p> { char *str="日期調(diào)整: ";</p><p><b> b++;</b></p><p><b> if(b>31)</b></p&
90、gt;<p><b> b=1; </b></p><p> UpData[0] =((UpData1[b]&0x70)>>4)+0x30; </p><p> UpData[1] = (UpData1[b]&0x0f)+0x30;</p><p> WriteCommand(0x88);&
91、lt;/p><p> LineDisp( 2,str);</p><p> WriteCommand(0x8D); //寫數(shù)據(jù)</p><p> for(i=0;i<2;i++)</p><p> WriteOperate(UpData[i],1); //寫數(shù)據(jù) </p><p><b>
92、}</b></p><p> 時調(diào)整操作模塊程序:</p><p> void setime3(void) </p><p> { char *str=" 時調(diào)整: ";</p><p><b> b++;</b></p><p><b&g
93、t; if(b>23)</b></p><p> b=0; </p><p> UpData[0] =((UpData1[b]&0x70)>>4)+0x30; </p><p> UpData[1] = (UpData1[b]&0x0f)+0x30;</p><p&g
94、t; WriteCommand(0x88);</p><p> LineDisp( 2,str);</p><p> WriteCommand(0x8D); //寫數(shù)據(jù)</p><p> for(i=0;i<2;i++)</p><p> WriteOperate(UpData[i],1); //寫數(shù)據(jù)
95、 </p><p><b> }</b></p><p> 分調(diào)整操作模塊程序:</p><p> void setime4(void) </p><p><b> { b++;</b></p><p><b> if(b>59)
96、</b></p><p><b> b=0; </b></p><p> UpData[0] =((UpData1[b]&0x70)>>4)+0x30; </p><p> UpData[1] = (UpData1[b]&0x0f)+0x30;</p><p> Write
97、Command(0x88);</p><p> LineDisp( 2,str);</p><p> WriteCommand(0x8D); //寫數(shù)據(jù)</p><p> for(i=0;i<2;i++)</p><p> WriteOperate(UpData[i],1); //寫數(shù)據(jù)</p><p>
98、<b> }</b></p><p> 3.8 音量鍵控程序流程圖及原理說明</p><p><b> 音量鍵控流程圖:</b></p><p> 圖3-8 音量鍵控流程圖</p><p><b> 音量鍵控原理說明:</b></p><p&g
99、t; 在功能操作基礎(chǔ)上進(jìn)入音量鍵控子程序。首先將音量計數(shù)器置1,然后逐步加1進(jìn)行各種音量操作。操作如下:</p><p> 音量計數(shù)器為1:大音量設(shè)置;語音提示</p><p> 音量計數(shù)器為2:中音量設(shè)置;語音提示</p><p> 音量計數(shù)器為3:小音量設(shè)置;語音提示</p><p> 音量計數(shù)器為4:靜音設(shè)置;語音提示<
100、/p><p> 音量鍵控程序同樣可以分為四個功能模塊:大音量設(shè)置模塊;中音量設(shè)置模塊;小音量設(shè)置模塊;靜音設(shè)置模塊。各模塊程序片段如下</p><p><b> 音量鍵控程序:</b></p><p> 小音量調(diào)理程序模塊:</p><p> void sv_voi(void)</p><p>
101、; { P6OUT|=BIT0;</p><p> P5OUT&=~BIT4;</p><p><b> }</b></p><p> 中音量調(diào)理模塊程序:</p><p> void mv_voi(void)</p><p> {P5OUT|=BIT4;</p>
102、<p> P6OUT&=~BIT0;</p><p><b> }</b></p><p> 大音量調(diào)理模塊程序:</p><p> void lv_voi(void)</p><p> { P5OUT&=~BIT4;</p><p> P6OUT&
103、=~BIT0;</p><p><b> }</b></p><p><b> 靜音調(diào)理模塊程序:</b></p><p> void nv_voi(void)</p><p> {P6OUT|=BIT0;</p><p> P5OUT|=BIT4;</p&g
104、t;<p><b> }</b></p><p><b> 4 程序設(shè)計調(diào)試</b></p><p> 4.1 開發(fā)工具介紹</p><p> IAR公司成立于1983年,其編譯器已成為業(yè)界領(lǐng)先的嵌入式開發(fā)平臺,廣泛應(yīng)用于移動電話、GPS系統(tǒng),遠(yuǎn)程控制、游戲機等含有微處理器的系統(tǒng)的開發(fā)中。IAR公
105、司的編譯器可以支持超過30種不同的8位、16位、32位處理器。針對MSP430的開發(fā)平臺全稱為IAR Embedded Workbench EW430 ,簡稱EW430,其功能非常強大,而且仍然在以很快的速度更新版本。它的基本特點有:①支持ANSI C并包含對Embedded C++的支持②內(nèi)建MSP430特性擴(kuò)展優(yōu)化③代碼長度和速度有多級優(yōu)化④支持32位和64位浮點數(shù)⑤支持硬件乘法器⑥內(nèi)部函數(shù)支持低功耗模式⑦支持C和匯編語言混合編程。
106、基于這些優(yōu)點,本智能樓宇安檢系統(tǒng)采用EW430開發(fā)環(huán)境。</p><p> 4.2 按鍵操作調(diào)試</p><p> 通過調(diào)試,我知道了MSP430電路板上的液晶右邊有四個按鍵,從上到下他們的功能依次是:模式鍵,功能鍵,增值鍵,減值鍵。</p><p> 系統(tǒng)加電后就自動進(jìn)行初始化,然后逐一檢測4路紅外傳感器是否有異常信號。</p><p&
107、gt; 這個過程中可以按模式鍵進(jìn)行模式操作,每按一次就LCD上就顯示一種模式,依次顯示為:檢查顯示,時鐘設(shè)置,音量設(shè)置,清除記錄。</p><p> 當(dāng)LCD顯示“檢查顯示“時,按下功能鍵就能回放4路傳感器檢測到的異常信號的時間和次數(shù)。同時還有語音提示。</p><p> 當(dāng)LCD顯示“時鐘設(shè)置“,按一下功能鍵進(jìn)入時鐘設(shè)置界面,每按一次功能鍵依次能設(shè)置月調(diào)整,日調(diào)整,時調(diào)整,分調(diào)整,
108、同時月、日、時、分對應(yīng)的數(shù)字反色顯示,表示能調(diào)整了,再按增值鍵、減值鍵分別進(jìn)行月、日、時、分的增值或減值。</p><p> 同樣,當(dāng)LCD顯示“音量設(shè)置“時,按一下功能鍵進(jìn)入音量設(shè)置界面,每按一次能循環(huán)設(shè)置為大音量,中音量,小音量,靜音。</p><p><b> 出現(xiàn)問題及解決方法</b></p><p> 系統(tǒng)時鐘問題:系統(tǒng)默認(rèn)使用
109、DCO,使用外部高速晶振XT2時必須自己開啟XT2,并延時50us等待XT2起振,然后手工清除IFG1中的OFIFG位。 要注意操作順序:打開XT2->等待XT2穩(wěn)定->切換系統(tǒng)時鐘為XT2。 若后面兩步操作反了,在通常情況下不會出現(xiàn)問題,但是在電壓不穩(wěn)MCU頻繁復(fù)位的情況下,非常容易造成MCU死掉,只能掉電后重新上電才能可靠復(fù)位。</p><p> 在剛開始調(diào)試時,就遇到的問題,即程序執(zhí)行后,液晶
110、屏不能正常顯示漢字,在探討后,我們終于找到問題的所在,是因為端口上電壓變化也是有一定時間的,如果讀取太快,就有可能出錯。我們在讀取數(shù)據(jù)之前加了一句延時程序。這樣修改后,讀數(shù)據(jù)的問題就迎刃而解。這個延時問題在接下來的調(diào)試過程中還與到了不止一次,給了我們寶貴的經(jīng)驗,我想我們在以后的設(shè)計中肯定不會忽略這種硬件延時。</p><p> 通過調(diào)試,代碼方面的錯誤得到解決。在程序規(guī)范方面出現(xiàn)很多問題,如在頭文件中定義了變量
111、,結(jié)果導(dǎo)致編譯錯誤;由于代碼中變量非常多,變量命名時重復(fù)命名和未定義,導(dǎo)致編譯錯誤。</p><p> 通過基于MSP430的智能樓宇安檢系統(tǒng)的軟件設(shè)計,我懂得了單片機程序比PC程序簡單、規(guī)模小,因此,不能照搬開發(fā)PC程序所使用的規(guī)范,而是要進(jìn)行一些簡化和修改,使它更適合用語單片機程序的開發(fā)。我總結(jié)了按照編程規(guī)范寫MSP430程序的好處:</p><p><b> 增加程序的
112、可維護(hù)性</b></p><p> 當(dāng)需求發(fā)生變化時,比較易于修改</p><p> 可重用性好,便于將來再次使用代碼</p><p> 可移植性好,便于將代碼在其他類型的微處理器上使用</p><p> 可讀性好,不會導(dǎo)致過了很長時間后,沒人能夠理解程序的意思,或者非常難以理解</p><p>&
113、lt;b> 5 結(jié)論</b></p><p><b> 5.1 性能指標(biāo)</b></p><p><b> 主要技術(shù)指標(biāo):</b></p><p> 無線傳輸距離:20m</p><p><b> 電源電壓:5V</b></p>&
114、lt;p><b> 檢測路數(shù):4路</b></p><p> 記錄事件:24組(4點*6次)</p><p><b> 特點</b></p><p><b> 涉及的技術(shù)領(lǐng)域</b></p><p> 紅外(熱釋電)傳感技術(shù)</p><p&g
115、t;<b> 單片機控制技術(shù)</b></p><p><b> LCD顯示技術(shù)。</b></p><p> 語音及音量鍵控技術(shù)。</p><p><b> 精密時鐘技術(shù)。</b></p><p> FLASH數(shù)據(jù)存儲技術(shù)</p><p> 實
116、驗表明基于MSP430單片機的智能樓宇安檢系統(tǒng)具有液晶顯示、語音提示、體積小、功耗低、速度快等優(yōu)點,它是面向用戶,面向產(chǎn)品、面向應(yīng)用的。它用片內(nèi)的A/D轉(zhuǎn)換器與紅外線傳感器進(jìn)行連接,只要連接不同的傳感器就可以采集不同數(shù)據(jù)源的數(shù)據(jù),做到系統(tǒng)與數(shù)據(jù)源的無關(guān)性,具有一定得通用性。而且該系統(tǒng)具有良好的拓展性,不僅可以實現(xiàn)單通道顯示,而且可以通過修改軟件實現(xiàn)多通道數(shù)據(jù)采集系統(tǒng)在同一界面顯示,該系統(tǒng)的模型可以推廣到多種其他領(lǐng)域。</p>
117、<p><b> 5.3 后續(xù)設(shè)計</b></p><p><b> 現(xiàn)場錄像:</b></p><p> 本設(shè)計除了用紅外傳感器采集信號,還可以與攝像頭配合使用。當(dāng)紅外傳感器檢測到異常信號時,攝像頭立即啟動進(jìn)行錄像,并存儲錄像。然而這種后續(xù)設(shè)計需要大容量的存儲器,導(dǎo)致總體結(jié)構(gòu)會比較龐大,開發(fā)成本也會大大提高。</p&
118、gt;<p><b> 電話報警:</b></p><p> 同樣本系統(tǒng)還可以與電話相連接,檢測到異常信號的同時就自動接通了報警電話。這種設(shè)計結(jié)構(gòu)簡單,開發(fā)成本比較低,具有很強的實用性。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] Slau 049.pdf Texas Ins
119、truments incorporated,2006.</p><p> [2] MSP430x13x,MSP430x14x1 MIXED SIGNAL MICROCONTROLLER.</p><p> [3]胡大可.MSP430超低功耗16位單片機原理與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2000.</p><p> [4]秦龍.MSP430單片機應(yīng)
120、用系統(tǒng)開發(fā)實例[M].北京:電子工業(yè)出版社,2005.</p><p> [5]秦龍.MSP430單片機C語言應(yīng)用程序設(shè)計實例精講[M].北京:電子工業(yè)出版社,2006.</p><p> [6]何為民.低功耗單片微機系統(tǒng)設(shè)計[M].北京:北京航空航天大學(xué)出版社,1994.</p><p> [7]魏小龍.MSP430系列單片機接口技術(shù)及系統(tǒng)設(shè)計實例[M].北
121、京:北京航空航天大學(xué)出版社,2002.</p><p> [8]胡大可.MSP430系列單片機C語言程序設(shè)計與開發(fā)[M].北京:北京航空航天大學(xué)出版社,2002.</p><p> [9]IAR Company,MSP430 Windows WorkBench,TEXAS INSTRUMENTS.199972-83.</p><p> [10]胡大可MSP43
122、0系列FLASH型超低功耗16位單片機[M].北京:北京航空航天大學(xué)出版社,2001.</p><p> [11]周啟海.C語言程序設(shè)計教程[M].北京:機械工業(yè)出版社,2004.</p><p> [12]李信.16位微型計算機原理與接口[M].天津:南開大學(xué)出版社,1995.</p><p> [13]李維提,郭強.液晶顯示應(yīng)用技術(shù)[M].北京:電子工業(yè)出
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于MSP430逐日系統(tǒng)的研究與實現(xiàn).pdf
- 基于MSP430的心電HOLTER系統(tǒng)設(shè)計與實現(xiàn).pdf
- 畢業(yè)設(shè)計---基于msp430的紅外通信系統(tǒng)實現(xiàn)
- 基于MSP430的智能家居系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 基于MSP430流量計組網(wǎng)系統(tǒng)設(shè)計與實現(xiàn).pdf
- 基于MSP430的航空制冷控制專用系統(tǒng)設(shè)計與實現(xiàn).pdf
- 基于MSP430的車載監(jiān)控系統(tǒng)終端的設(shè)計與實現(xiàn).pdf
- 基于msp430的心率檢測系統(tǒng)硬件設(shè)計
- 基于msp430的溫度采集系統(tǒng)
- 基于MSP430遙測系統(tǒng)的開發(fā).pdf
- 基于MSP430的心音電子聽診系統(tǒng)設(shè)計.pdf
- 基于MSP430的數(shù)據(jù)采集系統(tǒng)的研究與設(shè)計.pdf
- 基于MSP430的智能RFID系統(tǒng)防碰撞算法的設(shè)計與實現(xiàn).pdf
- 基于msp430的溫濕度檢測系統(tǒng)設(shè)計
- 基于MSP430的智能家居系統(tǒng)設(shè)計.pdf
- 基于MSP430的學(xué)生公寓智能電表系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 基于MSP430的健身訓(xùn)練器自動配重系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 基于模型設(shè)計的msp430調(diào)速電機控制系統(tǒng)
- 基于msp430單片機的測壓系統(tǒng)設(shè)計
- 基于MSP430的瓶膽保溫性能檢測系統(tǒng)設(shè)計.pdf
評論
0/150
提交評論