博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[小项目]行李箱(蓝牙解锁、称重)
阅读量:6081 次
发布时间:2019-06-20

本文共 5068 字,大约阅读时间需要 16 分钟。

1 #include 
2 #include "hx711.h" 3 4 sbit Led0=P0^0; //ÓÃÒ»¿ÅСµÆµÄÁÁÃð´ú±íËøµÄ¿ª¹Ø 5 sbit Led1=P1^0; //ÓÃСµÆ±íʾÐÐÀîµÄÖØÁ¿£¬Ã¿Ò»¸öСµÆ´ú±í300g£¬¹²Îå¿ÅСµÆ 6 sbit Led2=P1^1; 7 sbit Led3=P1^2; 8 sbit Led4=P1^3; 9 sbit Led5=P1^4; 10 11 unsigned long HX711_Buffer = 0; 12 unsigned int Weight_Maopi = 0,Weight_Shiwu = 0; 13 unsigned int i=0; 14 15 void init_led() 16 { 17 Led0=0; 18 Led1=0; 19 Led2=0; 20 Led3=0; 21 Led4=0; 22 Led5=0; 23 } 24 //**************************************************** 25 //³ÆÖØ 26 //**************************************************** 27 void Get_Weight() 28 { 29 HX711_Buffer = ReadCount(); 30 HX711_Buffer = HX711_Buffer/100; 31 if(HX711_Buffer > Weight_Maopi) 32 { 33 Weight_Shiwu = HX711_Buffer; 34 Weight_Shiwu = Weight_Shiwu - Weight_Maopi; 35 Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/2.08+0.05); 36 Weight_Shiwu=Weight_Shiwu/2; 37 38 } 39 } 40 41 void Get_Maopi() 42 { 43 unsigned char i = 0; 44 unsigned int Temp_Weight = 0; 45 46 Weight_Maopi = 0; 47 48 for( i = 0 ; i < 10 ; i++) //È¡10×éÊý¾Ý£¬ÒÔ×î´óµÄÒ»¸öÊý¾ÝΪëƤÖØÁ¿ 49 { 50 HX711_Buffer = ReadCount(); 51 Temp_Weight = HX711_Buffer/100; 52 53 if( Temp_Weight > Weight_Maopi) 54 { 55 Weight_Maopi = Temp_Weight; 56 } 57 } 58 } 59 60 void alarm() 61 { 62 if(Weight_Shiwu>=300&&Weight_Shiwu<600) 63 { 64 Led1=1; 65 Led2=0; 66 Led3=0; 67 Led4=0; 68 Led5=0; 69 } 70 if(Weight_Shiwu>=600&&Weight_Shiwu<900) 71 { 72 Led1=1; 73 Led2=1; 74 Led3=0; 75 Led4=0; 76 Led5=0; 77 } 78 if(Weight_Shiwu>=900&&Weight_Shiwu<1200) 79 { 80 Led1=1; 81 Led2=1; 82 Led3=1; 83 Led4=0; 84 Led5=0; 85 } 86 if(Weight_Shiwu>=1200&&Weight_Shiwu<1500) 87 { 88 Led1=1; 89 Led2=1; 90 Led3=1; 91 Led4=1; 92 Led5=0; 93 } 94 if(Weight_Shiwu>=1500) 95 { 96 Led1=1; 97 Led2=1; 98 Led3=1; 99 Led4=1;100 Led5=1;101 }102 if(Weight_Shiwu<300)103 {104 Led1=0;105 Led2=0;106 Led3=0;107 Led4=0;108 Led5=0;109 } 110 }111 void main()112 {113 unsigned char ldat;114 init_led();115 TMOD=0X21; //ÉèÖö¨Ê±Æ÷1Ϊģʽ2£¬×öΪ²¨ÌØÂÊ·¢ÉúÆ116 SCON=0x50; //ÉèÖô®¿Ú·½Ê½2117 TL1=0xFd; //2400²¨ÌØÂʵijõÖµ,°å×ÓʹÓÃ12M¾§Õñ£¬³õÖµ=256-12000000/32/12/2400118 TH1=0xFd; //119 TR1=1; //Æô¶¯²¨ÌØÂÊ·¢Éú 120 TH0=0xf8; //¶¨Ê±2ms121 TL0=0x30;122 TR0=1;123 EA=1;124 ES=1;125 ET0=1;126 Get_Maopi();127 while(1)128 {129 130 if(RI) //²éѯÊÇ·ñÓÐÊý¾Ý½ÓÊÕ131 { 132 ldat=SBUF; //Êý¾ÝÔÝ´æÓÚ±äÁ¿ÖÐ133 RI=0; //ÖØÐÂÇå0µÈ´ý½ÓÊÕ134 SBUF=ldat; //½«½ÓÊÕµ½µÄÊý¾Ý·¢ËͳöÈ¥135 while(!TI); //µÈ´ý·¢ËÍÍê³É136 TI=0;137 if(ldat=='A')138 Led0=1;139 if(ldat=='B')140 Led0=0;141 }142 alarm();143 }144 }145 146 void int0()interrupt 1147 {148 i++;149 if(i==400)150 {151 Get_Weight();152 i=0;153 }154 TH0=0xf8;155 TL0=0x30;156 }
main
1 #ifndef __HX711_H__ 2 #define __HX711_H__ 3  4  5 #include 
6 #include
7 8 sbit ADDO=P3^4; 9 sbit ADSK=P3^5; 10 11 unsigned long ReadCount(void);12 13 #endif
HX711.H
1 #include "HX711.h" 2  3 unsigned long ReadCount(void) 4 { 5 unsigned long Count; 6 unsigned char i; 7 ADSK=0;  8 Count=0; 9 while(ADDO); 10 for (i=0;i<24;i++)11 {12 ADSK=1; 13 Count=Count<<1; 14 ADSK=0; 15 if(ADDO) Count++;16 }17 ADSK=1;18 Count=Count^0x800000;19 ADSK=0;20 return(Count);21 }
HX711.c

