對STM32科學(xué)計算器的研究設(shè)計_第1頁
對STM32科學(xué)計算器的研究設(shè)計_第2頁
對STM32科學(xué)計算器的研究設(shè)計_第3頁
對STM32科學(xué)計算器的研究設(shè)計_第4頁
對STM32科學(xué)計算器的研究設(shè)計_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于STM32科學(xué)計算器的設(shè)計 畢業(yè)設(shè)計論文課題基于STM32科學(xué)計算器的設(shè)計姓 名 劉 斐 系 別 電子與電氣工程系 專 業(yè) 應(yīng)用電子技術(shù) 班 級 應(yīng)電1002班 時 間2012年10月-7>2013年4月指導(dǎo)老師 盧 岲 電子與電氣工程系2012年10月28日摘 要單片機(jī)的出現(xiàn)是計算機(jī)制造技術(shù)高速發(fā)展的產(chǎn)物它是嵌入式控制系統(tǒng)的核心如今它已廣泛的應(yīng)用到我們生活中的各個領(lǐng)域電子科技通信汽車工業(yè)等我們這次設(shè)計的科學(xué)計算器就是利用STM32單片機(jī)制作而成計算器calculator一般是指電子計算器該名詞由日文傳入中國計算器是能進(jìn)行數(shù)學(xué)運算的手持機(jī)器擁有集成電路芯片結(jié)構(gòu)簡單功能較弱但由于它使用

2、方便操作簡單價格低廉因而廣泛運用于商業(yè)交易中也是必備的辦公用品之一為了進(jìn)行大量浮點數(shù)的運算并且能很好的支持彩屏的顯示我們選用了計算能力較強(qiáng)的基于Cortex-M3系列的STM32單片機(jī)作為微控制器STM32系列是32位單片機(jī)運算能力遠(yuǎn)比其他單片機(jī)強(qiáng)基于專為要求高性能低成本低功耗的嵌入式應(yīng)用專門設(shè)計的ARM Cortex-M3內(nèi)核時鐘頻率高達(dá)72MHz遠(yuǎn)遠(yuǎn)高于51AVR等單片機(jī)從閃存執(zhí)行代碼STM32功耗36mA是32位市場上功耗最低的產(chǎn)品相當(dāng)于05mAMHz關(guān)鍵詞STM32單片機(jī)觸摸屏計算器AbstractMonolithic integrated circuit occurs is a pr

3、oduct of the rapid development of computer technology it is the core of the embedded control system today it has been widely applied to all areas of our daily life electronics technology telecommunications automotive industrial etc Our scientific calculator of this design is to use the STM32 microco

4、ntroller produced byCalculator Calculator generally refers to the "Calculator" the noun by the Japanese came to China Calculators are handheld machine that can do the math with integrated circuit chips simple structure less functional but because of its ease of use simple operation and low

5、 cost which are widely used in commercial transactions is one of the essential office suppliesKey words STM32microcontroller touch calculator目 錄摘 要2Abstract3目 錄4第一章引言6第二章總體方案設(shè)計721任務(wù)與要求7com7com722方案論證7com系統(tǒng)的選型7com的選型8com儲器的選型823系統(tǒng)總體設(shè)計8第三章系統(tǒng)硬件設(shè)計931微控制器簡介932觸摸屏模塊簡介10com分簡介10com分簡介1233AT24C02簡介1334整體系統(tǒng)硬

6、件設(shè)計15com系統(tǒng)設(shè)計16com分設(shè)計16com和PC機(jī)通信設(shè)計17com和觸摸屏接口設(shè)計17第四章系統(tǒng)軟件設(shè)計2041系統(tǒng)各個模塊初始化2042顯示模塊程序設(shè)計2143觸摸模塊程序設(shè)計2544實現(xiàn)運算表達(dá)式的程序設(shè)計27第五章總 結(jié)32致 謝34參考文獻(xiàn)35附 錄36引言最早的計算工具誕生在中國 中國古代最早采用的一種計算工具叫籌策又被叫做算籌這種算籌多用竹子制成也有用木頭獸骨充當(dāng)材料的約二百七十枚一束放在布袋里可隨身攜帶 直到今天仍在使用的珠算盤是中國古代計算工具領(lǐng)域中的另一項發(fā)明明代時的珠算盤已經(jīng)與現(xiàn)代的珠算盤幾乎相同 17世紀(jì)初西方國家的計算工具有了較大的發(fā)展英國數(shù)學(xué)家納皮爾發(fā)明了納

7、皮爾算籌英國牧師奧卻德發(fā)明了圓柱形對數(shù)計算尺這種計算尺不僅能做加減乘除乘方開方運算甚至可以計算三角函數(shù)指數(shù)函數(shù)和對數(shù)函數(shù)這些計算工具為現(xiàn)代計算器的發(fā)展奠定了良好的基礎(chǔ) 1642年年僅19歲的法國偉大科學(xué)家帕斯卡引用算盤的原理發(fā)明了第一部機(jī)械式計算器在他的計算器中有一些互相聯(lián)鎖的齒輪一個轉(zhuǎn)過十位的齒輪會使另一個齒輪轉(zhuǎn)過一位人們可以像撥電話號碼盤那樣把數(shù)字撥進(jìn)去計算結(jié)果就會出現(xiàn)在另一個窗口中但是只能做加減計算1694年萊布尼茲在德國將其改進(jìn)成可以進(jìn)行乘除的計算此后到了20世紀(jì)50年代末電子計算器問世本文設(shè)計的是一種基于STM32科學(xué)計算器的設(shè)計通過觸摸屏進(jìn)行人機(jī)交互按鍵直接顯示在觸摸屏上不需要傳統(tǒng)

