在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

采用STM32F103ZE的計算器設計與實現

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

硬件平臺

CPUSTM32F103ZE

屏幕:LCD屏幕接口(NT35310)

觸摸屏:XPT2046(SPI接口)

外擴內存:IS62WV51216(FSMC驅動)

2.功能實現

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

3.硬件介紹

3.1 TFTLCD屏 NT35310驅動

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

3.2 8080時序

8080 總線又叫Intel(英特爾開發)總線。大致來說, Intel 總線的控制線有四根, RD 寫使能, WR 讀使能, ALE 地址鎖存, CS 片選。
模塊的 8080 并口讀/寫的過程為:
先根據要寫入/讀取的數據的類型,設置 RS 為高(數據) /低(命令),然后拉低片選,選中 LCD,接著我們根據是讀數據,還是要寫數據置 RD/WR 為低,然后:
讀數據:在 RD 的上升沿, 讀取數據線上的數據(D[15:0]);
寫數據:在 WR 的上升沿,使數據寫入到 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寫數據*/
static void LcdWriteData(u16 dat)
{
	LCD_CS=0;//拉低片選,選擇LCD
	LCD_RS=1;//寫數據
	LCD_WR=0;//開始寫
	DATA_OUT(dat);
	LCD_WR=1;//寫完成
	LCD_CS=1;//取消選中
}

8080讀時序

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

3.3 觸摸屏驅動XPT2046

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

pYYBAGKQ1uOAIPj5AAJN_ySTm0E932.png#pic_center

3.4 XPT2046驅動時序

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

poYBAGKQ1uOAOW0IAACrrbcp6TU251.png#pic_center
#define TOUCH_VALUE_ADDR  200 //保存校準值參數信息
#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 公司開發,可為圖形 LCD 設計提供高級支持,極大簡化了 LCD 設計。 為恩智浦ARM 微控制器用戶免費提供的 emWin 圖形庫。在國內做嵌入式系統的大部分都使用 emwin, 其簡單來說就是一套圖形庫。
STemWin是SEGGER公司授權給ST(意法半導體)的。使用ST芯片的用戶可以免費使用STemWin。其實不光授權給了ST,還有NXP,Energy Micro等。凡是使用這些芯片廠商生產的處理器都可以免費的使用emWin。但是出于一定的保護措施,使用STemWin的庫是不能用在其它芯片廠商的處理器上面的。因為在工程初始化STemWin前要使能CRC校驗。如果沒有使能,STemWin是啟動不起來的。KEIL MDK的安裝目錄里面也帶有emWin軟件包,這個軟件包也不是可以直接使用的,用戶需要給KEIL MDK注冊RL-ARM才可以使用。

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

4.2 emwin特性

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

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

4.3 GUIBuilde

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

poYBAGKQ1pCAeBsyAAK14Q9L4ZM061.png

計算器界面效果

pYYBAGKQ1OSAFa1wAAUUX0Ii3AE145.png

平方運算和分數計算

poYBAGKQ17iAP06_AAVysCxGEiY616.png

基本運算和順序運算

poYBAGKQ1WaABBMmAArmat174sU016.png

主函數

#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("校準完成\r\n"); 
	XPT2046_Calibration2();
  TIMx_Init(TIM7,128,1000);//1ms,用來給STemwint延時函數使用
  TIM7->CR1|=1<<0;//開啟定時器	
	RCC->AHBENR|=1<<6;//開啟CRC時鐘
	GUI_Init();//STemwin初始化
  WM_SetCreateFlags(WM_CF_MEMDEV);    /*在所有窗口上使用存儲設備以避免閃爍 */
  CreateFramewin();
  while(1)
  {
    GUI_Exec();//更新界面顯示,顯示對話框
   
    GUI_TOUCH_GetState(&pState);//獲取觸摸屏狀態
    if(pState.Pressed)
		{
			GUI_CURSOR_SetPosition(pState.x,pState.y);//設置坐標位置
			GUI_CURSOR_Show();//顯示光標
		}
		Delay_Ms(1);
		time++;
		if(time>=500)
		{
			LED1=!LED1;
			time=0;
		}  
  }
}


審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算器
    +關注

    關注

    16

    文章

    437

    瀏覽量

    37344
  • STM32F103ZE
    +關注

    關注

    2

    文章

    14

    瀏覽量

    10890
  • XPT2046
    +關注

    關注

    0

    文章

    18

    瀏覽量

    18266
收藏 人收藏

    評論

    相關推薦

    STM32應用案例 基于STM32F103ZE開發的數碼相冊

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

    STM32F103ZE最小系統版

    1.單片機:STM32F103ZE最小系統版6.0?N1RVcKX0SpK?回????/寶或點***擊***鏈節至瑬覽STM32F103ZET6小系統板 STM32開發板
    發表于 08-06 07:51

    基于stm32F103ZE單片機的USART串口怎么使用?

    基于stm32F103ZE單片機的USART串口怎么使用?
    發表于 12-10 06:57

    STM32F103ZE按鍵部分原理實現

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

    STM32F103ze簡介

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

    STM32F103ZE最小系統原理圖

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

    基于stm32f103ze的四軸飛控代碼

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

    嵌入式 STM32F103ZE主要特性

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

    基于STM32F103ZE的USART2 端口時鐘

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

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

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

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

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

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

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

    新版STM32F103ZE核心板原理圖

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

    STM32F103ZE構建固件庫模板

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

    STM32F103ZE最小系統板

    STM32F103ZE最小系統板,可能帶有一些不足
    發表于 03-30 18:18 ?0次下載
    主站蜘蛛池模板: 天堂网www在线观看| 泰剧天堂| 人人看人人干| 91九色成人| 日本janpanese护士bus中国| 亚洲国产成人va在线观看| 美女网站一区二区三区| 偷偷操不一样的久久| 丁香婷婷开心激情深爱五月| 视频在线欧美| 一级视频在线免费观看| 人人乳乳香蕉大免费| 亚洲第一成人在线| 在线观看视频一区| 青草视频在线观看国产| 天天摸天天干天天操| 亚洲黄色天堂| 女人被狂躁视频免费网站| 手机看片国产高清| 浮荡视频在线观看免费| 久久51| 国产视频久| 性欧美乱又伦| www.激情.com| 亚洲欧洲一区二区三区在线| 欧美性淫爽www视频播放| 日本一本高清视频| 最近最新视频中文字幕4| 国产亚洲精品自在久久77| 在线黄视频网站| 日韩毛片网站| 免费人成网站永久| 亚洲人成影网站~色| 最新大黄网站免费| 视频一区 中文字幕| 韩国a级床戏大尺度在线观看| 91精品啪国产在线观看免费牛牛| 色av.com| 久久久久久久影院| 天堂中文字幕在线观看| 天堂在线网站|