基于單片機(jī)的短信收發(fā)系統(tǒng)設(shè)計(jì)_第1頁(yè)
基于單片機(jī)的短信收發(fā)系統(tǒng)設(shè)計(jì)_第2頁(yè)
基于單片機(jī)的短信收發(fā)系統(tǒng)設(shè)計(jì)_第3頁(yè)
基于單片機(jī)的短信收發(fā)系統(tǒng)設(shè)計(jì)_第4頁(yè)
基于單片機(jī)的短信收發(fā)系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩53頁(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、南京工程學(xué)院自動(dòng)化學(xué)院本科畢業(yè)設(shè)計(jì)(論文)1南京工程學(xué)院自動(dòng)化學(xué)院本科畢業(yè)設(shè)計(jì)(論文)Graduation Design The Design Of Messaging System Based On MCUBy Wang HuiSupervised byLecture. SHI XinxinSchool of Automation Nanjing Institute of TechnologyJune, 20151摘 要隨著手機(jī)的廣泛使用,GSM網(wǎng)絡(luò)提供的短消息服務(wù)使得只需要增加少量投入便可以通過(guò)手機(jī)實(shí)現(xiàn)生活和生產(chǎn)中的遠(yuǎn)程控制和告警通知成為可能。本設(shè)計(jì)是基于ARM Cortex-M3內(nèi)核的3

2、2位單片機(jī)STM32的一種短信收發(fā)系統(tǒng)。本系統(tǒng)主要實(shí)現(xiàn)中英文短信收發(fā)及TFT彩屏顯示相關(guān)狀態(tài)如短信未讀、已讀狀態(tài)、短信發(fā)送狀態(tài)和內(nèi)容如要讀取短信數(shù)、讀取到的短信內(nèi)容、時(shí)間、發(fā)件人手機(jī)號(hào)碼等,并且可以實(shí)現(xiàn)通過(guò)TFT液晶屏觸摸輸入號(hào)碼和功能按鍵如讀取、返回、撥號(hào)、掛斷、刪除等。此方案以ST公司32位單片機(jī)STM32F103ZET6為主控制器輔以GSM/GPRS模塊SIM900A,64Mb串行Flash存儲(chǔ)器W25Q64,2K串行EEPROM AT24C02,TFT液晶屏ILI9320等硬件,通過(guò)C語(yǔ)言編寫程序,用軟硬件結(jié)合的方法實(shí)現(xiàn)其基本功能。經(jīng)過(guò)多次實(shí)踐測(cè)試,本系統(tǒng)可以達(dá)到預(yù)期的穩(wěn)定性、可靠性,

3、可以應(yīng)用在遠(yuǎn)程控制、智能家居、工業(yè)控制等領(lǐng)域。關(guān)鍵詞:SIM900A ;STM32;短信;GSM;TFT液晶屏1南京工程學(xué)院自動(dòng)化學(xué)院本科畢業(yè)設(shè)計(jì)(論文)ABSTRACTWith the widespread use of mobile phones, short message services provided by the GSM network make it possible that only a slight increase in investment and production will be able to live in the remote control and a

4、larm notification via cell phone.In this thesis , a messaging system base on the 32-bit MCU STM32 which is based on the core of Cortex-M3 by ARM is discussed.The system is mainly a Chinese and English text messaging and that TFT color screen displays the status of messages such as unread, read statu

5、s, SMS status and content, such as the number of messages to be read, read the message content, time, sender's phone number, etc. and can be achieved by TFT LCD touch screen to input the number and function keys such as reading, return, dial, hang up, delete, and so on.This program selects ST co

6、mpany's 32-bit MCU STM32F103ZET6 as controller supplemented GSM / GPRS module SIM900A, 64Mb Serial Flash memory W25Q64,2K serial EEPROM AT24C02, TFT LCD ILI9320 hardware, through C language programming,and achieve its basic functions with the combination of software and hardware.After several pr

7、actice tests, the system can achieve the desired stability, reliability, and can be used in remote control, smart home, industrial control and other fields.Key words: SIM900A; STM32; messaging; GSM; TFT screenII南京工程學(xué)院自動(dòng)化學(xué)院本科畢業(yè)設(shè)計(jì)(論文)目 錄第一章 緒 論11.1 引言11.2 選題背景與意義11.3 應(yīng)用現(xiàn)狀及發(fā)展趨勢(shì)1第二章 GSM系統(tǒng)及方案設(shè)計(jì)32.1 GSM系統(tǒng)

8、32.1.1 GSM系統(tǒng)特點(diǎn)32.1.2 GSM系統(tǒng)的體系結(jié)構(gòu)32.2 GSM系統(tǒng)方案設(shè)計(jì)42.3 本章小結(jié)5第三章 系統(tǒng)硬件設(shè)計(jì)63.1 單片機(jī)最小系統(tǒng)63.1.1主控制器63.1.2 主控制器外圍簡(jiǎn)單電路73.1.3 JTAG接口83.1.4 電源電路93.2 SIM900A模塊103.2.1 SIM900A模塊的對(duì)外接口電路103.2.2 SIM900A模塊初始化113.3 外圍電路設(shè)計(jì)123.3.1 一鍵下載電路123.3.2 TFT液晶屏接口123.3.3外部存儲(chǔ)器133.3.4 按鍵和指示燈電路153.3.5 蜂鳴器電路163.4 本章小結(jié)17第四章 系統(tǒng)軟件設(shè)計(jì)184.1 總體框

9、圖184.2 系統(tǒng)初始化194.3 文件系統(tǒng)FATFS移植19III4.4 漢字字庫(kù)19 4.4.1 更新字庫(kù)204.4.2 查找漢字204.5 觸摸屏模塊244.6 RTC顯示254.6.1 RTC簡(jiǎn)介254.6.2 設(shè)置時(shí)間264.6.3備份區(qū)域保護(hù)264.7 開關(guān)機(jī)264.7.1 待機(jī)模式簡(jiǎn)介264.7.2 開關(guān)機(jī)實(shí)現(xiàn)過(guò)程274.8 本章小結(jié)28第五章 系統(tǒng)調(diào)試295.1系統(tǒng)調(diào)試過(guò)程與方法295.1.1 串口通信295.1.2 系統(tǒng)UI315.1.3 讀取短信325.1.4 發(fā)送短信325.1.5 電話測(cè)試335.2系統(tǒng)調(diào)試結(jié)果與分析345.3本章小結(jié)42第六章 結(jié) 論436.1 主要工

10、作與結(jié)論436.2 存在的問(wèn)題436.3 感想與收獲43致 謝44參 考 文 獻(xiàn)45附錄A:硬件設(shè)計(jì)原理圖與PCB圖47IV第1章 緒 論1.1 引言移動(dòng)通信發(fā)展到現(xiàn)在,經(jīng)歷了由模擬到數(shù)字的變化,早期的移動(dòng)通信系統(tǒng)是以AMPS和ETACS為代表的模擬移動(dòng)通信系統(tǒng)。90年代,隨著移動(dòng)通信用戶數(shù)量的增加,用戶對(duì)跨地區(qū),跨國(guó)漫游以及各種增值服務(wù)要求也隨之增加,同時(shí)數(shù)字通信技術(shù)發(fā)展也日趨成熟,歐洲的移動(dòng)通信運(yùn)營(yíng)商開始考慮發(fā)展一種新型的數(shù)字移動(dòng)通信系統(tǒng),GSM系統(tǒng)也就應(yīng)運(yùn)而生1。GSM是英文“Global System for Mobile Communications”的縮寫,其全文含義是“全球移動(dòng)通

11、信系統(tǒng)”2。我國(guó)移動(dòng)通信發(fā)展已經(jīng)進(jìn)入了一個(gè)高速發(fā)展的階段,短消息作為其中作為最簡(jiǎn)單和方便的數(shù)據(jù)通信方式,其應(yīng)用發(fā)展速度可想而知,自然也非常迅速。隨著信息化時(shí)代的高速發(fā)展,短信息也越來(lái)越廉價(jià)了,并且短信息的及時(shí)性、穩(wěn)定性也得到了更好的保證3。1.2 選題背景與意義在高速發(fā)展的信息化時(shí)代的今天,物聯(lián)網(wǎng)是新一代信息技術(shù)的重要組成部分,其覆蓋范圍極廣,包括從傳感器、控制器到云計(jì)算的各種應(yīng)用以及產(chǎn)品服務(wù)智能家居、交通物流、環(huán)境保護(hù)、公共安全、智能消防、工業(yè)檢測(cè)、工業(yè)控制、個(gè)人健康等各種領(lǐng)域。它是下一個(gè)推動(dòng)世界高速發(fā)展的“重要生產(chǎn)力”,是繼通信網(wǎng)之后的一個(gè)萬(wàn)億級(jí)市場(chǎng)。而以GSM/GPRS為代表的通信技術(shù)是

12、極其重要的一環(huán),掌握了GSM/GPRS通信技術(shù),就相當(dāng)于掌握了一個(gè)萬(wàn)億級(jí)市場(chǎng)。近些年來(lái),隨著物聯(lián)網(wǎng)時(shí)代的到來(lái),各種無(wú)線技術(shù)都得到了迅猛的發(fā)展,如比較熱門的Zigbee、WIFI、Bluetooth等,雖然這幾種技術(shù)在局域無(wú)線網(wǎng)中應(yīng)用較廣泛、成本也較低,但是都有一個(gè)共同的缺點(diǎn),那就是傳輸距離有限,比較適合民用。而GSM短信息業(yè)務(wù)費(fèi)用低廉、覆蓋范圍廣、實(shí)現(xiàn)簡(jiǎn)單,可以解決上述的不足,具有低成本、可升級(jí)和可擴(kuò)展性,在物聯(lián)網(wǎng)時(shí)代的今天應(yīng)具有較廣闊的前景4。1.3 應(yīng)用現(xiàn)狀及發(fā)展趨勢(shì)作為一種數(shù)據(jù)傳輸方式,GSM短消息具有覆蓋面積廣、低成本、信號(hào)好的多個(gè)優(yōu)點(diǎn),對(duì)于解決監(jiān)控采集點(diǎn)分散、覆蓋面廣、監(jiān)控點(diǎn)移動(dòng)、實(shí)

13、時(shí)性要求較低的監(jiān)控采集系統(tǒng)具有無(wú)可比擬的優(yōu)勢(shì)。下面就講述幾個(gè)具體的應(yīng)用:第1、 在智能家居中的應(yīng)用,隨著近幾年嵌入式產(chǎn)品的高速發(fā)展,人們?cè)絹?lái)越享受科技發(fā)展給我們的生活帶來(lái)的方便。越來(lái)越多的高科技智能化產(chǎn)品,已經(jīng)被廣泛應(yīng)用到我們的實(shí)際生活中。現(xiàn)在,家用電器如電視、冰箱、空調(diào)、微波爐等普遍向智能化方向發(fā)展,我們都能直接通過(guò)手機(jī)操控開關(guān)和改變功率。利用GSM模塊,我們可以用手機(jī)發(fā)送特定的短信,打開或關(guān)閉家中的燈、空調(diào)、電視等電器,同時(shí)還可以發(fā)送家中的情況發(fā)送到手機(jī)上。在GSM系統(tǒng)中再加入一些傳感器,如溫濕度傳感器、污染氣體傳感器、燃?xì)鈧鞲衅鞯龋涂梢栽黾蛹揖拥陌踩裕词刮覀冊(cè)谏习嗷蛘呗眯袝r(shí),也可以

