0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

采用STM32F103ZE的計算器設(shè)計與實現(xiàn)

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-05-28 19:03 ? 次閱讀

硬件平臺

CPUSTM32F103ZE

屏幕:LCD屏幕接口(NT35310)

觸摸屏:XPT2046(SPI接口)

外擴(kuò)內(nèi)存:IS62WV51216(FSMC驅(qū)動)

2.功能實現(xiàn)

1.完成LCD驅(qū)動、觸摸屏驅(qū)動,SPI FLASH驅(qū)動保存字庫;
2.完成STemwin移植,設(shè)計計算器界面;
3.計算器基本功能實現(xiàn):基本運算(加、減、乘、除);
4.實現(xiàn)多級運算、平方運算;

3.硬件介紹

3.1 TFTLCD屏 NT35310驅(qū)動

nt35310 是一個低功耗、 26 萬色、單芯片的 TFT-LCD 控制器/驅(qū)動器,分辨率 480*320,它有一個 345600 字節(jié)的顯示 RAM 和一整套控制功能。 nt35310 支持?jǐn)?shù)字接口( MDDI), MIPI 接口, RGB 接口, 8 / 9 / 16 / 18 位8080 接口。可以實現(xiàn)指定的窗口區(qū)域可以有選擇地更新,以便可以顯示運動圖像。同時也可以獨立顯示靜止的圖像區(qū)域。

3.2 8080時序

8080 總線又叫Intel(英特爾開發(fā))總線。大致來說, Intel 總線的控制線有四根, RD 寫使能, WR 讀使能, ALE 地址鎖存, CS 片選。
模塊的 8080 并口讀/寫的過程為:
先根據(jù)要寫入/讀取的數(shù)據(jù)的類型,設(shè)置 RS 為高(數(shù)據(jù)) /低(命令),然后拉低片選,選中 LCD,接著我們根據(jù)是讀數(shù)據(jù),還是要寫數(shù)據(jù)置 RD/WR 為低,然后:
讀數(shù)據(jù):在 RD 的上升沿, 讀取數(shù)據(jù)線上的數(shù)據(jù)(D[15:0]);
寫數(shù)據(jù):在 WR 的上升沿,使數(shù)據(jù)寫入到 NT35310 里面;

8080寫時序

poYBAGKQ0rCALy8zAAC2esTvz_k661.png
/*LCD寫寄存器*/
static void LcdWriteReg(u16 reg)
{
	LCD_CS=0;//拉低片選,選擇LCD
	LCD_RS=0;//寫命令
	LCD_WR=0;//開始寫
	DATA_OUT(reg);
	LCD_WR=1;//寫完成
	LCD_CS=1;//取消選中
}
/*LCD寫數(shù)據(jù)*/
static void LcdWriteData(u16 dat)
{
	LCD_CS=0;//拉低片選,選擇LCD
	LCD_RS=1;//寫數(shù)據(jù)
	LCD_WR=0;//開始寫
	DATA_OUT(dat);
	LCD_WR=1;//寫完成
	LCD_CS=1;//取消選中
}

8080讀時序

poYBAGKQ0uGAMcQMAAC1itO_jSU917.png
/*LCD寫數(shù)據(jù)*/
static u16 LcdWriteData(void)
{
	u16 data=0;
	LCD_CS=0;//拉低片選,選擇LCD
	LCD_RS=1;//寫數(shù)據(jù)
	LCD_RD=0;//開始讀
	data=DATAIN();//讀取消息
	LCD_RD=1;//讀完成
	LCD_CS=1;//取消選中
	return data;
}

3.3 觸摸屏驅(qū)動XPT2046

