完整word版基于51单片机的电子秤程序Word格式文档下载.docx

上传人:b****6 文档编号:16102049 上传时间:2022-11-19 格式:DOCX 页数:11 大小:16.69KB
下载 相关 举报
完整word版基于51单片机的电子秤程序Word格式文档下载.docx_第1页
第1页 / 共11页
完整word版基于51单片机的电子秤程序Word格式文档下载.docx_第2页
第2页 / 共11页
完整word版基于51单片机的电子秤程序Word格式文档下载.docx_第3页
第3页 / 共11页
完整word版基于51单片机的电子秤程序Word格式文档下载.docx_第4页
第4页 / 共11页
完整word版基于51单片机的电子秤程序Word格式文档下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

完整word版基于51单片机的电子秤程序Word格式文档下载.docx

《完整word版基于51单片机的电子秤程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《完整word版基于51单片机的电子秤程序Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。

完整word版基于51单片机的电子秤程序Word格式文档下载.docx

ucharPrice_Buffer[3]={0x00,0x00,0x00};

unsignedlongMoney=0;

bitFlag_OK=0;

ucharcom;

//延时函数

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

voidDelay__hx711_us(void)

{

_nop_();

}

voidLCD1602_delay_ms(unsignedintn)

unsignedinti,j;

for(i=0;

i<

n;

i++)

for(j=0;

j<

123;

j++);

voidDelay_ms(unsignedintn)

//写指令

voidLCD1602_write_com(ucharcom)

LCD1602_RS=0;

LCD1602_delay_ms

(1);

LCD1602_EN=1;

P0=com;

LCD1602_EN=0;

//写数据

voidLCD1602_write_data(uchardat)

LCD1602_RS=1;

P0=dat;

//连续写字符

voidLCD1602_write_word(unsignedchar*s)

while(*s>

0)

{

LCD1602_write_data(*s);

s++;

}

voidInit_LCD1602()

LCD1602_RW=0;

//设置为写状态

LCD1602_write_com(0x38);

//显示模式设定

LCD1602_write_com(0x0c);

//开关显示、光标有无设置、光标闪烁设置

LCD1602_write_com(0x06);

//写一个字符后指针加一

LCD1602_write_com(0x01);

//清屏指令

//矩阵键盘扫描

unsignedcharKEY_Scan()

unsignedchartemp=0;

unsignedcharcom=0x55,com1=0,com2=0;

P3=0xf0;

if(P3!

=0xf0)

com1=P3;

P3=0x0f;

com2=P3;

while(P3!

=0xf0);

temp=com1|com2;

if(temp==0xee)com=1;

//数字1

if(temp==0xed)com=4;

//数字4

if(temp==0xeb)com=7;

//数字7

if(temp==0xe7)com=11;

//备用键*号键

if(temp==0xd7)com=0;

//数字0

if(temp==0xb7)com=14;

if(temp==0xde)com=2;

//数字2

if(temp==0xdd)com=5;

//数字5

if(temp==0xdb)com=8;

//数字8

if(temp==0xbe)com=3;

//数字3

if(temp==0xbd)com=6;

//数字6

if(temp==0xbb)com=9;

//数字9

if(temp==0x7e)com=16;

//数字A键,去皮功能

if(temp==0x7d)com=15;

//数字B键清除键,二次测量

if(temp==0x7b)com=12;

//数字C输入单价错误时返回上一步

if(temp==0x77)com=13;

//数字D键,计算总价

return(com);

unsignedlongHX711_Read(void)//增益128

unsignedlongcount;

unsignedchari;

HX711_DOUT=1;

Delay__hx711_us();

HX711_SCK=0;

count=0;

while(HX711_DOUT);

for(i=0;

24;

{

HX711_SCK=1;

count=count<

<

1;

if(HX711_DOUT)

count++;

}

count=count^0x800000;

//第25个脉冲下降沿来时,转换数据

HX711_SCK=0;

return(count);

//称重

voidGet_Weight()

HX711_Buffer=HX711_Read();

HX711_Buffer=HX711_Buffer/100;

if(HX711_Buffer>

Weight_Maopi)

Weight_Shiwu=HX711_Buffer;

Weight_Shiwu=Weight_Shiwu-Weight_Maopi;

//获取实物的AD采样数值。

Weight_Shiwu=(unsignedint)((float)Weight_Shiwu/4.22+0.05);

//计算实物的实际重量

//因为不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的4.30这个除数。

//当发现测试出来的重量偏大时,增加该数值。

//如果测试出来的重量偏小时,减小改数值。

//该数值一般在4.0-5.0之间。

因传感器不同而定。

//+0.05是为了四舍五入百分位

//Buzzer=1;

//关闭警报

//elseif(HX711_Buffer<

Weight_Maopi-30)

//{

//Buzzer=0;

//负重量报警

//}

//elseif(HX711_Buffer>

Weight_Maopi+24970)//大于5Kg的最大量程,报警

//if(Weight_Shiwu>

5000||HX711_Buffer<

//else

//

//

//获取毛皮重量

voidGet_Maopi()

Weight_Maopi=HX711_Buffer/100;

}

//主函数

voidmain()

Init_LCD1602();

//初始化LCD1602

LCD1602_write_com(0x80);

//指针设置

LCD1602_write_word("

Welcometouse!

"

);

//开机画面第一行

Delay_ms(2000);

//延时2s

loop:

Price_Count=0;

Price_Buffer[0]=0;

Price_Buffer[1]=0;

Price_Buffer[2]=0;

Flag_OK=0;

WEIg|PRI|MON"

LCD1602_write_com(0x80+0x40);

//指针设置

0.000|.|."

Get_Maopi();

//称毛皮重量

while

(1)

if(Flag_OK==0)

{

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1