14、及時(shí)獲取家中的安全狀況。一旦發(fā)生危急情況,也可以及時(shí)采取措施,避免或者減小財(cái)產(chǎn)損失以及人身安全5,6。第2、 在汽車中的應(yīng)用,隨著交通工具的不斷發(fā)展,汽車也變得普及了起來(lái),汽車的防盜的解決自然也是迫在眉睫。我們可以將GSM模塊安裝在汽車的隱蔽處,一旦發(fā)生盜竊,立即發(fā)送短信提醒車主,然后就可以用手機(jī)發(fā)送一條短信給該模塊,模塊經(jīng)一定的算法處理判斷短信的合法性后,將附近的GSM基站信息及時(shí)發(fā)送給車主,這樣就可以有利于警方的快速破案。同時(shí)還可以像智能家居一樣,用GSM模塊控制車中的空調(diào),在車主上車之前,就可以打開空調(diào),這樣車主在一上車后就可以感受到合適的溫度7,8。第3、 在工控系統(tǒng)中的應(yīng)用,由于有的

15、工控系統(tǒng)環(huán)境比較惡劣,不適合進(jìn)行有線網(wǎng)絡(luò)的傳輸,需要借助無(wú)線技術(shù)來(lái)實(shí)現(xiàn)控制目的。例如,油田檢測(cè)、礦產(chǎn)開發(fā)時(shí)瓦斯?jié)舛缺O(jiān)測(cè)等,不可能借助人力去檢測(cè),而有線技術(shù)也不適合,WIFI、Zigbee等短距離無(wú)線技術(shù)又不能發(fā)揮很好的作用,而借助于GSM網(wǎng)絡(luò)的SMS可以很好解決這一問(wèn)題9。第二章 GSM系統(tǒng)及方案設(shè)計(jì)2.1 GSM系統(tǒng)2.1.1 GSM系統(tǒng)特點(diǎn) GSM是在蜂窩系統(tǒng)的基礎(chǔ)上發(fā)展而成并根據(jù)歐洲電信標(biāo)準(zhǔn)化協(xié)會(huì)制定的GSM技術(shù)規(guī)范設(shè)計(jì)的一種開放式結(jié)構(gòu)的系統(tǒng),屬于第二代數(shù)字移動(dòng)通信系統(tǒng)。它是目前基于時(shí)分多址技術(shù)的移動(dòng)通信中比較成熟、完善、且應(yīng)用最廣泛的一種系統(tǒng)10。主要具有以下幾個(gè)特點(diǎn):1) GSM系統(tǒng)

