#include                  //调用单片机头文件

#define uchar unsigned char  //无符号字符型 宏定义        变量范围0~255

#define uint  unsigned int         //无符号整型 宏定义        变量范围0~65535

#define ulong unsigned long

#include

uchar code table_num[]="0123456789abcdefg";

sbit rs=P1^0;         //寄存器选择信号 H:数据寄存器          L:指令寄存器

sbit rw=P1^1;         //寄存器选择信号 H:数据寄存器          L:指令寄存器

sbit e =P1^2;         //片选信号   下降沿触发

sbit hx711_dout=P2^1;

sbit hx711_sck=P2^0;

sbit beep = P1^3;     //蜂鸣器

long weight;

uint temp,qi_weight;

bit chaozhong_flag;

bit leiji_flag;

bit flag_300ms ;

ulong price,z_price;   //单价 总价

uchar flag_p;

/***************

删除键

去皮

价格清零

***************/

/******1ms延时函数***12M晶振**************/

void delay_1ms(uint q)

{

uint i,j;

for(i=0;i

for(j=0;j<120;j++);

}

/********************************************************************

* 名称 : delay_uint()

* 功能 : 小延时。

* 输入 : 无

* 输出 : 无

***********************************************************************/

void delay_uint(uint q)

{

while(q--);

}

/********************************************************************

* 名称 : write_com(uchar com)

* 功能 : 1602命令函数

* 输入 : 输入的命令值

* 输出 : 无

***********************************************************************/

void write_com(uchar com)

{

e=0;

rs=0;

rw=0;

P0=com;

delay_uint(3);

e=1;

delay_uint(25);

e=0;

}

/********************************************************************

* 名称 : write_data(uchar dat)

* 功能 : 1602写数据函数

* 输入 : 需要写入1602的数据

* 输出 : 无

***********************************************************************/

void write_data(uchar dat)

{

e=0;

rs=1;

rw=0;

P0=dat;

delay_uint(3);

e=1;

delay_uint(25);

e=0;

}

/***********************lcd1602上显示这字符函数************************/

void write_string(uchar hang,uchar add,uchar *p)

{

if(hang==1)

write_com(0x80+add);

else

write_com(0x80+0x40+add);

while(1)

{

if(*p == '\0')  break;

write_data(*p);

p++;

}

}

/***********************lcd1602初始化设置************************/

void init_1602()         //lcd1602初始化设置

{

write_com(0x38);        //

write_com(0x0c);

write_com(0x06);

delay_uint(1000);

}

在指定位置显示指定字符//

void write_zifu(uchar hang,uchar add,uchar dat)

{

if(hang==1)

write_com(0x80+add);

else

write_com(0x80+0x40+add);

write_data(dat);

}

/********************************************************************

* 名称 : write_sfm4_price(uchar hang,uchar add,uchar date)

* 功能 : 显示价格

* 输入 : 行,列,需要输入1602的数据

* 输出 : 无

***********************************************************************/

void write_sfm4_price(uchar hang,uchar add,uint date)

{

if(hang==1)

write_com(0x80+add);

else

write_com(0x80+0x40+add);

write_data(0x30+date/1000%10);

write_data(0x30+date/100%10);

write_data('.');

write_data(0x30+date/10%10);

write_data(0x30+date%10);

}

/****************开机液晶显示函数 初始化液晶的内容********************************/

void init_1602_dis_csf()  //初始化液晶

{

write_string(1,0,"   W:0.000kg    ");

write_string(2,0,"P:00.00  Z:00.00");

write_zifu(2,7,0x5c);        //¥

//        write_zifu(2,15,0x5c);        //¥

}

/*******************压力显示程序***********************/

void write_1602_yl(uchar hang,uchar add,uint date)

{

if(hang==1)

write_com(0x80+add);

else

write_com(0x80+0x40+add);

write_data(0x30+date/1000%10);

write_data('.');

write_data(0x30+date/100%10);

write_data(0x30+date/10%10);

write_data(0x30+date%10);

}

void Delay__hx711_us(void)

{

_nop_();

_nop_();

}

ulong ReadCount(void)        //增益128

{

ulong count,value = 0;

uchar i;

hx711_dout=1;

Delay__hx711_us();

hx711_sck=0;

count=0;

while(hx711_dout)          ;

for(i=0;i<24;i++)

{

hx711_sck=1;

count=count<<1;

hx711_sck=0;

if(hx711_dout)

count++;

}

hx711_sck=0;

Delay__hx711_us();

hx711_sck=1;

return(count);

}

void get_pizhong()          //获取皮重,秤盘重量

{

ulong hx711_dat;

hx711_dat=ReadCount();                //HX711AD转换数据处理

temp=(uint)(hx711_dat/100);

}

void get_weight()          //获取被测物体重量

{

ulong hx711_data,a;

uint get,aa;

hx711_data=ReadCount();                   //HX711AD转换数据处理

get=(uint)(hx711_data/100);

if(get>temp)

{

a=ReadCount();

aa=(uint)(a/100)-temp;

weight=(uint)((float)aa/4.9+0.05);//重量转换函数,传感器型号不同此函数要适当修改

}

}

/************************************************/

/*  由于称重传感器线性度参数的不同,而对获得的重量数据处理,

此处可能会根据不同称重传感器,程序的代码会有所不同      */

/************************************************/

/*************定时器0初始化程序***************/

void time_init()

{

EA   = 1;                   //开总中断

TMOD = 0X01;          //定时器0、定时器1工作方式1

ET0  = 1;                  //开定时器0中断

TR0  = 1;                  //允许定时器0定时

}

/********************独立按键程序*****************/

uchar key_can;         //按键值

void key()         //独立按键程序

{

static uchar key_new = 0, key_l;

key_can = 20;                   //按键值还原

P3 = 0x0f;

if((P3 & 0x0f) != 0x0f)                //按键按下

{

delay_1ms(1);                     //按键消抖动

if(((P3 & 0x0f) != 0x0f) && (key_new == 1))

{                                                //确认是按键按下

key_new = 0;

key_l = P3 | 0xf0;   //矩阵键盘扫描

P3 = key_l;

switch(P3)

{

case 0xee:  key_can = 1;  break;  //得到按键值

case 0xde:  key_can = 4;  break;   //得到按键值

case 0xbe:  key_can = 7;  break;   //得到按键值

case 0x7e:  key_can = 10;  break;   //得到按键值

case 0xed:  key_can = 2;  break;  //得到按键值

case 0xdd:  key_can = 5;  break;   //得到按键值

case 0xbd:  key_can = 8;  break;   //得到按键值

case 0x7d:  key_can = 0;  break;   //得到按键值

case 0xeb:  key_can = 11;  break;  //得到按键值

case 0xdb:  key_can = 9;  break;   //得到按键值

case 0xbb:  key_can = 6;  break;   //得到按键值

case 0x7b:  key_can = 3;  break;   //得到按键值

case 0xe7:  key_can = 15;  break;  //得到按键值

case 0xd7:  key_can = 14;  break;  //得到按键值

case 0xb7:  key_can = 13;  break;   //得到按键值

case 0x77:  key_can = 12;  break;  //得到按键值

}

beep = 0;  //蜂鸣器叫一声

delay_1ms(100);

beep = 1;

}

}

else

key_new = 1;

}

/************按键控制函数*************/

void key_with()

{

if(key_can <= 9)   //数字键

{

if(flag_p >= 4)

{

flag_p = 0;

}

if(flag_p == 0)

price = key_can;

else

{

price = price * 10 + key_can;

}

write_sfm4_price(2,2,price);        //显示单价

flag_p ++;

}

if(key_can == 15)   //删除键

{

if(price != 0 )

{

flag_p --;

price /= 10;                 //删除

write_sfm4_price(2,2,price);//显示单价

}

}

if(key_can == 14)   //去皮

{

get_pizhong();          //获取皮重,秤盘重量

}

if(key_can == 13)   //价格清零

{

flag_p = 0;

price = 0;

write_sfm4_price(2,2,price);//显示单价

}

}

/*****************主函数********************/

void main()

{

beep = 0;  //蜂鸣器叫一声

delay_1ms(100);

P0 = P1 = P2 = P3 = 0xff;                //单片机IO口初始化为1

time_init();                    //初始化定时器

……………………

…………限于本文篇幅 余下代码请从51黑下载附件…………

hx711c语言程序,51单片机HX711传感器电子秤设计(原理图、程序源码、BOM等)相关推荐

  1. 单片机课程设计洗衣机c语言,基于51单片机洗衣机控制器的设计(附程序)☆

    基于51单片机洗衣机控制器的设计(附程序)☆(任务书,开题报告,中期检查表,毕业论文21000字,程序) 摘  要 洗衣机是人们日常生活中常见的一种家电,已经成为人们生活中不可缺少的家用电器.在工业生 ...

  2. 单片机c语言程序开发洗衣机,基于51单片机洗衣机控制器的设计(附程序)☆

    基于51单片机洗衣机控制器的设计(附程序)☆(任务书,开题报告,中期检查表,毕业论文21000字,程序) 摘  要 洗衣机是人们日常生活中常见的一种家电,已经成为人们生活中不可缺少的家用电器.在工业生 ...

  3. 基于51单片机的智能电子秤设计

    具体实现功能 系统由STC89C51单片机+最小系统+LCD1602液晶显示模块+HX711AD模块+LED模块+蜂鸣器+按键模块+10kg压力传感器构成. 具体功能: 1.数码管显示当前的重量,单位 ...

  4. 秒表系统的设计c语言程序,51单片机秒表计时器课程设计报告(含C语言程序).doc...

    51单片机秒表计时器课程设计报告(含C语言程序) XXXXXX学院 51单片机系统设计 课程设计报告 题 目: 秒表系统设计 专业.班级: 学生姓名: 学 号: 指导教师: 分 数 : [摘要]本设计 ...

  5. 声控灯程序C语言,基于51单片机的声控灯设计设计-包含完整设计与指导文件.doc...

    基于51单片机的声控灯设计设计-包含完整设计与指导文件 工 学 院 毕 业 设 计(论文) 题 目:基于单片机的智能光控路灯的设计 专 业: 机电技术教育 班 级: *** 姓 名: *** 学 号: ...

  6. 五十九秒的秒表C语言程序,51单片机秒表计时器课程设计报告(含C语言程序)解读.doc...

    XXXXXX学院 51单片机系统设计 课程设计报告 题 目: 秒表系统设计 专业.班级: 学生姓名: 学 号: 指导教师: 分 数 : [摘要]本设计是一个秒表计时器,采用51单片机实现.电路包括以下 ...

  7. 秒表系统的设计c语言程序,51单片机秒表计时器课程设计报告(含C语言程序)详细分解.doc...

    XXXXXX学院 51单片机系统设计 课程设计报告 题 目: 秒表系统设计 专业.班级: 学生姓名: 学 号: 指导教师: 分 数 : [摘要]本设计是一个秒表计时器,采用51单片机实现.电路包括以下 ...

  8. 基于51单片机的蓝牙电子秤设计

    1.设计方案 本设计以STC89C52单片机为主控芯片制作了一款数字电子秤,以电阻应变式压力传感器来进行称重,将感应到的被测物体的重力转化为微弱的毫伏级电压信号,在HX711芯片内部进行128的增益放 ...

  9. 51单片机的蓝牙电子秤设计

    一.硬件设计 本设计硬件主要由51单片机最小系统,LCD1602液晶显示模块,HX711-AD转换模块,LED模块,蜂鸣器报警电路,按键电路及10kg压力传感器: 原理图如图: 二.设计功能 LCD1 ...

最新文章

  1. 卸载Office 2007 Beta2后,Outlook 2003无法启动的解决方法
  2. 自定义UISearchBar的背景图
  3. mysql timezone utc_在与mysql的配置当中一定要注意的一点是设置serverTimezone=UTC
  4. java Concurrent包学习笔记(一):ExecutorService
  5. 中班音乐活动 机器人_【教育生活】音乐浸润童心,专业引领成长 ——记柯桥区中心幼儿园教育集团音乐项目组教学展示与研讨活动...
  6. Command mysql 中文,MySQL Command Line[mysql命令行常用命令]_MySQL
  7. RefineMask:实例分割,使用细粒度信息增强性能
  8. superset ubuntu16.04 python3 安装
  9. 停止对人类的迷恋!AI完全模仿人类大脑是在浪费时间
  10. 阿里字节面试题,多线程打印程序
  11. Eclipse开发环境下,部署和配置svn的整个过程
  12. Log4j(三)——Log4j配置文件位置详解
  13. 激活函数:阶跃函数、sigmoid函数、ReLU函数、softmax函数
  14. 【通讯录自动导入】txt格式转vcf格式
  15. iTool拷贝app到电脑上
  16. 2.Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features论文核心解读以及代码实现
  17. GSK消费保健品推出首款碳中和牙刷;雀巢“可持续发展列车”驶入瑞士驻华大使馆 | 知消...
  18. 去掉首尾字符java_Java去除字符串首尾特定字符
  19. 一文搞定B站弹幕生成云图
  20. 新浪搜狐网易等那些老牌互联网公司 现在都怎样了?

热门文章

  1. Hyperledger Fabric2中文文档-修改通道配置
  2. 唐朝乐队第三张专辑《浪漫骑士》6月上市.
  3. 服务器的虚拟机网速如何分配,管理ESXi主机网络与虚拟机网络
  4. sklearn.neighbors.KNeighborsClassifier()函数解析
  5. 【Java】电报 Telegram messenger for Android
  6. 鸿蒙十大凶兽排名,上古十大神兽|上古十大洪荒神兽|上古十大神兽资料大全【图文】...
  7. 霍夫曼树之切割木板最小总代价问题
  8. pdfmake支持html,pdfMake前端导出pdf
  9. [转]通过研究视线轨迹改良设计
  10. python开源自动化测试平台_8款开源自动化测试框架