本文目录一览:
其实和直接的串口发送是一样的#include
intrins.h
包含进去tp=adcread(adr);读取ad转换的值sprintf(str,
"ad
result
is:
%dmv
\r",
tp);str是个char型数组再调用你编写的串口发送字符串程序发送strvoid
sentstr(uchar
*str){
while(1)
{
if(*str='\0')break;
putbuffer(*str++);
}}sentstr(str);
51单片机中没有printf这个函数,你如果想用串口发送的话,要自己去写一个串口发送函数就可以了。
printf 函数在单片机中要重定向到串口,printf 调用标准库函数 ,你需要重写fputc() 这个c标准库函数
你已经找出了问题所在。
printf("%x",a);这句本来就是转换变量a为对应的格式(现在是%x,16进制格式)字符串(引号内的就是字符串)然后发送。
那么当然被转换成a对应的ASCII码了,8对应的不就是0x38。
直接写的话(比如SBUF = a),那么当然没有转换了。所以要发送自己需要的数据,就要自己写发送函数,不要用printf
向串口发送数据,使用方式与普通的C语言中一样,只不过单片机发送到的是串口,PC及发送到的是屏幕。