16、是由幾個(gè)分系統(tǒng)組成的,可與各種公眾通信網(wǎng)互通互聯(lián)。2) GSM系統(tǒng)能提供國(guó)際的自動(dòng)漫游功能,全部GSM移動(dòng)用戶都可進(jìn)入GSM系統(tǒng)。3) GSM系統(tǒng)具有加密和鑒權(quán)功能,能確保用戶保密和網(wǎng)絡(luò)安全。4) GSM系統(tǒng)抗干擾能力強(qiáng),信號(hào)強(qiáng)。5) 隨著集成電路技術(shù)的快速發(fā)展,用戶設(shè)備也逐漸向小巧和多功能方向發(fā)展。2.1.2 GSM系統(tǒng)的體系結(jié)構(gòu)蜂窩移動(dòng)通信系統(tǒng)主要是由交換網(wǎng)路子系統(tǒng)(NSS)、無(wú)線基站子系統(tǒng)(BSS)和移動(dòng)臺(tái)(MS)三大部分組成,如圖2.1所示。其中NSS與BSS之間的接口為“A”接口,BSS與MS之間的接口為“Um”接口11。圖2.1 蜂窩移動(dòng)系統(tǒng)組成框圖GSM系統(tǒng)框圖如圖2.2,A接口

17、往右是NSS系統(tǒng),A接口往左Um接口是BSS系統(tǒng),Um接口往左是移動(dòng)臺(tái)部分(MS)。NSS由移動(dòng)業(yè)務(wù)交換中心(MSC)、拜訪位置寄存器(VLR)、歸屬位置寄存器(HLR)、鑒權(quán)中心(AUC)和移動(dòng)設(shè)備識(shí)別寄存器(EIR)幾部分組成,主要完成交換功能和客戶數(shù)據(jù)與移動(dòng)性管理、安全性管理所需的數(shù)據(jù)庫(kù)功能。圖2.2 GSM系統(tǒng)框圖BSS是在一定的無(wú)線覆蓋區(qū)中由MSC控制,與MS進(jìn)行通信的系統(tǒng)設(shè)備,由基站控制器(BSC)和基站收發(fā)信臺(tái)(BTS)兩部分組成,主要功能是完成無(wú)線發(fā)送接收和無(wú)線資源管理等。 MS由移動(dòng)終端(MS)和客戶識(shí)別卡(SIM)組成。2.2 GSM系統(tǒng)方案設(shè)計(jì)查閱相關(guān)資料可知,基于GSM

18、系統(tǒng)的短消息收發(fā)系統(tǒng)的實(shí)現(xiàn)方案主要有三種。第一種是通過(guò)移動(dòng)網(wǎng)關(guān)發(fā)送短信息,此方案最大的優(yōu)點(diǎn)就是不需要額外的硬件,但是需要到電信部門去申請(qǐng)網(wǎng)關(guān),適用于大型的網(wǎng)絡(luò)通訊公司開發(fā),如華為、中興等。第二種使用網(wǎng)站提供的短信發(fā)送功能,如新浪、網(wǎng)易等網(wǎng)站。這種方法易于實(shí)現(xiàn),所需資源最少,但是對(duì)網(wǎng)站依賴性較大,而且只能發(fā)送短信,不支持實(shí)時(shí)接收短信。第三種在電腦或單片機(jī)通過(guò)GSM 模塊向手機(jī)發(fā)送短信,對(duì)硬件需求較大,比較適合小項(xiàng)目的開發(fā),但能實(shí)現(xiàn)自動(dòng)收發(fā)短信12,13,14。第二種方法短信收發(fā)通常又分為兩種模式:Text、PDU模式,PDU模式比較復(fù)雜,需要用戶編寫專門的函數(shù)將文本格式轉(zhuǎn)換為PDU格式,而應(yīng)用T

19、ext模式開發(fā),則顯得簡(jiǎn)單了很多,本文采用的是第二種方法的Text模式。第二種方法中,我們可以通過(guò)PC與GSM模塊進(jìn)行通信從而獲取相關(guān)數(shù)據(jù),也可以通過(guò)單片機(jī)與GSM模塊進(jìn)行通信。雖然PC功能強(qiáng)大,平臺(tái)易于實(shí)現(xiàn),但是不夠便攜,且成本較高,所以不是一個(gè)明智之選。我們選擇了單片機(jī)與GSM模進(jìn)行通信,從而與GSM網(wǎng)絡(luò)交互通信,從而實(shí)現(xiàn)與手機(jī)或其他的GSM模塊進(jìn)行通信,這種方法簡(jiǎn)單易于實(shí)現(xiàn),只需要我們熟練掌握串口編程和AT指令即可15,系統(tǒng)框圖如圖2.3所示。圖2.3 GSM系統(tǒng)框圖2.3 本章小結(jié) 本部分主要論述了GSM系統(tǒng),首先介紹了GSM的特點(diǎn)、體系結(jié)構(gòu),接著提出了GSM系統(tǒng)的設(shè)計(jì)方案及簡(jiǎn)要框圖。

20、第三章 系統(tǒng)硬件設(shè)計(jì)3.1 單片機(jī)最小系統(tǒng)3.1.1主控制器本系統(tǒng)選擇了ST公司的基于ARM Cortex-M3內(nèi)核的32位處理器STM32F103ZET6作為主控制器,封裝LQFP144。關(guān)于STM32F103ZEZT6,我們可以從官方數(shù)據(jù)手冊(cè)上可以看出:其最高72MHz工作頻率,512K字節(jié)Flash,64K字節(jié)SRAM ,支持2.03.6V寬電壓輸入,12通道DMA 控制器,有112個(gè)快速I/O端口,有13個(gè)通信接口包括2個(gè)I2C接口,5個(gè)USART接口其中3個(gè)可以配置為UART,3個(gè)SPI接口其中2個(gè)可復(fù)用為I2S接口等。由以上數(shù)據(jù)可以看出,本系統(tǒng)所選控制器性能是如此的優(yōu)越,在嵌入式產(chǎn)

