|
十進制的數字無法顯示在手機的藍牙串口助手,想問問這是怎么回事?
智能灌溉的,我是想進行灌溉次數統計,把灌溉次數實時地傳到手機上,我分成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));
}
}
|
|