嵌入式,触摸屏计算器的设计
单片机源程序如下:
- #include "sys.h"
- #include "usart.h"
- #include "delay.h"
- #include "math.h"
- #include "stdio.h"
- #include "led.h"
- #include "gui.h"
- #include "touch.h"
- #include "WM.h"
- #include "button.h"
- #include "progbar.h"
- #include "CHECKBOX.h"
- #include "listbox.h"
- #include "framewin.h"
- #include "SCROLLBAR.h"
- #include "edit.h"
- // -------------------- 结构变量 --------------------- //
- GUI_PID_STATE STATE; //该变量为GUI触屏的x y位置存储坐标(内部已将其换算为屏幕坐标了)
- FRAMEWIN_Handle hFrame;
- BUTTON_Handle hButton_1;
- BUTTON_Handle hButton_2;
- BUTTON_Handle hButton_3;
- BUTTON_Handle hButton_4;
- BUTTON_Handle hButton_5;
- BUTTON_Handle hButton_6;
- BUTTON_Handle hButton_7;
- BUTTON_Handle hButton_8;
- BUTTON_Handle hButton_9;
- BUTTON_Handle hButton_0; // 10
- BUTTON_Handle hButton_Point; // 11
- BUTTON_Handle hButton_Add; // 12
- BUTTON_Handle hButton_Sub; // 13
- BUTTON_Handle hButton_Mul; // 14
- BUTTON_Handle hButton_Div; // 15
- BUTTON_Handle hButton_Equ; // 16
- BUTTON_Handle hButton_Inv; // 17
- BUTTON_Handle hButton_Per; // 18
- BUTTON_Handle hButton_Bac; // 19
- BUTTON_Handle hButton_CE; // 20
- BUTTON_Handle hButton_AC; // 21
- BUTTON_Handle hButton_Neg; // 22
- BUTTON_Handle hButton_Sqrt; // 23
- EDIT_Handle hEdit;
- // -------------------- 计算变量 ---------------------- //
- double Result=0;
- u8 AC_Flag=0; // 0:刚刚清零,重新开始计算 1:计算过程中
- u8 Operator=0; // 0:运算符号清空 1:+ 2:- 3:* 4:/
- u8 Operator_Last=0;
- u8 Update_Var=0;
- double Variable=0; // 加减乘除运算的变量
- u8 Inte_Digits=0; // 整数位数
- u8 Deci_Digits=0; // 小数位数
- u8 Point_Flag=0; // 0:没有小数点 1:有小数点
- unsigned char str[9];
- unsigned char Inv_str[10];
- u8 Deci_Len;
- int Inverse_Flag=1;
- // --------------------- 分界线 ----------------------- //
- void Result_To_String(void);
- void Inverse_Key(void);
- // -----------------------------------------------------//
- //
- void Touch_Process(void)
- {
- GUI_TOUCH_GetState(&STATE);
- // GUI_DispStringAt("x:", 0, 300);
- // GUI_DispDec(STATE.x, 3);
- // GUI_DispStringAt("y:", 50, 300);
- // GUI_DispDec(STATE.y, 3);
- if (STATE.Pressed == 1)
- {
- GUI_CURSOR_SetPosition(STATE.x,STATE.y);
- // GUI_CURSOR_Show();
- }
- }
- //
- //
- void Button_Process(void)
- {
- float temp1,temp2;
- switch(GUI_GetKey())
- {
- case 10:// 0
- Operator_Last=Operator;
- if(Update_Var==1)
- {
- Update_Var=0;
- Variable=0;
- EDIT_SetText(hEdit,"0");
- }
- if(Point_Flag!=0) // 出现小数点,开始输入小数
- {
- if(Deci_Digits<7)
- {
- Deci_Digits++;
- EDIT_AddKey(hEdit,'0');
- }
- }
- else
- {
- if(Variable!=0)
- {
- if(Inte_Digits<8)
- {
- Inte_Digits++;
- Variable*=10;
- EDIT_AddKey(hEdit,'0');
- }
- }
- }
- break;
- case 1: Operator_Last=Operator;
- if(Update_Var==1)
- {
- Update_Var=0;
- Variable=0;
- }
- if(Point_Flag!=0) // 出现小数点,开始输入小数
- {
- if(Deci_Digits<7)
- {
- Deci_Digits++;
- Variable+=1/pow(10,Deci_Digits)*Inverse_Flag;
- EDIT_AddKey(hEdit,'1');
- }
- }
- else
- {
- if(Inte_Digits<8)
- {
- if(Inte_Digits==0)
- {
- EDIT_SetText(hEdit,NULL);
- }
- Inte_Digits++;
- Variable*=10;
- Variable+=1*Inverse_Flag;
- EDIT_AddKey(hEdit,'1');
- }
- }
-
-
- break;
- case 2: Operator_Last=Operator;
- if(Update_Var==1)
- {
- Update_Var=0;
- Variable=0;
- }
- if(Point_Flag!=0) // 出现小数点,开始输入小数
- {
- if(Deci_Digits<7)
- {
- Deci_Digits++;
- Variable+=2/pow(10,Deci_Digits)*Inverse_Flag;
- EDIT_AddKey(hEdit,'2');
- }
- }
- else
- {
- if(Inte_Digits<8)
- {
- if(Inte_Digits==0)
- {
- EDIT_SetText(hEdit,NULL);
- }
- Inte_Digits++;
- Variable*=10;
- Variable+=2*Inverse_Flag;
- EDIT_AddKey(hEdit,'2');
- }
- }
- if(Operator!=0)
- {
- AC_Flag=1;
- }
-
- break;
- case 3: Operator_Last=Operator;
- if(Update_Var==1)
- {
- Update_Var=0;
- Variable=0;
- }
- if(Point_Flag!=0) // 出现小数点,开始输入小数
- {
- if(Deci_Digits<7)
- {
- Deci_Digits++;
- Variable+=3/pow(10,Deci_Digits)*Inverse_Flag;
- EDIT_AddKey(hEdit,'3');
- }
- }
- else
- {
- if(Inte_Digits<8)
- {
- if(Inte_Digits==0)
- {
- EDIT_SetText(hEdit,NULL);
- }
- Inte_Digits++;
- Variable*=10;
- Variable+=3*Inverse_Flag;
- EDIT_AddKey(hEdit,'3');
- }
- }
-
- break;
- case 4: Operator_Last=Operator;
- if(Update_Var==1)
- {
- Update_Var=0;
- Variable=0;
- }
- if(Point_Flag!=0) // 出现小数点,开始输入小数
- {
- if(Deci_Digits<7)
- {
- Deci_Digits++;
- Variable+=4/pow(10,Deci_Digits)*Inverse_Flag;
- EDIT_AddKey(hEdit,'4');
- }
- }
- else
- {
- if(Inte_Digits<8)
- {
- if(Inte_Digits==0)
- {
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
嵌入式触摸屏-计算器.7z
(441.65 KB, 下载次数: 75)
|