久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4094|回復: 2
打印 上一主題 下一主題
收起左側

計算器GUI_Calculate_v1.0 STM32源程序 基于UCGUI 帶觸摸板

[復制鏈接]
跳轉到指定樓層
樓主
通過UCGUI的學習,在stm32上面設計的一款觸摸板計算器
GUI_Calculate_v1.0




程序初始化時,必須初始化串口1,否則程序會卡死在那里,具體原因尚未找到...
1.GUI_Calculate_v1.0版本根號鍵、百分號、反比例函數鍵尚未編寫相應的程序。

stm32單片機源程序:
  1. #include "sys.h"
  2. #include "usart.h"               
  3. #include "delay.h"
  4. #include "math.h"
  5. #include "stdio.h"
  6.        
  7. #include "led.h"
  8. #include "timer.h"

  9. #include "gui.h"
  10. #include "touch.h"

  11. #include "WM.h"
  12. #include "button.h"
  13. #include "progbar.h"
  14. #include "CHECKBOX.h"
  15. #include "listbox.h"
  16. #include "framewin.h"
  17. #include "SCROLLBAR.h"
  18. #include "edit.h"




  19. // -------------------- 結構變量 --------------------- //
  20. GUI_PID_STATE STATE;                //該變量為GUI觸屏的x y位置存儲坐標(內部已將其換算為屏幕坐標了)

  21. FRAMEWIN_Handle hFrame;

  22. BUTTON_Handle hButton_1;
  23. BUTTON_Handle hButton_2;
  24. BUTTON_Handle hButton_3;
  25. BUTTON_Handle hButton_4;
  26. BUTTON_Handle hButton_5;
  27. BUTTON_Handle hButton_6;
  28. BUTTON_Handle hButton_7;
  29. BUTTON_Handle hButton_8;
  30. BUTTON_Handle hButton_9;
  31. BUTTON_Handle hButton_0;                //  10
  32. BUTTON_Handle hButton_Point;        //        11

  33. BUTTON_Handle hButton_Add;                //        12
  34. BUTTON_Handle hButton_Sub;                //        13
  35. BUTTON_Handle hButton_Mul;                //        14
  36. BUTTON_Handle hButton_Div;                //        15

  37. BUTTON_Handle hButton_Equ;                //        16
  38. BUTTON_Handle hButton_Inv;                //        17
  39. BUTTON_Handle hButton_Per;                //        18

  40. BUTTON_Handle hButton_Bac;                //        19
  41. BUTTON_Handle hButton_CE;                //        20
  42. BUTTON_Handle hButton_AC;                //        21

  43. BUTTON_Handle hButton_Neg;                //        22
  44. BUTTON_Handle hButton_Sqrt;                //        23

  45. EDIT_Handle hEdit;


  46. // -------------------- 計算變量 ---------------------- //
  47. double Result=0;
  48. u8 AC_Flag=0;                                // 0:剛剛清零,重新開始計算        1:計算過程中
  49. u8 Operator=0;                                // 0:運算符號清空        1:+                2:-                3:*                4:/
  50. u8 Operator_Last=0;
  51. u8 Update_Var=0;
  52. double Variable=0;                                // 加減乘除運算的變量
  53. u8 Inte_Digits=0;                        // 整數位數
  54. u8 Deci_Digits=0;                        // 小數位數
  55. u8 Point_Flag=0;                        // 0:沒有小數點 1:有小數點
  56. unsigned char str[9];
  57. unsigned char Inv_str[10];
  58. u8 Deci_Len;
  59. int Inverse_Flag=1;


  60. // --------------------- 分界線 ----------------------- //
  61. void Result_To_String(void);
  62. void Inverse_Key(void);

  63. // -----------------------------------------------------//
  64. //
  65. void Touch_Process(void)
  66. {
  67.         GUI_TOUCH_GetState(&STATE);
  68. //        GUI_DispStringAt("x:", 0, 300);
  69. //        GUI_DispDec(STATE.x, 3);
  70. //        GUI_DispStringAt("y:", 50, 300);
  71. //        GUI_DispDec(STATE.y, 3);
  72.         if (STATE.Pressed == 1)
  73.         {
  74.                 GUI_CURSOR_SetPosition(STATE.x,STATE.y);
  75.         //        GUI_CURSOR_Show();
  76.         }
  77. }
  78. //

  79. //
  80. void Button_Process(void)
  81. {
  82.         float temp1,temp2;
  83.         switch(GUI_GetKey())
  84.         {
  85.                 case 10:// 0
  86.                                 Operator_Last=Operator;
  87.                                 if(Update_Var==1)
  88.                                 {
  89.                                         Update_Var=0;
  90.                                         Variable=0;
  91.                                         EDIT_SetText(hEdit,"0");
  92.                                 }       
  93.                                 if(Point_Flag!=0)          // 出現小數點,開始輸入小數
  94.                                 {
  95.                                         if(Deci_Digits<7)
  96.                                         {
  97.                                                 Deci_Digits++;
  98.                                                 EDIT_AddKey(hEdit,'0');       
  99.                                         }       
  100.                                 }               
  101.                                 else
  102.                                 {
  103.                                         if(Variable!=0)
  104.                                         {
  105.                                                 if(Inte_Digits<8)
  106.                                                 {
  107.                                                         Inte_Digits++;
  108.                                                         Variable*=10;
  109.                                                         EDIT_AddKey(hEdit,'0');
  110.                                                 }
  111.                                         }
  112.                                 }
  113.                                 break;

  114.                 case 1:        Operator_Last=Operator;
  115.                                 if(Update_Var==1)
  116.                                 {
  117.                                         Update_Var=0;
  118.                                         Variable=0;
  119.                                 }
  120.                                 if(Point_Flag!=0)                  // 出現小數點,開始輸入小數
  121.                                 {
  122.                                         if(Deci_Digits<7)
  123.                                         {
  124.                                                 Deci_Digits++;
  125.                                                 Variable+=1/pow(10,Deci_Digits)*Inverse_Flag;
  126.                                                 EDIT_AddKey(hEdit,'1');               
  127.                                         }       
  128.                                 }               
  129.                                 else
  130.                                 {
  131.                                         if(Inte_Digits<8)
  132.                                         {
  133.                                                 if(Inte_Digits==0)
  134.                                                 {
  135.                                                         EDIT_SetText(hEdit,NULL);
  136.                                                 }
  137.                                                 Inte_Digits++;
  138.                                                 Variable*=10;
  139.                                                 Variable+=1*Inverse_Flag;
  140.                                                 EDIT_AddKey(hEdit,'1');       
  141.                                         }
  142.                                 }
  143.                                
  144.                                
  145.                                 break;
  146.                 case 2:        Operator_Last=Operator;
  147.                                 if(Update_Var==1)
  148.                                 {
  149.                                         Update_Var=0;
  150.                                         Variable=0;
  151.                                 }
  152.                                 if(Point_Flag!=0)                  // 出現小數點,開始輸入小數
  153.                                 {
  154.                                         if(Deci_Digits<7)
  155.                                         {
  156.                                                 Deci_Digits++;
  157.                                                 Variable+=2/pow(10,Deci_Digits)*Inverse_Flag;
  158.                                                 EDIT_AddKey(hEdit,'2');       
  159.                                         }
  160.                                 }               
  161.                                 else
  162.                                 {
  163.                                         if(Inte_Digits<8)
  164.                                         {
  165.                                                 if(Inte_Digits==0)
  166.                                                 {
  167.                                                         EDIT_SetText(hEdit,NULL);
  168.                                                 }
  169.                                                 Inte_Digits++;
  170.                                                 Variable*=10;
  171.                                                 Variable+=2*Inverse_Flag;
  172.                                                 EDIT_AddKey(hEdit,'2');
  173.                                         }
  174.                                 }
  175.                                 if(Operator!=0)
  176.                                 {
  177.                                         AC_Flag=1;
  178.                                 }
  179.                                
  180.                                 break;

  181.                 case 3:        Operator_Last=Operator;
  182.                                 if(Update_Var==1)
  183.                                 {
  184.                                         Update_Var=0;
  185.                                         Variable=0;
  186.                                 }
  187.                                 if(Point_Flag!=0)                  // 出現小數點,開始輸入小數
  188.                                 {
  189.                                         if(Deci_Digits<7)
  190.                                         {
  191.                                                 Deci_Digits++;
  192.                                                 Variable+=3/pow(10,Deci_Digits)*Inverse_Flag;
  193.                                                 EDIT_AddKey(hEdit,'3');       
  194.                                         }
  195.                                 }               
  196.                                 else
  197.                                 {
  198.                                         if(Inte_Digits<8)
  199.                                         {
  200.                                                 if(Inte_Digits==0)
  201.                                                 {
  202.                                                         EDIT_SetText(hEdit,NULL);
  203.                                                 }
  204.                                                 Inte_Digits++;
  205.                                                 Variable*=10;
  206.                                                 Variable+=3*Inverse_Flag;
  207.                                                 EDIT_AddKey(hEdit,'3');
  208.                                         }
  209.                                 }
  210.                                
  211.                                 break;

  212.                 case 4:        Operator_Last=Operator;
  213.                                 if(Update_Var==1)
  214.                                 {
  215.                                         Update_Var=0;
  216.                                         Variable=0;
  217.                                 }
  218.                                 if(Point_Flag!=0)                  // 出現小數點,開始輸入小數
  219.                                 {
  220.                                         if(Deci_Digits<7)
  221.                                         {
  222.                                                 Deci_Digits++;
  223.                                                 Variable+=4/pow(10,Deci_Digits)*Inverse_Flag;
  224.                                                 EDIT_AddKey(hEdit,'4');       
  225.                                         }
  226.                                 }               
  227.                                 else
  228.                                 {
  229.                                         if(Inte_Digits<8)
  230.                                         {
  231.                                                 if(Inte_Digits==0)
  232.                                                 {
  233.                                                         EDIT_SetText(hEdit,NULL);
  234.                                                 }
  235.                                                 Inte_Digits++;
  236.                                                 Variable*=10;
  237.                                                 Variable+=4*Inverse_Flag;
  238.                                                 EDIT_AddKey(hEdit,'4');
  239.                                         }
  240.                                 }
  241.                                
  242.                                 break;
  243.                 case 5:        Operator_Last=Operator;
  244.                                 if(Update_Var==1)
  245.                                 {
  246.                                         Update_Var=0;
  247.                                         Variable=0;
  248.                                 }
  249.                                 if(Point_Flag!=0)                  // 出現小數點,開始輸入小數
  250.                                 {
  251.                                         if(Deci_Digits<7)
  252.                                         {
  253.                                                 Deci_Digits++;
  254.                                                 Variable+=5/pow(10,Deci_Digits)*Inverse_Flag;
  255.                                                 EDIT_AddKey(hEdit,'5');       
  256.                                         }
  257.                                 }               
  258.                                 else
  259.                                 {
  260.                                         if(Inte_Digits<8)
  261.                                         {
  262.                                                 if(Inte_Digits==0)
  263.                                                 {
  264.                                                         EDIT_SetText(hEdit,NULL);
  265.                                                 }
  266.                                                 Inte_Digits++;
  267.                                                 Variable*=10;
  268.                                                 Variable+=5*Inverse_Flag;
  269.                                                 EDIT_AddKey(hEdit,'5');
  270.                                         }
  271.                                 }
  272.                                
  273.                                 break;
  274.                 case 6:        Operator_Last=Operator;
  275.                                 if(Update_Var==1)
  276.                                 {
  277.                                         Update_Var=0;
  278.                                         Variable=0;
  279.                                 }
  280.                                 if(Point_Flag!=0)                  // 出現小數點,開始輸入小數
  281.                                 {
  282.                                         if(Deci_Digits<7)
  283.                                         {
  284.                                                 Deci_Digits++;
  285.                                                 Variable+=6/pow(10,Deci_Digits)*Inverse_Flag;
  286.                                                 EDIT_AddKey(hEdit,'6');       
  287.                                         }
  288.                                 }               
  289.                                 else
  290.                                 {
  291.                                         if(Inte_Digits<8)
  292.                                         {
  293.                                                 if(Inte_Digits==0)
  294.                                                 {
  295.                                                         EDIT_SetText(hEdit,NULL);
  296.                                                 }
  297.                                                 Inte_Digits++;
  298.                                                 Variable*=10;
  299.                                                 Variable+=6*Inverse_Flag;
  300.                                                 EDIT_AddKey(hEdit,'6');
  301.                                         }
  302.                                 }
  303.                                
  304.                                 break;
  305.                 case 7:        Operator_Last=Operator;
  306.                                 if(Update_Var==1)
  307.                                 {
  308.                                         Update_Var=0;
  309.                                         Variable=0;
  310.                                 }
  311.                                 if(Point_Flag!=0)                  // 出現小數點,開始輸入小數
  312.                                 {
  313.                                         if(Deci_Digits<7)
  314.                                         {
  315.                                                 Deci_Digits++;
  316.                                                 Variable+=7/pow(10,Deci_Digits)*Inverse_Flag;
  317.                                                 EDIT_AddKey(hEdit,'7');       
  318.                                         }
  319.                                 }               
  320.                                 else
  321.                                 {
  322.                                         if(Inte_Digits<8)
  323.                                         {
  324.                                                 if(Inte_Digits==0)
  325.                                                 {
  326.                                                         EDIT_SetText(hEdit,NULL);
  327.                                                 }
  328.                                                 Inte_Digits++;
  329.                                                

  330. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

完整代碼下載:
計算器GUI_Calculate_v1.0.rar (2.62 MB, 下載次數: 58)


評分

參與人數 1黑幣 +1 收起 理由
toytang + 1 贊一個!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:283348 發表于 2018-3-16 16:58 | 只看該作者
感謝樓主!
回復

使用道具 舉報

板凳
ID:336051 發表于 2020-1-14 12:42 | 只看該作者
在戰艦板上能實現嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲1区| 欧美日韩久久精品 | 九九热精品视频 | 国产精品高潮呻吟久久久久 | 国产高清视频在线 | 成人免费在线观看 | 91精品久久久久久久久久入口 | 久久精品国产99国产 | 欧美色成人 | 一区二区国产在线观看 | 1204国产成人精品视频 | 亚洲精品高清视频 | 成人网av | www.99热| 亚洲欧洲精品成人久久奇米网 | 91日韩在线 | 欧美精品福利视频 | 久久久久国产精品一区 | av香港经典三级级 在线 | 亚洲成人精品 | 成人免费看片 | 欧美一区二区三区在线视频 | 午夜影院在线观看 | 亚洲精品aⅴ | 亚洲成人一区二区 | 亚洲一区二区不卡在线观看 | 日日操视频 | 成人免费黄色片 | 我要看一级片 | 一区二区三区四区毛片 | 中国美女撒尿txxxxx视频 | av影音资源 | 精品国产乱码久久久久久闺蜜 | 午夜电影在线播放 | 亚洲精品91| 97久久久久久 | 欧美精品一区二区三区在线播放 | 午夜影院在线观看版 | 日韩av成人在线观看 | 国产欧美三区 | 91在线视频播放 |