一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

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

硬件平臺(tái)

CPUSTM32F103ZE

屏幕:LCD屏幕接口(NT35310)

觸摸屏:XPT2046(SPI接口)

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

2.功能實(shí)現(xiàn)

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

3.硬件介紹

3.1 TFTLCD屏 NT35310驅(qū)動(dòng)

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

3.2 8080時(shí)序

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

8080寫(xiě)時(shí)序

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

8080讀時(shí)序

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

3.3 觸摸屏驅(qū)動(dòng)XPT2046

XPT2046 是一款四線(xiàn)制電阻觸摸屏控制芯片,由深圳市矽普特科技有限公司研發(fā)生產(chǎn),被廣泛的應(yīng)用于觸摸屏驅(qū)動(dòng),堪稱(chēng)經(jīng)典之作!
XPT2046 內(nèi)部有 2.5V 的參考電壓源,可以作為輔助輸入、電池電壓測(cè)量和片內(nèi)溫度測(cè)量的參考電壓。當(dāng)不使用時(shí),參考電壓源可以處于省電模式。內(nèi)部參考電壓源在電源電壓低至 2.7V 時(shí)仍可正常工作。當(dāng)不使用時(shí),參考電壓還可以處于省電模式。內(nèi)部參考電壓在電源電壓低于 2.7V 時(shí)仍可正常工作,并且監(jiān)測(cè)著在 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ū)動(dòng)時(shí)序

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

4.1 STemwin簡(jiǎn)介

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

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

4.2 emwin特性

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

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

4.3 GUIBuilde

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

poYBAGKQ1pCAeBsyAAK14Q9L4ZM061.png

計(jì)算器界面效果

pYYBAGKQ1OSAFa1wAAUUX0Ii3AE145.png

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

poYBAGKQ17iAP06_AAVysCxGEiY616.png

基本運(yùn)算和順序運(yùn)算

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,用來(lái)給STemwint延時(shí)函數(shù)使用
  TIM7->CR1|=1<<0;//開(kāi)啟定時(shí)器	
	RCC->AHBENR|=1<<6;//開(kāi)啟CRC時(shí)鐘
	GUI_Init();//STemwin初始化
  WM_SetCreateFlags(WM_CF_MEMDEV);    /*在所有窗口上使用存儲(chǔ)設(shè)備以避免閃爍 */
  CreateFramewin();
  while(1)
  {
    GUI_Exec();//更新界面顯示,顯示對(duì)話(huà)框
   
    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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算器
    +關(guān)注

    關(guān)注

    16

    文章

    439

    瀏覽量

    37812
  • STM32F103ZE
    +關(guān)注

    關(guān)注

    2

    文章

    14

    瀏覽量

    10993
  • XPT2046
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    18416
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    STM32F103ZE最小系統(tǒng)版

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

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

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

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

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

    STM32F103ze簡(jiǎn)介

    一、STM32F103ze 簡(jiǎn)介本文中,采用的 MCU 具體型號(hào)為 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嵌入式評(píng)估板采用ST公司的STM32F103ZE處理,工作頻率72MHz.評(píng)估板集成了USB, CAN, SD卡接
    發(fā)表于 05-08 11:17 ?1.5w次閱讀
    嵌入式 <b class='flag-5'>STM32F103ZE</b>主要特性

    基于STM32F103ZE的USART2 端口時(shí)鐘

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

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

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

    STM32F103ZE核心板電路原理圖和PCB圖免費(fèi)下載

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

    新版STM32F103ZE核心板原理圖免費(fèi)下載

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

    新版STM32F103ZE核心板原理圖

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

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

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

    STM32F103ZE最小系統(tǒng)板

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