XPT2046 是一款四線制電阻觸摸屏控制芯片,由深圳市矽普特科技有限公司研發(fā)生產(chǎn),被廣泛的應(yīng)用于觸摸屏驅(qū)動,堪稱經(jīng)典之作!
XPT2046 內(nèi)部有 2.5V 的參考電壓源,可以作為輔助輸入、電池電壓測量和片內(nèi)溫度測量的參考電壓。當(dāng)不使用時,參考電壓源可以處于省電模式。內(nèi)部參考電壓源在電源電壓低至 2.7V 時仍可正常工作。當(dāng)不使用時,參考電壓還可以處于省電模式。內(nèi)部參考電壓在電源電壓低于 2.7V 時仍可正常工作,并且監(jiān)測著在 0V~6V 范圍內(nèi)的電源電壓。 XPT2046 在 125KHz 轉(zhuǎn)換速率和 2.7V 電壓下的功耗僅為 750 μW。XPT2046 以其低功耗和高速率等特性,被廣泛應(yīng)用在采用電池供電的小型手持設(shè)備上,比如 PDA、手機(jī)等。

pYYBAGKQ1uOAIPj5AAJN_ySTm0E932.png#pic_center

3.4 XPT2046驅(qū)動時序

XPT2046 數(shù)據(jù)接口是串行接口,其典型工作時序如圖 9 所示,圖中展示的信號來自帶有基本串行接口的單片機(jī)或數(shù)據(jù)信號處理器。處理器和轉(zhuǎn)換器之間的的通信需要 8 個時鐘周期,可采用 SPI、 SSI 和 Microwire 等同步串行接口。一次完整的轉(zhuǎn)換需要 24 個串行同步時鐘( DCLK)來完成。
前 8 個時鐘用來通過DIN引腳輸入控制字節(jié)。當(dāng)轉(zhuǎn)換器獲取有關(guān)下一次轉(zhuǎn)換的足夠信息后,接著根據(jù)獲得的信息設(shè)置輸入多路選擇器和參考源輸入,并進(jìn)入采樣模式,如果需要,將啟動觸摸面板驅(qū)動器。 3 個多時鐘周期后,控制字節(jié)設(shè)置完成,轉(zhuǎn)換器進(jìn)入轉(zhuǎn)換狀態(tài)。這時,輸入采樣-保持器進(jìn)入保持狀態(tài),觸摸面板驅(qū)動器停止工作(單端工作模式)。接著的12 個時鐘周期將完成真正的模數(shù)轉(zhuǎn)換。如果是度量比率轉(zhuǎn)換方式( SER/DFR= 0),驅(qū)動器在轉(zhuǎn)換過程中將一直工作,第13 個時鐘將輸出轉(zhuǎn)換結(jié)果的最后一位。剩下的 3 個多時鐘周期將用來完成被轉(zhuǎn)換器忽略的最后字節(jié)(DOUT置低)。

poYBAGKQ1uOAOW0IAACrrbcp6TU251.png#pic_center
#define TOUCH_VALUE_ADDR  200 //保存校準(zhǔn)值參數(shù)信息
#define T_MISO PBin(2)
#define T_MOSI PFout(9)
#define T_PEN PFin(10)
#define T_CS PFout(11)
#define T_SCK PBout(1)
u16 XPT2046_WR_Data(u8 cmd)
{
  u16 dat=0;
  u8 i=0;
  T_CS=0;
  for(i=0;i<8;i++)
  {
    T_SCK=0;
    T_MOSI=cmd&0x80?1:0;
    T_SCK=1;
    cmd<<=1;
  }
   Delay_Us(8);
  T_SCK=0;
  Delay_Us(1);
  T_SCK=1;
  for(i=0;i<16;i++)
  {
    T_SCK=0;
    T_SCK=1;
    dat<<=1;
    if(T_MISO)dat|=0x01;
  }
  dat>>=4;
  T_CS=1;
  return dat;
}

4.STemwin移植與計算器界面制作

4.1 STemwin簡介