21、品開發(fā)中必有其一席之地。無(wú)論是傳統(tǒng)51單片機(jī)或增強(qiáng)型51單片機(jī)還是RISC的8位AVR單片機(jī)還是16位的MSP430單片機(jī),本處理器在Flash、RAM、工作頻率以及外設(shè)上具有絕對(duì)的優(yōu)勢(shì),性價(jià)比較高16,17。下面將會(huì)介紹系統(tǒng)選擇該處理器作為主控制器的原因:(1)本系統(tǒng)將會(huì)移植嵌入式文件系統(tǒng)FATFS,以便讀取外擴(kuò)Flash中的漢字字庫(kù),所以對(duì)控制器RAM、Flash提出了較高要求,而市場(chǎng)上比較熱門的8/16位單片機(jī)基本很難勝任。(2)72MHz的工作頻率,而且采用精簡(jiǎn)指令集,數(shù)據(jù)處理能力快。(3)FSMC(可配置的靜態(tài)存儲(chǔ)器控制器)可以配置成與多數(shù)圖形LCD控制器的無(wú)縫連接,可以支持Inte

22、l 8080和Motorola 6800的模式,可以更快速驅(qū)動(dòng)LCD。(4)3.3V供電,且外設(shè)時(shí)鐘需要程序配置,功耗較低。(5)DMA傳輸數(shù)據(jù)更快,且不影響CPU運(yùn)行。(6)112個(gè)IO口,可以支持?jǐn)U展很多功能。 (7)外設(shè)接口較多,且性能較好。本系統(tǒng)需要用到兩個(gè)串口,一個(gè)和電腦串口通信方便調(diào)試,可以接受上位機(jī)發(fā)來(lái)的更改信息或命令,另外一個(gè)和SIM900A模塊通信。該處理器的串口可配置成全雙工模式,數(shù)據(jù)位、波特率都可以程序配置18。3.1.2 主控制器外圍簡(jiǎn)單電路如圖3.1所示,Y2為外部高速時(shí)鐘(HSE)8MHz晶振,C9、C10為負(fù)載電容,外部高速時(shí)鐘源經(jīng)STM32內(nèi)部PLL倍頻可配置為

23、系統(tǒng)時(shí)鐘,最高可配置達(dá)72MHz,這里采用72MHz位系統(tǒng)時(shí)鐘。Y1為外部低速時(shí)鐘(LSE)32.768kHz晶振,C4、C5為負(fù)載電容,它為實(shí)時(shí)時(shí)鐘或者其他定時(shí)功能提供一個(gè)低功耗且精確的低速時(shí)鐘源。后備區(qū)域VBAT腳采用了CR1220和3.3V混合供電的方式,而CR1220供電3V,所以當(dāng)VCC3.3供電時(shí),二極管D2截止D1導(dǎo)通,然后就直接給VBAT供電。而在外部電源斷開或者外部電源電壓低于CR1220電壓時(shí),D2導(dǎo)通D1截止,CR1220給VBAT供電。在圖3.1中,我們可以看出參考電壓端口VREF+和模擬電源輸入端口VDDA連在了一起,同時(shí)也間接和3.3V連接在一起了,這樣AD基準(zhǔn)電壓

24、和模擬電源都是3.3V。為了后期維護(hù),我們?cè)趫D3.2最小系統(tǒng)(2)中增加了R21和R22兩個(gè)0歐姆電阻,如果3.3V電源短路,我們可以用電烙鐵拆下它們來(lái)用萬(wàn)用表測(cè)試以確定是STM32部分短路,還是外部3.3V電源部分短路,為我們快速解決電路短路問(wèn)題提供了很大的便利。圖3.1 最小系統(tǒng)圖一 圖 3.2 最小系統(tǒng)圖二 圖 3.3 復(fù)位電路 圖3.4 啟動(dòng)方式設(shè)置接口STM32低電平復(fù)位,所以電路與傳統(tǒng)51單片機(jī)高電平復(fù)位也有點(diǎn)差異,具體如圖3.3,電阻、電容值與時(shí)間常數(shù)有關(guān),會(huì)影響到復(fù)位效果,本處選取10K、0.1uF常用值。圖3.4為啟動(dòng)方式設(shè)置接口圖,如表3.1所示,BOOT0、BOOT1設(shè)置

25、不同值,在系統(tǒng)時(shí)鐘第四個(gè)上升沿檢測(cè)BOOT引腳信號(hào),STM32確定從哪個(gè)地址處開始加載。比如我們要下載程序到該處理器里,然后運(yùn)行,我們先手動(dòng)配置BOOT0、BOOT1為1、0,然后再配置為0、0,即我們需要手動(dòng)配置BOOT0,BOOT1可以接地。為了避免手動(dòng)配置,我們可以通過(guò)軟件結(jié)合一鍵下載電路可以自動(dòng)配置,這點(diǎn)將在一鍵電路中會(huì)作進(jìn)一步分析。表3.1 BOOT0、BOOT1啟動(dòng)模式表 3.1.3 JTAG接口 由于STM32支持在線調(diào)試,支持JTAG、SWD兩種模式,本系統(tǒng)中我們采用的是標(biāo)準(zhǔn)的JTAG接法。STM32的SWD接口與JTAG是共用的,只要接上JTAG,可以使用SWD模式了。具體電

26、路如圖3.5所示。需要注意的是,接口控制線都要加10K上拉電阻。同時(shí)JTAG、SWD下載速度都可以在ARM公司的MDK4.70A軟件中可以手動(dòng)設(shè)置。圖3.5 JTAG接口電路3.1.4 電源電路圖3.6 電源電路如圖3.6所示,K1為總電源開關(guān),F(xiàn)1為500ma自恢復(fù)保險(xiǎn)絲,用于保護(hù)電路,同時(shí)也可以防止燒壞電腦USB接口,AMS117-3.3為穩(wěn)壓芯片,輸入電壓為4.75V-12V,輸出3.3V電壓,紋波最大1.0mV,為STM32提供電源。貼片電容C29、C28濾去高頻雜波,貼片鋁電解電容C30隔直流通交流,濾去頻雜低波,從而為電路提供更穩(wěn)定、較小紋波的電源,防止損壞半導(dǎo)體器件。本電路電源來(lái)

27、源于USB供電,最大輸出電流500mA,負(fù)載能力有限,但是本系統(tǒng)中并無(wú)大的負(fù)載,同時(shí)GSM模塊是由單獨(dú)的電源適配器(12V 1A)供電的,所以是可行的的。在電路中,在5V、3.3V電源處我們都加了TVS保護(hù)電路,保護(hù)IC器件免受各種瞬態(tài)脈沖的沖擊,這里我們選用的是單向瞬態(tài)抑制二極管SMBJ5.0A和SMBJ3.3A。3.2 SIM900A模塊 3.2.1 SIM900A模塊的對(duì)外接口電路圖3.7 SIM900A對(duì)外接口框圖SIM900A對(duì)外接口框圖如圖3.7,對(duì)外接口包括:RS232接口,語(yǔ)音接口,控制線接口、SIM卡接口等。圖3.8 SIM900A實(shí)物3.2.2 SIM900A模塊初始化SI

