/************************************************************************** 功能:51单片机的串口输出ASCII码函数(接收端按字符形式接收则显示为HEX格式 ) **************************************************************************/ void UART_Send_Hex(unsigned int hex) { unsigned char temp[11]; Hex_ASCII(hex,temp); UART_Send_Str(temp); UART_Send_Enter(); // 发送回车 }
/************************************************************************** 功能:51单片机的串口发送数值 参数:dat:要发送的数值(长整数) 注:函数中会将数值转为相应的字符串,发送出去。比如 4567 转为 "4567" **************************************************************************/ void UART_Send_Num(unsigned long dat) { unsigned char temp[11]; // 长整数最大值4294967295,转ASCII码后占用10字节 // 由于后面程序要使用strlen()库函数计算长度,需增加1个字节存放结束符0 Long_Str(dat,temp); UART_Send_Str(temp); UART_Send_Enter(); // 发送回车 }
//***************************************************************************** // //! \brief GPS test execute main body. //! //! \return None. // //***************************************************************************** static void GPSExecute(void) { unsigned char error_num = 0; GPS_INFO GPS; rev_stop=0; while(1) { if(rev_stop) { UART_Send_Str(rev_buf); if(GPS_GPRMC(rev_buf, &GPS)) { xGPIOSPinWrite(sD13, 1); UART_Put_Inf("Latitude: ", GPS.latitude); UART_Put_Inf("Longitude: ", GPS.longitude); UART_Put_Inf("Year: ", GPS.D.year); UART_Put_Inf("Month: ", GPS.D.month); UART_Put_Inf("Day: ", GPS.D.day); UART_Put_Inf("Hour: ", GPS.D.hour); UART_Put_Inf("minute: ", GPS.D.minute); UART_Put_Inf("South or North: ", GPS.NS); UART_Put_Inf("East or West: ", GPS.EW); rev_stop = 0; gps_flag = 0; error_num = 0; } else { UART_Send_Str("Analysis is invalid and reinitialize\n"); error_num++; if (error_num >= 20) { xGPIOSPinWrite(sD13, 0); error_num = 20; //GPS_Init(); } rev_stop = 0; gps_flag = 0; } } } }
//系统主函数 void main (void) { // uint i; LED1=1; LED0=0; OEC=1; Exti_init(); Time_init(); //两个定时器初始化 //TR0=0; UART_init(); UART_Send_Str("知趣电子欢迎你!"); while(1) { if(irreceok) { irreceok=0; //P0=0X00; IR_pros(); if(irprosok) { irprosok=0; P0=ircode[2]; } } //if(open_close_flang) // { /// open_close_flang=0; //TR0=1; //display_pic(); // } //else { //TR0=0; //} display_hand(); //display_pic(); //display_figure(); /*if(uart_flang) { //uart_flang=0; P0=0x00; // if(pic_ch_flag) // { // pic_ch_flag=0; TR1=1; // } } */ } }
/************************************************************************** 功能:51单片机的串口发送调试信息(字符串+数值) 参数:inf:指向提示信息字符串的指针 dat:一个数值,前面的提示信息就是在说明这个数值的意义 **************************************************************************/ void UART_Send_StrNum(char *inf,unsigned long dat) { UART_Send_Str(inf); UART_Send_Num(dat); }