




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、南京工程學(xué)院自動化學(xué)院本科畢業(yè)設(shè)計(論文)1南京工程學(xué)院自動化學(xué)院本科畢業(yè)設(shè)計(論文)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ù)使得只需要增加少量投入便可以通過手機(jī)實現(xiàn)生活和生產(chǎn)中的遠(yuǎn)程控制和告警通知成為可能。本設(shè)計是基于ARM Cortex-M3內(nèi)核的3
2、2位單片機(jī)STM32的一種短信收發(fā)系統(tǒng)。本系統(tǒng)主要實現(xiàn)中英文短信收發(fā)及TFT彩屏顯示相關(guān)狀態(tài)如短信未讀、已讀狀態(tài)、短信發(fā)送狀態(tài)和內(nèi)容如要讀取短信數(shù)、讀取到的短信內(nèi)容、時間、發(fā)件人手機(jī)號碼等,并且可以實現(xiàn)通過TFT液晶屏觸摸輸入號碼和功能按鍵如讀取、返回、撥號、掛斷、刪除等。此方案以ST公司32位單片機(jī)STM32F103ZET6為主控制器輔以GSM/GPRS模塊SIM900A,64Mb串行Flash存儲器W25Q64,2K串行EEPROM AT24C02,TFT液晶屏ILI9320等硬件,通過C語言編寫程序,用軟硬件結(jié)合的方法實現(xiàn)其基本功能。經(jīng)過多次實踐測試,本系統(tǒng)可以達(dá)到預(yù)期的穩(wěn)定性、可靠性,
3、可以應(yīng)用在遠(yuǎn)程控制、智能家居、工業(yè)控制等領(lǐng)域。關(guān)鍵詞:SIM900A ;STM32;短信;GSM;TFT液晶屏1南京工程學(xué)院自動化學(xué)院本科畢業(yè)設(shè)計(論文)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é)院自動化學(xué)院本科畢業(yè)設(shè)計(論文)目 錄第一章 緒 論11.1 引言11.2 選題背景與意義11.3 應(yīng)用現(xiàn)狀及發(fā)展趨勢1第二章 GSM系統(tǒng)及方案設(shè)計32.1 GSM系統(tǒng)
8、32.1.1 GSM系統(tǒng)特點32.1.2 GSM系統(tǒng)的體系結(jié)構(gòu)32.2 GSM系統(tǒng)方案設(shè)計42.3 本章小結(jié)5第三章 系統(tǒng)硬件設(shè)計63.1 單片機(jī)最小系統(tǒng)63.1.1主控制器63.1.2 主控制器外圍簡單電路73.1.3 JTAG接口83.1.4 電源電路93.2 SIM900A模塊103.2.1 SIM900A模塊的對外接口電路103.2.2 SIM900A模塊初始化113.3 外圍電路設(shè)計123.3.1 一鍵下載電路123.3.2 TFT液晶屏接口123.3.3外部存儲器133.3.4 按鍵和指示燈電路153.3.5 蜂鳴器電路163.4 本章小結(jié)17第四章 系統(tǒng)軟件設(shè)計184.1 總體框
9、圖184.2 系統(tǒng)初始化194.3 文件系統(tǒng)FATFS移植19III4.4 漢字字庫19 4.4.1 更新字庫204.4.2 查找漢字204.5 觸摸屏模塊244.6 RTC顯示254.6.1 RTC簡介254.6.2 設(shè)置時間264.6.3備份區(qū)域保護(hù)264.7 開關(guān)機(jī)264.7.1 待機(jī)模式簡介264.7.2 開關(guān)機(jī)實現(xiàn)過程274.8 本章小結(jié)28第五章 系統(tǒng)調(diào)試295.1系統(tǒng)調(diào)試過程與方法295.1.1 串口通信295.1.2 系統(tǒng)UI315.1.3 讀取短信325.1.4 發(fā)送短信325.1.5 電話測試335.2系統(tǒng)調(diào)試結(jié)果與分析345.3本章小結(jié)42第六章 結(jié) 論436.1 主要工
10、作與結(jié)論436.2 存在的問題436.3 感想與收獲43致 謝44參 考 文 獻(xiàn)45附錄A:硬件設(shè)計原理圖與PCB圖47IV第1章 緒 論1.1 引言移動通信發(fā)展到現(xiàn)在,經(jīng)歷了由模擬到數(shù)字的變化,早期的移動通信系統(tǒng)是以AMPS和ETACS為代表的模擬移動通信系統(tǒng)。90年代,隨著移動通信用戶數(shù)量的增加,用戶對跨地區(qū),跨國漫游以及各種增值服務(wù)要求也隨之增加,同時數(shù)字通信技術(shù)發(fā)展也日趨成熟,歐洲的移動通信運營商開始考慮發(fā)展一種新型的數(shù)字移動通信系統(tǒng),GSM系統(tǒng)也就應(yīng)運而生1。GSM是英文“Global System for Mobile Communications”的縮寫,其全文含義是“全球移動通
11、信系統(tǒng)”2。我國移動通信發(fā)展已經(jīng)進(jìn)入了一個高速發(fā)展的階段,短消息作為其中作為最簡單和方便的數(shù)據(jù)通信方式,其應(yīng)用發(fā)展速度可想而知,自然也非常迅速。隨著信息化時代的高速發(fā)展,短信息也越來越廉價了,并且短信息的及時性、穩(wěn)定性也得到了更好的保證3。1.2 選題背景與意義在高速發(fā)展的信息化時代的今天,物聯(lián)網(wǎng)是新一代信息技術(shù)的重要組成部分,其覆蓋范圍極廣,包括從傳感器、控制器到云計算的各種應(yīng)用以及產(chǎn)品服務(wù)智能家居、交通物流、環(huán)境保護(hù)、公共安全、智能消防、工業(yè)檢測、工業(yè)控制、個人健康等各種領(lǐng)域。它是下一個推動世界高速發(fā)展的“重要生產(chǎn)力”,是繼通信網(wǎng)之后的一個萬億級市場。而以GSM/GPRS為代表的通信技術(shù)是
12、極其重要的一環(huán),掌握了GSM/GPRS通信技術(shù),就相當(dāng)于掌握了一個萬億級市場。近些年來,隨著物聯(lián)網(wǎng)時代的到來,各種無線技術(shù)都得到了迅猛的發(fā)展,如比較熱門的Zigbee、WIFI、Bluetooth等,雖然這幾種技術(shù)在局域無線網(wǎng)中應(yīng)用較廣泛、成本也較低,但是都有一個共同的缺點,那就是傳輸距離有限,比較適合民用。而GSM短信息業(yè)務(wù)費用低廉、覆蓋范圍廣、實現(xiàn)簡單,可以解決上述的不足,具有低成本、可升級和可擴(kuò)展性,在物聯(lián)網(wǎng)時代的今天應(yīng)具有較廣闊的前景4。1.3 應(yīng)用現(xiàn)狀及發(fā)展趨勢作為一種數(shù)據(jù)傳輸方式,GSM短消息具有覆蓋面積廣、低成本、信號好的多個優(yōu)點,對于解決監(jiān)控采集點分散、覆蓋面廣、監(jiān)控點移動、實
13、時性要求較低的監(jiān)控采集系統(tǒng)具有無可比擬的優(yōu)勢。下面就講述幾個具體的應(yīng)用:第1、 在智能家居中的應(yīng)用,隨著近幾年嵌入式產(chǎn)品的高速發(fā)展,人們越來越享受科技發(fā)展給我們的生活帶來的方便。越來越多的高科技智能化產(chǎn)品,已經(jīng)被廣泛應(yīng)用到我們的實際生活中?,F(xiàn)在,家用電器如電視、冰箱、空調(diào)、微波爐等普遍向智能化方向發(fā)展,我們都能直接通過手機(jī)操控開關(guān)和改變功率。利用GSM模塊,我們可以用手機(jī)發(fā)送特定的短信,打開或關(guān)閉家中的燈、空調(diào)、電視等電器,同時還可以發(fā)送家中的情況發(fā)送到手機(jī)上。在GSM系統(tǒng)中再加入一些傳感器,如溫濕度傳感器、污染氣體傳感器、燃?xì)鈧鞲衅鞯?,就可以增加家居的安全性,即使我們在上班或者旅行時,也可以
14、及時獲取家中的安全狀況。一旦發(fā)生危急情況,也可以及時采取措施,避免或者減小財產(chǎn)損失以及人身安全5,6。第2、 在汽車中的應(yīng)用,隨著交通工具的不斷發(fā)展,汽車也變得普及了起來,汽車的防盜的解決自然也是迫在眉睫。我們可以將GSM模塊安裝在汽車的隱蔽處,一旦發(fā)生盜竊,立即發(fā)送短信提醒車主,然后就可以用手機(jī)發(fā)送一條短信給該模塊,模塊經(jīng)一定的算法處理判斷短信的合法性后,將附近的GSM基站信息及時發(fā)送給車主,這樣就可以有利于警方的快速破案。同時還可以像智能家居一樣,用GSM模塊控制車中的空調(diào),在車主上車之前,就可以打開空調(diào),這樣車主在一上車后就可以感受到合適的溫度7,8。第3、 在工控系統(tǒng)中的應(yīng)用,由于有的
15、工控系統(tǒng)環(huán)境比較惡劣,不適合進(jìn)行有線網(wǎng)絡(luò)的傳輸,需要借助無線技術(shù)來實現(xiàn)控制目的。例如,油田檢測、礦產(chǎn)開發(fā)時瓦斯?jié)舛缺O(jiān)測等,不可能借助人力去檢測,而有線技術(shù)也不適合,WIFI、Zigbee等短距離無線技術(shù)又不能發(fā)揮很好的作用,而借助于GSM網(wǎng)絡(luò)的SMS可以很好解決這一問題9。第二章 GSM系統(tǒng)及方案設(shè)計2.1 GSM系統(tǒng)2.1.1 GSM系統(tǒng)特點 GSM是在蜂窩系統(tǒng)的基礎(chǔ)上發(fā)展而成并根據(jù)歐洲電信標(biāo)準(zhǔn)化協(xié)會制定的GSM技術(shù)規(guī)范設(shè)計的一種開放式結(jié)構(gòu)的系統(tǒng),屬于第二代數(shù)字移動通信系統(tǒng)。它是目前基于時分多址技術(shù)的移動通信中比較成熟、完善、且應(yīng)用最廣泛的一種系統(tǒng)10。主要具有以下幾個特點:1) GSM系統(tǒng)
16、是由幾個分系統(tǒng)組成的,可與各種公眾通信網(wǎng)互通互聯(lián)。2) GSM系統(tǒng)能提供國際的自動漫游功能,全部GSM移動用戶都可進(jìn)入GSM系統(tǒng)。3) GSM系統(tǒng)具有加密和鑒權(quán)功能,能確保用戶保密和網(wǎng)絡(luò)安全。4) GSM系統(tǒng)抗干擾能力強(qiáng),信號強(qiáng)。5) 隨著集成電路技術(shù)的快速發(fā)展,用戶設(shè)備也逐漸向小巧和多功能方向發(fā)展。2.1.2 GSM系統(tǒng)的體系結(jié)構(gòu)蜂窩移動通信系統(tǒng)主要是由交換網(wǎng)路子系統(tǒng)(NSS)、無線基站子系統(tǒng)(BSS)和移動臺(MS)三大部分組成,如圖2.1所示。其中NSS與BSS之間的接口為“A”接口,BSS與MS之間的接口為“Um”接口11。圖2.1 蜂窩移動系統(tǒng)組成框圖GSM系統(tǒng)框圖如圖2.2,A接口
17、往右是NSS系統(tǒng),A接口往左Um接口是BSS系統(tǒng),Um接口往左是移動臺部分(MS)。NSS由移動業(yè)務(wù)交換中心(MSC)、拜訪位置寄存器(VLR)、歸屬位置寄存器(HLR)、鑒權(quán)中心(AUC)和移動設(shè)備識別寄存器(EIR)幾部分組成,主要完成交換功能和客戶數(shù)據(jù)與移動性管理、安全性管理所需的數(shù)據(jù)庫功能。圖2.2 GSM系統(tǒng)框圖BSS是在一定的無線覆蓋區(qū)中由MSC控制,與MS進(jìn)行通信的系統(tǒng)設(shè)備,由基站控制器(BSC)和基站收發(fā)信臺(BTS)兩部分組成,主要功能是完成無線發(fā)送接收和無線資源管理等。 MS由移動終端(MS)和客戶識別卡(SIM)組成。2.2 GSM系統(tǒng)方案設(shè)計查閱相關(guān)資料可知,基于GSM
18、系統(tǒng)的短消息收發(fā)系統(tǒng)的實現(xiàn)方案主要有三種。第一種是通過移動網(wǎng)關(guān)發(fā)送短信息,此方案最大的優(yōu)點就是不需要額外的硬件,但是需要到電信部門去申請網(wǎng)關(guān),適用于大型的網(wǎng)絡(luò)通訊公司開發(fā),如華為、中興等。第二種使用網(wǎng)站提供的短信發(fā)送功能,如新浪、網(wǎng)易等網(wǎng)站。這種方法易于實現(xiàn),所需資源最少,但是對網(wǎng)站依賴性較大,而且只能發(fā)送短信,不支持實時接收短信。第三種在電腦或單片機(jī)通過GSM 模塊向手機(jī)發(fā)送短信,對硬件需求較大,比較適合小項目的開發(fā),但能實現(xiàn)自動收發(fā)短信12,13,14。第二種方法短信收發(fā)通常又分為兩種模式:Text、PDU模式,PDU模式比較復(fù)雜,需要用戶編寫專門的函數(shù)將文本格式轉(zhuǎn)換為PDU格式,而應(yīng)用T
19、ext模式開發(fā),則顯得簡單了很多,本文采用的是第二種方法的Text模式。第二種方法中,我們可以通過PC與GSM模塊進(jìn)行通信從而獲取相關(guān)數(shù)據(jù),也可以通過單片機(jī)與GSM模塊進(jìn)行通信。雖然PC功能強(qiáng)大,平臺易于實現(xiàn),但是不夠便攜,且成本較高,所以不是一個明智之選。我們選擇了單片機(jī)與GSM模進(jìn)行通信,從而與GSM網(wǎng)絡(luò)交互通信,從而實現(xiàn)與手機(jī)或其他的GSM模塊進(jìn)行通信,這種方法簡單易于實現(xiàn),只需要我們熟練掌握串口編程和AT指令即可15,系統(tǒng)框圖如圖2.3所示。圖2.3 GSM系統(tǒng)框圖2.3 本章小結(jié) 本部分主要論述了GSM系統(tǒng),首先介紹了GSM的特點、體系結(jié)構(gòu),接著提出了GSM系統(tǒng)的設(shè)計方案及簡要框圖。
20、第三章 系統(tǒng)硬件設(shè)計3.1 單片機(jī)最小系統(tǒng)3.1.1主控制器本系統(tǒng)選擇了ST公司的基于ARM Cortex-M3內(nèi)核的32位處理器STM32F103ZET6作為主控制器,封裝LQFP144。關(guān)于STM32F103ZEZT6,我們可以從官方數(shù)據(jù)手冊上可以看出:其最高72MHz工作頻率,512K字節(jié)Flash,64K字節(jié)SRAM ,支持2.03.6V寬電壓輸入,12通道DMA 控制器,有112個快速I/O端口,有13個通信接口包括2個I2C接口,5個USART接口其中3個可以配置為UART,3個SPI接口其中2個可復(fù)用為I2S接口等。由以上數(shù)據(jù)可以看出,本系統(tǒng)所選控制器性能是如此的優(yōu)越,在嵌入式產(chǎn)
21、品開發(fā)中必有其一席之地。無論是傳統(tǒng)51單片機(jī)或增強(qiáng)型51單片機(jī)還是RISC的8位AVR單片機(jī)還是16位的MSP430單片機(jī),本處理器在Flash、RAM、工作頻率以及外設(shè)上具有絕對的優(yōu)勢,性價比較高16,17。下面將會介紹系統(tǒng)選擇該處理器作為主控制器的原因:(1)本系統(tǒng)將會移植嵌入式文件系統(tǒng)FATFS,以便讀取外擴(kuò)Flash中的漢字字庫,所以對控制器RAM、Flash提出了較高要求,而市場上比較熱門的8/16位單片機(jī)基本很難勝任。(2)72MHz的工作頻率,而且采用精簡指令集,數(shù)據(jù)處理能力快。(3)FSMC(可配置的靜態(tài)存儲器控制器)可以配置成與多數(shù)圖形LCD控制器的無縫連接,可以支持Inte
22、l 8080和Motorola 6800的模式,可以更快速驅(qū)動LCD。(4)3.3V供電,且外設(shè)時鐘需要程序配置,功耗較低。(5)DMA傳輸數(shù)據(jù)更快,且不影響CPU運行。(6)112個IO口,可以支持?jǐn)U展很多功能。 (7)外設(shè)接口較多,且性能較好。本系統(tǒng)需要用到兩個串口,一個和電腦串口通信方便調(diào)試,可以接受上位機(jī)發(fā)來的更改信息或命令,另外一個和SIM900A模塊通信。該處理器的串口可配置成全雙工模式,數(shù)據(jù)位、波特率都可以程序配置18。3.1.2 主控制器外圍簡單電路如圖3.1所示,Y2為外部高速時鐘(HSE)8MHz晶振,C9、C10為負(fù)載電容,外部高速時鐘源經(jīng)STM32內(nèi)部PLL倍頻可配置為
23、系統(tǒng)時鐘,最高可配置達(dá)72MHz,這里采用72MHz位系統(tǒng)時鐘。Y1為外部低速時鐘(LSE)32.768kHz晶振,C4、C5為負(fù)載電容,它為實時時鐘或者其他定時功能提供一個低功耗且精確的低速時鐘源。后備區(qū)域VBAT腳采用了CR1220和3.3V混合供電的方式,而CR1220供電3V,所以當(dāng)VCC3.3供電時,二極管D2截止D1導(dǎo)通,然后就直接給VBAT供電。而在外部電源斷開或者外部電源電壓低于CR1220電壓時,D2導(dǎo)通D1截止,CR1220給VBAT供電。在圖3.1中,我們可以看出參考電壓端口VREF+和模擬電源輸入端口VDDA連在了一起,同時也間接和3.3V連接在一起了,這樣AD基準(zhǔn)電壓
24、和模擬電源都是3.3V。為了后期維護(hù),我們在圖3.2最小系統(tǒng)(2)中增加了R21和R22兩個0歐姆電阻,如果3.3V電源短路,我們可以用電烙鐵拆下它們來用萬用表測試以確定是STM32部分短路,還是外部3.3V電源部分短路,為我們快速解決電路短路問題提供了很大的便利。圖3.1 最小系統(tǒng)圖一 圖 3.2 最小系統(tǒng)圖二 圖 3.3 復(fù)位電路 圖3.4 啟動方式設(shè)置接口STM32低電平復(fù)位,所以電路與傳統(tǒng)51單片機(jī)高電平復(fù)位也有點差異,具體如圖3.3,電阻、電容值與時間常數(shù)有關(guān),會影響到復(fù)位效果,本處選取10K、0.1uF常用值。圖3.4為啟動方式設(shè)置接口圖,如表3.1所示,BOOT0、BOOT1設(shè)置
25、不同值,在系統(tǒng)時鐘第四個上升沿檢測BOOT引腳信號,STM32確定從哪個地址處開始加載。比如我們要下載程序到該處理器里,然后運行,我們先手動配置BOOT0、BOOT1為1、0,然后再配置為0、0,即我們需要手動配置BOOT0,BOOT1可以接地。為了避免手動配置,我們可以通過軟件結(jié)合一鍵下載電路可以自動配置,這點將在一鍵電路中會作進(jìn)一步分析。表3.1 BOOT0、BOOT1啟動模式表 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上拉電阻。同時JTAG、SWD下載速度都可以在ARM公司的MDK4.70A軟件中可以手動設(shè)置。圖3.5 JTAG接口電路3.1.4 電源電路圖3.6 電源電路如圖3.6所示,K1為總電源開關(guān),F(xiàn)1為500ma自恢復(fù)保險絲,用于保護(hù)電路,同時也可以防止燒壞電腦USB接口,AMS117-3.3為穩(wěn)壓芯片,輸入電壓為4.75V-12V,輸出3.3V電壓,紋波最大1.0mV,為STM32提供電源。貼片電容C29、C28濾去高頻雜波,貼片鋁電解電容C30隔直流通交流,濾去頻雜低波,從而為電路提供更穩(wěn)定、較小紋波的電源,防止損壞半導(dǎo)體器件。本電路電源來
27、源于USB供電,最大輸出電流500mA,負(fù)載能力有限,但是本系統(tǒng)中并無大的負(fù)載,同時GSM模塊是由單獨的電源適配器(12V 1A)供電的,所以是可行的的。在電路中,在5V、3.3V電源處我們都加了TVS保護(hù)電路,保護(hù)IC器件免受各種瞬態(tài)脈沖的沖擊,這里我們選用的是單向瞬態(tài)抑制二極管SMBJ5.0A和SMBJ3.3A。3.2 SIM900A模塊 3.2.1 SIM900A模塊的對外接口電路圖3.7 SIM900A對外接口框圖SIM900A對外接口框圖如圖3.7,對外接口包括:RS232接口,語音接口,控制線接口、SIM卡接口等。圖3.8 SIM900A實物3.2.2 SIM900A模塊初始化SI
28、M900A模塊初始化之前,先給模塊上電,由于SIM900A模塊在啟動注冊時,電流峰值會達(dá)到2A4V,所以模塊是由12V 1A電源適配器供電的,避免由于模塊功耗的突升,造成的死機(jī)或啟動不起來。上電后,長按啟動按鍵,實現(xiàn)模塊的開機(jī)。在模塊開機(jī)后,模塊上的指示燈,先是快閃,如果手機(jī)注冊成功后,指示燈會慢閃。如果長時間快閃沒有變成慢,應(yīng)長按啟動鍵會關(guān)機(jī)模塊,檢查天線, SIM卡片的固定情況,還有檢查SIM卡片是否能正常使用。當(dāng)模塊指示燈變?yōu)槁W時證明網(wǎng)絡(luò)注冊成功可以使用了。SIM900A實物如圖3.8,在與單片機(jī)通信之前,我們可以通過電腦串口與SIM900A模塊通信調(diào)試,來檢測模塊是否能正常工作19,
29、20,21,22。圖3.9 一鍵下載電路3.3 外圍電路設(shè)計3.3.1 一鍵下載電路上文已提及一鍵下載,自動配置BOOT0,現(xiàn)在將著重介紹具體工作過程。如圖3.9所示USB轉(zhuǎn)串口電路圖中,我們選擇的是SOP16封裝的CH340G芯片,USB接口使用的是mini USB接口,三極管Q2和Q3的組合構(gòu)成了一鍵下載電路。下載時我們只需要在STM32下載軟件mcuisp中選擇:DTR的低電平復(fù)位,RTS高電平進(jìn)BootLoader模式,就可以一鍵下載代碼了,而不需要手動配置B00T0和手動按復(fù)位鍵了。DTR#低電平,RTS#高電平輸出時,Q2 S8050導(dǎo)通,RESET被拉低,與此同時,Q3 S855
30、0也被導(dǎo)通,BOOT0也被上拉成高電平,然后軟件配置,延時拉高RESET退出復(fù)位,就開始進(jìn)入ISP串口下載。下載完成后,BOOT0因與100K下拉電阻相連,被拉低,進(jìn)而STM32下載完成后復(fù)位4個系統(tǒng)時鐘后會檢測到BOOT0低電平信號,進(jìn)而加載用戶Flash,即跑代碼。3.3.2 TFT液晶屏接口本系統(tǒng)中所用TFT液晶屏,型號為ILI9320,該模塊有以下控制線: CS:TFTLCD片選信號 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所示。下面我們將對FSMC控制TFTLCD過程作簡要分析。查閱相關(guān)技術(shù)手冊可知外部SRAM由地址線,數(shù)據(jù)線,寫信號(WE)、片選信號(CS)、讀信號(OE)三根控制信號線組成,其時序和TFTLCD的控制時序基本上相同。它們之間的唯一不同之處就是TFTLCD有RS命令/數(shù)據(jù)切換信號,而沒有地址信號,而地址信號是0/1二進(jìn)制信號,RS信號也是0/1信號,所以我們完全可以把RS信號等效成一個地址信號。比如我們把RS接在A2上面,那么當(dāng)FSMC控制器寫地址0的時候,A2就為0,其實也就是寫命令。而FSMC寫地址1的時候,A2將會變?yōu)?,也
32、就是寫數(shù)據(jù)。通過上述的分析,我們就可以通過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,沒有使用STM32自帶的SPI接口。XPT2046返回的是二進(jìn)制數(shù)字量,經(jīng)單片機(jī)進(jìn)行數(shù)據(jù)轉(zhuǎn)換可得出當(dāng)前具體的物理坐標(biāo),從而實現(xiàn)觸摸定位。
33、3.3.3外部存儲器本系統(tǒng)設(shè)計中有三種外部存儲器電路:EEPROM、Flash、SD卡,分別用于保存觸摸屏校準(zhǔn)參數(shù)、漢字字庫、要更新的漢字字庫。(1)EEPROM如圖3.11所示,EEPROM芯片我們使用的是串行AT24C02,其容量為2Kb,也就是256個字節(jié),對于本系統(tǒng)應(yīng)用已經(jīng)足夠。A0-A2三位是其地址線,設(shè)計時我們一般把A0-A2均接地,對AT24C02來說也就是把這三位地址位設(shè)置成了0,所以參考其技術(shù)手冊可知,該器件地址為0xA0。同時根據(jù)IIC總線電氣特性要求,時鐘線SCL、數(shù)據(jù)線SDA都需要接上拉電阻,一般取4.7K較好,如圖中R28、R29所示。24C02與單片機(jī)之間的通信方式
34、是I2C總線,這里我們也采用的是軟件模擬,因為經(jīng)過查閱很多資料,發(fā)現(xiàn)STM32在硬件I2C接口做的不是很好,不夠穩(wěn)定。I2C總線的時序這里就不介紹了,不過這種總線的通信速率不是很快,且軟件模擬在通信速度上會降低,但對我們來說已經(jīng)足夠了。圖3.11 AT24C02電路圖(2)FlashFLASH芯片型號我們選擇了W25Q64,其容量為64Mb,也就是8M字節(jié),與上述AT24C02一樣都是串行傳輸,占用較少的IO口。該芯片與單片機(jī)之間的通信方式為SPI總線,如圖3.12所示我們并沒有用軟件模擬SPI總線時序,而是采用了STM32自帶的硬件SPI接口SPI2,這樣傳輸速度會更快。SPI總線一般有四根
35、信號控制線:片選線CS,兩根數(shù)據(jù)線分別為主入從出MISO和主出從入MOSI,還有一根時鐘線SCLK。圖3.12 W25Q64電路圖擴(kuò)展Flash為了是存儲漢字字庫,因為STM32F103ZET6本身只具有512K Flash,如果用來存放字庫,肯定不夠,外擴(kuò)的Flash可以存放GBK和Unicode碼轉(zhuǎn)換字庫、16*12字體GBK碼字庫,16*16字體GBK碼等字庫,這樣我們就可以在TFT LCD上顯示16*12、16*16字體等字體的漢字和字符了。同時我們也可以存儲我們喜歡的字體,如華文行楷等。(3)SD卡本系統(tǒng)設(shè)計這個SD卡電路是為了從SD卡中更新字庫到Flash W25Q64中,F(xiàn)las
36、h中本身是不帶字庫的,不經(jīng)過SD卡或U盤直接燒入字庫到Flash中是不太現(xiàn)實的。如圖3.13所示,SD_CARD1為SD卡槽,通過P3、P4、P5組合,我們可以選擇SD卡驅(qū)動方式,因為SD卡有兩種驅(qū)動方式,SDIO接口或者SPI接口,SDIO驅(qū)動較快一點。SD卡接口電路除了時鐘線不用接上拉電路,其他控制線都要接上上拉電阻,如圖中R1、R2、R3、R4、R5所示。圖3.13 SD卡接口 本系統(tǒng)中擬用軟件SPI模式驅(qū)動,所以我們會將P3、P5所有排針用跳線帽短接,因為本系統(tǒng)對讀取和寫入速率沒有多大要求,傳輸?shù)臄?shù)據(jù)頂多1.5MB/s。3.3.4 按鍵和指示燈電路如圖3.14所示,四個按鍵除了KEY_
37、UP采用STM32 GPIO下拉模式,其他三個按鍵都采用了GPIO上拉模式。KEY_UP接PA0,PA0引腳可以用來喚醒處于待機(jī)模式的單片機(jī),而WK_UP是高電平有效,所以我們配置撐了下拉模式,我們可以借此按鍵做成類似于手機(jī)的那種開關(guān)機(jī)按鈕。PWR為電源指示燈,LED0、LED1可以做成呼吸燈,用來指示系統(tǒng)是否正常運行或者也可以設(shè)置成信號指示燈,如短信提醒等23。本系統(tǒng)中LED1用來做呼吸燈,指示系統(tǒng)是否正常運行,LED0用來指示新信息。至于限流電阻的取值,應(yīng)不同顏色的發(fā)光二極管而不同,考慮到白光、藍(lán)光的二極管導(dǎo)通壓降為2.7-3V左右,部分顏色的二極管導(dǎo)通壓降最低只有1.7V左右,而且二極管
38、的導(dǎo)通電流為3mA時,二極管就能正常發(fā)光,電流最好不超過20mA。綜合以上考慮,我們暫定限流電阻為510歐姆,在實際焊接中,我們根據(jù)不同顏色的二極管選擇更合適的限流電阻。圖3.14 按鍵和指示燈電路3.3.5 蜂鳴器電路蜂鳴器按有無震蕩源可分為有源蜂鳴器和無源蜂鳴器,有源蜂鳴器內(nèi)部自帶振蕩電路,加適當(dāng)?shù)闹绷麟娫淳涂梢园l(fā)聲,頻率通常固定,易于操作;而無源蜂鳴器一般需要通過外部的方波信號驅(qū)動,頻率可以改變,一般為1到4KHz最佳,所以可以演奏出優(yōu)美的音樂如生日快樂歌等。圖3.15 蜂鳴器電路在本系統(tǒng)中,蜂鳴器可以提示有新信息,同時也可以用來觸摸屏按鍵發(fā)聲24,25。此處,為了程序控制簡單,我們選擇
39、了3.3V的有源蜂鳴器。如圖3.15所示,由于單片機(jī)IO口輸出電流有限,所以我們的蜂鳴器驅(qū)動電路通過NPN三極管S8050放大電流,從而驅(qū)動蜂鳴器發(fā)聲,同時在三極管的基極要加限流電阻。當(dāng)PB8由程序配置輸出高電平時,則基極與發(fā)射極有了大約3V的壓降,三極管Q1導(dǎo)通,三極管Q1集電極被發(fā)射極拉低,此時蜂鳴器兩端等于接了3.3V電壓,所以發(fā)聲。當(dāng)PB8配置為低電平時,三極管Q1基極與發(fā)射極沒有0.7V的導(dǎo)通壓降,Q1此時為截止?fàn)顟B(tài),此時集電極不能被發(fā)射極拉低,從而蜂鳴器兩端沒有施加電壓,則不會發(fā)聲。3.4 本章小結(jié)本章主要論述了系統(tǒng)硬件設(shè)計以及方案論證,首先我們對控制器做了對比,并詳細(xì)列出選擇此控
40、制器的原因,然后對單片機(jī)最小系統(tǒng)設(shè)計進(jìn)行了分析,其中也包括了仿真接口、電源電路,接著我們還簡單介紹了GSM模塊SIM900A通訊模塊,最后我們重點對外圍硬件電路包括一鍵下載電路、液晶屏接口、外部存儲器、按鍵和指示燈電路以及蜂鳴器電路作了一一分析,并論述了器件選型、相關(guān)IO口配置以及總線配置。第4章 系統(tǒng)軟件設(shè)計4.1 總體框圖圖4.1 總體框圖系統(tǒng)軟件設(shè)計總體框圖如圖4.1所示,具體可分為初始化和測試兩階段。4.2 系統(tǒng)初始化本模塊初始化主要包括系統(tǒng)時鐘配置、串口2初始化、液晶初始化、按鍵初始化、串口1初始化等。系統(tǒng)時鐘配置為外部時鐘經(jīng)PLL倍頻后的72MHz,也是STM32F103ZZET6
41、最大的工作頻率。串口1波特率設(shè)置為9600bps,8位數(shù)據(jù)位,一位停止位,無奇偶校驗位,無硬件流控制,用于與上位機(jī)通信。串口2波特率為115200bps,8位數(shù)據(jù)位,一位停止位,無奇偶校驗位,無硬件流控制,用于與GSM模塊通信25,26。按鍵初始化,設(shè)置KEY_UP所接IO口為下拉輸入模式,其他三個按鍵KEY0、KEY1、KEY2所接IO口設(shè)置為上拉輸入模式。液晶初始化這里就不敘述了,比較復(fù)雜。4.3 文件系統(tǒng)FATFS移植FATFS是一個完全免費開源的FAT 文件系統(tǒng)模塊,用一系列宏定義來定義相關(guān)參數(shù),可移植性性、封裝性極強(qiáng),可應(yīng)用于各種小型嵌入式處理器中。移植該文件系統(tǒng)時,一般我們只需要修
42、改2個文件:配置文件ffconf.h和底層驅(qū)動文件diskio.c。配置文件主要是修改模塊參數(shù)來符合我們的需求,底層驅(qū)動文件主要實現(xiàn)系統(tǒng)硬件底層與API函數(shù)兼容。接下來我們將介紹如何配置ffconf.h中幾個重要的參數(shù),這些參數(shù)都是通過宏定義來實現(xiàn)的,可移植性強(qiáng)。首先我們需要使用的是文件系統(tǒng)FATFS,所以_FS_TINY后面的宏定義選項改為0;接著我們需要快速定位文件或文件夾,所以將_USE_FASTSEEK設(shè)置為1;語言選項_CODE_PAGE我們設(shè)置為936,也就是GBK,不過需要有FATFS源碼中option文件夾下的936.c文件;然后我們需要設(shè)置FATFS支持的邏輯設(shè)備數(shù)目,本系統(tǒng)
43、中主要是對SD卡操作,所以_VOLUMES設(shè)置為1;由于可能會使用到長文件名,所以我們可以將_USE_LFN設(shè)置為3;最后我們還需要設(shè)置下扇區(qū)緩沖的最大值_MAX_SS為512,即512字節(jié)。這里就不敘述了其他配置項,integer.h中的數(shù)據(jù)類型這里也不用改了,因為與STM32數(shù)據(jù)類型兼容。接下里我們只要改寫底層diskio.c的代碼就行了,關(guān)于文件系統(tǒng)移植,我們就大概介紹到這。4.4 漢字字庫因為本系統(tǒng)需要顯示中英文短信,所以需要漢字字庫。漢字字庫需要借助文件系統(tǒng)將SD中存放的字庫文件燒入到Flash中,然后每次顯示中文時,直接到Flash中找出相對應(yīng)的漢字點陣數(shù)據(jù)。4.4.1 更新字庫本
44、部分需要實現(xiàn)從SD卡中燒入字庫到外擴(kuò)SPI Flash中,并且實時顯示進(jìn)度。首先,我們初始化SPI Flash,SD卡是否存在,然后我們依次更新字庫,在更新的同時,同時顯示進(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);/字庫初始化 u8 update_fontx(u16 x,u16 y,u8 size,u8 *fxpath,u8 fx);/更新指定字庫 u8 update_font(u16 x,u16 y,u8 size,u8 src);/更新全部字庫 u32 fupd_prog(u16
46、x,u16 y,u8 size,u32 fsize,u32 pos);/顯示更新進(jìn)度 4.4.2 查找漢字每個GBK碼由2個字節(jié)組成,第一個字節(jié)為0x81-0xfe,第二個字節(jié)分為兩部分,一是0x40-0x7e,二是0x80-0xfe。這樣,假設(shè)Ch為某漢字的第一個字節(jié),Cl為第二個字節(jié),漢字字體的大小用size表示,我們從地址0處開始存放字庫,那么我們就可以得出該漢字點陣數(shù)據(jù)在字庫里的起始地址X的公式: 當(dāng)Cl<0x7f時:X=(Ch-0x81)*190+Cl-0x40)*(size*size/8); 當(dāng)Cl>0x80時: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);/得到字庫中的字節(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)過上面調(diào)用上面的函數(shù),我們可以得到漢字在字庫中的首地址,這樣我們只要依次取出size*size/8(12號字體除外)個數(shù)據(jù),在LCD上畫點,就可以顯示該漢字了。具體實現(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;/字符串字庫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 觸摸屏模塊相對于鼠標(biāo)這種相對坐標(biāo)系統(tǒng),觸摸屏則是一種絕對坐標(biāo)系統(tǒng),其特點就是每次坐標(biāo)定位與上次定位無關(guān),每次觸摸后的數(shù)據(jù)都會經(jīng)過高精度AD采樣轉(zhuǎn)化為物理坐標(biāo),所以控制芯片對于同一點觸摸后的輸出數(shù)據(jù)理論上來講應(yīng)該是相同的。但是實際上由于技術(shù)上的原因,在同一點的多次采樣數(shù)據(jù)并不一定能保證完全一致,從而可能導(dǎo)致點不準(zhǔn),這也
53、就是所謂的漂移現(xiàn)象,所以有時需要自己手動校準(zhǔn)。觸摸屏實際坐標(biāo)與控制芯片采集到的物理坐標(biāo)是線性關(guān)系,即一次函數(shù)關(guān)系。所以我們只要測出兩個固定坐標(biāo)點的物理坐標(biāo),我們就可以確定該一次函數(shù)的兩個系數(shù),這樣,我們就可以測出任何一個物理坐標(biāo)即控制芯片采集的數(shù)字量所對應(yīng)的絕對坐標(biāo)即LCD像素坐標(biāo)。但是通過兩個點測出的數(shù)據(jù)存在誤差。所以我們需要檢測更多的點然后結(jié)合一定的算法去減小誤差。 通過上述描述,采用的校準(zhǔn)程序思路大致如下:只要事先在屏幕上面顯示4個點比如點1、點2、點3、點4(這四個點的坐標(biāo)是已知的),組成一個矩形,如圖4.1所示。分別按下這四個點就可以從觸摸屏讀到4個物理坐標(biāo),然后我們通過一定的算法判
54、定是否合法。具體算法如下:2 31124圖4.1 校準(zhǔn)四點圖1) 檢測矩形對邊相等:對平行的點1和點2作差,點3和點4也是,對比兩者只差是否在一定的誤差范圍內(nèi)。然后再對點1和點3作差,點2和點4作差,對比兩者只差是否在一定的誤差范圍內(nèi)。2) 檢測矩形對角線是否相等:對點1和點3的距離,點2和點4的距離對比,是否在一定的范圍誤差內(nèi)。經(jīng)過上述的算法,如果都符合,說明在誤差范圍內(nèi)觸摸屏已經(jīng)校準(zhǔn)好,然后這樣算出兩個坐標(biāo)線性關(guān)系的四個參數(shù)即兩個斜率和截距。接著我們把這四個參數(shù)保存在AT24C02中,這樣以后就可以推算出準(zhǔn)確的坐標(biāo),從而達(dá)到了校準(zhǔn)的目的。同時為了避免每次上電都需要重新校準(zhǔn),我們可以設(shè)置一個標(biāo)志位,來保存是否已經(jīng)校準(zhǔn),這時我們就可以借助EEPROM,即使掉電也可以保存數(shù)據(jù)。同時我們還要將兩個觸摸屏的重要參數(shù)保存下來。在系統(tǒng)程序中,我們還可以設(shè)置一個按鍵用來強(qiáng)制校準(zhǔn),即用戶任何時候都可以校準(zhǔn)程序,不過本系統(tǒng)設(shè)計時,只能在STM32復(fù)位后很短的一段
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030燈芯絨行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國汽車金融行業(yè)市場深度分析及競爭格局與發(fā)展前景展望報告
- 2025至2030中國止血藥行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025至2030中國植物肥料行業(yè)發(fā)展分析及前景趨勢與投資戰(zhàn)略報告
- 2025至2030中國智能矯姿設(shè)備行業(yè)市場發(fā)展分析及發(fā)展趨勢與投資前景報告
- 熊貓寶寶看護(hù)活動方案
- 燕窩針對人群活動方案
- 愛在江蘇活動方案
- 愛心午餐活動方案
- 愛心車票活動方案
- 2025泉州市洛江區(qū)事業(yè)單位考試歷年真題
- 商場夏季餐飲活動方案
- 高溫施工人員防暑指南
- 上海市重點建設(shè)項目社會穩(wěn)定風(fēng)險評估報告編制指南2025
- 2025央國企AI+數(shù)智化轉(zhuǎn)型研究報告
- 倉儲部標(biāo)簽管理制度
- 數(shù)字化情報資源管理-洞察闡釋
- 2025年四川省高考物理試卷真題(含答案)
- 風(fēng)力發(fā)電運維值班員(技師)職業(yè)技能鑒定考試題(附答案)
- 數(shù)據(jù)庫應(yīng)用技術(shù)-第三次形考作業(yè)(第10章~第11章)-國開-參考資料
- 蘇教版四年級下冊數(shù)學(xué)計算題每日一練帶答案(共30天)
評論
0/150
提交評論