版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘要(中英文) </b></p><p> 本系統(tǒng)包含鍵盤模塊,無(wú)線收發(fā)模塊,顯示模塊。主控芯片采用MSP430F149,鍵盤采用PC標(biāo)準(zhǔn)鍵盤,無(wú)線使用的是XL02-232AP1半雙工無(wú)線傳輸模塊,顯示選用諾基亞5110屏幕。利用兩組相同的模塊進(jìn)行雙向發(fā)射、接收、顯示,實(shí)現(xiàn)文字聊天功能。</p><p> The system inc
2、ludes a keyboard module, wireless transceiver module, display module. The main control chip is using MSP430F149, inputmodule is using the PC standard keyboard,wireless transmission module is using XL02-232AP1 half duplex
3、 wireless transmission module,display module is using Nokia 5110 display selection screen. Using two groups of identical modules achieve the emission, receiving, display, realizeing the function of text chat. </p>
4、;<p><b> 引言</b></p><p> 單片機(jī)在產(chǎn)品的開發(fā)應(yīng)用中經(jīng)常使用的鍵盤為非標(biāo)準(zhǔn)非編碼鍵盤,這類鍵盤一般需單獨(dú)設(shè)計(jì)并制作,因而周期較長(zhǎng),且需要專門為其編寫上電復(fù)位、按鍵掃描、通信等程序。PC標(biāo)準(zhǔn)鍵盤則恰恰相反,不但價(jià)格便宜,穩(wěn)定可靠,而且是編碼鍵盤,可自動(dòng)掃描鍵盤并通過鍵盤用標(biāo)準(zhǔn)5芯或6芯插口發(fā)送按鍵的掃描碼。因此,用PC 鍵盤或?qū)ζ浼右愿脑於鴳?yīng)用于單片機(jī)
5、系統(tǒng)是一種很好的選擇。</p><p> 本系統(tǒng)目的在于不僅解決了PC鍵盤與單片機(jī)匹配的問題,還增加了遠(yuǎn)距離通信功能,更適應(yīng)在工程上的應(yīng)用。</p><p> 所要解決的問題是:理解PC鍵盤的工作原理,接口協(xié)議,以及單片機(jī)與PC鍵盤的接口問題。</p><p><b> 2系統(tǒng)方案 </b></p><p><
6、;b> 1)系統(tǒng)整體框圖</b></p><p> PC鍵盤輸入,1號(hào)單片機(jī)讀取鍵盤掃描碼,通過1號(hào)顯示屏輸出,無(wú)線發(fā)送,2號(hào)接收,并顯示輸出。</p><p> 本系統(tǒng)的難點(diǎn)在于鍵盤的實(shí)時(shí)響應(yīng)和消除按鍵抖動(dòng)和連擊的影響。鍵盤輸人具有隨機(jī)性,且實(shí)時(shí)性較強(qiáng),為提高實(shí)時(shí)響應(yīng)性,主機(jī)系統(tǒng)可以中斷方式支持鍵符的隨機(jī)輸人。當(dāng)主機(jī)接收到從鍵盤發(fā)來(lái)的信號(hào)時(shí),即向中斷系統(tǒng)發(fā)出鍵盤中
7、斷,若CPU響應(yīng)該中斷,則由鍵盤中斷程序讀取此掃描碼,存到鍵盤緩沖區(qū),由主程序調(diào)用。</p><p> 按鍵的觸點(diǎn)在閉合和斷開時(shí)均會(huì)產(chǎn)生抖動(dòng),這時(shí)觸點(diǎn)的邏輯電平是不穩(wěn)定的,如不妥善處理,將會(huì)引起按鍵命令的錯(cuò)誤執(zhí)行或重復(fù)執(zhí)行。為了確保CPU 對(duì)一次按鍵動(dòng)作只確認(rèn)一次,必須對(duì)按鍵時(shí)的抖動(dòng)進(jìn)行處理。消除按鍵抖動(dòng)常用的有硬件和軟件兩種方法,本文采用軟件延時(shí)的方法來(lái)避開抖動(dòng)階段,在延時(shí)開始和結(jié)束時(shí)讀取列掃線狀態(tài),如果一致
8、,則判斷有鍵按下,延時(shí)時(shí)間為10ms。按鍵連擊的處理:連擊是指操作者按下某一鍵,但沒有釋放該鍵,則該鍵對(duì)應(yīng)的功能將反復(fù)被執(zhí)行,好象操作者在連續(xù)操作該鍵一樣。由于單片機(jī)的運(yùn)行速度較快,這種情況很容易發(fā)生。連擊在很多情況下是不允許的,它使操作者很難準(zhǔn)確地進(jìn)行操作。解決連擊的關(guān)鍵是一次按鍵只讓它響應(yīng)一次,該鍵不釋放就不執(zhí)行第二次。流程圖如下。</p><p><b> 3系統(tǒng)硬件設(shè)計(jì)</b>&l
9、t;/p><p> 選用msp430原因,功耗低 、16位數(shù)據(jù) 、單片機(jī)內(nèi)模塊化多選型。</p><p> MSP430F149最小系統(tǒng)</p><p> 無(wú)線XL02‐232AP1 模塊</p><p> XL02-232AP1 是UART 接口半雙工無(wú)線傳輸模塊,可以工作在433MHz 公用頻段。 滿足無(wú)線管制要求,無(wú)需申請(qǐng)頻率使用許
10、可證。</p><p> 本模塊專為用于各種串口設(shè)備之間的無(wú)線通訊,如電腦,單片機(jī),各種機(jī)器設(shè)備串口等,可以直接在原來(lái)的有線連接上升級(jí)為無(wú)線鏈接,無(wú)需額外編程,完全兼容有線通訊串口協(xié)議,使用簡(jiǎn)單方便靈活。</p><p><b> 鍵盤與單盤及接口</b></p><p> 鍵盤接收數(shù)據(jù)是從檢測(cè)到SIO變低開始的,然后在SCK下降沿讀數(shù)據(jù)
11、的起始位,并在SCK的每個(gè)下降沿讀取后續(xù)數(shù)據(jù)。鍵盤在接收完校驗(yàn)位后,如果在下一個(gè)時(shí)鐘周期檢測(cè)到SIO處于空閑態(tài)(高電平),便會(huì)接收新數(shù)據(jù)并開始進(jìn)行處理。在此期間,鍵盤將把SIO置成低電平,知道接收數(shù)據(jù)完成。如果收到校驗(yàn)位后,鍵盤檢測(cè)到SIO不是處于空閑態(tài),它將繼續(xù)發(fā)送時(shí)鐘信號(hào)直到SIO空閑。在時(shí)鐘信號(hào)的下降沿,主機(jī)接收鍵盤數(shù)據(jù)或發(fā)送命令至鍵盤。</p><p><b> 4系統(tǒng)軟件設(shè)計(jì)</b&g
12、t;</p><p><b> 程序流程圖:</b></p><p><b> 主要函數(shù):</b></p><p> 子函數(shù)包括有串口的初始化函數(shù)(中斷、波特率等等)、鍵盤端口初始化函數(shù)、液晶屏NOKIA5110初始化函數(shù)、鍵盤檢測(cè)函數(shù)、二進(jìn)制轉(zhuǎn)換為ASC碼函數(shù)、接收數(shù)據(jù)中斷處理函數(shù)。</p><
13、p> 主函數(shù)只要是對(duì)外圍設(shè)備和內(nèi)部寄存器進(jìn)行初始化,檢測(cè)鍵盤按鍵,并進(jìn)行處理,發(fā)送信息。下面貼出主函數(shù)代碼:</p><p> /*******************************主函數(shù)*********************/</p><p> void main( void )</p><p><b> { </b&g
14、t;</p><p><b> rx=0;</b></p><p> uchar i=0;</p><p> WDTCTL = WDTPW + WDTHOLD; // Stop WDT </p><p> InitUART();</p><p> LCD_
15、init();</p><p> Init_KB(); //初始化鍵盤端口</p><p> BCSCTL1 &= ~XT2OFF; // 打開XT2高頻晶體振蕩器</p><p><b> do</b></p><p><b>
16、 {</b></p><p> IFG1 &= ~OFIFG; // 清除晶振失敗標(biāo)志</p><p> for (i = 0xFF; i > 0; i--); // 等待8MHz晶體起振</p><p><b> }</b></p><p> w
17、hile ((IFG1 & OFIFG)); // 晶振失效標(biāo)志仍然存在?</p><p> BCSCTL2 |= SELM_2 + SELS; // MCLK和SMCLK選擇高頻晶振 </p><p> for(i=0;i<100;i++)rx_data[i]='\0';</p><p&
18、gt; LCD_write_char2(0,0,'_'); //開始顯示光標(biāo)</p><p> /**********************************************</p><p> 打字、鍵盤接收數(shù)據(jù)處理</p><p><b> 發(fā)送數(shù)據(jù)</b></p><p>
19、 ***********************************************/</p><p><b> while(1)</b></p><p><b> {</b></p><p> while(write_flag) </p><p><b> {
20、</b></p><p> while(flag)</p><p><b> { </b></p><p> PORT(); </p><p> if(ok(recdata)==pebit)</p><p><b> { <
21、;/b></p><p> flag=0; </p><p><b> }</b></p><p> else flag=1;</p><p><b> } </b></p><p> disptmp = GetChar(); //讀
22、取鍵值對(duì)應(yīng)的ASCII碼 </p><p> if((disptmp > 0x1f)&&(disptmp < 0x7f)) </p><p><b> { </b></p><p> tx_data[tx++]=disptmp; //存入數(shù)組 </p><p>
23、; LCD_write_char2(addr%84,addr/84,disptmp); //顯示數(shù)據(jù)</p><p> addr+=6; </p><p> LCD_write_char2(addr%84,addr/84,'_'); </p><p> } //if((disptmp > 0x1f)&a
24、mp;&(disptmp < 0x7f)) </p><p> else if(disptmp==0x08)//如果收到的是刪除或退一格(disptmp==0x7f)||</p><p><b> { </b></p><p> LCD_write_char2(addr%84,addr/84,' &
25、#39;); </p><p><b> addr-=6;</b></p><p> if(addr<=0)addr=0;</p><p> tx_data[--tx]='\0'; //數(shù)組中數(shù)據(jù)刪除 </p><p> LCD_write_char2(addr%84,addr
26、/84,'_'); </p><p><b> }</b></p><p> else if(disptmp==13)// 發(fā)送命令</p><p><b> { </b></p><p><b> x=0;y=0; </b></p
27、><p> LCD_clear(); //清屏</p><p> LCD_clear(); //清屏</p><p> if(tx_data[0]!='\0')</p><p><b> {</b></p><p> TXBUF0 = 0xfe; &l
28、t;/p><p> while (!(IFG1 & UTXIFG0)); // 等待發(fā)送完畢</p><p><b> Delays();</b></p><p> PutString(tx_data);</p><p><b> Delays();</b>
29、</p><p> TXBUF0 = 0xf4; </p><p> while (!(IFG1 & UTXIFG0)); // 等待發(fā)送完畢</p><p><b> Delays();</b></p><p> for(i=0;i<100;i++)tx_data[i
30、]='\0';</p><p> tx=0; //指針清零</p><p> addr=0; //顯示地址清零</p><p><b> }</b></p><
31、p><b> else </b></p><p><b> {</b></p><p> LCD_write_english_string(18,3,word_2); //提示沒有數(shù)據(jù)發(fā)送</p><p> for(i=0;i<40;i++)Delays();</p><p>
32、; LCD_clear(); //清屏</p><p> LCD_clear(); //清屏</p><p><b> }</b></p><p> for(i=0;i<100;i++)tx_data[i]='\0';</p><p><b> tx=0;
33、//復(fù)位</b></p><p><b> flag=1;</b></p><p> disptmp=0;</p><p> // LCD_write_char2(x,y,'_'); //光標(biāo)</p><p> LCD_write_char2(addr%84,addr/84,
34、9;_'); </p><p><b> }</b></p><p> else _NOP();</p><p><b> flag=1;</b></p><p> }//while(write_flag)</p><p> /***************
35、************收到信息顯示*************************/</p><p><b> flag=1;</b></p><p> read_flag=1;</p><p> recieved=1;</p><p> while(read_flag==1) </p>&
36、lt;p><b> { </b></p><p> if(recieved)//提示收到信息</p><p><b> {</b></p><p> LCD_clear();</p><p> LCD_draw_bmp_pixel(0,0,bmp,84,48); </
37、p><p> LCD_draw_bmp_pixel(30,2,xinfeng,20,16); //圖像移動(dòng)</p><p> LCD_write_english_string(18,1,words_1); //message! </p><p> LCD_write_english_string(8,4,words);</p>&
38、lt;p> recieved=0;</p><p><b> }</b></p><p><b> flag=1;</b></p><p> while(flag)</p><p><b> { </b></p><p>
39、PORT(); </p><p> if(ok(recdata)==pebit)</p><p><b> { </b></p><p> flag=0; </p><p><b> }</b></p><p> else
40、 flag=1;</p><p><b> } </b></p><p> disptmp = GetChar(); //讀取鍵值對(duì)應(yīng)的ASCII碼 </p><p> if(disptmp==13) //顯示收到的信息</p><p><b> {</b>&l
41、t;/p><p> LCD_clear();</p><p> LCD_write_english_string(0,0,rx_data);</p><p> for(i=0;i<100;i++)rx_data[i]='\0';</p><p> write_flag=1;</p><p>
42、 read_flag=0;</p><p><b> flag=1;</b></p><p> rx=0; </p><p><b> }</b></p><p> else _NOP();</p><p> }//while(read_flag)<
43、/p><p> /*********************重新顯示************************/</p><p> for(i=0;i<100;i++)Delays();</p><p> LCD_clear();</p><p> LCD_write_english_string(0,0,tx_data);&
44、lt;/p><p> }//while(1)</p><p> } //main()</p><p><b> 系統(tǒng)創(chuàng)新</b></p><p> 嵌入式計(jì)算機(jī)在工程上越來(lái)越普遍得到應(yīng)用,而標(biāo)準(zhǔn)的PC機(jī)鍵盤則因不適應(yīng)工業(yè)環(huán)境受到了限制,我們希望有定義靈活、工作可靠的鍵盤,設(shè)計(jì)自己專用的鍵盤和鍵盤接口。而且踐證明單片機(jī)
45、系統(tǒng)開發(fā)中應(yīng)用PC標(biāo)準(zhǔn)鍵盤可以降低開發(fā)難度,增加可移植性,縮短開發(fā)周期,運(yùn)行可靠,易于維護(hù)。用PC 鍵盤或?qū)ζ浼右愿脑於鴳?yīng)用于單片機(jī)系統(tǒng)是一種很好的選擇。</p><p><b> 評(píng)測(cè)與結(jié)論</b></p><p><b> 系統(tǒng)測(cè)試方法 </b></p><p> 通過鍵盤輸入讓兩塊單片機(jī)通訊 。鍵盤輸入,屏幕顯
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于MSP430的無(wú)線傳感網(wǎng)絡(luò)的研究.pdf
- nrf905無(wú)線發(fā)送 msp430
- 基于MSP430電抗器溫度無(wú)線監(jiān)測(cè)裝置的研究.pdf
- 基于msp430單片機(jī)和pc機(jī)串口通信軟件設(shè)計(jì)
- 由msp430和cc1100構(gòu)成的無(wú)線傳感器網(wǎng)絡(luò)
- 基于msp430的溫度采集系統(tǒng)
- 基于msp430和nrf905的無(wú)線通信系統(tǒng)設(shè)計(jì)
- 基于MSP430的甲烷濃度無(wú)線采集系統(tǒng)的設(shè)計(jì).pdf
- 基于MSP430的無(wú)線傳感終端的軟件設(shè)計(jì).pdf
- 基于msp430的無(wú)線傳感終端的軟件設(shè)計(jì)(1)
- 基于MSP430遙測(cè)系統(tǒng)的開發(fā).pdf
- 基于MSP430的錨桿測(cè)力無(wú)線收發(fā)系統(tǒng)設(shè)計(jì).pdf
- 基于msp430單片機(jī)的計(jì)算器設(shè)計(jì)
- msp430學(xué)習(xí)小結(jié)3-msp430基本時(shí)鐘模塊
- 基于msp430單片機(jī)的信號(hào)發(fā)生器設(shè)計(jì)
- msp430控制的基于dds的波形發(fā)生器設(shè)計(jì)
- 基于msp430單片機(jī)循跡小車
- 基于MSP430低功耗消化道無(wú)線內(nèi)窺鏡的研制.pdf
- 基于msp430的心率檢測(cè)系統(tǒng)硬件設(shè)計(jì)
- 基于MSP430的無(wú)線語(yǔ)音數(shù)據(jù)傳輸系統(tǒng)的設(shè)計(jì).pdf
評(píng)論
0/150
提交評(píng)論