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

標題: 使用stm32mini板實現簡易計算器功能 源程序 [打印本頁]

作者: sttttttttttty    時間: 2020-9-12 10:28
標題: 使用stm32mini板實現簡易計算器功能 源程序
由于mini板和開發板之間有些串口不同的區別,一個用GPIO,一個用FSMC,可能會白屏。
程序初始化時,必須初始化串口1,否則程序會卡死在那里,具體原因尚未找到...
1.GUI_Calculate_v1.0版本根號鍵、百分號、反比例函數鍵尚未編寫相應的程序。

單片機源程序如下:
  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. ……………………

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

所有資料51hei提供下載:
GUI_Calculate_v1.0.7z (434.67 KB, 下載次數: 50)


作者: lyshhh    時間: 2020-12-15 09:52
兄弟,這怎么解壓,我打不開這文件
作者: Nevergp    時間: 2020-12-16 17:52
可能你還沒初始化串口就先使用串口發送數據,多半是printf函數
作者: lyshhh    時間: 2020-12-17 09:10
lyshhh 發表于 2020-12-15 09:52
兄弟,這怎么解壓,我打不開這文件

解決了,關于7z的壓縮方式用得少,百度了一下,設置rar也能解壓7z的壓縮包




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: av免费网址 | 午夜影院在线观看免费 | 亚洲永久字幕 | 一区二区中文 | 中文字幕在线观看www | 国产精品视频久久久久久 | 国产黄色在线观看 | 中文字幕一区二区三区四区五区 | 久久伊人一区 | 久久久久久免费毛片精品 | 日本成人中文字幕 | 日韩精品在线一区 | 久久网站免费视频 | 波多野结衣一区二区 | 午夜寂寞福利视频 | 久久成人精品 | 国产午夜精品一区二区三区嫩草 | 久久久久久久久久久久久9999 | 亚洲欧美日本在线 | 91视视频在线观看入口直接观看 | 日日艹夜夜艹 | 亚洲xx在线 | 国产精品久久久久久久久免费高清 | 精品视频一区二区在线观看 | 午夜精品一区二区三区在线视频 | 久草热线 | 精品亚洲一区二区 | 久久丝袜 | 精品亚洲第一 | 亚洲伦理自拍 | 日韩在线视频一区二区三区 | 少妇一区二区三区 | 久久久一区二区三区 | 成人在线视频网 | 日韩av最新网址 | 亚洲精品久久久一区二区三区 | 欧美一区二区综合 | 国产精品久久久久久久免费观看 | 北条麻妃国产九九九精品小说 | 久草视频在线播放 | 成人亚洲在线 |