|
十进制的数字无法显示在手机的蓝牙串口助手,想问问这是怎么回事?
智能灌溉的,我是想进行灌溉次数统计,把灌溉次数实时地传到手机上,我分成3个统计:手动次数,自动次数,蓝牙次数。我用的是数组,每天进行一次,指针向后移动一位。
下面这个是向蓝牙发送的数据:
void send_stus() //数据发送
{
send_string("湿度1:");
send_byte(RH_1/10+0X30);
send_byte(RH_1%10+0X30);
send_byte('%');
send_string("\r\n");
send_string("湿度2:");
send_byte(RH_2/10+0X30);
send_byte(RH_2%10+0X30);
send_byte('%');
send_string("\r\n");
send_string("温度1:");
send_byte(TH_1/10+0X30);
send_byte(TH_1%10+0X30);
send_byte(0XA1);
send_byte(0XE6);
send_string("\r\n");
send_string("温度2:");
send_byte(TH_2/10+0X30);
send_byte(TH_2%10+0X30);
send_byte(0XA1);
send_byte(0XE6);
send_string("\r\n");
send_string("光照:");
send_byte(GZ/10+0X30);
send_byte(GZ%10+0X30);
send_byte('%');
send_string("\r\n");
send_string("次数:");
send_string("\r\n");
send_string("自动:");
IntConversionChar(ztcs);
send_string("\r\n");
send_string("手动:");
IntConversionChar(stcs);
send_string("\r\n");
send_string("蓝牙:");
IntConversionChar(lycs);
send_string("\r\n");
}
void send_byte(uchar by){
ES=0;
SBUF = by;
while(!TI);//当写下这句的时候,就不要在中断函数里面在写TI = 0;这句了,不然进入中断函数将TI清零之后,程序就会一直卡在这里
TI = 0; //在这里将TI清零
ES=1;
}
/*发送一个字符串*/
void send_string(uchar *p){
while(*p!= '\0'){
send_byte(*p);
p++;
}
}
void IntConversionChar(uint number)
{
uint model; //模
uint numberByte; //十进制数据不同位上的值
for(model=10;model>=1;model=model/10) //model的取值根据实际需要选择,选择过大会浪费资源
{
numberByte = number/model; //相除取整
//当取到整数数据的最高位时,将其加上0x30或者48并转为字符型后发送
if(numberByte >=1 ) send_byte((uchar)(numberByte%10+0x30));
//if(numberByte >=1 ) PostChar((unsigned char)(numberByte%10+48));
}
}
|
|