基于51单片机的HX711传感器电子秤设计

电子说

1.2w人已加入

描述

基于51单片机的HX711传感器电子秤设计

使用LCD1602显示相关信息,HX711传感器测试物体重量,

通过按键输入对应数值、有删除键、去皮、价格清零、超重警报等功能

部分程序:

#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 == '�') 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);

}

传感器

传感器

传感器

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分