非常感谢网友“solo”的支持与反馈,非常感谢!!!
此版本主要更新功能如下红 {MOD}字体所示,修正了几个bug,显示字符串的时候,中英文混合一起输出还是有个bug,还没什么好的方法实现,最近没时间折腾了,过段时间在仔细研究研究,呵呵
测试平台为战舰STM32开发板(我的战舰已经出掉,手上剩下原子哥的探索者了),测试工程没放上来
谍照这里有首版的
http://www.openedv.com/posts/list/38085.htm
一、关于使用默认参数说明
1.1 在“my_printf.h”文件中集合了相关的宏定义开关,使用于使用不同功能的场合
1.2 默认使用的显示液晶分辨率参数为:横向240,纵向320,需要修改请调用“myPrintf_SetLCDSize()”函数进行设置
1.3 默认使用的英文字符显示大小为:宽度8,高度16,需要修改请调用“myPrintf_SetCharSize()”函数进行修改
1.4 默认支持中文显示开关为关闭,需要请将其设置为1
1.5 默认使用的中文显示大小为:宽度16,高度16,需要修改请调用“myPrintf_SetGBKSize()”函数进行修改
二、关于移植方法
2.1 移植方法非常简单,在“my_printf_port.c”文件中按照提示添加合适的函数即可
需要提供的函数有:
1、显示单个英文字符函数;
2、显示单个汉字函数;
3、显示器初始化函数(可不用)
4、液晶带颜 {MOD}设置打点函数(需打开myPrintf_ShowMade_EN或者myPrintf_ShowICO_EN,否则不需增加)
2.2 在“my_printf.h”文件中集合了各功能开关宏定义,按需打开即可
三、用户调用函数使用说明
3.1 myPrintf_Init()函数
这个函数可以不使用,当需要集合的时候添加,视情况而定。
3.2 myPrintf_GotoxPhys()函数
调用此函数设置的是横坐标。
3.3 myPrintf_GotoyPhys()函数
调用此函数设置的是纵坐标。
3.4 myPrintf_GotoxyPhys()函数
调用此函数一次性设置好横坐标和纵坐标
3.5 myPrintf_SetMode()函数
调用此函数设置显示操作的各种模式。
mode形参为8位:
[0,0]: 显示模式设置,这个和移植的显示单个英文字符、中文汉字函数中的mode相关,当移植的函数没有,可忽略此位
[1,1]: 显示数字的时候,高位为0是否显示。0: 不显示;1: 显示
[2,2]: 0: 左端补空格,1: 右端补空格。缺省值为0
[3,3]: 显示小数时此位功能。0: 补空格,1: 补0,缺省值为0
[7,4]: 保留
3.6 myPrintf_GetxPhys()函数
调用此函数返回当前横坐标位置。
3.7 myPrintf_GetyPhys()函数
调用此函数返回当前纵坐标位置。
3.8 myPrintf_GetCharNum()函数
调用此函数返回的是本次总共输出字符个数。
3.9 myPrintf_SetCharSize()函数
调用此函数设置英文字符大小。
3.10 myPrintf_SetGBKSize()函数
调用此函数设置中文字符大小。
3.11 myPrintf_SetLCDSize()函数
调用此函数设置显示液晶的分辨率。
3.12 myPrintf()函数
此函数实现了基本的液晶显示格式,具体格式使用请参照下一节。
四、输出格式使用说明
4.1 支持回车功能“
”,回到上次设置的坐标起点,主要为横坐标,当纵坐标超过界限时,回到原点
4.2 支持换行功能“
”,横坐标回到0,纵坐标下一行显示
4.3 支持Tab功能“ ”,默认四个ASCII字符宽度
4.4 直接打印字符串,支持中文(需打开显示中文开关)
4.5 输出字符格式“%c”
4.6 输出百分比符号“%%”
4.7 输出十进制,有正负之分
4.7.1 直接输出十进制“%d”
4.7.2 输出指定字段宽度十进制“%md”
当输入十进制数长度 < m时,左端补空格,否则按实际位数输出,不支持右端补空格。
4.8 输出字符串
4.8.1 直接输出字符串“%s或%S”,支持中文(需打开显示中文开关)
4.8.2
输出指定长度字符串,左端补空格“%ms或%mS或%5s”
输出字符串占m列,当字符串本身长度 < m时,左端补空格,否则按字符串实际长度输出。
◆
支持中文(需打开显示中文开关),左端补充空格宽度为英文字符宽度。
4.8.3
输出指定长度字符串,右端补空格“%-ms或%-mS或%-5s”
输出字符串占m列,当字符串本身长度 < m时,输出字符串左靠齐,右端补空格。
◆
支持中文(需打开显示中文开关),左端补充空格宽度为英文字符宽度。
4.8.4
输出指定长度字符串,左端补空格“%m.ns或%m.nS或%10.5s”
输出字符串占m列,但只取字符串左端n个字符输出,输出这n个字符右靠齐,左端补空格,如果n > m时,保证输出n个字符。
◆
支持中文(需打开显示中文开关),左端补充空格宽度为英文字符宽度。
4.8.5
输出指定长度字符串,右端补空格“%-m.ns或%-m.nS或%-10.5s”
输出字符串占m列,但只取字符串左端n个字符输出,输出这n个字符左靠齐,右端补空格,如果n > m时,保证输出n个字符。
◆
支持中文(需打开显示中文开关),左端补充空格宽度为英文字符宽度。
4.9 输出浮点数,有正负之分,默认域宽(包括小数点在内)为7,小数精度为3,域宽和精度可变时,限制最大的域宽是8,精度为6
4.9.1 直接输出浮点数“%f”,小数位不足3位的,后面补0,
不足域宽左端补0或空格(可设置),详见3.5说明
比如输出浮点数3.1,最终的显示结果为:3.100
4.9.2 输出一定长度和精度的浮点数“%12.5f”,其中12为域宽,5为精度,
不足域宽左端补0或空格(可设置),详见3.5说明
4.9.3 输出长度和精度可变的浮点数“%m.nf”,其中m为域宽,n为精度,
不足域宽左端补0或空格(可设置),详见3.5说明
4.9.4
输出长度和精度可变的浮点数“%-m.nf”
输出占m列,有n位小数,输出数值长度 < m时,
右端填充0或者空格(可设置),具体由结构体mode中的bit3进行控制,详见3.5说明。
4.9.5 输出由整数转换得来的小数“%tf”,除了前面多了一个t,其他和“%f”格式差不多
4.10 输出八进制数,默认前面显示“0”
4.10.1 直接输出八进制“%o”
4.10.2
输出指定字段宽度八进制“%mo”,当输入八进制数长度 < m时,左端补空格,否则按实际位数输出
4.11 输出十六进制数,默认前面显示“0x”
按实际长度输出。
4.12
指数形式输出实数(此功能不是很完善)
4.12.1 直接输出“%e”,默认长度和%f默认长度一样,小数精度默认为6位,指数占用4位
4.12.2 长度和精度可调输出“%m.ne”,最大宽度15,最大精度14,小数不足精度要求的后面补“0”
4.13
显示自定义类
涉及到得函数文件“my_printf_made.c”和“my_printf_ico.c”,可按需增加或减少数组。
4.13.1 显示自定义数字,提供字体有:普通形式数字32 * 16,四正形式数字32 * 16,相关显示标号宏定义在myPrintf.h文件中
显示格式为:"%ns",其中“n”代表的是数字形式,“s”代表的是大小
4.13.2 显示自定义单 {MOD}ico图标,提供大小有:16 * 16正方形,16 * 32卧倒长方形,相关显示标号宏定义在myPrintf.h文件中
显示格式为:"%is",其中“i”代表的是ico意思,“s”代表的是大小
具体使用在压缩包里面doc文件夹也有说明,同样的,不喜欢的朋友也假装喜欢的样子,也是可以的,嘿嘿
还是非常感谢各位朋友的支持与反馈
---------------------------------
这没注意呢 只是初步规定了一个而已,还没仔细研究这个
回复【15楼】 八度空间 :
---------------------------------
其实 没必要这么麻烦,直接将 x 回到本行开始即可。y不要动。
同样,可以看看标准的处理方法示例
输入光标在整个输入结束后,停在4的下方。 是回车,模拟打字机回拉,重新定位到本行开始,后续的输出会覆盖之前的输出。
---------------------------------
覆盖本行不好吧
---------------------------------
本身不是覆盖本行的意思,是回到本行开始。是否会覆盖本行,要看 后面的字符。
如果后面是 ,那 会在y 上下移一行,此时就不涉及覆盖问题了。
如果后面是其他字符,那么这些字符输出时,会覆盖掉输出位置上的内容,此时就有了覆盖的效果。
原本的使用就是这样定义的,所以,如果为了让大家都能兼容的使用这个库,最好还是按照规定去实现。
---------------------------------
我是参照emWin这个GUI的做法的,他的 是回到下一行的开始位置的 这两个是没作用的,忽略
一周热门 更多>