C51 printf修改如何能打印到不同的设备呢?
2012-01-03 22:44
183 查看
原文如下
我们知道标准的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是将内容通过串口打印,常见单片机系统中的输出设备通
常是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函数中的各种格式控制很轻松的应用到用户系统中
相关文章推荐
- eclipse中如何修改不同后缀文件类型的编码
- C下如何实现printf在同一行打印,如安装程序进程显示
- [置顶] Android系统移植与调试之------->如何修改Android设备添加3G上网功能
- Android系统移植与调试之------->如何修改Android设备添加重启、飞行模式、静音模式等功能(一)
- android如何适配不同分辨率的设备
- 如何在 Linux 中永久修改 USB 设备权限
- ODOO_posbox_打印出的小票(收据)如何修改?
- Android系统移植与调试之------->如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
- 原型设计测试—如何在不同设备中,进行可用性测试
- 不同语言如何修改 function 传入的参数的值
- 如何修改块设备的UUID
- android 如何修改蓝牙搜索设备的最大数目
- 在WORD文档里每一页的相同位置插入不同的图片的宏代码如何修改?
- Android系统移植与调试之------->如何修改Android设备的开机第一阶段Logo
- Android【USB名称修改系列】第7项-如何修改PTP设备在PC上弹出的对话框的标题
- xcode IOS开发中如何让APP的不同版本共存于设备上
- [ARX]如何得到当前CAD打印设备列表及其他打印设置内容
- sql如何将同个字段不同值打印在一行
- 如何在Win32窗口程序中发命令打开一个控制台,往里面打印(printf())输出一些数据
- Android【USB名称修改系列】第8项-如何修改mtp设备在设备管理器中的”Portable Devices”下的名称