8、的機(jī)械按鍵并且可以在需要鍵盤的時候才調(diào)出來傳統(tǒng)的機(jī)械按鍵需要占用單片機(jī)大量的IO口而觸摸屏只需要通過SPI接口和單片機(jī)通信總體方案設(shè)計任務(wù)與要求任務(wù)完成數(shù)學(xué)表達(dá)式的計算包括括號三角函數(shù)logln等一些常用的數(shù)學(xué)函數(shù)并將表達(dá)式和結(jié)果實時顯示出來要求基本功能實現(xiàn)基本的四則運算并在觸摸屏上顯示表達(dá)式和結(jié)果當(dāng)輸入錯誤的表達(dá)式時能顯示出相對應(yīng)的錯誤提示用戶糾正擴(kuò)展功能實現(xiàn)小數(shù)負(fù)數(shù)的運算實現(xiàn)平方n次方平方根n次方根的運算實現(xiàn)三角函數(shù)logln等一些常用的數(shù)學(xué)函數(shù)的運算3技術(shù)指標(biāo)精確到小數(shù)點后6位計算的范圍為-34×10-3834×1038實時顯示計算表達(dá)式和結(jié)果方案論證單片機(jī)系統(tǒng)的選型

9、單片機(jī)系統(tǒng)選用意法半導(dǎo)體基于Cortex-M3的STM32F103ZET6意法半導(dǎo)體的單片機(jī)具有良好的性價比低功耗易開發(fā)等特點而且其體系和架構(gòu)資料豐富用它能夠快速的開發(fā)出整個系統(tǒng)顯示屏的選型現(xiàn)有的液晶顯示屏的種類很多我們選用的是28寸帶觸摸的彩屏320×240的分辨率支持16位色16位數(shù)據(jù)接口這個就足夠我們使用了有了觸摸的控制就可以省掉傳統(tǒng)的機(jī)械按鍵直接在屏幕上顯示按鍵外部存儲器的選型外部存儲器我們選用Atmel公司的AT24C02是基于I2C-BUS 的存儲器件遵循二線制協(xié)議由于其具有接口方便體積小數(shù)據(jù)掉電不丟失等特點在儀器儀表及工業(yè)自動化控制中得到大量的應(yīng)用系統(tǒng)總體設(shè)計根據(jù)設(shè)計要

10、求和模塊選型系統(tǒng)總體方案設(shè)計如圖1本系統(tǒng)主要是在觸摸屏上顯示各種信息文本所以硬件電路比較簡潔不需要很多硬件PC機(jī)通過RS232串行接口和STM32進(jìn)行數(shù)據(jù)通信STM32和顯示屏通過16位并行接口通信和觸摸板通過SPI接口進(jìn)行通信圖1系統(tǒng)硬件設(shè)計微控制器簡介為了進(jìn)行大量浮點數(shù)的運算并且能很好的支持彩屏的顯示我們選用了計算能力較強(qiáng)的基于Cortex-M3系列的STM32F103ZET6作為微控制器Cortex-M3是ARM公司研發(fā)的一個系列針對于微控制開發(fā)領(lǐng)域采用ARMv7-M架構(gòu)它包括所有的16位Thumb指令集和基本的32位Thumb-2指令集架構(gòu)Thumb-2在Thumb指令集架構(gòu)ISA上進(jìn)

11、行了大量的改進(jìn)它與Thumb相比具有更高的代碼密度并提供1632位指令的更高性能ARM的Cortex-M3處理器是最新一代的嵌入式ARM處理器它為實現(xiàn)MCU的需要提供了低成本的平臺縮減的引腳數(shù)目降低的系統(tǒng)功耗同時提供卓越的計算性能和先進(jìn)的中斷系統(tǒng)響應(yīng)ARM的Cortex-M3是32位的RISC處理器提供額外的代碼效率在通常8和16位系統(tǒng)的存儲空間上發(fā)揮了ARM內(nèi)核的高性能我們采用的意法半導(dǎo)體公司生產(chǎn)的STM32F103ZET6就是基于ARM Cortex-M3內(nèi)核的具有高性能低成本低功耗等特點最高主頻可達(dá)72MHz高達(dá)512K字節(jié)的閃存和64K字節(jié)的SRAM112個GPIO端口4個通用定時器2

12、個高級控制定時器2個基本定時器還包含標(biāo)準(zhǔn)和先進(jìn)的通信接口多達(dá)2個I2C接口3個SPI接口2個I2S接口1個SDIO接口5個USART接口一個USB接口和一個CAN接口這些豐富的外設(shè)配置使得STM32F103大容量增強(qiáng)型系列微控制器適合于多種應(yīng)用場合電機(jī)驅(qū)動和應(yīng)用控制醫(yī)療和手持設(shè)備PC游戲外設(shè)和GPS平臺工業(yè)應(yīng)用可編程控制器 PLC 變頻器打印機(jī)和掃描儀警報系統(tǒng)視頻對講和暖氣通風(fēng)空調(diào)系統(tǒng)等觸摸屏模塊簡介顯示部分簡介TFT-LCD即薄膜晶體管液晶顯示器其英文全稱為Thin Film Transistor-Liquid Crystal DisplayTFT-LCD與無源TN-LCDSTN-LCD的簡