28、M900A模塊初始化之前,先給模塊上電,由于SIM900A模塊在啟動(dòng)注冊(cè)時(shí),電流峰值會(huì)達(dá)到2A4V,所以模塊是由12V 1A電源適配器供電的,避免由于模塊功耗的突升,造成的死機(jī)或啟動(dòng)不起來(lái)。上電后,長(zhǎng)按啟動(dòng)按鍵,實(shí)現(xiàn)模塊的開機(jī)。在模塊開機(jī)后,模塊上的指示燈,先是快閃,如果手機(jī)注冊(cè)成功后,指示燈會(huì)慢閃。如果長(zhǎng)時(shí)間快閃沒(méi)有變成慢,應(yīng)長(zhǎng)按啟動(dòng)鍵會(huì)關(guān)機(jī)模塊,檢查天線, SIM卡片的固定情況,還有檢查SIM卡片是否能正常使用。當(dāng)模塊指示燈變?yōu)槁W時(shí)證明網(wǎng)絡(luò)注冊(cè)成功可以使用了。SIM900A實(shí)物如圖3.8,在與單片機(jī)通信之前,我們可以通過(guò)電腦串口與SIM900A模塊通信調(diào)試,來(lái)檢測(cè)模塊是否能正常工作19,

29、20,21,22。圖3.9 一鍵下載電路3.3 外圍電路設(shè)計(jì)3.3.1 一鍵下載電路上文已提及一鍵下載,自動(dòng)配置BOOT0,現(xiàn)在將著重介紹具體工作過(guò)程。如圖3.9所示USB轉(zhuǎn)串口電路圖中,我們選擇的是SOP16封裝的CH340G芯片,USB接口使用的是mini USB接口,三極管Q2和Q3的組合構(gòu)成了一鍵下載電路。下載時(shí)我們只需要在STM32下載軟件mcuisp中選擇:DTR的低電平復(fù)位,RTS高電平進(jìn)BootLoader模式,就可以一鍵下載代碼了,而不需要手動(dòng)配置B00T0和手動(dòng)按復(fù)位鍵了。DTR#低電平,RTS#高電平輸出時(shí),Q2 S8050導(dǎo)通,RESET被拉低,與此同時(shí),Q3 S855

30、0也被導(dǎo)通,BOOT0也被上拉成高電平,然后軟件配置,延時(shí)拉高RESET退出復(fù)位,就開始進(jìn)入ISP串口下載。下載完成后,BOOT0因與100K下拉電阻相連,被拉低,進(jìn)而STM32下載完成后復(fù)位4個(gè)系統(tǒng)時(shí)鐘后會(huì)檢測(cè)到BOOT0低電平信號(hào),進(jìn)而加載用戶Flash,即跑代碼。3.3.2 TFT液晶屏接口本系統(tǒng)中所用TFT液晶屏,型號(hào)為ILI9320,該模塊有以下控制線: CS:TFTLCD片選信號(hào) WR:向TFTLCD寫入數(shù)據(jù) RD:從TFTLCD讀取數(shù)據(jù) D15:0:16位雙向數(shù)據(jù)線 RST:硬復(fù)位TFTLCD RS:命令/數(shù)據(jù)標(biāo)志(0,讀寫命令;1,讀寫數(shù)據(jù))該液晶模塊支持8/16位數(shù)據(jù)線模式,

31、在本系統(tǒng)中,液晶模塊采用16位的并行方式與外部連接,如圖3.10所示。下面我們將對(duì)FSMC控制TFTLCD過(guò)程作簡(jiǎn)要分析。查閱相關(guān)技術(shù)手冊(cè)可知外部SRAM由地址線,數(shù)據(jù)線,寫信號(hào)(WE)、片選信號(hào)(CS)、讀信號(hào)(OE)三根控制信號(hào)線組成,其時(shí)序和TFTLCD的控制時(shí)序基本上相同。它們之間的唯一不同之處就是TFTLCD有RS命令/數(shù)據(jù)切換信號(hào),而沒(méi)有地址信號(hào),而地址信號(hào)是0/1二進(jìn)制信號(hào),RS信號(hào)也是0/1信號(hào),所以我們完全可以把RS信號(hào)等效成一個(gè)地址信號(hào)。比如我們把RS接在A2上面,那么當(dāng)FSMC控制器寫地址0的時(shí)候,A2就為0,其實(shí)也就是寫命令。而FSMC寫地址1的時(shí)候,A2將會(huì)變?yōu)?,也

32、就是寫數(shù)據(jù)。通過(guò)上述的分析,我們就可以通過(guò)FSMC區(qū)分了到底傳送的是數(shù)據(jù)還是命令。圖3.10 TFT液晶屏接口TFT模塊選擇的是四線電阻式觸摸屏,其控制芯片有很多,包括ADS7843、ADS7846和XPT2046等。本LCD模塊自帶觸摸屏控制芯片XPT2046,內(nèi)含12位分辨率逐步逼近型A/D轉(zhuǎn)換器,轉(zhuǎn)換速率可達(dá)125KHz,支持從1.5V到5.25V的寬電壓I/O接口。該控制芯片與單片機(jī)通信方式為SPI(串行外設(shè)接口)總線,這里我們采用的是軟件模擬SPI,沒(méi)有使用STM32自帶的SPI接口。XPT2046返回的是二進(jìn)制數(shù)字量,經(jīng)單片機(jī)進(jìn)行數(shù)據(jù)轉(zhuǎn)換可得出當(dāng)前具體的物理坐標(biāo),從而實(shí)現(xiàn)觸摸定位。

33、3.3.3外部存儲(chǔ)器本系統(tǒng)設(shè)計(jì)中有三種外部存儲(chǔ)器電路:EEPROM、Flash、SD卡,分別用于保存觸摸屏校準(zhǔn)參數(shù)、漢字字庫(kù)、要更新的漢字字庫(kù)。(1)EEPROM如圖3.11所示,EEPROM芯片我們使用的是串行AT24C02,其容量為2Kb,也就是256個(gè)字節(jié),對(duì)于本系統(tǒng)應(yīng)用已經(jīng)足夠。A0-A2三位是其地址線,設(shè)計(jì)時(shí)我們一般把A0-A2均接地,對(duì)AT24C02來(lái)說(shuō)也就是把這三位地址位設(shè)置成了0,所以參考其技術(shù)手冊(cè)可知,該器件地址為0xA0。同時(shí)根據(jù)IIC總線電氣特性要求,時(shí)鐘線SCL、數(shù)據(jù)線SDA都需要接上拉電阻,一般取4.7K較好,如圖中R28、R29所示。24C02與單片機(jī)之間的通信方式

