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

標題: 幾種單片機電子稱程序寫法(CAD設計,pcb文件,制作文檔都有) [打印本頁]

作者: wo還年少    時間: 2015-5-24 12:10
標題: 幾種單片機電子稱程序寫法(CAD設計,pcb文件,制作文檔都有)
幾種電子稱程序調試集錦

cad 程序源碼 pcb文件 還有制作文檔都有,下載地址: 電子稱.rar (2.74 MB, 下載次數: 169)

下面是源碼預覽:
  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();                                                                                        //設置ADC零點
  18.         KeyBoard_Delay1mS();                                                                                //延時1mS,防抖
  19. }

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

  44. //設置單價
  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();                                                                                        //設置ADC零點
  253.         
  254.         HX711_UpdateInit();                                                                                        //開始ADC自動定時轉換
  255.         EA = 1;                                                                                                                                        //開全局中斷
  256.         
  257.         while (1)
  258.         {
  259.                
  260.                 //if (!ModeFlag)                                                                                                //如果為計價模式
  261.                 //{
  262.                         key = KeyBoard_GetVal();                                                //掃描鍵值
  263.                         if (key != 0)                                                                                                //如果有鍵按下
  264.                         {
  265.                                 switch (key)
  266.                                 {
  267.                                         case 1:                                                                                                        //如果按下鍵為'*'鍵
  268.                                                 SetUnitPrice();                                                                //設置單價
  269.                                         break;
  270.                                         default:
  271.                                         break;
  272.                                 }
  273.                         }
  274.                 //}
  275.         }
  276. }

復制代碼



作者: surongzhan    時間: 2015-5-25 22:32
非常感激樓主的無私奉獻!努力學習中……
作者: zgs660429    時間: 2015-6-30 08:23
非常感謝
作者: wang10655    時間: 2015-7-12 18:45
樓主好人
作者: wang10655    時間: 2015-7-12 18:45
非常感激樓主的無私奉獻!努力學習中……
作者: 釣魚臺    時間: 2015-8-23 09:13
想搞個玩玩,下個學習,謝先!
作者: 一點小傷    時間: 2016-1-11 22:18
最近需要做一個電子稱 電壓信號轉換數字量哪里明白了   但是數字量轉換成實際重量哪個參數還是不太明白
作者: qingxinrushui    時間: 2016-1-13 19:11
非常感激樓主的無私奉獻!努力學習中……
作者: 湯博    時間: 2016-1-15 23:32
論壇就是好,我們共同分享,一塊進步!贊贊贊!

作者: wo還年少    時間: 2016-6-2 11:30
一點小傷 發表于 2016-1-11 22:18
**** 作者被禁止或刪除 內容自動屏蔽 ****

先看看AD轉化的知識吧
作者: chwanjong    時間: 2018-6-16 22:58
非常感謝
作者: 麥芽糖啦啦    時間: 2018-6-18 18:32
非常感謝
作者: zhuzipan    時間: 2018-6-18 19:11
非常感激樓主的無私奉獻!努力學習中……
作者: 小炮    時間: 2018-6-18 21:01
謝謝樓主大大




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产一级一级毛片 | 欧美亚洲一区二区三区 | 91精品国产91久久综合桃花 | 一级黄色片网站 | 午夜小电影 | 91精品国产91久久综合桃花 | 中文字幕日本一区二区 | 精品一区二区三区在线观看 | 亚洲精品一区二区网址 | a级片www| 国产精品a一区二区三区网址 | 午夜视频在线免费观看 | 黄网站涩免费蜜桃网站 | 国产中文区二幕区2012 | 国产精品日韩在线观看一区二区 | 精品中文字幕一区二区 | 免费在线视频a | 中文字幕在线观看一区 | 热久久久久 | 亚洲精品日韩在线 | 亚洲成人精品国产 | 一区二区国产在线观看 | 天天综合国产 | 国产高清视频一区二区 | 性一交一乱一伦视频免费观看 | 久久久久亚洲 | 国产高清视频一区 | 黄色毛片网站在线观看 | 成人性生交大片免费看中文带字幕 | 视频一区在线 | 中文字幕av高清 | 国产欧美一区二区三区国产幕精品 | 做a的各种视频 | 懂色中文一区二区三区在线视频 | 中文字幕国产一区 | cao视频| 羞羞在线视频 | 国产欧美一区二区三区在线播放 | 一区二区三区国产精品 | 麻豆精品国产91久久久久久 | 伊人影院在线观看 |