原文如下
我们知道标准的C51库函数printf是将内容通过串口打印,常见单片机系统中的输出设备通
常是lcd,led,甚至osd等,但是许多编程者苦于编写其打印函数以及各种各样的格式控
制,其实keil c51提供了非常方便的方法来实现,那就是通过改写putchar.c来改造printf
函数,你可以通过以下办法来实现自己设计系统中的打印,
1、拷贝KEIL C51下LIB目录中的putchar.c文件到你的项目目录下,并且将其添加到你的工
程中
2、在char putchar (char c)函数中把所有对SBUF负值的语句替换为你自己的打印设备函数
如:把最后的return(SBUF = c)替换为Lcd_PutC(c);return(c);
3、如果你的输出设备是二维的显示设备你可能需要建立全局的二维变量cursor(x,y),在
每打印一个字符后x,y做相应的变换
4、如果你要在二维的显示设备上输出汉字,你还需要建立一个全局的区码变量,在putchar
函数中先对入口参数c作判断如果是处在区码范围内则此次不输出,并做好获得区码的标
志,待程序第二次调用putchar函数时判断区码标识存在则此次入口参数c实际上就是这个汉
字的位码,则可以将区码变量和本次参数c组成这个汉字的区位码并调用用户的输出函数将
其输出到用户设备,输出后把区码标识复位
以上方法可以把printf函数中的各种格式控制很轻松的应用到用户系统中

C51 printf修改如何能打印到不同的设备呢?相关推荐

  1. linux lp命令,lp命令_Linux lp 命令用法详解:打印文件或修改排队的打印任务

    lp命令用于打印文件,或者修改排队的打印任务.与lpr命令类似,lp命令既支持文件输入也支持标准输入.它与lpr的不同之处在于它有一个不同(稍微复杂点)的参数选项设置. 语法lp(选项)(参数) 选项 ...

  2. 【STM32CubeIDE和ITM SWV实现printf调试信息的打印】

    STM32CubeIDE + ITM SWV实现printf调试信息的打印 STM32开发时,使用printf函数来打印信息是一种方便的调试方法.不需要像使用断点来中断程序运行即可方便地查看想要的信息 ...

  3. Linux系统修改 Linux 系统日志打印级别

    Linux系统修改 Linux 系统日志打印级别

  4. stm32f103gd32的usb虚拟串口,打印类printer组合设备

    stm32f103&gd32的usb虚拟串口+打印类printer组合设备@TOC stm32f103&gd32的usb虚拟串口,打印类printer组合设备 由于gd32和stm32 ...

  5. TMS320F28335 实现printf在调试终端打印

    调试过程中发现,无法使用printf进行打印,参考其他大神的博客,这里进行整理. 1.修改工程属性,如图所示 2.修改28335_RAM_lnk.cmd文件 这样重新编译就无报错,也可以在终端打印信息 ...

  6. 泰凌微 Telink TLSR825X Printf gpio 模拟 串口 打印信息 log

    如题: 使用telink可以使用printf功能,之前我不了解,我一度以为这是uart 实现的printf 在配置的时候,居然配置 uart 对应的gpio接口,后面这个问题坑了一段时间. 其实pri ...

  7. Java 目录操作二(获取文件的上级目录、获取目录最后修改时间、打印目录结构、遍历指定目录下的所有目录)

    获取文件的上级目录 import java.io.File;public class Main {public static void main(String[] args) {File file = ...

  8. MDK硬件调试_在Debug printf Viewer窗口显示打印信息_ITM

    平时调试代码的时候大家都喜欢用printf函数来输出一些打印信息,来提示自己代码的执行情况.在刚开始接触这个调试方法的时候,我采用的方式就是浪费一个芯片的串口,然后利用TTL转USB模块,在PC端的串 ...

  9. C51 printf格式化输出特殊用法

    无符号16位数格式符用%d或者%u,千万不能加字母"l",否则会出错 32位数据格式符必须加字母"l",否则会出错 8位数据格式符要加字母"b&quo ...

最新文章

  1. 演示:思科设备基于物理接口帧中继(fame-relay)的配置
  2. latex 甘特图_[简004] 史上'最全最精简'Markdown语法-速览速用
  3. 可以永久改变你的编程技巧的40个Tips
  4. Master3 罗技 版本号的问题
  5. 配置spring-mvc + simple-spring-memcached
  6. AB1601之iic驱动改造
  7. python布尔类型运算_9.python的布尔类型与流程控制
  8. Bootstrap中的圆角图片效果
  9. .net Redis缓存优化提高加载速度和服务器性能(一)
  10. 2021.03.14.浩楠卷子
  11. python unicodeencodeerror_Python发起请求提示UnicodeEncodeError错误代码解决方法
  12. c盘不能新建文件的解决办法
  13. 转:Oracle数据库一致性读的原理(Consistent Read)
  14. 液晶指定位置显示 c语言,大家看看该怎么改才能让12864液晶显示屏显示21个字符啊?...
  15. Mac上好用的音乐软件是哪个?MacOS专业音乐制作软件推荐
  16. 同一个局域网内如何共享文件夹(含共享打印机操作方法)
  17. onenote怎么同步到电脑_OneNote 同步最佳做法
  18. 如何培养项目管理的领导力?
  19. Linux系统引导过程及引导修复
  20. JavaSE基础案例之模拟斗地主

热门文章

  1. 服务器获取客户端电脑文件,python实现获取客户机上指定文件并传输到服务器的方法 -电脑资料...
  2. iOS 编写高质量Objective-C代码(六)
  3. WINDOWS 2008 AD权限管理服务(ADRMS)完全攻略
  4. 【转】Dubbo_与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
  5. git如何merge github forked repository里的代码更新?
  6. ActiveReports 报表应用教程 (10)---交互式报表之向下钻取(详细数据按需显示解决方案)...
  7. LVM---逻辑盘卷管理
  8. php 当我添加数据成功后跳到首页 为什么刷新还会增加数据,使用post提交数据之后,有错误,页面刷新之后,想保持原有值...
  9. 手机连接蓝牙扫码枪_原来手机蓝牙的隐藏功能这么多,你不会还只用来连接耳机吧?...
  10. Two Arrays(DP递推)