找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5855|回復(fù): 13
收起左側(cè)

幾種單片機(jī)電子稱程序?qū)懛?CAD設(shè)計(jì),pcb文件,制作文檔都有)

  [復(fù)制鏈接]
ID:76097 發(fā)表于 2015-5-24 12:10 | 顯示全部樓層 |閱讀模式
幾種電子稱程序調(diào)試集錦
0.png 0.png
cad 程序源碼 pcb文件 還有制作文檔都有,下載地址: 電子稱.rar (2.74 MB, 下載次數(shù): 169)

下面是源碼預(yù)覽:
  1. #include <reg52.h>
  2. #include "Global.h"

  3. sbit BUZZER = P3^4;

  4. unsigned int UnitPrice;
  5. unsigned char ModeFlag = 0;

  6. //初始化外部中斷
  7. void Key_Init (void)
  8. {
  9.         IT0 = 1;
  10.         EX0 = 1;
  11.         IT1 = 1;
  12.         EX1 = 1;
  13. }

  14. //外部中斷1,清零按鍵
  15. void Key_ResetINT (void) interrupt 0
  16. {
  17.         HX711_SetOffSet();                                                                                        //設(shè)置ADC零點(diǎn)
  18.         KeyBoard_Delay1mS();                                                                                //延時(shí)1mS,防抖
  19. }

  20. //外部中斷2,模式折紙按鍵
  21. void Key_ModeINT (void) interrupt 2
  22. {
  23.         HX711_SetOffSet();                                                                                        //設(shè)置ADC零點(diǎn)
  24.         KeyBoard_Delay1mS();                                                                                //延時(shí)1mS,防抖
  25.         /*
  26.         unsigned int i;
  27.         EX1 = 0;
  28.         ModeFlag = ~ModeFlag;
  29.         if (ModeFlag)
  30.         {
  31.                 LCD_DisStr("                ",0xc0);        //不顯示價(jià)格
  32.         }
  33.         else
  34.         {
  35.                 LCD_DisStr("Price:          ",0xc0);        //顯示價(jià)格
  36.         }
  37.         for (i=0;i<1500;i++)
  38.         {
  39.                 KeyBoard_Delay1mS();
  40.         }
  41.         EX1 = 1;
  42.         */
  43. }

  44. //設(shè)置單價(jià)
  45. double SetUnitPrice (void)
  46. {
  47.         unsigned char key;
  48.         unsigned char zbits = 0;
  49.         unsigned char xbits = 0;
  50.         bit dotFlag = 0;
  51.         
  52.         UnitPrice = 0;
  53.         HX711_UpdateCtrl(0);
  54.         LCD_DisStr("Unit Price:     ",0x80);
  55.         LCD_DisStr("            $/g ",0xc0);
  56.         
  57.         LCD_WrCMD(0xc6);
  58.         LCD_WrDAT('*');
  59.         LCD_WrDAT('*');
  60.         LCD_WrDAT('*');
  61.         LCD_WrDAT('*');
  62.         LCD_WrDAT('*');
  63.          LCD_SetCurser(1,0xc6);
  64.         while (1)
  65.         {
  66.                 key = KeyBoard_GetVal();
  67.                 if (key != 0)
  68.                 {        
  69.                         if (key == 1)
  70.                         {
  71.                                 break;
  72.                         }
  73.                         else if (key == 9)
  74.                         {
  75.                                 if (!dotFlag)
  76.                                 {
  77.                                         if (zbits > 0)
  78.                                         {
  79.                                                 zbits--;
  80.                                         }
  81.                                 }
  82.                                 else
  83.                                 {
  84.                                         if (xbits > 0)
  85.                                         {
  86.                                                 xbits--;
  87.                                         }
  88.                                 }
  89.                                 UnitPrice = UnitPrice / 10;
  90.                                 LCD_WrCMD(0xc6 + zbits + xbits);
  91.                                 LCD_WrDAT(' ');
  92.                                 LCD_SetCurser(1,0xc6 + zbits + xbits);
  93.                         }
  94.                         else if (key == 16)
  95.                         {
  96.                                 if (!dotFlag)
  97.                                 {
  98.                                         LCD_WrCMD(0xc6 + zbits + xbits);
  99.                                         LCD_WrDAT('.');
  100.                                         xbits++;
  101.                                         LCD_SetCurser(1,0xc6 + zbits + xbits);
  102.                                         dotFlag = 1;
  103.                                 }
  104.                         }
  105.                         else if ((zbits <= 1) || (dotFlag && (xbits <= 2)))
  106.                         {
  107.                                 LCD_WrCMD(0xc6 + zbits + xbits);
  108.                                 LCD_SetCurser(1,0xc6 + zbits + xbits);
  109.                                 switch (key)
  110.                                 {
  111.                                         case 4:
  112.                                                 LCD_WrDAT('1');
  113.                                                 if (!dotFlag)
  114.                                                 {
  115.                                                         zbits++;
  116.                                                 }
  117.                                                 else
  118.                                                 {
  119.                                                         xbits++;
  120.                                                 }
  121.                                                 UnitPrice = UnitPrice * 10 + 1;
  122.                                         break;
  123.                                         case 8:
  124.                                                 LCD_WrDAT('2');
  125.                                                 if (!dotFlag)
  126.                                                 {
  127.                                                         zbits++;
  128.                                                 }
  129.                                                 else
  130.                                                 {
  131.                                                         xbits++;
  132.                                                 }
  133.                                                 UnitPrice = UnitPrice * 10 + 2;
  134.                                         break;
  135.                                         case 12:
  136.                                                 LCD_WrDAT('3');
  137.                                                 if (!dotFlag)
  138.                                                 {
  139.                                                         zbits++;
  140.                                                 }
  141.                                                 else
  142.                                                 {
  143.                                                         xbits++;
  144.                                                 }
  145.                                                 UnitPrice = UnitPrice * 10 + 3;
  146.                                         break;
  147.                                         case 3:
  148.                                                 LCD_WrDAT('4');
  149.                                                 if (!dotFlag)
  150.                                                 {
  151.                                                         zbits++;
  152.                                                 }
  153.                                                 else
  154.                                                 {
  155.                                                         xbits++;
  156.                                                 }
  157.                                                 UnitPrice = UnitPrice * 10 + 4;
  158.                                         break;
  159.                                         case 7:
  160.                                                 LCD_WrDAT('5');
  161.                                                 if (!dotFlag)
  162.                                                 {
  163.                                                         zbits++;
  164.                                                 }
  165.                                                 else
  166.                                                 {
  167.                                                         xbits++;
  168.                                                 }
  169.                                                 UnitPrice = UnitPrice * 10 + 5;
  170.                                         break;
  171.                                         case 11:
  172.                                                 LCD_WrDAT('6');
  173.                                                 if (!dotFlag)
  174.                                                 {
  175.                                                         zbits++;
  176.                                                 }
  177.                                                 else
  178.                                                 {
  179.                                                         xbits++;
  180.                                                 }
  181.                                                 UnitPrice = UnitPrice * 10 + 6;
  182.                                         break;
  183.                                         case 2:
  184.                                                 LCD_WrDAT('7');
  185.                                                 if (!dotFlag)
  186.                                                 {
  187.                                                         zbits++;
  188.                                                 }
  189.                                                 else
  190.                                                 {
  191.                                                         xbits++;
  192.                                                 }
  193.                                                 UnitPrice = UnitPrice * 10 + 7;
  194.                                         break;
  195.                                         case 6:
  196.                                                 LCD_WrDAT('8');
  197.                                                 if (!dotFlag)
  198.                                                 {
  199.                                                         zbits++;
  200.                                                 }
  201.                                                 else
  202.                                                 {
  203.                                                         xbits++;
  204.                                                 }
  205.                                                 UnitPrice = UnitPrice * 10 + 8;
  206.                                         break;
  207.                                         case 10:
  208.                                                 LCD_WrDAT('9');
  209.                                                 if (!dotFlag)
  210.                                                 {
  211.                                                         zbits++;
  212.                                                 }
  213.                                                 else
  214.                                                 {
  215.                                                         xbits++;
  216.                                                 }
  217.                                                 UnitPrice = UnitPrice * 10 + 9;
  218.                                         break;
  219.                                         case 5:
  220.                                                 LCD_WrDAT('0');
  221.                                                 if (!dotFlag)
  222.                                                 {
  223.                                                         zbits++;
  224.                                                 }
  225.                                                 else
  226.                                                 {
  227.                                                         xbits++;
  228.                                                 }
  229.                                                 UnitPrice = UnitPrice * 10 + 0;
  230.                                         break;
  231.                                         default :
  232.                                         break;
  233.                                 }
  234.                         }
  235.                 }
  236.         }
  237.         LCD_DisStr("Weight:         ",0x80);
  238.         LCD_DisStr("Price:          ",0xc0);
  239.         HX711_UpdateCtrl(1);
  240.         return UnitPrice;
  241. }

  242. void main (void)
  243. {
  244.         unsigned char key;
  245.         double UnitPrice;
  246.         
  247.         LCD_Init();                                                                                                                        //初始化LCD
  248.         LCD_DisStr("Weight:",0x80);                                                
  249.         LCD_DisStr("Price: ",0xc0);
  250.         Key_Init();                                                                                                                        //初始化按鍵
  251.         
  252.         HX711_SetOffSet();                                                                                        //設(shè)置ADC零點(diǎn)
  253.         
  254.         HX711_UpdateInit();                                                                                        //開始ADC自動(dòng)定時(shí)轉(zhuǎn)換
  255.         EA = 1;                                                                                                                                        //開全局中斷
  256.         
  257.         while (1)
  258.         {
  259.                
  260.                 //if (!ModeFlag)                                                                                                //如果為計(jì)價(jià)模式
  261.                 //{
  262.                         key = KeyBoard_GetVal();                                                //掃描鍵值
  263.                         if (key != 0)                                                                                                //如果有鍵按下
  264.                         {
  265.                                 switch (key)
  266.                                 {
  267.                                         case 1:                                                                                                        //如果按下鍵為'*'鍵
  268.                                                 SetUnitPrice();                                                                //設(shè)置單價(jià)
  269.                                         break;
  270.                                         default:
  271.                                         break;
  272.                                 }
  273.                         }
  274.                 //}
  275.         }
  276. }

