下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于STM32的簡(jiǎn)易計(jì)算器一.總體方案設(shè)計(jì)1. 任務(wù)要求(1) 在開發(fā)板的顯示屏上設(shè)計(jì)并顯示一個(gè)簡(jiǎn)易的計(jì)算器界面,包括結(jié)果顯 示窗、09 數(shù)字鍵、+、x、*、 x2、V、=、Del 等按鍵;(2) 可使用開發(fā)板上的鍵盤或觸摸屏輸入上述按鍵,并在顯示窗中顯示計(jì) 算結(jié)果;(3) 支持基本的整數(shù)加減乘除運(yùn)算;2. 設(shè)計(jì)方案設(shè)計(jì)的整體思路:選用意法半導(dǎo)體基于 ARM Cortex M3 內(nèi)核的STM32F103ZET 芯片來處理計(jì)算器中加減乘除運(yùn)算,選用 3.5 寸的 TFT-LCD 電阻 觸摸屏模塊來進(jìn)行控制輸入并同時(shí)將輸入?yún)?shù)及運(yùn)算結(jié)果顯示出來, 同時(shí)通過移 植emWin 優(yōu)化計(jì)算器界面,使計(jì)算器
2、在視覺上效果上更為人性化。二系統(tǒng)硬件設(shè)計(jì)系統(tǒng)主要器件包括 ALIENTEK 精英 STM32F103V 開發(fā)板, 3.5 寸 TFTLCD 觸 摸屏。1. 最小系統(tǒng)開發(fā)板1.1 微控制器Cortex-M3 采用 ARMV7 構(gòu)架,不僅支持 Thumb-2 指令集,而且擁有很多新 特性。較之 ARM7 TDMI Cortex-M3 擁有更強(qiáng)勁的性能、更高的代碼密度、位帶 操作、可嵌套中斷、低成本、低功耗等眾多優(yōu)勢(shì)。STM32 的優(yōu)異性體現(xiàn)在如下幾個(gè)方面:1. 超低的價(jià)格。以 8 位機(jī)的價(jià)格,得到 32 位機(jī),是 STM32 最大的優(yōu)勢(shì)。2.超多的外設(shè)。STM32 擁有包括:FSMC TIMER
3、SPI、IIC、USB CAN IIS、SDIO ADC DAC RTC DMA 等眾多外設(shè)及功能,具有極高的集成度。3.豐富的型號(hào)。STM32 僅 M3 內(nèi)核就擁有 F100、F101、F102、F103 F105、F107、F207、F217 等 8 個(gè)系列上百種型號(hào),具有 QFN LQFP BGA 等封裝可供選 擇。同時(shí) STM32 還推出了 STM32L 和 STM32V 等超低功耗和無線應(yīng)用型的 M3 芯片。4.優(yōu)異的實(shí)時(shí)性能。84 個(gè)中斷,16 級(jí)可編程優(yōu)先級(jí),并且所有的引腳都 可以作為中斷輸入。5.杰出的功耗控制。STM32 各個(gè)外設(shè)都有自己的獨(dú)立時(shí)鐘開關(guān),可以通過 關(guān)閉相應(yīng)外設(shè)
4、的時(shí)鐘來降低功耗。6.極低的開發(fā)成本。STM32 的開發(fā)不需要昂貴的仿真器,只需要一個(gè)串口 即可下載代碼,并且支持 SW 床口 JTAG 兩種調(diào)試口。SW 調(diào)試可以為你的設(shè)計(jì)帶 來跟多的方便,只需要 2 個(gè) IO 口,即可實(shí)現(xiàn)仿真調(diào)試。MCU 部分原理圖如圖 1-1 所示:IK UPPAD34STM ADCPAI351JS4RT2 iffPJ2-J6USART1 BXPA31?GK J?E 5TSL&ACPA4助F= J41PM4;PA?43QV VWffPAS 00U5ARTL TXFAS IIQLUSARTl RXPAIDL02DSTFPA11IMUSBTO-卩;L12 L&
5、;J.PA13悔JTCKPAI4GBC-LED JTG1PA13hOLCD HLPBO44I 5CKPBE 47T MISOEHDOTFBI4t-iftF WtJ-i JJ DOPB3KJJ-FTFQ KUt J|K$TP34H4LEXJOPfi135M SCLP64擁C 5J3AP&-B2EPm13?ddOTE INPB9啟GSC弧P3LO69oc rtfP3LLFillSPG SCRra.i4ST口-M1WF&ZSFE.MOEIptmOT D0PCPKGV DLKE出QV D2PCI2SQV D3PC3 2SQV D4-PC444OV D5PC545ffl? NPCS譏PC
6、57PCS5DO DLPCS5EH:OJ2PCIOkhSOTO D3FCIIIE2SOW SCKPCI2IE5PCI3rn3176SK一JLF5MCJ32PDOH4LCpMEicqPDIIB5OfO C3IDPO2thQV XLFD3門GNDFSIC NOEPWILSFSMC MWEFD5 119FIF O WR37卩EMiliRSIS? RE卩CP陽(yáng)FSMcCbyPD8 T?F$MC:D4PD9FSMCJ335PD10詡roilSOPD12卩D13FSKSC DOPD1415F3J PD15iAKOTtiUSU1PM悶WP ViARPjCTi ADCHJJNfl T&!5(目1 T&
7、amp;CjLH LELJULMS-f瞇PAI畑皿JgWCmaEMgL! TEMgt PA21JSART2_TX亦歸a53 a. ?AJ-VSAKT2 KXADCLU INS TBE CM TBECH4 PA-l-SPILNSSDAC OUT U5ART2 CKADCIZ JbHPA5m_5CELDAClaUT2ABI2_IN5 ?A6_M15OTIKB_BKD7 ADC LI WTBUCH PA/TSEnlkiOSFTIMEN AIKCH2PASAATl_CK-TBfi_CHl MCOPASVSRTl-TXTXLCW PAI&tARTLJUiWIjOBADIVSAKT L_CTS C
8、 AN_KXmL0U岱BD戦FAD2VSAKT1 TSOLN IX-TIM1 ETKUSmPFAI3-jnE_5UTMD?An4JTCE_TirLE旳SJlDFiPB NSSES3 WSffi) Tbh_m.?$bfc_LOFE1FSMC NHLLPE2TKAJCEK.FSNfiC,A23PE3 TKACEDO FSMCAl PJTJTt4EDlFaK:A2D瑤STKACEEQ悝 忙 玉 嘶mACEEFSMCAlPE?F$MC_rH PEmi5耐fW5 FElOraK IT PEI ra.K _MPE12 TSXJCJW PEBFaSC DIO理MFSMLDU理WFSMUDQFBO ADC 1
9、2_13尬05伽_02餌FBI ADC L2JbWmD_CH48_tffi ?B2BOOIJFB3 nTDOWE5TO 55lL3_SCKlZSJ tK?B4 MRST 5JUJiI5O汪512口SEAI SPI3_3JO5112S3_SD?Bfil2l 5CLTBJ4. CHL耐IX匸亞見珈丘NADV TM4 CEO:腆TOH CW霸O(shè)PM?9 0-1X 2_5CLU5ARTj_T;曲LlgjKBA伽RTS_RX_JLZ SFE N55I252 WSTZfDMJALSARU CKTUaKBOTlO ADC3 mFSMC DTK5S13-OT2JCKI2S2 CKWlBtnCTSTDJLCli
10、LN?SW5FE!EQIEiET3玄A,m.L_CEOTM1CJBN?C&ADC123 INIO KI ADC123IN1PC2ADClMJffl2 POAJXU3JBK4ADCL2JN14POADLI二:二P 匸豹JHIIME.CHL SDKJp范“ 口LMEKTUdSCJCDIOD? ?CST&S CH5SDJD DCPC?TBESCEWSDJODDKID-UAXT4_JXSIMO DI pciiuaiO眷詠山K12UARlT5JIX$Di0_CKKITAMKR-RTC ?CL4CJNPCHPS匚SZLOCTiTOFSABC D2PDQTSAIC為HHTIMMITR匸艇丁口
11、皿口磯口FDJTKJXKPD+F$MK_TOE衛(wèi)璃ICJSWEFD&jiomrrPD-TS1BC M1T5MC NCE2iTKrSiDBSTOFSilCD】*5DD&TSMC D15PDHTSMCJU?DTK_A3B羽/FSMCRl甲#占巧比迥薩護(hù)中工巧SPOT!WC3.3 VUC3.33JfTIFSMCJLl FFiraKJLZE3TO,K:_A3 ETARSJC A4E5FSMCA5PHADCLEMdKjqtSf PTADC3_F$MC_N?IKmADCsjMFKjmnPT1ADC3M您HPFlLFSXK.aMOSlfiETL2房MC_AfiPFBFSMt_A7ET14ra
12、C_ASPFlSfSltK A9PGO-FWC.AIOPGIFSMCJMLKj2mK.AL2KSF$M_AL3PG4F5M_AL4 PG5FSNK.A15PM 0BC rm PGTSBCim p&礙珂!C JOB PGJOFSiKJKE-iJF$MC_NEJPGIITKBiJK12FSMC_ME4PG13E5MCA24PG14ravKT_A25 PG 13141 PED】PEJ1 nKEVl3 PE4KEYD4 FE5LEDI5 PE656 PE:FSIC D459 PEEFS3,iC 125SO PE9FSMC Dfi櫛PE16KUdp出?K I1TU菟ns笳FEUroD9弼?EBf
13、K D10護(hù)FEWFSMC Dll6S PE3RMC D1210 PFD11 PFL羽PRis ml-i PF4IS PF)IE ST*19 ET?211 ?FSLIGHT 5EN5CK21TRCEI_jyPFUijcs53 PFLJH FL455 PFL55fi PGOFSMCJUC57 PGE7 jPG2EE啟 EWR391 P&5yRpJKQ?2 PGTNRF C5帕?G5NRf.tE124 ?G9125 ?G0126 PG】TRE DQ127 ?G2FSAiC NEl12S ?G3dV S&AIM:1貯PG巧FTHLOEVBATCKCJNCRC.CVTJRSTVrtt2
14、4RKETS3.IH-TOC3 5MVCC3.J -=-mDV55AVCC33MVCC3.3MEll tl2 tl3 tutpltLd. tPltltt l?iL圖1-1MCU部分原理圖1.2 復(fù)位電路STM32F103 的復(fù)位電路如圖 1-2 所示:圖1-2因?yàn)?STM32 是低電平復(fù)位,所以設(shè)計(jì)的電路也是低電平復(fù)位的,這里的 R2 和C10 構(gòu)成了上述復(fù)位電路。1.3 電源電路STM32F10 板載的電源供電部分,如圖 1-3 所示:圖1-3圖中,有兩個(gè)穩(wěn)壓芯片:MP2359 和 AMS117, DC-IN 用于外部直流電源流入,范圍是 DC6-24V 輸入電壓經(jīng)過 MP2359DC-DC
15、 芯片轉(zhuǎn)換為 5V 電壓輸出,其中 D4 是防反接二極管,避免外部直流電源極性相反的時(shí)候,燒壞開發(fā)板,K1 為開發(fā)板的總電源開關(guān),F(xiàn)1 為 1000ma 自恢復(fù)保險(xiǎn)絲,用于保護(hù) USBAMS117 為 3.3V 穩(wěn)壓芯片,給開發(fā)板供電。2.TFT-LCD 電阻觸摸屏2.1 電阻觸摸屏原理電阻觸摸屏的主要部分是一塊與顯示器表面非常配合的電阻薄膜屏,這是一種多層的復(fù)合薄膜,它以一層玻璃或硬塑料平板作為基層, 表面涂有一層透明氧 化金屬(透明的導(dǎo)電電阻)導(dǎo)電層,上面再蓋有一層外表面硬化處理,光滑防擦 的塑料層,它的內(nèi)表面也涂有一層涂層,在它們之間有許多細(xì)小的(小于 1/1000 英寸)的透明隔離點(diǎn)把
16、兩層導(dǎo)電層隔開絕緣。 當(dāng)手指觸摸屏幕時(shí),兩層導(dǎo)電層在 觸摸點(diǎn)位置就有了接觸,電阻發(fā)生變化,在 X 和丫兩個(gè)方向上產(chǎn)生信號(hào),然后送 觸摸屏控制器??刂破鱾蓽y(cè)到這一接觸并計(jì)算出(X,丫)的位置,再根據(jù)獲得的 位置模擬鼠標(biāo)的方式運(yùn)作。這就是電阻技術(shù)觸摸屏的最基本原理。電阻觸摸屏的優(yōu)點(diǎn);精度高、價(jià)格便宜、抗干擾能力強(qiáng)、穩(wěn)定性好電阻觸摸屏的缺點(diǎn):容易被劃傷、透光性不太好、不支持多點(diǎn)觸摸DC POWER INGNDY D3SS14I Uli73BSTSWGNDNFBENVBTN1 C35DC INPOWERSSI 4GND31C.32103n|R37 MP23 59 R38 .53KVBTN104Q20L
17、LFs410斗GNDVCC3.3GND49.9KU10OUT JNOUTGND64Fl1000mAWSBGNDKIVO2_VOLTAP2 TAPI1/02 /Ol-OUFAMS111JTFT-LCD 模塊原理圖如圖 2-1 所示:TFTLCD丄人3 fhlJlLCD壽o-廠LCD R5LCDPT.6LCD RD7LCD DO9LCD D10LCIHJJ11LCD D3垃LCD DJ13LCD D514LCD DOISLCD D71LCD Effi17LCD TO1LCD D10ISLCD DU 20LCD D1221LCD D1322DccrljnrJJLCD D1524餾魏EELEDAEYw
18、 w0 0 1212 3 3 4 4 5 5 WY-WY-VCC33TdrE!35LEDKJS14 LEDK5 flLEDKXLEDKJ LEDK2光LEDA卻X+27 XT25LCD IVR3L CD RST5LCD DI/n j9LtrLDS11LCD D7JJLCD D915LCD Dll17LCD DI319LLU D1J21BLCTE23VCC5S25GM)i?1 KuyjT PEXT CSS3L CD CS4 LCD RD6LCDbO9 LCD D2PIO LCD IM12 L CD D614 LCD-bS16 LCD DIOIS LCD DD20 LCD D1422GND14曾O
19、C弭26GNDJS RL VDD30 T MOST32 TBU:34 T UC2 LD RSZ=C2ZZZC1JOuFl 104X- 2囲T:fcZ XPT2046HL DC卷,1- tzBL CTB.VCC33 GOTT MTSO 6可 FCSLCP2?27HCSRSWRRDRSTDBODB1DB2DB3DB4DB5DB6DB7DBSDB9DB10DB11DB12DB15DB14DB15GXDBLVDD3 3VDD 禮 3GNDGNDBL VDDMISOMOSIT PENMCTCSCLKTFT TC圖2-2LCD RS4 LTD_RD6KDPO8LCD D210 LCD ru1? LCD D
20、61-1 ICDD816 LCD-D10IS LCD D122C LCD D14TTTccTT2fi GND 23 BL 3DI SiOsl32 BUSY-34 T CLK從圖 2-2 中可以看出,TFT-LCD 模塊采用 16 位的并方式與外部連接,之所以不采用 8 位的方式,是因?yàn)椴势恋臄?shù)據(jù)量比較大,尤其在顯示圖片的時(shí)候,如 果用 8位數(shù)據(jù)線,就會(huì)比 16 位的方式慢一倍以上,所以選擇 16 位接口。TFT-LCD 模塊采用 8080 并行接口方式, 使得 MCI 可以快速的訪問, 該模塊 的 8080并口有如下信號(hào)線:CS : TFT-LCD 片選信號(hào)線。WR :向 TFT-LCD 寫入
21、數(shù)據(jù)。RD :從 TFT-LCD 讀取數(shù)據(jù)。D15:0:16位雙向數(shù)據(jù)線。RST :硬復(fù)位 TFT-LCDRS :命令/數(shù)據(jù)標(biāo)志(0,讀寫命令;1,讀寫數(shù)據(jù))。2.2 觸摸屏控制芯片從圖 2-1 中可以看出,TFT-LCD 模塊的觸摸屏控制芯片為 XPT2046 XPT2046 是一款 4 導(dǎo)線制觸摸屏控制器,內(nèi)含 12 位分辨率 125KHZ 轉(zhuǎn)換速率逐步逼近型 A/D 轉(zhuǎn)換器。XPT2046 支持從 1.5V 到 5.25V 的低電壓 I/O 口接口。XPT 能通過執(zhí) 行兩次 A/D轉(zhuǎn)換查出被按的屏幕位置,除此之外,還可以測(cè)量加在觸摸屏上的壓 力。內(nèi)部自帶 2.5V參考電壓可以作為輔助輸入
22、、溫度測(cè)量和電池監(jiān)測(cè)模式之用,電池監(jiān)測(cè)的電壓范圍可以從 0V 到 6V。3.FSMC 簡(jiǎn)介大容量,且引腳數(shù)目在 100 腳以上的 STM32F103E 片都帶有 FSM(接口,本 次實(shí)驗(yàn)所采用的開發(fā)板的主芯片為 STM32F103ZET6 是帶有 FSM(接 口的。FSMC 即靈活的靜態(tài)存儲(chǔ)控制器,能夠與同步或異步存儲(chǔ)器和 16 位 PC 存儲(chǔ) 卡連接,STM32 的 FSMC 接口支持包括 SRAM NAND FLASHINOR FLASH 口 PSRAM 等存儲(chǔ)器。FSMC 匡圖如圖 3-1 所示:NVICFSMC-fl1斷圖3-1從圖 3-1 中我們可以看出,STM32 勺 FSM(將外
23、部設(shè)備分為 3 類:NOR/PSRAMNANDS 備、PC 卡設(shè)備。它們共用地址數(shù)據(jù)總線等信號(hào),它們具有不同的 CS 以區(qū) 分不同的設(shè)備。本次實(shí)驗(yàn)所使用的 TFT-LCD 就是用 FSMC_NE 做片選,其實(shí)就是 講TFT-LCD 當(dāng)成 SRAM 來控制,之所以 TFT-LCD 可以被當(dāng)成 SRAMK 備來使用,是 因?yàn)橐话愕耐獠?SRAM 勺控制有: 地址線 (如 A0-A18) 、 數(shù)據(jù)線 (D0-D15、 寫 信號(hào) (WE) 、讀信號(hào)(RS)、片選信號(hào)(CS),如果 SRAMfc 持字節(jié)控制,那么還有 UBLB 信號(hào)。而 TFT-LCD 的信號(hào)包括: RS D0-D15 WR RD CS
24、 RST 和 BL 等, 其中 正在操作的 LCD的時(shí)候需要用到的就只有:RS D0-D15 WR RD 和 CS 其操作 時(shí)序和 SRAM 勺控制完全類似,唯一不同的是 TFT-LCD 有 RS 信號(hào),但沒有地址信 號(hào)。TFT-LCD 通過 RS 信號(hào)來決定傳送的數(shù)據(jù)是數(shù)據(jù)還是命令,本質(zhì)上可以理解 為一個(gè)地址信號(hào),比如把 RS 接在 A0 上面,那么當(dāng) FSM(控制器寫地址 0 時(shí)候, 會(huì)使得A0 變?yōu)?0,對(duì) TFT-LCD 來說,就是寫命令。而 FSMC 寫地址時(shí)候,A0 將會(huì) 變?yōu)?1,對(duì)TFT-LCD 來說就是寫數(shù)據(jù)了。這樣,就可以把數(shù)據(jù)和命令區(qū)分開了。 此次實(shí)驗(yàn)選擇的開發(fā)板是將 R
25、S 連接在 A10 上面。STM32 勺 FSM(支持 8/16/32 位數(shù)據(jù)寬度,這里用到的 LCD 是 16 位寬度,所 以在設(shè)置的時(shí)候選擇 16 位寬度,STM32 的 FSM(將外部存儲(chǔ)器劃分為固定大小為 256M字節(jié)的四個(gè)存儲(chǔ)塊,如圖 3-2 :采豈時(shí)鐘控観曙HCLK配置寄棄器NOR/PSRAM信號(hào)NAND佶號(hào)FSPCJNTRFSMC_NCE4_1FSMC_NCE4_2FSMC_NIORDFSMC-NIOWRFSMC_NIOS16FSMC.NFEGFSMC CC1F$MCNCE3:2FSMCJNT3:2|FSMC_N=4:1|FSMC-NL(orNADV)FSMC_NBL1:ONOR
26、&潔控制器FSMC_AI25:OFSMC_D1 5:0|FSL1C_NOEFSMC_NV/EFSP?IC NWAITNANDPC-rr存命控制器圖3-2從圖中可以看出,F(xiàn)SMC 總共管理 1GB 的空間,擁有 4 個(gè)存儲(chǔ)塊(Bank),此 次實(shí)驗(yàn)用到的是存儲(chǔ)塊 1。STM32 的 FSMC 存儲(chǔ)塊 1(Bank1 被分為 4 個(gè)空間,每個(gè)區(qū)管理 64M 字節(jié)空間, 每個(gè)區(qū)都有獨(dú)立的寄存器對(duì)所連接的存儲(chǔ)器進(jìn)行配置。Bankl 的 256M 字節(jié)空間由 28 根地址線(HADDR27:0)尋址,其中 HADDR25:0 來自外部存儲(chǔ)器地址FSMC_A25:0而HADDR26:27對(duì)4個(gè)區(qū)進(jìn)
27、行尋址, Bank1存儲(chǔ)區(qū)選擇表如圖3-3 所示:Bankl所選區(qū)片選信號(hào)地址范圍HADDR27:2625:0第1區(qū)FSMC NE10X6000, 000063FF, FFFF00FSMC_A25:0第2區(qū)FSMC NE20X6400, 000067FF, FFFF01地址存儲(chǔ)塊支持的存儲(chǔ)器類型NOF / PSRAM、NAND閃存PC卡第3區(qū)FSMC NE30X6800, 00006BFFpFFFF10第4區(qū)FSMC NE40X6C00, 00006FFF, FFFF11圖3-3其中需要注意 HADDR25:0 的對(duì)應(yīng)關(guān)系:當(dāng) Bank1 接的是 16 位寬度存儲(chǔ)器的時(shí)候: HADDR25:1
28、 嚴(yán) FSMC_A24:0; 當(dāng) Bank1 接的是 8 位寬度存儲(chǔ)器的時(shí)候:HADDR25:1 嚴(yán) FSMC_A25:0;不論外部接 8/16 位寬設(shè)備,F(xiàn)SMC_A0 永遠(yuǎn)接在外部設(shè)備地址 A0。此次實(shí)驗(yàn)使 用的是 Bank1 的第 4 區(qū),即 HADDR27:26=11 進(jìn)行配置對(duì)應(yīng)第 4 去的寄存器組, 來適應(yīng)外部設(shè)備。4. AT24C02 簡(jiǎn)介AT24C02 是一個(gè) 2K 串行 CMOS2PROM 內(nèi)部含有 256 個(gè) 8 位字節(jié),該器件通 過IIC 總線接口進(jìn)行操作。本次實(shí)驗(yàn)需要先向 24C02 讀取數(shù)據(jù)判斷觸摸屏是否已 經(jīng)校準(zhǔn)過了,如果沒有校準(zhǔn),則執(zhí)行校準(zhǔn)程序,校準(zhǔn)過后再進(jìn)入電阻
29、觸摸屏測(cè)試 程序,如果已經(jīng)校準(zhǔn)了,就直接進(jìn)入電阻觸摸屏程序。STM32F103 與 24C02 電路 連接如圖 4-1 所示:管腳名稱及功能:A0 A1 A2 器件地址選擇SDA 串行數(shù)據(jù)或地址 SCL 串行時(shí)鐘WP:寫保護(hù)VCC 1.8V6.0VGND:地三系統(tǒng)軟件設(shè)計(jì)1系統(tǒng)整體流程系統(tǒng)在復(fù)位或者上電之后,開始執(zhí)行各個(gè)模塊之間的初始化,其中主要的是 觸摸屏初始化,初始化之后,單片機(jī)需要進(jìn)行檢測(cè)觸摸屏是否已經(jīng)校準(zhǔn), 如果還 未進(jìn)行校準(zhǔn),將進(jìn)入校準(zhǔn)模式進(jìn)行校準(zhǔn),首次校準(zhǔn)完成,之后再進(jìn)行使用計(jì)算器 時(shí)是不需要進(jìn)入校準(zhǔn),有就是說單片機(jī)只需要進(jìn)行一次校準(zhǔn), 之后的測(cè)試將跳過 此階段。校準(zhǔn)階段完TIC
30、SCL IPB6 136IK SDAPB7 137PB6 I2CI SCL riM4_( HlPB7 I2CrSDATSMC_NADV TIM4_CH2VCC3.3U9i11J AOV1 r-AlWP -3V Jrr4 A2Q廠ITLSLL reiiA.-ND2 K 02704 GND,4,7K6ncSCLR34IIC SDAK35二1LJf8C31圖4-1成后,將進(jìn)入計(jì)算器主界面,開始輸入第一個(gè)參數(shù),也就是 需要進(jìn)行運(yùn)算的數(shù)字,之后選擇需要對(duì)數(shù)字進(jìn)行的操作方式符號(hào)“+”、“ - ”、“ * ”、“/”、“和“m,然后輸出第二個(gè)參數(shù),按下“=”鍵得出想要 的結(jié)果。若還需要在此結(jié)果上進(jìn)行計(jì)算,
31、可以在得出結(jié)果后,直接再次選擇需要 進(jìn)行的操作方式,再輸入下一個(gè)參數(shù),即可得到結(jié)果,此次設(shè)計(jì)的計(jì)算器是可以 支持連續(xù)計(jì)算操作。若需要重新計(jì)算,按下界面上的“RST 鍵清除內(nèi)容,便可開始新的計(jì)算。觸摸屏模塊流程圖如 3-1 所示:圖 3-1程序運(yùn)算表達(dá)式流程圖如圖 3-2 所示:圖 3-22.軟件實(shí)現(xiàn)方法2.1 主函數(shù)程序中主函數(shù)主要是包括延時(shí)函數(shù)初始化、中斷優(yōu)先級(jí)分配、LCD 初始化函數(shù)、定時(shí)器初始化、內(nèi)存管理初始化、 GUI 時(shí)鐘使能、GUI 初始化以及計(jì)算器主 界面。由于移植了 emwin 設(shè)計(jì)界面,需要用到定時(shí)器定時(shí)查詢觸摸,內(nèi)存分配以 及使能 GUI時(shí)鐘。主函數(shù)代碼如圖 3-3 所示:
32、ine niain (vaiei) delay_inix (); NVTC PriorityGroupCDuf xg (&JVIG Prior it yGr口up 2); TFTLCD_Xnlt();TP_Init (| ;(999, 71)JTIM-6_Int_Inn (9 99, 71); mymeirxm t ( SRAMINJ-;RCC_AHBPeriphClckCmd(RCC_ARBFexiph_CRCrENABLE) WM_Se Great eFlags (WM_CF_MEMDEV).;GUI_InJLE () GUISetBkColor (GUI_BLACK| ;GUIC
33、丄居;GUI_SetColor(GUI_WHITE);GUISetTextMode(GUI_TM_TRANS); GUISetFont (GUI_Foiit24_ASCII);圖3-32.2 觸摸按鍵函數(shù)在程序初始化各個(gè)模塊之后,開始檢測(cè)觸摸按鍵函數(shù),是否有按鍵按下來執(zhí)行相應(yīng)的操作。觸摸屏檢測(cè)到相應(yīng)的鍵值的方法是:在使用觸摸屏?xí)r,通過手指觸摸所要的鍵值,由于手指觸摸需要一定的區(qū)域,所以通過觸摸屏上的坐標(biāo)來劃 分一定范圍給每一個(gè)鍵值,這樣就可以通過手指觸摸到某一塊區(qū)域來確定觸摸到 哪個(gè)鍵值。觸摸按鍵函數(shù)代碼(僅以數(shù)字 1 為例)如圖 3-4 所示:if (tp dev.x(0&tp_d.
34、ev. y 0 420400)j十十;L+;k=l; displaynuidoer ();圖3-42.3 基本計(jì)算方法實(shí)現(xiàn)函數(shù)在使用計(jì)算器計(jì)算時(shí),需要判斷當(dāng)前是采用加減乘除哪種運(yùn)算,在程序中通過當(dāng)手指觸摸到其中一個(gè)運(yùn)算符號(hào)(如“+”),使用一個(gè)標(biāo)識(shí)位來進(jìn)行標(biāo)識(shí),然后在進(jìn)行運(yùn)算時(shí)候,通過這個(gè)標(biāo)識(shí)位來判斷是進(jìn)行哪種運(yùn)算。最后在運(yùn)算完成 之后,清除相應(yīng)的標(biāo)志位,以免影響下一次判斷。計(jì)算方法實(shí)現(xiàn)代碼(僅以加法為例)如圖 3-5 所示:if(tp dev.xDzdev.y(021 -if cp_davix 0 lz5) -a-L;e= 0;f+;if (f=l)diBplayadti();attendl
35、=attend;attend=J;j=0;1=0; elseif (a3 re5ult=atterLCi+attendl;GUI_CLear ():GUISerBkColor(GUI_BLACK;GtTISeVColor (GUI WHITE):GUl2SetTextMode(ET_TH_TRAN5):GUI_SerFonE (6GUI Font,24 ASCII);L電X _ali-!T ri _圖3-5圖中 a 是加法符號(hào)標(biāo)識(shí)位,當(dāng)按下“ +”時(shí),標(biāo)志位 a 將置 1。attend 是輸 入的第一個(gè)參數(shù),在判斷有運(yùn)算符號(hào)按下后,atte nd 將第一個(gè)參數(shù)賦值給attend1 ,然后 at
36、tend 繼續(xù)存儲(chǔ)第二個(gè)參數(shù),以免第二個(gè)參數(shù)將第一個(gè)參數(shù)覆蓋。 函數(shù)displayequal ()是計(jì)算實(shí)現(xiàn)函數(shù),通過按下“=”來調(diào)用此函數(shù),當(dāng)有“=” 按下時(shí),執(zhí)行相應(yīng)的運(yùn)算,并同時(shí)將相應(yīng)的運(yùn)算標(biāo)志位清零,如上圖所示,標(biāo)志 位 a 被清零。2.4 連續(xù)計(jì)算方法實(shí)現(xiàn)在一般情況下,計(jì)算器的使用都需要用到連續(xù)計(jì)算,也就是算到一個(gè)數(shù)之后,需要對(duì)算出來的數(shù)繼續(xù)計(jì)算。在本次實(shí)驗(yàn)中實(shí)現(xiàn)這種方法的基本思路是:在進(jìn)行連續(xù)計(jì)算時(shí),需要判斷這次計(jì)算是否是第一次,因此需要設(shè)定一個(gè)標(biāo)志位來判別, 本次程序中米用標(biāo)志位 f 來進(jìn)行判別,當(dāng)有任何一種計(jì)算符號(hào)(+、-、*、/、卅、“被按下,標(biāo)志位 f 就進(jìn)行加 1,程序代
37、碼如圖 3-6 (僅以“ + ”為例):ZL(匸卩dev. x 3 5C tp d&v. y 1 21C 4_-if (tp_devx J 135) _ _a+;a=L;f+;圖3-6在判斷是否是第一次計(jì)算之后,在接下來的計(jì)算中需要對(duì)標(biāo)志位 f 的狀態(tài)執(zhí) 行不同的操作,當(dāng)標(biāo)志位 f 為 1 時(shí),也就是進(jìn)行第一次計(jì)算,操作與上面介紹的 基本計(jì)算方法實(shí)現(xiàn)函數(shù)的操作是一樣的,當(dāng)標(biāo)志位f 大于 1 時(shí),也就是正在進(jìn)行連續(xù)計(jì)算,此時(shí)的操作是,將上一次計(jì)算的結(jié)果result 賦予給 attend1,然后進(jìn)行輸入第二操作數(shù),因?yàn)榇藭r(shí)是按下計(jì)算符號(hào),attend 的值還未輸入,此時(shí)的上一 次計(jì)算結(jié)果為第一操作數(shù)。第二操作數(shù)輸入之后,按下“=”鍵便可得到相應(yīng)的答案,程序代碼如圖 3-7 (僅以“ +”為例):if (f=l)displayad且; attendl=attend; attend=O;j=0;1=0;a=l;elsediplayadd (); resulL-atrend
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 洛陽(yáng)職業(yè)技術(shù)學(xué)院《大學(xué)生就業(yè)指導(dǎo)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年肇慶考貨運(yùn)從業(yè)資格證
- 2025年鄂州貨運(yùn)從業(yè)資格證考試題庫(kù)答案
- 2025年廣東貨運(yùn)叢業(yè)資格證考試題庫(kù)答案
- 2024年某物流公司關(guān)于運(yùn)輸000噸貨物的運(yùn)輸合同
- 物聯(lián)網(wǎng)應(yīng)用招投標(biāo)合同操作規(guī)程
- 皮革制品庫(kù)房施工合同
- 咨詢服務(wù)租賃合同模板
- 合租影視制作室合同樣本
- 沙灘休閑區(qū)遮陽(yáng)棚工程合同
- 2024年度餐飲店合伙人退出機(jī)制與財(cái)產(chǎn)分割協(xié)議2篇
- 《歲末年初重點(diǎn)行業(yè)領(lǐng)域安全生產(chǎn)提示》專題培訓(xùn)
- 靈新煤礦職業(yè)病危害告知制度范文(2篇)
- 2024年安徽省廣播電視行業(yè)職業(yè)技能大賽(有線廣播電視機(jī)線員)考試題庫(kù)(含答案)
- 山東省濟(jì)南市濟(jì)陽(yáng)區(qū)三校聯(lián)考2024-2025學(xué)年八年級(jí)上學(xué)期12月月考語(yǔ)文試題
- 手術(shù)室的人文關(guān)懷
- 2025北京語(yǔ)言大學(xué)新編長(zhǎng)聘人員招聘21人筆試模擬試題及答案解析
- 部編版小學(xué)五年級(jí)上冊(cè)道德與法治單元檢測(cè)試卷含答案(全冊(cè))
- 中國(guó)近代史綱要試題及答案(全套)
- DL∕T 5210.2-2018 電力建設(shè)施工質(zhì)量驗(yàn)收規(guī)程 第2部分:鍋爐機(jī)組
- 唐宋文學(xué)與中學(xué)語(yǔ)文智慧樹知到期末考試答案章節(jié)答案2024年紹興文理學(xué)院
評(píng)論
0/150
提交評(píng)論