emWin 是由德國 SEGGER 公司開發(fā),可為圖形 LCD 設(shè)計提供高級支持,極大簡化了 LCD 設(shè)計。 為恩智浦ARM 微控制器用戶免費提供的 emWin 圖形庫。在國內(nèi)做嵌入式系統(tǒng)的大部分都使用 emwin, 其簡單來說就是一套圖形庫。
STemWin是SEGGER公司授權(quán)給ST(意法半導(dǎo)體)的。使用ST芯片的用戶可以免費使用STemWin。其實不光授權(quán)給了ST,還有NXP,Energy Micro等。凡是使用這些芯片廠商生產(chǎn)的處理器都可以免費的使用emWin。但是出于一定的保護(hù)措施,使用STemWin的庫是不能用在其它芯片廠商的處理器上面的。因為在工程初始化STemWin前要使能CRC校驗。如果沒有使能,STemWin是啟動不起來的。KEIL MDK的安裝目錄里面也帶有emWin軟件包,這個軟件包也不是可以直接使用的,用戶需要給KEIL MDK注冊RL-ARM才可以使用。

這里STemWin還針對ST的微控制器做了專門的優(yōu)化,比如在使用ST的F4XX微控制器帶FPU的芯片時,STemWin在需要浮點處理的地方專門做了優(yōu)化。

4.2 emwin特性

emWin 設(shè)計用于提供高效且獨立于處理器和顯示控制器的圖形用戶界面,用于任何使用圖形顯示進(jìn)行操作的應(yīng)用。它與單任務(wù)和多任務(wù)環(huán)境、專用操作系統(tǒng)或具有任何商業(yè) RTOS 兼容, emWin 的發(fā)貨形式為 C 語言源代碼。它可適用于任何尺寸的、具有任何顯示控制器和 CPU 的物理和虛擬顯示器。其特性包括:

一般特性
? 支持使用任何控制器的任何 (單色、灰度或彩色)顯示器 (如果有正確的驅(qū)動)。
? 在較小顯示器上無顯示控制器也可運行。
? 使用配置宏可支持任何接口。
? 顯示尺寸可配置。
? 可在顯示器上的任何點 (而不僅僅是在偶數(shù)位字節(jié)地址)上寫入字符和位圖。
? 已針對尺寸和速度優(yōu)化了各種例程。
? 利用編譯時間切換可進(jìn)行不同優(yōu)化。
? 對于較慢的顯示控制器,可在存儲器中緩存顯示,將存取操作減到最少,從而獲得非常高的速度。
? 結(jié)構(gòu)清晰。
? 支持虛擬顯示;虛擬顯示可大于實際顯示。
圖形庫
? 支持不同色深的位圖。
? 可使用位圖轉(zhuǎn)換器。
? 絕對無浮點使用。
? 快速線 / 點繪制 (不使用浮點)。
? 圓形 / 多邊形繪制非??焖?。
? 不同的繪圖模式。
字體
? 基本軟件配備多種不同的字體: 46、 68、 69、 88、 89、 816、 817、 818、 24*32,以及像素高度為 8、 10、 13、 16 的比例字體。
? 可以定義新的字體并只需簡單鏈接。
? 只有應(yīng)用程序使用的字體才實際鏈接到生成的可執(zhí)行程序,從而使 ROM 使用最小。
? 字體可分別在 X 和 Y 方向完全縮放。
? 可使用字體轉(zhuǎn)換器;主機(jī)系統(tǒng) (即 Microsoft Windows)上有的任何字體都可以轉(zhuǎn)換。
字符串 / 值輸出例程
? 例程可以十進(jìn)制、二進(jìn)制、十六進(jìn)制、任何字體形式顯示值。
? 例程可以十進(jìn)制、二進(jìn)制、十六進(jìn)制、任何字體形式編輯值。
窗口管理器 (WM)
? 完整的窗口管理操作,包括裁剪。窗口的客戶區(qū)以外的區(qū)域不可能被覆蓋。
? 窗口可以移動和調(diào)整大小。
? 支持回調(diào)例程 (可選擇是否使用)。
? WM 使用最小的 RAM (每個窗口大約 50 字節(jié))。
PC 界面外觀的可選小工具
? 提供各種小工具 (窗口對象,也稱為控件)。它們通常自動操作并且簡單易用。
支持觸摸屏和鼠標(biāo)
? 對于按鈕小工具等窗口對象, emWin 提供觸摸屏和鼠標(biāo)支持。
PC 工具
? 模擬脈沖查看器。
? 位圖轉(zhuǎn)換器。
? 字體轉(zhuǎn)換器。