34、是I2C總線,這里我們也采用的是軟件模擬,因?yàn)榻?jīng)過(guò)查閱很多資料,發(fā)現(xiàn)STM32在硬件I2C接口做的不是很好,不夠穩(wěn)定。I2C總線的時(shí)序這里就不介紹了,不過(guò)這種總線的通信速率不是很快,且軟件模擬在通信速度上會(huì)降低,但對(duì)我們來(lái)說(shuō)已經(jīng)足夠了。圖3.11 AT24C02電路圖(2)FlashFLASH芯片型號(hào)我們選擇了W25Q64,其容量為64Mb,也就是8M字節(jié),與上述AT24C02一樣都是串行傳輸,占用較少的IO口。該芯片與單片機(jī)之間的通信方式為SPI總線,如圖3.12所示我們并沒(méi)有用軟件模擬SPI總線時(shí)序,而是采用了STM32自帶的硬件SPI接口SPI2,這樣傳輸速度會(huì)更快。SPI總線一般有四根

35、信號(hào)控制線:片選線CS,兩根數(shù)據(jù)線分別為主入從出MISO和主出從入MOSI,還有一根時(shí)鐘線SCLK。圖3.12 W25Q64電路圖擴(kuò)展Flash為了是存儲(chǔ)漢字字庫(kù),因?yàn)镾TM32F103ZET6本身只具有512K Flash,如果用來(lái)存放字庫(kù),肯定不夠,外擴(kuò)的Flash可以存放GBK和Unicode碼轉(zhuǎn)換字庫(kù)、16*12字體GBK碼字庫(kù),16*16字體GBK碼等字庫(kù),這樣我們就可以在TFT LCD上顯示16*12、16*16字體等字體的漢字和字符了。同時(shí)我們也可以存儲(chǔ)我們喜歡的字體,如華文行楷等。(3)SD卡本系統(tǒng)設(shè)計(jì)這個(gè)SD卡電路是為了從SD卡中更新字庫(kù)到Flash W25Q64中,F(xiàn)las

36、h中本身是不帶字庫(kù)的,不經(jīng)過(guò)SD卡或U盤直接燒入字庫(kù)到Flash中是不太現(xiàn)實(shí)的。如圖3.13所示,SD_CARD1為SD卡槽,通過(guò)P3、P4、P5組合,我們可以選擇SD卡驅(qū)動(dòng)方式,因?yàn)镾D卡有兩種驅(qū)動(dòng)方式,SDIO接口或者SPI接口,SDIO驅(qū)動(dòng)較快一點(diǎn)。SD卡接口電路除了時(shí)鐘線不用接上拉電路,其他控制線都要接上上拉電阻,如圖中R1、R2、R3、R4、R5所示。圖3.13 SD卡接口 本系統(tǒng)中擬用軟件SPI模式驅(qū)動(dòng),所以我們會(huì)將P3、P5所有排針用跳線帽短接,因?yàn)楸鞠到y(tǒng)對(duì)讀取和寫入速率沒(méi)有多大要求,傳輸?shù)臄?shù)據(jù)頂多1.5MB/s。3.3.4 按鍵和指示燈電路如圖3.14所示,四個(gè)按鍵除了KEY_

37、UP采用STM32 GPIO下拉模式,其他三個(gè)按鍵都采用了GPIO上拉模式。KEY_UP接PA0,PA0引腳可以用來(lái)喚醒處于待機(jī)模式的單片機(jī),而WK_UP是高電平有效,所以我們配置撐了下拉模式,我們可以借此按鍵做成類似于手機(jī)的那種開關(guān)機(jī)按鈕。PWR為電源指示燈,LED0、LED1可以做成呼吸燈,用來(lái)指示系統(tǒng)是否正常運(yùn)行或者也可以設(shè)置成信號(hào)指示燈,如短信提醒等23。本系統(tǒng)中LED1用來(lái)做呼吸燈,指示系統(tǒng)是否正常運(yùn)行,LED0用來(lái)指示新信息。至于限流電阻的取值,應(yīng)不同顏色的發(fā)光二極管而不同,考慮到白光、藍(lán)光的二極管導(dǎo)通壓降為2.7-3V左右,部分顏色的二極管導(dǎo)通壓降最低只有1.7V左右,而且二極管

38、的導(dǎo)通電流為3mA時(shí),二極管就能正常發(fā)光,電流最好不超過(guò)20mA。綜合以上考慮,我們暫定限流電阻為510歐姆,在實(shí)際焊接中,我們根據(jù)不同顏色的二極管選擇更合適的限流電阻。圖3.14 按鍵和指示燈電路3.3.5 蜂鳴器電路蜂鳴器按有無(wú)震蕩源可分為有源蜂鳴器和無(wú)源蜂鳴器,有源蜂鳴器內(nèi)部自帶振蕩電路,加適當(dāng)?shù)闹绷麟娫淳涂梢园l(fā)聲,頻率通常固定,易于操作;而無(wú)源蜂鳴器一般需要通過(guò)外部的方波信號(hào)驅(qū)動(dòng),頻率可以改變,一般為1到4KHz最佳,所以可以演奏出優(yōu)美的音樂(lè)如生日快樂(lè)歌等。圖3.15 蜂鳴器電路在本系統(tǒng)中,蜂鳴器可以提示有新信息,同時(shí)也可以用來(lái)觸摸屏按鍵發(fā)聲24,25。此處,為了程序控制簡(jiǎn)單,我們選擇

39、了3.3V的有源蜂鳴器。如圖3.15所示,由于單片機(jī)IO口輸出電流有限,所以我們的蜂鳴器驅(qū)動(dòng)電路通過(guò)NPN三極管S8050放大電流,從而驅(qū)動(dòng)蜂鳴器發(fā)聲,同時(shí)在三極管的基極要加限流電阻。當(dāng)PB8由程序配置輸出高電平時(shí),則基極與發(fā)射極有了大約3V的壓降,三極管Q1導(dǎo)通,三極管Q1集電極被發(fā)射極拉低,此時(shí)蜂鳴器兩端等于接了3.3V電壓,所以發(fā)聲。當(dāng)PB8配置為低電平時(shí),三極管Q1基極與發(fā)射極沒(méi)有0.7V的導(dǎo)通壓降,Q1此時(shí)為截止?fàn)顟B(tài),此時(shí)集電極不能被發(fā)射極拉低,從而蜂鳴器兩端沒(méi)有施加電壓,則不會(huì)發(fā)聲。3.4 本章小結(jié)本章主要論述了系統(tǒng)硬件設(shè)計(jì)以及方案論證,首先我們對(duì)控制器做了對(duì)比,并詳細(xì)列出選擇此控