13、單矩陣不同它在液晶顯示屏的每一個象素上都設(shè)置有一個薄膜晶體管TFT可有效地克服非選通時的串?dāng)_使顯示液晶屏的靜態(tài)特性與掃描線數(shù)無關(guān)因此大大提高了圖像質(zhì)量TFT-LCD也被叫做真彩液晶顯示器TFT液晶顯示屏的特點是亮度好對比度高層次感強(qiáng)顏色鮮艷但也存在著比較耗電和成本過高的不足TFT型的液晶顯示器主要的構(gòu)成包括螢光管導(dǎo)光板偏光板濾光板玻璃基板配向膜液晶材料薄模式晶體管等等我們這里使用的一種TFTLCD模塊有如下特點com小2320×240的分辨率316位真彩顯示4自帶觸摸屏可以用來作為控制輸入5通用的接口顯示部分為16位并行接口觸摸控制部分為SPI接口該模塊采用的是顯尚光電的DST200

14、1PH TFTLCDDST2001PH的控制器為ILI9320TFTLCD模塊采用80并口方式與外部連接采用16位數(shù)據(jù)線該模塊的80并口有如下一些信號線CSTFTLCD片選信號WR向TFTLCD寫入數(shù)據(jù)RD從TFTLCD讀取數(shù)據(jù)D15016位雙向數(shù)據(jù)線RST硬復(fù)位TFTLCDRS命令數(shù)據(jù)標(biāo)志0讀寫命令1讀寫數(shù)據(jù)TFTLCD模塊的RST信號線直接接到STM32的復(fù)位腳上并不由軟件控制這樣可以省下來一個IO口另外我們還需要一個背光控制線來控制TFTLCD的背光所以我們總共需要的IO口數(shù)目為21個模塊的控制器為ILI9320該控制器自帶顯存其顯存總大小為172820240320188即18位模式26

15、萬色下的顯存量模塊的16位數(shù)據(jù)線與顯寸的對應(yīng)關(guān)系為565方式如下圖所示在計算機(jī)中常見的顏色有 8位16位24位32位色其中24位及以上稱為真彩我們這里使用的是16位最低5位代表藍(lán)色中間6位為綠色最高5位為紅色數(shù)值越大表示該顏色越深我們這里使用的是RGB模式RGB色彩就是常說的三原色R代表Red紅色G代表Green綠色B代表Blue藍(lán)色之所以稱為三原色是因為在自然界中肉眼所能看到的任何色彩都可以由這三種色彩混合疊加而成因此也稱為加色模式RGB模式又稱RGB色空間它是一種色光表色模式它廣泛用于我們的生活中如電視機(jī)計算機(jī)顯示屏幻燈片等都是利用光來呈色比如我們要顯示紅色就用F800H來表示綠色就是07

16、E0H藍(lán)色001FH三種混合起來就是白色也就是FFFFH觸摸部分簡介我們一般液晶所用的觸摸屏最多的就是電阻式觸摸屏了多點觸摸屬于電容式觸摸屏比如M8IPhone等支持多點觸摸的手機(jī)所用的屏就是電容式的觸摸屏TFTLCD自帶的觸摸屏屬于電阻式觸摸屏下面簡單介紹下電阻式觸摸屏的原理電阻式觸摸屏利用壓力感應(yīng)進(jìn)行控制電阻觸摸屏的主要部分是一塊與顯示器表面非常配合的電阻薄膜屏這是一種多層的復(fù)合薄膜它以一層玻璃或硬塑料平板作為基層表面涂有一層透明氧化金屬透明的導(dǎo)電電阻導(dǎo)電層上面再蓋有一層外表面硬化處理光滑防擦的塑料層它的內(nèi)表面也涂有一層涂層在他們之間有許多細(xì)小的小于11000英寸的透明隔離點把兩層導(dǎo)電層隔

17、開絕緣當(dāng)手指觸摸屏幕時兩層導(dǎo)電層在觸摸點位置就有了接觸電阻發(fā)生變化在X和Y兩個方向上產(chǎn)生信號然后送觸摸屏控制器控制器偵測到這一接觸并計算出XY的位置再根據(jù)獲得的位置模擬鼠標(biāo)的方式運作這就是電阻技術(shù)觸摸屏的最基本的原理電阻屏的特點有1是一種對外界完全隔離的工作環(huán)境不怕灰塵水汽和油污2可以用任何物體來觸摸可以用來寫字畫畫這是它們比較大的優(yōu)勢3電阻觸摸屏的精度只取決于AD轉(zhuǎn)換的精度因此都能輕松達(dá)到40964096從以上介紹可知觸摸屏都需要一個AD轉(zhuǎn)換器 一般來說是需要一個控制器的TFTLCD模塊選擇的是四線電阻式觸摸屏這種觸摸屏的控制芯片有很多包括ADS7843ADS7846TSC2046XPT20

