一、所用工具:
1、芯片: STM32F407ZGT6
2、STM32CubeMx软件
3、IDE: MDK-Keil软件
4、显示屏:正点原子2.8寸TFT LCD MCU电阻屏 320*240
二、实现功能:
1、按键改变字幕滚动速度及方向
2、触摸数字计算器,实现以下功能:加减乘除、指数对数、三角函数、括号及小数
三、准备工作:
1、有关CUBEMX的初始化配置,参见我的另一篇blog:【STM32+HAL】CUBEMX初始化配置
2、有关LCD屏的初始化配置,参见我的另一篇blog:【STM32+HAL】LCD显示及触摸初始化配置
3、有关C语言栈计算器代码,参见我的另一篇blog:栈计算器(C)
四、KEIL填写代码:
1、计算器屏幕绘制
可写在lcd.c的void LCD_Clear(u32 color)函数中,即每次刷新屏幕都不变
/* 计算器专用清屏 */
for(int i=1;i<=7;i++){
LCD_DrawLine(0,40*i,240,40*i);
}
for(int i=1;i<=4;i++){
LCD_DrawLine(48*i,40,48*i,320);
}
LCD_ShowNum(113,285,0,1,32);
LCD_ShowNum(65,245,1,1,32);
LCD_ShowNum(113,245,2,1,32);
LCD_ShowNum(161,245,3,1,32);
LCD_ShowNum(65,205,4,1,32);
LCD_ShowNum(113,205,5,1,32);
LCD_ShowNum(161,205,6,1,32);
LCD_ShowNum(65,165,7,1,32);
LCD_ShowNum(113,165,8,1,32);
LCD_ShowNum(161,165,9,1,32);
LCD_ShowString(209,245,200,4,32,"+");
LCD_ShowString(209,205,200,4,32,"-");
LCD_ShowString(209,165,200,4,32,"*");
LCD_ShowString(209,125,200,4,32,"/");
LCD_ShowString(161,285,200,4,32,".");
LCD_ShowString(55,285,200,4,24,"lnx");
LCD_ShowString(200,285,200,4,32,"OK");
LCD_ShowString(200,88,200,4,24,"MOD");
LCD_ShowString(153,88,200,4,24,"DTB");
LCD_ShowString(200,45,200,4,32,"<-");
LCD_ShowString(160,45,200,4,32,"C");
LCD_ShowString(115,47,200,4,24,"e");
LCD_ShowString(102,90,200,4,24,"|X|");
LCD_ShowString(52,90,150,4,24,"1/X");
LCD_ShowString(5,50,150,4,24,"EXP");
LCD_ShowString(5,90,150,4,24,"x^y");
LCD_ShowString(0,130,150,4,24,"Sqrt");
LCD_ShowString(56,45,200,4,24,"pai");
LCD_ShowString(155,125,200,4,32,"n!");
LCD_ShowString(115,125,200,4,32,")");
LCD_ShowString(65,125,200,4,32,"(");
LCD_ShowString(0,285,150,4,24,"logx");
LCD_ShowString(0,245,150,4,24,"Cosx");
LCD_ShowString(0,205,150,4,24,"Sinx");
LCD_ShowString(0,165,150,4,24,"tanx");
2、判断按下位置,并存入数组中
若按下为 “=”,则在数组末尾添加 '\0',并传入函数进行计算
这没什么好说的,看下附的工程