找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4851|回复: 13
打印 上一主题 下一主题
收起左侧

几种单片机电子称程序写法(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. }

复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的积分奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:80108 发表于 2015-5-25 22:32 | 只看该作者
非常感激楼主的无私奉献!努力学习中……
回复

使用道具 举报

板凳
ID:48140 发表于 2015-6-30 08:23 来自手机 | 只看该作者
非常感谢
回复

使用道具 举报

地板
ID:85454 发表于 2015-7-12 18:45 | 只看该作者
楼主好人
回复

使用道具 举报

5#
ID:85454 发表于 2015-7-12 18:45 | 只看该作者
非常感激楼主的无私奉献!努力学习中……
回复

使用道具 举报

6#
ID:74370 发表于 2015-8-23 09:13 | 只看该作者
想搞个玩玩,下个学习,谢先!
回复

使用道具 举报

7#
ID:89642 发表于 2016-1-11 22:18 | 只看该作者
最近需要做一个电子称 电压信号转换数字量哪里明白了   但是数字量转换成实际重量哪个参数还是不太明白
回复

使用道具 举报

8#
ID:69254 发表于 2016-1-13 19:11 | 只看该作者
非常感激楼主的无私奉献!努力学习中……
回复

使用道具 举报

9#
ID:90992 发表于 2016-1-15 23:32 | 只看该作者
论坛就是好,我们共同分享,一块进步!赞赞赞!
回复

使用道具 举报

10#
ID:76097 发表于 2016-6-2 11:30 | 只看该作者
一点小伤 发表于 2016-1-11 22:18
**** 作者被禁止或删除 内容自动屏蔽 ****

先看看AD转化的知识吧
回复

使用道具 举报

11#
ID:352811 发表于 2018-6-16 22:58 | 只看该作者
非常感谢
回复

使用道具 举报

12#
ID:353790 发表于 2018-6-18 18:32 | 只看该作者
非常感谢
回复

使用道具 举报

13#
ID:117558 发表于 2018-6-18 19:11 | 只看该作者
非常感激楼主的无私奉献!努力学习中……
回复

使用道具 举报

14#
ID:353867 发表于 2018-6-18 21:01 | 只看该作者
谢谢楼主大大
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表