由于条件限制原材料不足以及个人比较慵懒,所以没用数码管来显示称出来的重量,也没有用机械锁,而是都用LED代替了相应的部分。 

这次项目中出现了几个问题:

1.刚开始用数码管显示重量时,本应该四个数码管同时显示,出现的结果却是一个个循环显示。

2.称出来的质量有时候直接从0变到5900多这个值。

3.在确认代码正常的情况下,蓝牙模块调试过程中,手机可以连接蓝牙模块,开发板却无法按照正常指令响应。

 

解决方法:

1.分析可能是因为CPU要处理的HX711 AD转换模块传过来的数值过大,因此计算需要耗费CPU大量资源,由于处理函数和显示函数都在main函数中,所以出现这种情况。最后,将HX711传过来的AD值放到定时器中断中处理,且每800毫秒处理一次。数码管得以正常显示。

2.分析可能由于硬件原因使得Get_Weight()函数中HX711_Buffer<Weight_Maopi,因而(此处需更改)

3.代码检查无误,后来换用核心板对蓝牙模块进行测试,发现功能正常运行。很多时候在用开发板搭建电路的时候,在代码确定无误情况下若出现功能无法正常实现,应更换核心板进行功能测试。由于开发板内部连接一定的外设,所以会对引脚造成一定影响,从而影响正常的功能。 

转载于:https://www.cnblogs.com/ronz/p/7658396.html

你可能感兴趣的文章
开源磁盘加密软件VeraCrypt教程
查看>>
本地vs云:大数据厮杀的最终幸存者会是谁?
查看>>
阿里云公共镜像、自定义镜像、共享镜像和镜像市场的区别 ...
查看>>
shadowtunnel v1.7 发布:新增上级负载均衡支持独立密码
查看>>
Java线程:什么是线程
查看>>
mysql5.7 创建一个超级管理员
查看>>
【框架整合】Maven-SpringMVC3.X+Spring3.X+MyBatis3-日志、JSON解析、表关联查询等均已配置好...
查看>>
要想成为高级Java程序员需要具备哪些知识呢?
查看>>
带着问题去学习--Nginx配置解析(一)
查看>>
onix-文件系统
查看>>
java.io.Serializable浅析
查看>>
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>