18、46和AK4182等這幾款芯片的驅(qū)動基本上是一樣的也就是你只要寫出了ADS7843的驅(qū)動這個驅(qū)動對其他幾個芯片也是有效的而且封裝也有一樣的完全pin to pin所以在替換起來很方便TFTLCD模塊自帶的觸摸屏控制芯片為XPT2046XPT2046是一款4導(dǎo)線制觸摸屏控制器內(nèi)含12位分辨率125KHz轉(zhuǎn)換速率逐步逼近型AD轉(zhuǎn)換器XPT2046com低電壓IO接口XPT2046能通過執(zhí)行兩次AD轉(zhuǎn)換查出被按的屏幕位置 除此之外還可以測量加在觸摸屏上的壓力內(nèi)部自帶25V參考電壓可以作為輔助輸入溫度測量和電池監(jiān)測模式之用電池監(jiān)測的電壓范圍可以從0V到6VXPT2046片內(nèi)集成有一個溫度傳感器在27V

19、的典型工作狀態(tài)下關(guān)閉參考電壓功耗可小于075mWXPT2046采用微小的封裝形式TSSOP-16QFN-16 075mm厚度 和VFBGA48工作溫度范圍為-4085AT24C02簡介AT24C02是一個2K位串行CMOS E2PROM 內(nèi)部含有256個8位字節(jié)AT24C02有一個16字節(jié)頁寫緩沖器該器件通過IIC總線接口進(jìn)行操作有一個專門的寫保護(hù)功能AT24C02支持I2C總線數(shù)據(jù)傳送協(xié)議I2C總線協(xié)議規(guī)定任何將數(shù)據(jù)傳送到總線的器件作為發(fā)送器任何從總線接收數(shù)據(jù)的器件為接收器數(shù)據(jù)傳送是由產(chǎn)生串行時鐘和所有起始停止信號的主器件控制的主器件和從器件都可以作為發(fā)送器或接收器但由主器件控制傳送數(shù)據(jù)發(fā)送

20、或接收的模式通過器件地址輸入端A0A1和A2可以實現(xiàn)將最多8個AT24C02器件連接到總線上AT24C02具有以下特性1數(shù)據(jù)線上的看門狗定時器 2可編程復(fù)位門欄電平 3高數(shù)據(jù)傳送速率為400KHz和1C總線兼容 comV的工作電壓 5低功耗CMOS工藝 616字節(jié)頁寫緩沖區(qū) 7片內(nèi)防誤擦除寫保護(hù) 8高低電平復(fù)位信號輸出 9100萬次擦寫周期 10數(shù)據(jù)保存可達(dá)100年 11商業(yè)級工業(yè)級和汽車溫度范圍引腳描述引腳名稱功能A0A1A2器件地址選擇SDA串行數(shù)據(jù)地址SCL串行時鐘WP寫保護(hù)VCC18V60V 工作電壓VSS地SCL 串行時鐘 AT24C02串行時鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收

21、的時鐘這是一個輸入管腳 SDA 串行數(shù)據(jù)地址 AT24C02 雙向串行數(shù)據(jù)地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收SDA 是一個開漏輸出管腳可與其它開漏輸出或集電極開路輸出進(jìn)行線或wire-OR A0A1A2 器件地址輸入端 這些輸入腳用于多個器件級聯(lián)時設(shè)置器件地址當(dāng)這些腳懸空時默認(rèn)值為0當(dāng)使用AT24C02 時最大可級聯(lián)8個器件如果只有一個AT24C02被總線尋址這三個地址輸入腳A0A1A2 可懸空或連接到Vss如果只有一個AT24C02被總線尋址這三個地址輸入腳A0A1A2 必須連接到Vss WP 寫保護(hù) 如果WP管腳連接到Vcc所有的內(nèi)容都被寫保護(hù)只能讀當(dāng)WP管腳連接到Vss 或懸空允許器件

22、進(jìn)行正常的讀寫操作AT24C02的存儲容量為2Kb內(nèi)容分成32頁每頁8B共256B操作時有兩種尋址方式芯片尋址和片內(nèi)子地址尋址 1芯片尋址AT24C02的芯片地址為1010其地址控制字格式為1010A2A1A0RW其中A2A1A0可編程地址選擇位A2A1A0引腳接高低電平后得到確定的三位編碼與1010形成7位編碼即為該器件的地址碼RW為芯片讀寫控制位該位為0表示芯片進(jìn)行寫操作 2片內(nèi)子地址尋址芯片尋址可對內(nèi)部256B中的任一個進(jìn)行讀寫操作其尋址范圍為00FF共256個尋址單位整體系統(tǒng)硬件設(shè)計單片機(jī)系統(tǒng)設(shè)計這是STM32F103ZET6的最小系統(tǒng)原理圖復(fù)位引腳NRST接一個10K電阻到VCC接一

23、個104的電容到地即可構(gòu)成上電復(fù)位的電路OSC_IN和OSC_OUT之間并聯(lián)一個8MHz晶振再在晶振兩端分別接20pF的電容到地即可構(gòu)成單片機(jī)的外部振蕩電路電源部分設(shè)計整個系統(tǒng)由電腦的USB接口供電再由系統(tǒng)中的AMS1117-com供給單片機(jī)和觸摸屏使用電路如圖所示單片機(jī)和PC機(jī)通信設(shè)計由于現(xiàn)在很多電腦都沒有串口了所以我們選用了PL-2303將USB接口轉(zhuǎn)為串口再和單片機(jī)通信電路如圖所示其中PL2303_D和PL2303_D-分別接到USB的D和D-端RXD和TXD分別接到單片機(jī)的PA9和PA10腳這樣電腦就可以通過USB接口和單片機(jī)通信了單片機(jī)和觸摸屏接口設(shè)計如圖所示為系統(tǒng)的觸摸屏接口各引腳