4.3 GUIBuilde

GUIBuilder應(yīng)用程序是一款無需使用 C編程語言即可創(chuàng)建對話框的工具。小工具的放置和大小調(diào)整,可通過拖放操作來實現(xiàn),而無需編寫源代碼。根據(jù)上下文菜單,能添加其他各種屬性。對這些小工具的屬性進(jìn)行編輯后,就能實現(xiàn)微調(diào)。該操作無需使用 C 編程語言。對話框可以另存為 C 文件,在添加用戶定義的代碼后可對其進(jìn)行增強(qiáng)。當(dāng)然, GUIBuilder 可以加載并修改具有嵌入式用戶代碼的這些C 文件。

poYBAGKQ1pCAeBsyAAK14Q9L4ZM061.png

計算器界面效果

pYYBAGKQ1OSAFa1wAAUUX0Ii3AE145.png

平方運算和分?jǐn)?shù)計算

poYBAGKQ17iAP06_AAVysCxGEiY616.png

基本運算和順序運算

poYBAGKQ1WaABBMmAArmat174sU016.png

主函數(shù)

#include "gui.h"
#include "EmWinHZFont.h"
#include "DIALOG.h"
#include 
extern WM_HWIN CreateFramewin(void);
int main()
{
  u16 time=0;
  GUI_PID_STATE pState;
  STM32_Clock_Init(16);
  Beep_Init();
  Led_Init();
  Key_Init();
  Usartx_Init(USART1,115200,128);
  W25Q64_Init();  
  IIC_Init();
  Sram_Init();
  NT35310_Init();
  XPT2046_Init();
  printf("校準(zhǔn)完成\r\n"); 
	XPT2046_Calibration2();
  TIMx_Init(TIM7,128,1000);//1ms,用來給STemwint延時函數(shù)使用
  TIM7->CR1|=1<<0;//開啟定時器	
	RCC->AHBENR|=1<<6;//開啟CRC時鐘
	GUI_Init();//STemwin初始化
  WM_SetCreateFlags(WM_CF_MEMDEV);    /*在所有窗口上使用存儲設(shè)備以避免閃爍 */
  CreateFramewin();
  while(1)
  {
    GUI_Exec();//更新界面顯示,顯示對話框
   
    GUI_TOUCH_GetState(&pState);//獲取觸摸屏狀態(tài)
    if(pState.Pressed)
		{
			GUI_CURSOR_SetPosition(pState.x,pState.y);//設(shè)置坐標(biāo)位置
			GUI_CURSOR_Show();//顯示光標(biāo)
		}
		Delay_Ms(1);
		time++;
		if(time>=500)
		{
			LED1=!LED1;
			time=0;
		}  
  }
}


