设为首页 加入收藏

TOP

[小项目]行李箱(蓝牙解锁、称重)(二)
2017-10-16 18:19:07 】 浏览:5271
Tags:项目 行李箱 蓝牙 解锁 称重
up3;õÖµ,°å×ÓʹÓÃ12M¾§Õñ£¬³õÖµ=256-12000000/32/12/2400
118 TH1=0xFd; // 119 TR1=1; //Æô¶¯²¨ÌØÂÊ·¢Éú 120 TH0=0xf8; //¶¨Ê±2ms 121 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 1 147 { 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 <reg52.h>
 6 #include <intrins.h>
 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.代码检查无误,后来换用核心板对蓝牙模块进行测试,发现功能正常运行。很多时候在用开发板搭建电路的时候,在代码确定无误情况下若出现功能无法正常实现,应更换核心板进行功能测试。由于开发板内部连接一定的外设,所以会对引脚造成一定影响,从而影响正常的功能。 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C 语言 习题 1-12 下一篇C语言/原子/编译,你真的明白了吗..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目