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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于STM32的智能電子秤設計源碼 12864顯示

  [復制鏈接]
跳轉到指定樓層
樓主
自己搜羅的一些資料希望對有需要的人有所幫助!
用的是stm32單片機芯片,可以根據自己需要進行調試更改。
電子設計大賽D題:簡易電子秤
芯片:stm32c8
顯示屏:12864



部分源碼預覽:
  1. #include "test.h"
  2. #include "sys.h"
  3. #include "delay.h"
  4. #include "12864.h"
  5. #include "adc.h"
  6. #include "key.h"
  7. #include "usart.h"
  8. #include "led.h"
  9. #include "beep.h"
  10. float all = 0;
  11. u16 adc=0;
  12. u16 adc_value=0;
  13. u16 last_adc=0;
  14. float weight=0;
  15. float last_weight=0;
  16. float money=0;
  17. float money_one=0;
  18. float f1=0.0,f2=0.0;
  19. u8 key_value=0;
  20. u8 key_count=0;
  21. float price=0;
  22. u16 last_price=0;
  23. u8 port_flag=0;
  24. u8 count = 0;
  25. u8 peel_flag=0;
  26. u8 money_flag=0;
  27. u8 money_count=0;
  28. u8 save_flag=0;
  29. u8 error=0;
  30. u8 price_f=0;
  31. u16 start_value=180;
  32. u8 start_flag=0;

  33. float abss(float x)
  34. {
  35.         if(x>0.0)
  36.                 return x;
  37.         else
  38.                 return -x;
  39. }


  40. void start_measure(void)
  41. {
  42.        
  43.         adc = Get_Adc_Average(ADC_Channel_8,100);
  44.        
  45.         adc_value=adc;

  46.         if(adc_value<190&&adc_value>170)
  47.         {
  48.                 LED = 0;
  49.         }
  50.         else
  51.         {
  52.                 LED = 1;
  53.         }
  54.         //write_num(0x9B,adc_value);
  55.        
  56.         //printf("%d\r\n",adc_value);
  57.         last_adc = adc;
  58. }

  59. void price_set(void)
  60. {
  61.         write_com(0x93);
  62.         write_data(0x20);
  63.         write_data(0x20);
  64.         write_data(0x20);
  65.         write_data(0x20);
  66.         price=0;
  67.         while(key_count==1||key_count==3)
  68.         {
  69.                 if(key_value==15)
  70.                 {
  71.                         if(price<100)
  72.                         {
  73.                                 write_data(0x2e);
  74.                                 port_flag=1;
  75.                         }
  76.                         else
  77.                                 display4();
  78.                 }
  79.                 if(key_value<10||key_value==15)
  80.                 price_value();
  81.                 key_value = KEY_Scan(0);
  82.                 if(key_value!=99)
  83.                 {
  84.                         BEEP=0;
  85.                         delay_ms(100);
  86.                         BEEP=1;       
  87.                 }
  88.                 if(key_value==13)        //確定
  89.                 {
  90.                         key_count = 0;
  91.                         port_flag = 0;
  92.                         money = price * weight;
  93.                         if(money>9999)
  94.                                 display4();
  95.                         else
  96.                                 write_decimal(0x8B,0x8E,money);
  97.                 }
  98.         }

  99. }
  100. void ADD(void)
  101. {
  102.                 error=0;
  103.                 if(money_flag ==1)
  104.                 {
  105.                         money_one = money;
  106.    
  107.                 }             
  108.                   price_set();
  109.     if(money_flag ==1)
  110.                 {
  111.                         all=money+money_one+all;       
  112.                 }
  113.                 else
  114.                 {
  115.                          all=money+all;
  116.                 }
  117.                        
  118.                 write_decimal(0x9B,0x9E,all);
  119.                 key_count = 0;
  120.                
  121. }
  122. void PEEL(void)
  123. {       
  124.                 if(peel_flag==1)
  125.                 {               
  126.                         last_weight = weight;
  127.                         peel_flag=2;                       
  128.                 }
  129.                 key_count = 0;
  130. }
  131. void DEL(void)
  132. {
  133.         all=0;
  134.         price = 0;
  135.         money_flag = 0;
  136.         peel_flag = 0;
  137.         key_count = 0;
  138.         write_com(0x93);
  139.         write_data(0x20);
  140.         write_data(0x20);
  141.         write_data(0x20);
  142.         write_data(0x20);
  143.         error=0;
  144.         write_num(0X93,price);
  145.         write_decimal(0x8B,0x8E,0);
  146.         write_decimal(0x9B,0x9E,0);
  147. }
  148. void Unit_price(void)
  149. {
  150.        
  151.         key_value = KEY_Scan(0);
  152.         if(key_value!=99)
  153.         {
  154.                 BEEP=0;
  155.                 delay_ms(100);
  156.                 BEEP=1;       
  157.         }
  158.         if(key_value==12)        //單價
  159.                 key_count=1;
  160.         if(key_value==13)        //確定
  161.                 key_count=0;
  162.         if(key_value==10&&weight<100)        //去皮
  163.         {
  164.                 key_count=2;
  165.                 peel_flag = 1;
  166.         }
  167.         if(key_value==11)//累加
  168.         {
  169.                 key_count = 3;
  170.                 money_flag++;
  171.         }
  172.   if(key_value==14)
  173.         {
  174.                 key_count=4;
  175.                 start_flag++;
  176.                 if(start_flag ==1)
  177.                 {
  178.                         start_value = adc_value;  
  179.                 }
  180.                 if((start_flag > 1)&&(weight<5))
  181.                 {
  182.                         start_value = adc_value;  
  183.                 }
  184.         }               
  185.                
  186.        
  187.         if(key_count==1)                //設置單價
  188.         {
  189.                 price_set();
  190.         }
  191.         else if(key_count==2)               
  192.         {
  193.                 PEEL();
  194.         }
  195.         else if(key_count==3)               
  196.         {
  197.                 ADD();
  198.         }
  199.         else if(key_count==4)
  200.         {
  201.                 DEL();
  202.         }
  203.         if(adc_value<740)
  204.         {
  205.                 if(peel_flag==2)
  206.                 {
  207.                         weight =(float)(((adc_value-start_value)/5.88025)- last_weight); //關系待測
  208.                 }
  209.                 else
  210.                 {
  211.                         weight = (float)(((adc_value-start_value)/5.88025));         //關系待測
  212.                 }
  213.                 write_decimal(0x83,0x86,weight);
  214.         }
  215.         else if(adc_value<1000)
  216.         {
  217.                 if(peel_flag==2)
  218.                 {
  219.                         weight =(float)(((adc_value-start_value)/5.84025)- last_weight); //關系待測
  220.                 }
  221.                 else
  222.                 {
  223.                         weight = (float)(((adc_value-start_value)/5.84025));         //關系待測
  224.                 }
  225.                 write_decimal(0x83,0x86,weight);
  226.         }
  227.         else if(adc_value<1300)
  228.         {
  229.                 if(peel_flag==2)
  230.                 {
  231.                         weight =(float)(((adc_value-start_value)/5.80025)- last_weight); //關系待測
  232.                 }
  233.                 else
  234.                 {
  235.                         weight = (float)(((adc_value-start_value)/5.80025));         //關系待測
  236.                 }
  237.                 write_decimal(0x83,0x86,weight);
  238.         }
  239.         else if(adc_value<1600)
  240.         {
  241.                 if(peel_flag==2)
  242.                 {
  243.                         weight =(float)(((adc_value-start_value)/5.76)- last_weight); //關系待測
  244.                 }
  245.                 else
  246.                 {
  247.                         weight = (float)(((adc_value-start_value)/5.76));         //關系待測
  248.                 }
  249.                 write_decimal(0x83,0x86,weight);
  250.         }
  251.         else if(adc_value<1784)
  252.         {
  253.                 if(peel_flag==2)
  254.                 {
  255.                         weight =(float)(((adc_value-start_value)/5.74)- last_weight); //關系待測
  256.                 }
  257.                 else
  258.                 {
  259.                         weight = (float)(((adc_value-start_value)/5.74));         //關系待測
  260.                 }
  261.                 write_decimal(0x83,0x86,weight);
  262.         }                                       
  263.         else if(adc_value<2025)                                                                                                                                                                                                                                                                               
  264.         {
  265.                 if(peel_flag==2)
  266.                 {
  267.                         weight =(float)(((adc_value-start_value)/5.70)- last_weight); //關系待測
  268.                 }
  269.                 else
  270.                 {
  271.                         weight = (float)(((adc_value-start_value)/5.70));         //關系待測
  272.                 }
  273.                 write_decimal(0x83,0x86,weight);
  274.         }
  275.         else if(adc_value<2350)                                                                                                                                                                                                                                                                                                
  276.         {
  277.                 if(peel_flag==2)
  278.                 {
  279.                         weight =(float)(((adc_value-start_value)/5.655)- last_weight); //關系待測
  280.                 }
  281.                

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

完整代碼下載:
電子秤 完結版.rar (299.95 KB, 下載次數: 173)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:187303 發表于 2017-4-24 20:11 | 只看該作者
前段時間我使用51搞定了這東西 這次看看使用STM32的效果 非常感謝
回復

使用道具 舉報

板凳
ID:113433 發表于 2017-4-26 22:16 | 只看該作者
感謝分享
回復

使用道具 舉報

地板
ID:199409 發表于 2017-5-16 11:26 | 只看該作者
謝謝分享!希望能解決問題
回復

使用道具 舉報

5#
ID:69380 發表于 2017-8-22 16:49 | 只看該作者

謝謝分享!正要用到
回復

使用道具 舉報

6#
ID:348594 發表于 2018-7-22 10:41 | 只看該作者
有沒有PCB圖
回復

使用道具 舉報

7#
ID:46517 發表于 2018-7-28 11:21 | 只看該作者
先看看看怎么回事,
回復

使用道具 舉報

8#
ID:483932 發表于 2019-3-9 12:04 | 只看該作者
為啥里面又沒有程序,有沒有仿真??
回復

使用道具 舉報

9#
ID:777984 發表于 2020-6-16 19:20 | 只看該作者
有點看不懂怎么連
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产在线精品一区二区三区 | 成人综合视频在线观看 | 成人免费一区二区三区视频网站 | 国产视频欧美 | 在线第一页| h片在线看 | 久久一区二区三区免费 | 久久久精品一区二区三区四季av | 在线观看视频福利 | 久久精品欧美一区二区三区不卡 | 国产一区二区三区在线免费 | 中文字幕第一页在线 | 欧美片网站免费 | 欧美亚洲国产日韩 | 精精国产xxxx视频在线 | 欧美福利在线 | 欧美精品一区二区三区在线 | 午夜国产一级 | 国产视频线观看永久免费 | 久久久久久av | 国产高清视频在线观看 | 精品无码久久久久久久动漫 | 国产午夜一级 | 久久88 | 91精品久久久久久久久 | 99亚洲 | 人人草天天草 | 成人精品一区二区 | 欧美成人免费 | 欧美成人第一页 | 国产精品视频一二三区 | 亚洲午夜精品一区二区三区他趣 | 日本欧美视频 | 欧美国产中文字幕 | 欧美一级免费看 | 亚洲精品国产成人 | 日韩一区二区三区视频在线观看 | 精品少妇一区二区三区在线播放 | www.成人在线视频 | 欧美无乱码久久久免费午夜一区 | 成人福利网 |