芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

芯片解密STC89C51单片机+HX711称重模块

芯片解密单片机源程序如下:

  1. 芯片解密#include <reg52.h>
  2. 芯片解密#include <intrins.h>
  3. 芯片解密#include <string.h>
  4. 芯片解密#include "main.h"
  5. 芯片解密#include "HX711.h"
  6. 芯片解密#include "eeprom52.h"

  7. #define uchar unsigned char
  8. #define uint  unsigned int

  9. unsigned long HX711_Buffer = 0;
  10. unsigned long Weight_Maopi = 0;
  11. unsigned long Weight_Maopi_0 = 0;
  12. long Weight_Shiwu = 0;
  13. unsigned int qupi=0;
  14. unsigned char p=0;
  15. //键盘处理变量
  16. unsigned char keycode;
  17. unsigned char key_press_num=0;

  18. uint GapValue,GapValue1;
  19. bit flag_cz=0;

  20. uchar code  LEDData[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0xDC,0x9B,0x8B}; //数码管显示码表
  21. //定义标识
  22. volatile bit FlagTest = 0;                //定时测试标志,每0.5秒置位,测完清0
  23. volatile bit FlagKeyPress = 0;  //有键按下标志,处理完毕清0
  24. //校准参数
  25. //因为不同的传感器特性曲线不是很一致,因此,每一个传感器需要矫正这里这个参数才能使测量值很准确。
  26. //当发现测试出来的重量偏大时,增加该数值。
  27. //如果测试出来的重量偏小时,减小改数值。
  28. //该值可以为小数
  29. //#define GapValue 349
  30. sbit LED=P1^1;
  31. sbit ROW1=P3^0;
  32. sbit ROW2=P3^1;
  33. sbit ROW3=P3^2;
  34. sbit ROW4=P3^3;
  35. sbit DIAN = P0^5;                        //小数点

  36. volatile bit ClearWeighFlag = 0; //传感器调零标志位,清除0漂

  37. /******************把数据保存到单片机内部eeprom中******************/
  38. void write_eeprom()
  39. {
  40.         SectorErase(0x2000);
  41.         GapValue1=GapValue&0x00ff;
  42.         byte_write(0x2000, GapValue1);
  43.         GapValue1=(GapValue&0xff00)>>8;
  44.         byte_write(0x2001, GapValue1);
  45.         byte_write(0x2060, a_a);       
  46. }

  47. /******************把数据从单片机内部eeprom中读出来*****************/
  48. void read_eeprom()
  49. {
  50.         GapValue   = byte_read(0x2001);
  51.         GapValue   = (GapValue<<8)|byte_read(0x2000);
  52.         a_a      = byte_read(0x2060);
  53. }

  54. /**************开机自检eeprom初始化*****************/
  55. void init_eeprom()
  56. {
  57.         read_eeprom();                //先读
  58.         if(a_a != 1)                //新的单片机初始单片机内问eeprom
  59.         {
  60.                 GapValue  = 3500;
  61.                 a_a = 1;
  62.                 write_eeprom();           //保存数据
  63.         }       
  64. }
  65. /*****显示开机初始化等待画面*****/
  66. void Disp_init(void)   
  67. {
  68.         P0 = ~0x80;      //显示----
  69.         P2 = 0xBF;                 //依次打开各位
  70.         Delay_ms(1);                 //延时
  71.         P2 = 0xEF;
  72.         Delay_ms(1);   
  73.         P2 = 0xFB;
  74.         Delay_ms(1);
  75.         P2 = 0xFE;
  76.         Delay_ms(1);
  77.         P2 = 0xFF;         //关闭显示
  78. }

  79. //显示重量,单位kg,两位整数,三位小数
  80. void Display_Weight()
  81. {
  82.     P0 = ~LEDData[Weight_Shiwu%10];      //
  83.         P2 = 0xBF;                 //打开位
  84.         Delay_ms(1);                 //延时
  85.         P2 = 0xff;         //关闭显示
  86.         P0=~LEDData[Weight_Shiwu%100/10];    //显示个位
  87.         P2 = 0xEF;
  88.         Delay_ms(1);
  89.         P2 = 0xff;         //关闭显示
  90.         P0 =~LEDData[Weight_Shiwu%1000/100];    //显示十位
  91.         P2 = 0xFB;
  92.         Delay_ms(1);
  93.         P2 = 0xff;         //关闭显示
  94.         P0 =~LEDData[Weight_Shiwu%10000/1000];    //显示百位
  95.         DIAN = 0;         //显示小数点
  96.         P2 = 0xFE;
  97.         Delay_ms(1);
  98.         P2 = 0xff;         //关闭显示
  99. }

  100. //定时器0初始化
  101. void Timer0_Init()
  102. {
  103.         ET0 = 1;        //允许定时器0中断
  104.         TMOD = 1;       //定时器工作方式选择
  105.         TL0 = 0xb0;     
  106.         TH0 = 0x3c;     //定时器赋予初值
  107.         TR0 = 1;        //启动定时器
  108. }



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信