24、定義如下LCD_CSTFTLCD片選信號LCD_WR向TFTLCD寫入數(shù)據(jù)LCD_RD從TFTLCD讀取數(shù)據(jù)LCD_D15016位雙向數(shù)據(jù)線RESET硬復(fù)位TFTLCDLCED_RS命令數(shù)據(jù)標(biāo)志0讀寫命令1讀寫數(shù)據(jù)LCD_BL觸摸屏背光源的控制引腳T_MISO觸摸屏串行數(shù)據(jù)輸出端T_MOSI觸摸屏串行數(shù)據(jù)輸入端T_SCK觸摸屏?xí)r鐘信號端T_CS觸摸屏片選端T_PEN觸摸屏中斷輸出端系統(tǒng)軟件設(shè)計系統(tǒng)各個模塊初始化系統(tǒng)上電或復(fù)位后首先進(jìn)行各個模塊的初始化其流程圖如圖所示顯示模塊程序設(shè)計顯示模塊程序由LCD初始化程序和定時器中斷程序首先由LCD初始化程序?qū)⑵聊簧闲枰@示的按鍵顯示再由定時器中斷程序定

25、時刷新屏幕顯示表達(dá)式的區(qū)域?qū)⑤斎氲谋磉_(dá)式實時顯示出來LCD初始化流程圖如下LCD初始化程序設(shè)計 函數(shù)名稱void LCD_Init void 函數(shù)功能初始化LCD 輸入?yún)?shù)無 輸出參數(shù)無void LCD_Init void RCC- APB2ENR 1 3先使能外設(shè)PORTB時鐘 RCC- APB2ENR 1 4先使能外設(shè)PORTC時鐘RCC- APB2ENR 1 0 開啟輔助時鐘JTAG_Set JTAG_SWD_DISABLE 禁用SWDPORTC610復(fù)用推挽輸出 GPIOC- CRH 0XFFFFF000GPIOC- CRH 0X00000333 GPIOC- CRL 0X00FFFF

26、FFGPIOC- CRL 0X33000000 GPIOC- ODR 0X07C0 PORTB 推挽輸出 GPIOB- CRH 0X33333333GPIOB- CRL 0X33333333 GPIOB- ODR 0XFFFFdelay_ms 50 delay 50 ms LCD_WriteReg 0x00000x0001 delay_ms 50 delay 50 ms LCD_WriteReg 0X000X0001 delay_ms 10 LCD_WriteReg 0X100X1628 LCD_WriteReg 0X120X000e 0x0006 LCD_WriteReg 0X130X0A3

27、9 delay_ms 10 LCD_WriteReg 0X110X0040 LCD_WriteReg 0X150X0050 delay_ms 10 LCD_WriteReg 0X120X001e 16 delay_ms 10 LCD_WriteReg 0X100X1620 LCD_WriteReg 0X130X2A39 delay_ms 10 LCD_WriteReg 0X010X0100 LCD_WriteReg 0X020X0300 LCD_WriteReg 0X030X1030 改變方向的 LCD_WriteReg 0X080X0202 LCD_WriteReg 0X0A0X0008 L

28、CD_WriteReg 0X300X0000 LCD_WriteReg 0X310X0402 LCD_WriteReg 0X320X0106 LCD_WriteReg 0X330X0503 LCD_WriteReg 0X340X0104 LCD_WriteReg 0X350X0301 LCD_WriteReg 0X360X0707 LCD_WriteReg 0X370X0305 LCD_WriteReg 0X380X0208 LCD_WriteReg 0X390X0F0B LCD_WriteReg 0X410X0002 LCD_WriteReg 0X600X2700 LCD_WriteReg

29、0X610X0001 LCD_WriteReg 0X900X0210 LCD_WriteReg 0X920X010A LCD_WriteReg 0X930X0004 LCD_WriteReg 0XA00X0100 LCD_WriteReg 0X070X0001 LCD_WriteReg 0X070X0021 LCD_WriteReg 0X070X0023 LCD_WriteReg 0X070X0033 LCD_WriteReg 0X070X0133 LCD_WriteReg 0XA00X0000 LCD_LED 1點亮背光 LCD_Clear white 定時器中斷流程圖 定時器中斷程序設(shè)計

30、函數(shù)名稱void TIM3_IRQHandler void 函數(shù)功能定時器3中斷程序 輸入?yún)?shù)無 輸出參數(shù)無 void TIM3_IRQHandler void static u8 flash 0counter 0 if TIM3- SR0x0001 溢出中斷 Show_String stringstart if start 0 Show_Char 460 elseShow_Char 460 if start 15 Show_Char 22460 else if stringstart15 Show_Char 22460 elseShow_Char 22460 if flash 0 顯示光標(biāo)P