40、制器的原因,然后對(duì)單片機(jī)最小系統(tǒng)設(shè)計(jì)進(jìn)行了分析,其中也包括了仿真接口、電源電路,接著我們還簡(jiǎn)單介紹了GSM模塊SIM900A通訊模塊,最后我們重點(diǎn)對(duì)外圍硬件電路包括一鍵下載電路、液晶屏接口、外部存儲(chǔ)器、按鍵和指示燈電路以及蜂鳴器電路作了一一分析,并論述了器件選型、相關(guān)IO口配置以及總線配置。第4章 系統(tǒng)軟件設(shè)計(jì)4.1 總體框圖圖4.1 總體框圖系統(tǒng)軟件設(shè)計(jì)總體框圖如圖4.1所示,具體可分為初始化和測(cè)試兩階段。4.2 系統(tǒng)初始化本模塊初始化主要包括系統(tǒng)時(shí)鐘配置、串口2初始化、液晶初始化、按鍵初始化、串口1初始化等。系統(tǒng)時(shí)鐘配置為外部時(shí)鐘經(jīng)PLL倍頻后的72MHz,也是STM32F103ZZET6

41、最大的工作頻率。串口1波特率設(shè)置為9600bps,8位數(shù)據(jù)位,一位停止位,無(wú)奇偶校驗(yàn)位,無(wú)硬件流控制,用于與上位機(jī)通信。串口2波特率為115200bps,8位數(shù)據(jù)位,一位停止位,無(wú)奇偶校驗(yàn)位,無(wú)硬件流控制,用于與GSM模塊通信25,26。按鍵初始化,設(shè)置KEY_UP所接IO口為下拉輸入模式,其他三個(gè)按鍵KEY0、KEY1、KEY2所接IO口設(shè)置為上拉輸入模式。液晶初始化這里就不敘述了,比較復(fù)雜。4.3 文件系統(tǒng)FATFS移植FATFS是一個(gè)完全免費(fèi)開源的FAT 文件系統(tǒng)模塊,用一系列宏定義來(lái)定義相關(guān)參數(shù),可移植性性、封裝性極強(qiáng),可應(yīng)用于各種小型嵌入式處理器中。移植該文件系統(tǒng)時(shí),一般我們只需要修

42、改2個(gè)文件:配置文件ffconf.h和底層驅(qū)動(dòng)文件diskio.c。配置文件主要是修改模塊參數(shù)來(lái)符合我們的需求,底層驅(qū)動(dòng)文件主要實(shí)現(xiàn)系統(tǒng)硬件底層與API函數(shù)兼容。接下來(lái)我們將介紹如何配置ffconf.h中幾個(gè)重要的參數(shù),這些參數(shù)都是通過(guò)宏定義來(lái)實(shí)現(xiàn)的,可移植性強(qiáng)。首先我們需要使用的是文件系統(tǒng)FATFS,所以_FS_TINY后面的宏定義選項(xiàng)改為0;接著我們需要快速定位文件或文件夾,所以將_USE_FASTSEEK設(shè)置為1;語(yǔ)言選項(xiàng)_CODE_PAGE我們?cè)O(shè)置為936,也就是GBK,不過(guò)需要有FATFS源碼中option文件夾下的936.c文件;然后我們需要設(shè)置FATFS支持的邏輯設(shè)備數(shù)目,本系統(tǒng)

43、中主要是對(duì)SD卡操作,所以_VOLUMES設(shè)置為1;由于可能會(huì)使用到長(zhǎng)文件名,所以我們可以將_USE_LFN設(shè)置為3;最后我們還需要設(shè)置下扇區(qū)緩沖的最大值_MAX_SS為512,即512字節(jié)。這里就不敘述了其他配置項(xiàng),integer.h中的數(shù)據(jù)類型這里也不用改了,因?yàn)榕cSTM32數(shù)據(jù)類型兼容。接下里我們只要改寫底層diskio.c的代碼就行了,關(guān)于文件系統(tǒng)移植,我們就大概介紹到這。4.4 漢字字庫(kù)因?yàn)楸鞠到y(tǒng)需要顯示中英文短信,所以需要漢字字庫(kù)。漢字字庫(kù)需要借助文件系統(tǒng)將SD中存放的字庫(kù)文件燒入到Flash中,然后每次顯示中文時(shí),直接到Flash中找出相對(duì)應(yīng)的漢字點(diǎn)陣數(shù)據(jù)。4.4.1 更新字庫(kù)本

44、部分需要實(shí)現(xiàn)從SD卡中燒入字庫(kù)到外擴(kuò)SPI Flash中,并且實(shí)時(shí)顯示進(jìn)度。首先,我們初始化SPI Flash,SD卡是否存在,然后我們依次更新字庫(kù),在更新的同時(shí),同時(shí)顯示進(jìn)度。相關(guān)參數(shù)定義如下:#define UGBK 0#define GBK12 0x01#define GBK16 0x02#define GBK24 0x04#define CHAR24 0x08#define CHAR32 0x10u32 FONTINFOADDR=0;_font_info_ ftinfo;/在SD卡中的路徑const u8 *GBK24_SDPATH="0:/SYSTEM/FONT/GBK24

45、.FON"const u8 *CHAR24_SDPATH="0:/SYSTEM/FONT/CHAR24.FON"const u8 *CHAR32_SDPATH="0:/SYSTEM/FONT/CHAR32.FON" 具體函數(shù)原型如下: u8 font_init(void);/字庫(kù)初始化 u8 update_fontx(u16 x,u16 y,u8 size,u8 *fxpath,u8 fx);/更新指定字庫(kù) u8 update_font(u16 x,u16 y,u8 size,u8 src);/更新全部字庫(kù) u32 fupd_prog(u16

46、x,u16 y,u8 size,u32 fsize,u32 pos);/顯示更新進(jìn)度 4.4.2 查找漢字每個(gè)GBK碼由2個(gè)字節(jié)組成,第一個(gè)字節(jié)為0x81-0xfe,第二個(gè)字節(jié)分為兩部分,一是0x40-0x7e,二是0x80-0xfe。這樣,假設(shè)Ch為某漢字的第一個(gè)字節(jié),Cl為第二個(gè)字節(jié),漢字字體的大小用size表示,我們從地址0處開始存放字庫(kù),那么我們就可以得出該漢字點(diǎn)陣數(shù)據(jù)在字庫(kù)里的起始地址X的公式: 當(dāng)Cl<0x7f時(shí):X=(Ch-0x81)*190+Cl-0x40)*(size*size/8); 當(dāng)Cl>0x80時(shí):X=(Ch-0x81)*190+Cl-0x41)*(siz

47、e*size/8); 以上論述程序?qū)崿F(xiàn)具體如下:void Get_HzMat(u8 *code,u8 *mat,u8 size) u8 qh,ql;u8 i; u32 foffset; u8 size0;if(bHz)/中文 qh=*code;ql=*(+code);if(size=12) size0=16;else size0=size;if(qh<0x81|ql<0x40|ql=0xff|qh=0xff) for(i=0;i<(size*2);i+)*mat+=0x00;return; if(ql<0x7f)ql-=0x40;else ql-=0x41;qh-=0x