復(fù)制代碼


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:80108 發(fā)表于 2015-5-25 22:32 | 顯示全部樓層
非常感激樓主的無(wú)私奉獻(xiàn)!努力學(xué)習(xí)中……
回復(fù)

使用道具 舉報(bào)

ID:48140 發(fā)表于 2015-6-30 08:23 來(lái)自手機(jī) | 顯示全部樓層
非常感謝
回復(fù)

使用道具 舉報(bào)

ID:85454 發(fā)表于 2015-7-12 18:45 | 顯示全部樓層
樓主好人
回復(fù)

使用道具 舉報(bào)

ID:85454 發(fā)表于 2015-7-12 18:45 | 顯示全部樓層
非常感激樓主的無(wú)私奉獻(xiàn)!努力學(xué)習(xí)中……
回復(fù)

使用道具 舉報(bào)

ID:74370 發(fā)表于 2015-8-23 09:13 | 顯示全部樓層
想搞個(gè)玩玩,下個(gè)學(xué)習(xí),謝先!
回復(fù)

使用道具 舉報(bào)

ID:89642 發(fā)表于 2016-1-11 22:18 | 顯示全部樓層
最近需要做一個(gè)電子稱 電壓信號(hào)轉(zhuǎn)換數(shù)字量哪里明白了   但是數(shù)字量轉(zhuǎn)換成實(shí)際重量哪個(gè)參數(shù)還是不太明白
回復(fù)

