51单片机使用sprintf和printf

时间:2025-04-11 15:07:44

文章目录

  • sprintf
  • 在51单片机中使用sprintf
  • printf
  • 在51单片机中使用printf作为串口输出

sprintf

srpintf()函数的功能非常强大:效率比一些字符串操作函数要高;而且更具灵活性;可以将想要的结果输出到指定的字符串中,也可作为缓冲区,而printf只能输出到命令行上~
头文件:
函数功能:格式化字符串,将格式化的数据写入字符串中。
函数原型:int sprintf(char *buffer, const char *format, [argument]…)
函数返回值:buffer指向的字符串的长度;

在51单片机中使用sprintf

sprintf(BUFF_HC,"Soke:%d,Someone ",(int)Value);

注意:这里一定要强转为int类型
原因:可能是8位的系统和32位的系统存储方式不一样,对其方式也不一样

printf

printf() 是 C 语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。printf() 申明于头文件 。

在51单片机中使用printf作为串口输出

查看了keil的帮助文件里面的printf函数说明,原来printf函数最终是调用putchar函数来实现打印输出字符的。

 //UART1 发送串口数据
 void UART1_SendData(char dat)
 {
     ES=0;           //关串口中断
     SBUF=dat;           
     while(TI!=1);   //等待发送成功
     TI=0;           //清除发送中断标志
     ES=1;           //开串口中断
 }
 
 //UART1 发送字符串
 void UART1_SendString(char *s)
 {
     while(*s)//检测字符串结束符
     {
         UART1_SendData(*s++);//发送当前字符
     }
 }
 
 //重写putchar函数
 char putchar(char c)
 {
     UART1_SendData(c);
     return c;
 }

注:一定要关闭串口中断


文章是自己总结而记录,有些知识点没说明白的,请各位看官多多提意见,多多交流,欢迎大家留言
如果技术交流可以加以下群,方便沟通