48、81; foffset=(unsigned long)190*qh+ql)*(size*size0/8);/得到字庫(kù)中的字節(jié)偏移量 switch(size)case16:SPI_Flash_Read(mat,foffset+ftinfo.f16addr,32);break;case12:SPI_Flash_Read(mat,foffset+ftinfo.f12addr,24);break;case24:SPI_Flash_Read(mat,foffset+ftinfo.f24addr,72);break;case32:SPI_Flash_Read(mat,foffset+ftinfo.f32a

49、ddr,128);break;default:break; else/字符ql=*code;size0=size*(size/8);if(ql<0x20|ql>0x98) for(i=0;i<size0/2;i+)*mat+=0x00; return;ql-=0x20;foffset=(unsigned long)ql*size0/2;if(size=24) SPI_Flash_Read(mat,foffset+ftinfo.chr24addr,size0/2);/目前只支持CHAR24、32字體else if(size=32) SPI_Flash_Read(mat,foff

50、set+ftinfo.chr32addr,size0/2); 經(jīng)過(guò)上面調(diào)用上面的函數(shù),我們可以得到漢字在字庫(kù)中的首地址,這樣我們只要依次取出size*size/8(12號(hào)字體除外)個(gè)數(shù)據(jù),在LCD上畫點(diǎn),就可以顯示該漢字了。具體實(shí)現(xiàn)如下: void Show_Font(u16 x,u16 y,u8 *font,u8 size,u8 mode)u8 temp,t,t1;u16 y0=y;u8 dzk128;u16 tempcolor; u8 size0;Get_HzMat(font,dzk,size);if(bHz)if(size=12) size0=16;else size0=size; el

51、se size0=size;/字符串字庫(kù)if(mode=0) for(t=0;t<size/(2-bHz)*(size0/8);t+) temp=dzkt; for(t1=0;t1<8;t1+)if(temp&0x80)LCD_DrawPoint(x,y);else tempcolor=POINT_COLOR;POINT_COLOR=BACK_COLOR;LCD_DrawPoint(x,y);POINT_COLOR=tempcolor;temp<<=1;y+;if(y-y0)=size)y=y0;x+;break; elsefor(t=0;t<size/(

52、2-bHz)*(size0/8);t+) temp=dzkt; for(t1=0;t1<8;t1+)if(temp&0x80)LCD_DrawPoint(x,y); temp<<=1;y+;if(y-y0)=size)y=y0;x+;break; 4.5 觸摸屏模塊相對(duì)于鼠標(biāo)這種相對(duì)坐標(biāo)系統(tǒng),觸摸屏則是一種絕對(duì)坐標(biāo)系統(tǒng),其特點(diǎn)就是每次坐標(biāo)定位與上次定位無(wú)關(guān),每次觸摸后的數(shù)據(jù)都會(huì)經(jīng)過(guò)高精度AD采樣轉(zhuǎn)化為物理坐標(biāo),所以控制芯片對(duì)于同一點(diǎn)觸摸后的輸出數(shù)據(jù)理論上來(lái)講應(yīng)該是相同的。但是實(shí)際上由于技術(shù)上的原因,在同一點(diǎn)的多次采樣數(shù)據(jù)并不一定能保證完全一致,從而可能導(dǎo)致點(diǎn)不準(zhǔn),這也

53、就是所謂的漂移現(xiàn)象,所以有時(shí)需要自己手動(dòng)校準(zhǔn)。觸摸屏實(shí)際坐標(biāo)與控制芯片采集到的物理坐標(biāo)是線性關(guān)系,即一次函數(shù)關(guān)系。所以我們只要測(cè)出兩個(gè)固定坐標(biāo)點(diǎn)的物理坐標(biāo),我們就可以確定該一次函數(shù)的兩個(gè)系數(shù),這樣,我們就可以測(cè)出任何一個(gè)物理坐標(biāo)即控制芯片采集的數(shù)字量所對(duì)應(yīng)的絕對(duì)坐標(biāo)即LCD像素坐標(biāo)。但是通過(guò)兩個(gè)點(diǎn)測(cè)出的數(shù)據(jù)存在誤差。所以我們需要檢測(cè)更多的點(diǎn)然后結(jié)合一定的算法去減小誤差。 通過(guò)上述描述,采用的校準(zhǔn)程序思路大致如下:只要事先在屏幕上面顯示4個(gè)點(diǎn)比如點(diǎn)1、點(diǎn)2、點(diǎn)3、點(diǎn)4(這四個(gè)點(diǎn)的坐標(biāo)是已知的),組成一個(gè)矩形,如圖4.1所示。分別按下這四個(gè)點(diǎn)就可以從觸摸屏讀到4個(gè)物理坐標(biāo),然后我們通過(guò)一定的算法判

54、定是否合法。具體算法如下:2 31124圖4.1 校準(zhǔn)四點(diǎn)圖1) 檢測(cè)矩形對(duì)邊相等:對(duì)平行的點(diǎn)1和點(diǎn)2作差,點(diǎn)3和點(diǎn)4也是,對(duì)比兩者只差是否在一定的誤差范圍內(nèi)。然后再對(duì)點(diǎn)1和點(diǎn)3作差,點(diǎn)2和點(diǎn)4作差,對(duì)比兩者只差是否在一定的誤差范圍內(nèi)。2) 檢測(cè)矩形對(duì)角線是否相等:對(duì)點(diǎn)1和點(diǎn)3的距離,點(diǎn)2和點(diǎn)4的距離對(duì)比,是否在一定的范圍誤差內(nèi)。經(jīng)過(guò)上述的算法,如果都符合,說(shuō)明在誤差范圍內(nèi)觸摸屏已經(jīng)校準(zhǔn)好,然后這樣算出兩個(gè)坐標(biāo)線性關(guān)系的四個(gè)參數(shù)即兩個(gè)斜率和截距。接著我們把這四個(gè)參數(shù)保存在AT24C02中,這樣以后就可以推算出準(zhǔn)確的坐標(biāo),從而達(dá)到了校準(zhǔn)的目的。同時(shí)為了避免每次上電都需要重新校準(zhǔn),我們可以設(shè)置一個(gè)標(biāo)志位,來(lái)保存是否已經(jīng)校準(zhǔn),這時(shí)我們就可以借助EEPROM,即使掉電也可以保存數(shù)據(jù)。同時(shí)我們還要將兩個(gè)觸摸屏的重要參數(shù)保存下來(lái)。在系統(tǒng)程序中,我們還可以設(shè)置一個(gè)按鍵用來(lái)強(qiáng)制校準(zhǔn),即用戶任何時(shí)候都可以校準(zhǔn)程序,不過(guò)本系統(tǒng)設(shè)計(jì)時(shí),只能在STM32復(fù)位后很短的一段

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論