31、oint_Color blackelsePoint_Color whiteLCD_DrawLine cursor33cursor53 LCD_DrawLine cursor133cursor153 Point_Color blackcounterif counter 100 counter 0flash flash TIM3- SR 1 0 清除中斷標(biāo)志位 首先由單片機(jī)檢測觸摸屏是否已校準(zhǔn)如果沒有則進(jìn)入校準(zhǔn)模式進(jìn)行校準(zhǔn)如果用戶需要進(jìn)行校準(zhǔn)則只需按下按鍵開機(jī)即可進(jìn)入校準(zhǔn)模式觸摸屏初始化流程圖如下觸摸屏的初始化程序設(shè)計 函數(shù)名稱void Touch_Init void 函數(shù)功能觸摸屏初始化 輸入?yún)?/p>

32、數(shù)無 輸出參數(shù)無void Touch_Init void 注意時鐘使能之后對GPIO的操作才有效所以上拉之前必須使能時鐘才能實現(xiàn)真正的上拉輸出RCC- APB2ENR 1 4 PC時鐘使能 RCC- APB2ENR 1 0 開啟輔助時鐘 GPIOC- CRL 0XFFFF0000PC03GPIOC- CRL 0X00003883 GPIOC- CRH 0XFF0FFFFFPC13GPIOC- CRH 0X00300000PC13推挽輸出 GPIOC- ODR 0X200f PC03 13 全部上拉 Read_ADS Pen_PointXPen_PointY 第一次讀取初始化 MY_NVIC_I

33、nit 20EXTI1_IRQChannel2 Ex_NVIC_Config GPIO_C1FTIR 將line1映射到PC1下降沿觸發(fā)ifdef ADJ_SAVE_ENABLE AT24CXX_Init 初始化24CXXif Get_Adjdata return已經(jīng)校準(zhǔn)else 未校準(zhǔn) LCD_Clear white 清屏 Touch_Adjust 屏幕校準(zhǔn) Save_Adjdata Get_Adjdata elseLCD_Clear white 清屏 Touch_Adjust 屏幕校準(zhǔn)帶自動保存 endif 實現(xiàn)運算表達(dá)式的程序設(shè)計當(dāng)我們把表達(dá)式輸入完單片機(jī)就要對表達(dá)式進(jìn)行求解這個過程就叫

34、做解析表達(dá)式我們這里采用一個叫做遞歸下降的算法進(jìn)行解析表達(dá)式首先有單片機(jī)判斷表達(dá)式是否有錯誤有錯誤的話返回相應(yīng)的錯誤并顯示出來提示用戶輸入了錯誤的表達(dá)式首先建立兩個堆棧分別叫做數(shù)值棧和符號棧我們規(guī)定一個記號來表示棧底下面我們就來看看如何計算一個簡單的表達(dá)式356×7×823 82指的是82這里運算有三種優(yōu)先級×如何實現(xiàn)優(yōu)先級運算呢遞歸下降算法的核心就是一下幾點開始1如果當(dāng)前輸入串中得到的是數(shù)字則直接壓入值棧然后轉(zhuǎn)到開始2如果當(dāng)前輸入串中得到的是符號那么對符號進(jìn)行判斷 1如果是第一個符號則直接壓入符號棧 2如果符號比上一個符號的優(yōu)先級高則壓入符號棧 3如果符號比上一

35、個符號的優(yōu)先級低或者相等則彈出棧進(jìn)行運算直到比上一個符號的優(yōu)先級高 5如果符號是則直接壓入符號棧 4如果符號是則依照符號棧的順序彈出符號計算棧中數(shù)值把結(jié)果壓入值棧直到符號棧頂是最后再彈出最后轉(zhuǎn)到開始3如果當(dāng)前輸入串得到的是EOF字符串結(jié)束符號則計算棧中數(shù)值直到符號棧沒有符號對于上面的表達(dá)式就這樣計算將35壓入堆?,F(xiàn)在遇到號和上一個運算符比較相等則計算35表達(dá)式變?yōu)?6×7×8236壓入數(shù)值棧×比高壓入符號棧再將7壓入數(shù)值棧×和上一個符號相同就計算6×7表達(dá)式變?yōu)?42×8238壓入符號棧比上一個符號高壓棧2壓入符號棧和上一個相同計算8

36、2表達(dá)式變?yōu)?42×643繼續(xù)842×262144繼續(xù)81101×107最后得出結(jié)果1101×107可以看出如果利用操作數(shù)堆棧和運算符堆棧的話只要 1步進(jìn)掃描表達(dá)式 2遇到操作數(shù)就壓入操作數(shù)堆棧中遇到運算符就將它的優(yōu)先級與運算符堆棧棧頂運算符的優(yōu)先級比較如果它的優(yōu)先級更大就將它壓入堆棧否則就將棧頂運算符彈出來進(jìn)行運算只要這樣就可以實現(xiàn)優(yōu)先級的運算對于一個合法的簡單數(shù)學(xué)表達(dá)式肯定是一個操作數(shù)跟著一個運算符第一個和最后一個都是操作數(shù)因此最簡單的程序編寫方法就是寫一個取操作數(shù)的程序Get_Num再寫一個取運算符的程序Get_Operator然后循環(huán)執(zhí)行1取操作

