(完整word版)基于51单片机的电子秤程序0001_第1页
(完整word版)基于51单片机的电子秤程序0001_第2页
(完整word版)基于51单片机的电子秤程序0001_第3页
(完整word版)基于51单片机的电子秤程序0001_第4页
(完整word版)基于51单片机的电子秤程序0001_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、include # include /#include ,ILCD1602.hn /#include HHX711.hu #defi ne uint unsigned int #defi neuchar un signed char sbit LCD1602_RS = P2A5; sbit LCD1602_RW = P2A6; sbit LCD1602.EN = P2A7; sbit HX711_DOUT=P2A0; sbit HX711SCK=P2A1; unsigned long HX711_Buffer = 0; unsigned long Weight_Maopi = 0,Weight

2、_Shiwu = 0; char Price_Count = 0; uchar KEY_NUM = 0; uchar Price_Buffer3 = 0 x00,0 x00,0 x00; unsigned long Money = 0; bit Flag_OK = 0; uchar com; 延时函数 /*)K*)K*)K* void Delay_hx711_us(void) _nop_(); _nop_(); void LCD1602_delay_ms(unsigned int n) unsigned int ij; for(i=0;in;i+) for(j=0;j123;j+); void

3、 Delay_ms(unsigned int n) unsigned int ij; for(i=0;in;i+) for(j=0;j0) LCD1602_write_data(*s); s+; void lnit_LCD1602() LCD1602_EN = 0; LCD1602_RW = 0; LCD1602_write_com(0 x38); LCD1602_write_com(0 x0c); LCD1602_write_com(0 x06); 设置为写状态 显示模式设定 开关显示、光标有无设置、光标闪烁设置 写一个字符后指针加一 LCD1602_write_com(0 x01); 清屏

4、指令 /*穴*穴*穴*宣穴*穴*穴*穴*宣*宣*穴*宣穴*穴*穴穴 矩阵键盘扫描 unsigned char KEY_Scan() unsigned char temp = 0; unsigned char com = 0 x55 z coml = 0 , com2 = 0; P3=OxfO; if(P3!=OxfO) coml=P3; P3=0 x0f; com2=P3; P3=OxfO; while(P3!=0 xf0); temp=coml|com2; if(temp=Oxee)com=l;/ 数字 1 if(temp=0 xed)com=4;/数字 4 if(temp=0 xeb)co

5、m=7;/数字 7 if(temp=Oxe 7)com=ll; 备用键审号键 if(temp=0 xd7)com=0;/数字 0 if(temp=0 xb7)com=14; 备用键* 号键 if(temp=0 xde)com=2; /数字 2 if(temp=0 xdd)com=5; /数字 5 if(temp=0 xdb)com=8;/数字 8 if(temp=0 xbe)com=3;/数字 3 if(temp=0 xbd)com=6; /数字 6 if(temp=0 xbb)com=9;/数字 9 if(temp=0 x7e)com=16;数字 A 键,去皮功能 if(temp=0 x7d

6、)com=15;/数字B键清除键,二次测量 if(temp=0 x7b)com=12;/数字C输入单价错误时返回上一步 if(temp=0 x77)com=13;数字 D 键,计算总价 return(com); unsigned long HX711_Read(void) 增益 128 unsigned long count; unsigned char i; HX711_DOUT=1; Delay_hx711_us(); HX711_SCK=0; count=0; while(HX711_D0UT); for(i=0;i Weight_Maopi) Weight_Shiwu = HX711_

7、Buffer; Weight_Shiwu = Weight_Shiwu Weight_Maopi;获取实物的 AD 采样 数值。 Weight_Shiwu = (unsigned int)(float)Weight_Shiwu/4.22+0.05); 计算实物的实 际重量 因为 不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的4.30这个除数。 当发 现测试出来的重量偏大时,增加该数值。 如果 测试出来的重量偏小时,减小改数值。 /该数 值一般在4.0-5.0之间。因传感器不同而定。 /+0.05 是为了四舍五入百分位 /Buzzer = 1;关闭警报 / else if(HX71

8、1_Buffer Weight_Maopi + 24970) 人于 5Kg 的最人量程,报警 / /Buzzer = 0; / / if(Weight_Shiwu 5000 | HX711_Buffer Weight_Maopi - 30) / /Buzzer = 0; / / else / /Buzzer = 1; / / / 获取毛皮重量 /* *p*p*p)K*p*p *穴*穴*穴 * p)K*4c*)|c*p*4c*p*p*4c*p*p)K*p*穴 void Get_Maopi() HX711_Buffer = HX711_Read(); Weight.Maopi = HX711_Bu

9、ffer/100; * 主函数 * void main() /初始化LCD1602 指针设置 开机画面第一行 lnit_LCD1602(); LCD1602_wr ite_com (0 x80); LCD1602_write_word(,Welcome to use!); Delay_ms(2000);延时2s loop:Price_Co unt = 0; Price_Buffer0 = 0; Price_Bufferl = 0; Price_Buffer2 = 0; Flag_OK = 0; LCD1602_write_com(0 x80); LCD1602_write-word(,WEI

10、g| PRI | MON H); LCD1602_write_com(0 x80+0 x40); LCD1602_write_word00001 | H); 指针设置 指针设置 Get_Maopi(); while(l) if( Flag_OK = 0) Get_Weight(); 称毛皮重量 称重 显示当前重量 LCD1602_write_com(0 x80+0 x40); LCD1602_write_data(Weight_Shiwu/1000 + 0 x30); LCD1602_write_data(,.1); LCD1602_write_data(Weight_Shiwu%1000/100 + 0 x30); LCD1602_write_data(Weight_Shiwu%100/10 + 0 x30); LCD1602_write_data(Weight_Shiwu%10 + 0 x30); KEY_NUM 二 KEY_Scan(); if( KEY_NUM != 0 x55)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论