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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3781|回復: 3
打印 上一主題 下一主題
收起左側(cè)

使用stm32mini板實現(xiàn)簡易計算器功能 源程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:817832 發(fā)表于 2020-9-12 10:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
由于mini板和開發(fā)板之間有些串口不同的區(qū)別,一個用GPIO,一個用FSMC,可能會白屏。
程序初始化時,必須初始化串口1,否則程序會卡死在那里,具體原因尚未找到...
1.GUI_Calculate_v1.0版本根號鍵、百分號、反比例函數(shù)鍵尚未編寫相應的程序。

單片機源程序如下:
  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. // -------------------- 結(jié)構(gòu)變量 --------------------- //
  20. GUI_PID_STATE STATE;                //該變量為GUI觸屏的x y位置存儲坐標(內(nèi)部已將其換算為屏幕坐標了)

  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;                        // 整數(shù)位數(shù)
  54. u8 Deci_Digits=0;                        // 小數(shù)位數(shù)
  55. u8 Point_Flag=0;                        // 0:沒有小數(shù)點 1:有小數(shù)點
  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)          // 出現(xiàn)小數(shù)點,開始輸入小數(shù)
  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)                  // 出現(xiàn)小數(shù)點,開始輸入小數(shù)
  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)                  // 出現(xiàn)小數(shù)點,開始輸入小數(shù)
  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, 下載次數(shù): 50)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:649697 發(fā)表于 2020-12-15 09:52 | 只看該作者
兄弟,這怎么解壓,我打不開這文件
回復

使用道具 舉報

板凳
ID:337834 發(fā)表于 2020-12-16 17:52 | 只看該作者
可能你還沒初始化串口就先使用串口發(fā)送數(shù)據(jù),多半是printf函數(shù)
回復

使用道具 舉報

地板
ID:649697 發(fā)表于 2020-12-17 09:10 | 只看該作者
lyshhh 發(fā)表于 2020-12-15 09:52
兄弟,這怎么解壓,我打不開這文件

解決了,關(guān)于7z的壓縮方式用得少,百度了一下,設(shè)置rar也能解壓7z的壓縮包
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品第一国产综合野 | 国产专区在线 | 国精产品一区一区三区免费完 | 久久精彩 | 午夜tv免费观看 | 亚洲每日更新 | www国产精 | www.色.com | 色综合网站 | 国产精品美女一区二区三区 | 中文字幕不卡在线观看 | 亚洲日本欧美日韩高观看 | 亚洲一区黄色 | 91精品久久久 | 一区二区三区亚洲 | 亚州精品天堂中文字幕 | 毛片a区 | 婷婷综合五月天 | 国产视频综合 | 国产精品中文 | 国产一区二区视频在线 | 亚洲精品视频免费 | 国产激情综合五月久久 | 亚洲 中文 欧美 | 黄视频网站免费观看 | 久久久片| 免费精品 | 亚洲精品中文字幕 | 日本淫视频| 亚洲一区精品在线 | 成年人在线视频 | 超碰导航 | 日韩欧美中文字幕在线视频 | 亚洲国产精品人人爽夜夜爽 | 亚洲国产精品成人无久久精品 | 亚洲精品3| 天天弄 | 日韩免费一区 | 一区二区三区四区不卡 | 亚洲精品一级 | 最新中文字幕在线 |