37、數(shù)Get_Num1取操作數(shù)時首先遇到的不一定就是操作數(shù)本身而可能是sincostantglgln或自反運算符-或無意義的號首先將它們壓入運算符棧中2然后檢查是不是xyz等變量或PI等常量有的話將它們的值壓到操作數(shù)棧中3如果不是變量或常量則檢查數(shù)的合法性如果不是合法數(shù)就退出全部運算2取運算符Get_Operator1取運算符時首先遇到的不一定就是運算符而可能是先要對它進(jìn)行處理2然后檢查是不是掃描到了最后如果是就清棧輸出結(jié)果3取出新運算符并給它對應(yīng)的優(yōu)先級4如果運算符堆棧不為空從中彈出一個運算符比較優(yōu)先級如果新的運算符優(yōu)先級小于等于彈出運算符優(yōu)先級就把彈出運算符重新壓回去否則對彈出運算符進(jìn)行運算5

38、將新運算符壓入堆棧中程序的流程圖如下但是這還只是一種算法和我們的系統(tǒng)無關(guān)所以需要將這個移植到我們的系統(tǒng)來使用移植后的具體程序見附件總 結(jié)經(jīng)過了一個多月的畢業(yè)設(shè)計完成了從理論到實踐的突破整個系統(tǒng)在收集了很多資料以后完成了系統(tǒng)硬件的調(diào)試和程序的編寫從最開始還不知道什么是單片機(jī)到現(xiàn)在也有一年多的時間了能在這么短的時間在這個方面取得這么大的成就自己也感到很欣慰獲得不小的成績隨著電子技術(shù)的飛速發(fā)展高科技產(chǎn)品也越來越多生活條件也大大的改善而單片機(jī)只是這些中的一小部分還有很多需要我們?nèi)W(xué)習(xí)很早之前就聽說過ARM這個名詞但是還不了解后來經(jīng)過慢慢的學(xué)習(xí)對這個ARM也越來越熟悉了既是一個公司的名字也是對ARM處理

39、器的總稱設(shè)計了大量高性能廉價耗能低的RISC處理器相關(guān)技術(shù)及軟件技術(shù)具有性能高成本低和能耗省的特點適用于多種領(lǐng)域比如嵌入控制消費教育類多媒體DSP和移動式應(yīng)用等但是ARM公司自己不生產(chǎn)芯片只研究ARM內(nèi)核技術(shù)將知識產(chǎn)權(quán)交易給其他半導(dǎo)體公司生產(chǎn)這一點很佩服ARM公司全球 95 以上的手機(jī)以及超過四分之一的電子設(shè)備都在使用 ARM 技術(shù)ARM處理器也分為很多種有ARM7ARM9ARM11Cortex-MCortex-R和Cortex-A其中Cortex-M就是針對于微控制領(lǐng)域之前對這個很感興趣但是一直沒機(jī)會學(xué)習(xí)正好有畢業(yè)設(shè)計這個機(jī)會就借用這個機(jī)會來進(jìn)一步學(xué)習(xí)和老師一說就很支持我使用ARM處理器選用

40、了一個基于Cortex-M3的STM32F103ZET6微控制器當(dāng)時還對這個芯片還不了解查了大量的資料經(jīng)過一個多月的摸索慢慢熟悉了制作這個項目最大的問題就在于硬件的制作在硬件上盧岲老師給了我很大的幫助由于這個微控制器的封裝比較小引腳間很密引腳也很短所以必須要制作印制電路板電路板的設(shè)計都是自己完成的但聯(lián)系廠家制作印制電路板是盧岲老師幫忙完成的第一次看到把自己設(shè)計的印制電路板做成實物出來還是有點小成就感的但是這個電路板在很多地方設(shè)計的有缺陷在設(shè)計印制電路板這方面也有很多東西要注意的在以后的學(xué)習(xí)中繼續(xù)研究在制作完電路板后元件的焊接又成了一大問題自己對付一些插件電阻電容還是沒問題的但是那個單片機(jī)就需要

41、一定的技術(shù)才能焊好這個也是盧岲老師幫忙完成的但是焊接后還是存在一些小問題對于人機(jī)交互的界面顯示也是一個重要的問題美觀的界面讓人心情舒暢但由于受自己的水平有限界面只是幾個簡單的字符都沒有把彩屏的特點發(fā)揮出來這一點需要在以后的項目中加強(qiáng)學(xué)習(xí)畢業(yè)設(shè)計結(jié)束了通過設(shè)計我深刻領(lǐng)會到基礎(chǔ)的重要性畢業(yè)設(shè)計不僅僅能幫助學(xué)生檢驗大學(xué)三年的學(xué)習(xí)成果更多的是畢業(yè)設(shè)計可以幫助我們更加清楚的認(rèn)識自我磨練學(xué)生的意志與耐性這會為學(xué)生日后的工作和生活帶來很大的幫助致 謝對于項目的完成盧貺老師在硬件上給了我很大的幫助特別是貼片元件的焊接這個沒有一定的技術(shù)是焊不好的在項目開始的過程中盧貺老師為我制作了印制電路板在整個畢業(yè)設(shè)計的過程

