myprintf格式化输出液晶迎来了V2.0版本

2019-08-23 15:32发布

非常感谢网友“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文件夹也有说明,同样的,不喜欢的朋友也假装喜欢的样子,也是可以的,嘿嘿

还是非常感谢各位朋友的支持与反馈
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
35条回答
bytoly
1楼-- · 2019-08-23 17:19
这个怎么没人顶呢,顶起~~必须的!!!
八度空间
2楼-- · 2019-08-23 18:28
升级到V2.2版本,主要完善了下面功能:
1、增加%bcd格式输出,b代表要显示的BCD码,c代表要显示的长度,d代表的是显示大小
2、修正port接口函数,增加字体大小设置形参
3、引出几个用到的转换函数
4、修正%d、%md格式左靠齐,右端补空格,多位数变为1位数时,上次多余显示没清掉的bug
5、增加%-md格式,当输入十进制数长度 < m时,右端靠齐,左端补空格,否则按实际位数输出
6、修正_myPrintf_Get_NumLen()函数,输入数字为0时,返回一位有效位
7、修正_myPrintf_PutDec()函数,当输入数字是0时,直接输出0字符
8、增加ICO图标,天线符号、蓝牙图标、摄氏度符号、华氏度符号、静音符号
9、删掉myPrintf_Init()初始化函数,直接调用用户显示驱动初始化函数
10、完善%e、%m.ne、%.ne格式输出,支持指数形式输出的浮点数有:123.456789、1.2345、0.12345、0.0012345,当显示超过域宽时,裁剪小数精度位输出
11、将获取字符串函数通用并输出用户调用,可以同时输出中文和英文长度,空格不管在中文字符串还是英文字符串里,都计算到英文长度中
八度空间
3楼-- · 2019-08-23 21:33
回复【2楼】bytoly:
---------------------------------
谢谢!
zhijun1988
4楼-- · 2019-08-24 01:16
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-08-24 05:31
cool   不错啊,顶.....
八度空间
6楼-- · 2019-08-24 05:37
回复【6楼】正点原子:
---------------------------------
看到置酷了,感谢原子哥!这么百忙中光临小贴,非常感动啊

一周热门 更多>