部分源码
当然,有了这些代码是还不够的,需要包含 #include<stdio.h> #include<string.h> #include<stdarg.h> #include"math.h" 这些文件,好像也不是需要全部,只是这几个我是全部包含了。赶时间啊那几天。 有了这些,在主程序中就可以调用printf函数来在屏幕中显示了。当然,你也可以更该 Int fput()函数里面的LCD_Show函数为串口输出,这样就可以利用printf函数来作为串口电脑屏幕打印了。 2、 另外一种显示方式,我认为是重写了printf函数的底层驱动,不截图了 ,直接代码吧,因为一个屏幕截图不完全。 int Printf(const char *fmt, ...)
{
const char *s;
u8 *Buf;
u16 d;
float f;
u8 tbuf[16];
u8 i=0;
va_list ap;
va_start(ap, fmt);
Buf=ShowBuf;
while (*fmt)
{
for(i=0; i<sizeof(tbuf); i++)
tbuf[i]=0;
if (*fmt != '%')
{
*Buf++=*fmt++;
continue;
}
switch (*++fmt) {
//字符串
case 's':
s = va_arg(ap, const char *);
if (s == NULL) {break;}
for ( ; *s; s++) {
*Buf++=*s;
}
break;
//十进制
case 'd':
d = va_arg(ap, int);
sprintf(tbuf, "%d",d);
for (i=0; tbuf[i]!='\0';i++) {
*Buf++=tbuf[i];
}
break;
//十六进制
case 'x':
d = va_arg(ap, int);
sprintf(tbuf, "%x",d);
for (i=0; tbuf[i]!='\0';i++) {
*Buf++=tbuf[i];
}
break;
case 'f':
f = va_arg(ap, double);
sprintf(tbuf, "%f",f);
for (i=0; tbuf[i]!='\0';i++) {
*Buf++=tbuf[i];
}
break;
// Add other specifiers here...
default:
*Buf++=*fmt++;
break;
}
fmt++;
}
*Buf='\0';
va_end(ap);
LCD_Show_c_String(ShowBuf);
return 1; // Dummy return value
}
|