42、中盧貺老師對我的要求嚴(yán)格以至于我不敢放松每個周的工作進(jìn)程使我順利的完成了畢業(yè)設(shè)計在此表示感謝畢業(yè)設(shè)計幫助我們總結(jié)大學(xué)三年收獲認(rèn)清自我同時還幫助我們改變一些處理事情時懶散的習(xí)慣從最開始時的搜集資料整理資料到方案比選確定方案再到著手開始進(jìn)行路基工程路面工程和路線排水的設(shè)計每一步都是環(huán)環(huán)相扣銜接緊密其中任何一個步驟產(chǎn)生遺漏或者疏忽就會對以后的設(shè)計帶來很多的不便同時在這個項目的完成過程中網(wǎng)絡(luò)上的很多資料給了我很大的幫助特別是遞歸下降算法的原理在不知道這個算法之前我不知道如何去計算表達(dá)式的結(jié)果我參照了很多網(wǎng)友的編寫的源代碼和他們的程序設(shè)計經(jīng)驗使我能夠在順利的完成此次畢業(yè)設(shè)計在此也表示感謝最后要感謝學(xué)院為

43、我們提供良好的軟硬件設(shè)施從硬件設(shè)施方面首先是實訓(xùn)中心能夠給我制作印制電路板讓我方便了很多大大的加快了我的項目進(jìn)程從軟件設(shè)施方面要感謝學(xué)院三年來對我的教育和培養(yǎng)我現(xiàn)在能夠順利的完成這次畢業(yè)設(shè)計離不開各位老師平時對我們的嚴(yán)格要求認(rèn)真負(fù)責(zé)的工作態(tài)度以及誨人不倦的敬業(yè)精神參考文獻(xiàn)1 李法春主編單片機(jī)原理及接口技術(shù)案例教程M北京機(jī)械工業(yè)出版社20062 劉軍例說STM32M北京北京航空航天大學(xué)出版社20113 蒙博宇 STM32自學(xué)筆記M 北京北京航空航天大學(xué)出版社20124 彭剛 基于ARM Cortex-M3的STM32系列嵌入式微控制器應(yīng)用實踐M北京電子工業(yè)出版社20115 Joseph Yiu

44、ARM Cortex-M3權(quán)威指南M 北京北京航空航天大學(xué)出版社20096 喻金錢 STM32F系列ARM Cortex-M3核微控制器開發(fā)與應(yīng)用M北京 清華大學(xué)出版社20117 劉波文 ARM Cortex-M3應(yīng)用開發(fā)實例詳解M 北京電子工業(yè)出版社2011附 錄主程序include include"sysh"include"timerh"include"usarth"include"delayh"include"LCDh"include"keyh"include"

45、;touchh"include"24cxxh"include"guih"include"calculateh" u8 cursor 2u8 start 0u8 string30 函數(shù)名稱void TIM3_IRQHandler void 函數(shù)功能定時器3中斷程序 輸入?yún)?shù)無 輸出參數(shù)無 void TIM3_IRQHandler void static u8 flash 0counter 0 if TIM3- SR0x0001 溢出中斷 Show_String stringstart if start 0 Show_Char

46、445 elseShow_Char 445 if start 15 Show_Char 22445 else if stringstart15 Show_Char 22445 elseShow_Char 22445 if flash 0 Point_Color blackelsePoint_Color whiteLCD_DrawLine cursor18cursor38 LCD_DrawLine cursor118cursor138 Point_Color blackcounterif counter 100 counter 0flash flash TIM3- SR 1 0 清除中斷標(biāo)志位

47、函數(shù)名稱int main void 函數(shù)功能主程序 輸入?yún)?shù)無 輸出參數(shù)無int main void u8 keytis8 error_typefloat result 0Stm32_Clock_Init 9 系統(tǒng)時鐘初始化9倍頻Delay_Init 72 延時初始化72MHzLCD_Init LCD初始化KEY_Init 按鍵初始化Touch_Init 觸摸屏初始化JTAG_Set JTAG_SWD_DISABLE 禁用JTAGSWDfor i 0i 30i stringi key KEY_Scan if key 2 Touch_Adjust Display_Key Show_Result

48、result Timer3_Init 507200 while 1 key AI_Read_TP 10 if key Pen_PointKey_Reg 0x80 標(biāo)記按鍵已經(jīng)按下 if key 0 Pen_PointKey_Reg0x80 按鍵松開了 Pen_PointKey_Reg 0 t Touch_To_Num if t 0 TIM3- DIER 1 0 switch t case 5if error_type 0 Point_Color whiteLCD_DrawLine cursor18cursor38 LCD_DrawLine cursor118cursor138 Point_Co

49、lor blackfor i 0i 30i stringi result 0cursor 2start 0Show_Result result else error_type 0LCD_Fill 194522374white Show_Result result breakcase 6Delete stringcursorstart breakcase 1Add stringcursorstartS Add stringcursorstartI Add stringcursorstartN breakcase 2Add stringcursorstartC Add stringcursorst

50、artO Add stringcursorstartS breakcase 3Add stringcursorstartT Add stringcursorstartA Add stringcursorstartN breakcase 7Add stringcursorstartL Add stringcursorstartO Add stringcursorstartG breakcase 8Add stringcursorstartL Add stringcursorstartN breakcase 4Add stringcursorstart breakcase 13Add string

51、cursorstart breakcase 25Add stringcursorstart breakcase 26Add stringcursorstart breakcase 27Add stringcursorstart0 breakcase 28Add stringcursorstart breakcase 19Add stringcursorstart Add stringcursorstart2 breakcase 20Add stringcursorstart breakcase 21Add stringcursorstart1 breakcase 22Add stringcursorstart2 breakcase

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論