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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32觸摸屏-計算器程序(嵌入式設計)

[復制鏈接]
跳轉到指定樓層
樓主
嵌入式,觸摸屏計算器的設計

單片機源程序如下:
  1. #include "sys.h"
  2. #include "usart.h"        
  3. #include "delay.h"
  4. #include "math.h"
  5. #include "stdio.h"   
  6. #include "led.h"
  7. #include "gui.h"
  8. #include "touch.h"
  9. #include "WM.h"
  10. #include "button.h"
  11. #include "progbar.h"
  12. #include "CHECKBOX.h"
  13. #include "listbox.h"
  14. #include "framewin.h"
  15. #include "SCROLLBAR.h"
  16. #include "edit.h"

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

  19. FRAMEWIN_Handle hFrame;

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

  31. BUTTON_Handle hButton_Add;        //    12
  32. BUTTON_Handle hButton_Sub;        //    13
  33. BUTTON_Handle hButton_Mul;        //    14
  34. BUTTON_Handle hButton_Div;        //    15

  35. BUTTON_Handle hButton_Equ;        //    16
  36. BUTTON_Handle hButton_Inv;        //    17
  37. BUTTON_Handle hButton_Per;        //    18

  38. BUTTON_Handle hButton_Bac;        //    19
  39. BUTTON_Handle hButton_CE;        //    20
  40. BUTTON_Handle hButton_AC;        //    21

  41. BUTTON_Handle hButton_Neg;        //    22
  42. BUTTON_Handle hButton_Sqrt;        //    23

  43. EDIT_Handle hEdit;


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


  58. // --------------------- 分界線 ----------------------- //
  59. void Result_To_String(void);
  60. void Inverse_Key(void);

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

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

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

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

  210.         case 4:    Operator_Last=Operator;
  211.                 if(Update_Var==1)
  212.                 {
  213.                     Update_Var=0;
  214.                     Variable=0;
  215.                 }
  216.                 if(Point_Flag!=0)          // 出現小數點,開始輸入小數
  217.                 {
  218.                     if(Deci_Digits<7)
  219.                     {
  220.                         Deci_Digits++;
  221.                         Variable+=4/pow(10,Deci_Digits)*Inverse_Flag;
  222.                         EDIT_AddKey(hEdit,'4');   
  223.                     }
  224.                 }        
  225.                 else
  226.                 {
  227.                     if(Inte_Digits<8)
  228.                     {
  229.                         if(Inte_Digits==0)
  230.                         {
  231. ……………………

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

復制代碼

所有資料51hei提供下載:
嵌入式觸摸屏-計算器.7z (441.65 KB, 下載次數: 75)

20200421153745.png (27.68 KB, 下載次數: 139)

20200421153745.png

20200421153816.png (20.08 KB, 下載次數: 139)

20200421153816.png

20200421153844.png (65.21 KB, 下載次數: 127)

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

使用道具 舉報

沙發
ID:1004205 發表于 2022-2-8 10:18 | 只看該作者
少了個文件10ANZI.c
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区精品视频 | 精品一区av | 欧美国产精品 | 久国久产久精永久网页 | 亚洲精品国产综合区久久久久久久 | 国产精品色 | 国产精品国产三级国产aⅴ无密码 | 黑人精品 | 久草在线| 男女视频在线观看网站 | 日韩精品视频一区二区三区 | 久久精品国产亚洲夜色av网站 | 欧美精品日韩 | 中文字幕国 | 中文字幕在线观看精品 | av手机免费在线观看 | 免费观看日韩精品 | 九九热免费在线观看 | 久久久综合久久 | 欧美精品一区二区三区在线 | 91国在线高清视频 | cao在线| 久久久久久国产 | 亚洲视频在线播放 | 黑人精品欧美一区二区蜜桃 | 香蕉一区 | 国产精品一区一区三区 | 国产精品大片在线观看 | 国产福利在线 | 国产精品久久久 | 中文字幕在线一区二区三区 | 日本免费小视频 | 成人精品国产一区二区4080 | 亚洲欧洲精品在线 | 亚洲精品区 | 亚洲精品美女视频 | 黄色网址在线免费播放 | 亚洲成人午夜在线 | 成人午夜精品一区二区三区 | 在线日韩欧美 | 欧美又大粗又爽又黄大片视频 |