使用道具 舉報(bào)

ID:69254 發(fā)表于 2016-1-13 19:11 | 顯示全部樓層
非常感激樓主的無(wú)私奉獻(xiàn)!努力學(xué)習(xí)中……
回復(fù)

使用道具 舉報(bào)

ID:90992 發(fā)表于 2016-1-15 23:32 | 顯示全部樓層
論壇就是好,我們共同分享,一塊進(jìn)步!贊贊贊!
回復(fù)

使用道具 舉報(bào)

ID:76097 發(fā)表于 2016-6-2 11:30 | 顯示全部樓層
一點(diǎn)小傷 發(fā)表于 2016-1-11 22:18
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

先看看AD轉(zhuǎn)化的知識(shí)吧
回復(fù)

使用道具 舉報(bào)

ID:352811 發(fā)表于 2018-6-16 22:58 | 顯示全部樓層
非常感謝
回復(fù)

使用道具 舉報(bào)

ID:353790 發(fā)表于 2018-6-18 18:32 | 顯示全部樓層
非常感謝
回復(fù)

使用道具 舉報(bào)

ID:117558 發(fā)表于 2018-6-18 19:11 | 顯示全部樓層
非常感激樓主的無(wú)私奉獻(xiàn)!努力學(xué)習(xí)中……
回復(fù)

使用道具 舉報(bào)

ID:353867 發(fā)表于 2018-6-18 21:01 | 顯示全部樓層
謝謝樓主大大
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表