審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計算器
    +關(guān)注

    關(guān)注

    16

    文章

    434

    瀏覽量

    37047
  • STM32F103ZE
    +關(guān)注

    關(guān)注

    2

    文章

    14

    瀏覽量

    10846
  • XPT2046
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    18226
收藏 人收藏

    評論

    相關(guān)推薦

    STM32應(yīng)用案例 基于STM32F103ZE開發(fā)的數(shù)碼相冊

    1.硬件平臺 CPU:STM32F103ZE 屏幕:3.5寸TFTLCD屏 觸控:電阻式觸摸屏xpt2046 SD卡、外擴(kuò)Sram
    的頭像 發(fā)表于 06-02 09:09 ?7003次閱讀
    <b class='flag-5'>STM32</b>應(yīng)用案例 基于<b class='flag-5'>STM32F103ZE</b>開發(fā)的數(shù)碼相冊

    STM32F103ZE最小系統(tǒng)版

    1.單片機(jī):STM32F103ZE最小系統(tǒng)版6.0?N1RVcKX0SpK?回????/寶或點***擊***鏈節(jié)至瑬覽STM32F103ZET6小系統(tǒng)板 STM32開發(fā)板
    發(fā)表于 08-06 07:51

    基于stm32F103ZE單片機(jī)的USART串口怎么使用?

    基于stm32F103ZE單片機(jī)的USART串口怎么使用?
    發(fā)表于 12-10 06:57

    STM32F103ZE按鍵部分原理實現(xiàn)

    型號:STM32F103ZE按鍵部分原理圖:主函數(shù):#include "bsp-led2.h"#include "stm32f10x.h"#include
    發(fā)表于 01-17 08:38

    STM32F103ze簡介

    一、STM32F103ze 簡介本文中,采用的 MCU 具體型號為 STM32F103ZET6,其擁有豐富的外設(shè)資源(USB,IIC,USART,TIMER)等,大容量的RAM和ROM,以及上百
    發(fā)表于 02-11 06:04

    STM32F103ZE最小系統(tǒng)原理圖

    STM32F103ZE最小系統(tǒng)原理圖
    發(fā)表于 09-20 11:07 ?196次下載
    <b class='flag-5'>STM32F103ZE</b>最小系統(tǒng)原理圖

    基于stm32f103ze的四軸飛控代碼

    基于stm32f103ze的四軸飛控代碼
    發(fā)表于 01-13 10:21 ?30次下載

    嵌入式 STM32F103ZE主要特性

    Embest公司的STM32F103ZE ARM Cortex-M3嵌入式評估板采用ST公司的STM32F103ZE處理,工作頻率72MHz.評估板集成了USB, CAN, SD卡接
    發(fā)表于 05-08 11:17 ?1.5w次閱讀
    嵌入式 <b class='flag-5'>STM32F103ZE</b>主要特性

    基于STM32F103ZE的USART2 端口時鐘

    STM32F103ZE默認(rèn)的USART2就是PA03PA02,如果配置映射,USART2端口是PD05PD06了。
    發(fā)表于 06-04 07:26 ?6229次閱讀
    基于<b class='flag-5'>STM32F103ZE</b>的USART2 端口時鐘

    新版STM32F103ZE核心板原理圖詳細(xì)資料免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是新版STM32F103ZE核心板原理圖詳細(xì)資料免費下載。
    發(fā)表于 08-29 08:00 ?0次下載
    新版<b class='flag-5'>STM32F103ZE</b>核心板原理圖詳細(xì)資料免費下載

    STM32F103ZE核心板電路原理圖和PCB圖免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32F103ZE核心板電路原理圖和PCB圖免費下載。
    發(fā)表于 04-01 08:00 ?0次下載
    <b class='flag-5'>STM32F103ZE</b>核心板電路原理圖和PCB圖免費下載

    新版STM32F103ZE核心板原理圖免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是新版STM32F103ZE核心板原理圖免費下載。
    發(fā)表于 02-26 11:46 ?0次下載
    新版<b class='flag-5'>STM32F103ZE</b>核心板原理圖免費下載

    新版STM32F103ZE核心板原理圖

    新版STM32F103ZE核心板原理圖免費下載。
    發(fā)表于 06-18 11:14 ?0次下載

    STM32F103ZE構(gòu)建固件庫模板

    STM32F103ZE構(gòu)建固件庫模板
    發(fā)表于 12-08 18:51 ?13次下載
    <b class='flag-5'>STM32F103ZE</b>構(gòu)建固件庫模板

    STM32F103ZE最小系統(tǒng)板

    STM32F103ZE最小系統(tǒng)板,可能帶有一些不足
    發(fā)表于 03-30 18:18 ?0次下載