hx711c语言程序,51单片机HX711传感器电子秤设计(原理图、程序源码、BOM等)
#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等)相关推荐
- 单片机课程设计洗衣机c语言,基于51单片机洗衣机控制器的设计(附程序)☆
基于51单片机洗衣机控制器的设计(附程序)☆(任务书,开题报告,中期检查表,毕业论文21000字,程序) 摘 要 洗衣机是人们日常生活中常见的一种家电,已经成为人们生活中不可缺少的家用电器.在工业生 ...
- 单片机c语言程序开发洗衣机,基于51单片机洗衣机控制器的设计(附程序)☆
基于51单片机洗衣机控制器的设计(附程序)☆(任务书,开题报告,中期检查表,毕业论文21000字,程序) 摘 要 洗衣机是人们日常生活中常见的一种家电,已经成为人们生活中不可缺少的家用电器.在工业生 ...
- 基于51单片机的智能电子秤设计
具体实现功能 系统由STC89C51单片机+最小系统+LCD1602液晶显示模块+HX711AD模块+LED模块+蜂鸣器+按键模块+10kg压力传感器构成. 具体功能: 1.数码管显示当前的重量,单位 ...
- 秒表系统的设计c语言程序,51单片机秒表计时器课程设计报告(含C语言程序).doc...
51单片机秒表计时器课程设计报告(含C语言程序) XXXXXX学院 51单片机系统设计 课程设计报告 题 目: 秒表系统设计 专业.班级: 学生姓名: 学 号: 指导教师: 分 数 : [摘要]本设计 ...
- 声控灯程序C语言,基于51单片机的声控灯设计设计-包含完整设计与指导文件.doc...
基于51单片机的声控灯设计设计-包含完整设计与指导文件 工 学 院 毕 业 设 计(论文) 题 目:基于单片机的智能光控路灯的设计 专 业: 机电技术教育 班 级: *** 姓 名: *** 学 号: ...
- 五十九秒的秒表C语言程序,51单片机秒表计时器课程设计报告(含C语言程序)解读.doc...
XXXXXX学院 51单片机系统设计 课程设计报告 题 目: 秒表系统设计 专业.班级: 学生姓名: 学 号: 指导教师: 分 数 : [摘要]本设计是一个秒表计时器,采用51单片机实现.电路包括以下 ...
- 秒表系统的设计c语言程序,51单片机秒表计时器课程设计报告(含C语言程序)详细分解.doc...
XXXXXX学院 51单片机系统设计 课程设计报告 题 目: 秒表系统设计 专业.班级: 学生姓名: 学 号: 指导教师: 分 数 : [摘要]本设计是一个秒表计时器,采用51单片机实现.电路包括以下 ...
- 基于51单片机的蓝牙电子秤设计
1.设计方案 本设计以STC89C52单片机为主控芯片制作了一款数字电子秤,以电阻应变式压力传感器来进行称重,将感应到的被测物体的重力转化为微弱的毫伏级电压信号,在HX711芯片内部进行128的增益放 ...
- 51单片机的蓝牙电子秤设计
一.硬件设计 本设计硬件主要由51单片机最小系统,LCD1602液晶显示模块,HX711-AD转换模块,LED模块,蜂鸣器报警电路,按键电路及10kg压力传感器: 原理图如图: 二.设计功能 LCD1 ...
最新文章
- 卸载Office 2007 Beta2后,Outlook 2003无法启动的解决方法
- 自定义UISearchBar的背景图
- mysql timezone utc_在与mysql的配置当中一定要注意的一点是设置serverTimezone=UTC
- java Concurrent包学习笔记(一):ExecutorService
- 中班音乐活动 机器人_【教育生活】音乐浸润童心,专业引领成长 ——记柯桥区中心幼儿园教育集团音乐项目组教学展示与研讨活动...
- Command mysql 中文,MySQL Command Line[mysql命令行常用命令]_MySQL
- RefineMask:实例分割,使用细粒度信息增强性能
- superset ubuntu16.04 python3 安装
- 停止对人类的迷恋!AI完全模仿人类大脑是在浪费时间
- 阿里字节面试题,多线程打印程序
- Eclipse开发环境下,部署和配置svn的整个过程
- Log4j(三)——Log4j配置文件位置详解
- 激活函数:阶跃函数、sigmoid函数、ReLU函数、softmax函数
- 【通讯录自动导入】txt格式转vcf格式
- iTool拷贝app到电脑上
- 2.Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features论文核心解读以及代码实现
- GSK消费保健品推出首款碳中和牙刷;雀巢“可持续发展列车”驶入瑞士驻华大使馆 | 知消...
- 去掉首尾字符java_Java去除字符串首尾特定字符
- 一文搞定B站弹幕生成云图
- 新浪搜狐网易等那些老牌互联网公司 现在都怎样了?
热门文章
- Hyperledger Fabric2中文文档-修改通道配置
- 唐朝乐队第三张专辑《浪漫骑士》6月上市.
- 服务器的虚拟机网速如何分配,管理ESXi主机网络与虚拟机网络
- sklearn.neighbors.KNeighborsClassifier()函数解析
- 【Java】电报 Telegram messenger for Android
- 鸿蒙十大凶兽排名,上古十大神兽|上古十大洪荒神兽|上古十大神兽资料大全【图文】...
- 霍夫曼树之切割木板最小总代价问题
- pdfmake支持html,pdfMake前端导出pdf
- [转]通过研究视线轨迹改良设计
- python开源自动化测试平台_8款开源自动化测试框架