64*32点阵屏测试视频,有问题求助

2020-01-19 19:40发布

本帖最后由 zhou19852 于 2015-8-25 09:45 编辑

     最近没事想着做个点阵屏玩玩,以下为测试视频,程序模块化,基本每个C文件可以单独移植和使用,芯片驱动、字体等都独立,可以移植到其它如12864、oled等显示屏。前提是要有显存区和画点函数即可,这样做的好处就是你想干嘛就干嘛,翻页、各种移动都比较好处理,字体支持字库芯片和自定义字体,自定义字体可以直接在程序函数中写字符就可以,红外遥控,手机蓝牙可以直接控制和设置数据,手机蓝牙可以直接输入汉字存储并显示,还有多个分区移动、窗口剪切、频谱、表盘时钟、定制的语音芯片,报时,生日祝福,铃声都有,自动亮度调节。后面准备用黑茶 {MOD}透光的亚克力做个外壳,不知哪里会有便宜的卖。各个程序和框架已经做好,就等细致处理了,其实菜单框架做好,每一个页面就相当于一个程序,这样可以写很多不同功能,根本不用担心单片机忙不过来,每个页面里面循环,返回的时候直接切换页面就好。
      现在有个问题需要解决一下,在是在流动显示信息的时候,有个问题需要解决,比如直接显示字符很容易,全是常量,关键是如显示:今天是2015年8月24日等等,中文字符是常量,日期、时间等动态信息是变量,函数入口就是个*String指针,常规的做法是定义一个数组,将中文字符赋值给相应位置,动态数据也更新到相应位置,然后把该数组的地址作为参数传给String就可以了,但是显示数据较多较长的话,该数组将非常的大,而且各个数据的位置不能变,这样不仅占内存还不那么灵活,不知道大家一般怎么处理的,有没有更好的办法?我试过用**p来做,将中文字符和变量的地址放到一个指针数组,通过指针数组来来连接这些数据,但是失败了。http://v.youku.com/v_show/id_XMTMxODM2NDc4NA==.html
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
jesen_2010
1楼-- · 2020-01-20 01:14
LZ分区滚动怎么弄的啊?没思路。
zhou19852
2楼-- · 2020-01-20 03:52
 精彩回答 2  元偷偷看……
jesen_2010
3楼-- · 2020-01-20 06:54
zhou19852 发表于 2015-8-25 09:57
分区移动:要想各个区域的移动互不干扰,那么移位程序就不能死循环,移动一个字的一位后必须跳出来,去执 ...

我的显存是一个点对应一个字节,bit0用于控制显示与不显示,bit1-7 =0为黑 {MOD},=1为红 {MOD},=2为绿 {MOD},=3为橙 {MOD},  所以我如果要实现往左滚动的话,就不能移位,只能对缓冲区的数组进行处理,感觉不好处理,始终感觉这块弄复杂了。各分区独立移动用多任务处理。你是怎么定义一个点显示的呢?   
zhou19852
4楼-- · 2020-01-20 12:26
jesen_2010 发表于 2015-8-25 10:28
我的显存是一个点对应一个字节,bit0用于控制显示与不显示,bit1-7 =0为黑 {MOD},=1为红 {MOD},=2为绿 {MOD},=3为 ...

我个人觉得每个点的显示与关闭不应该在点的数据位上设置开关,应该以颜 {MOD}控制,双 {MOD}点阵能显示4种 {MOD},红绿黄黑,这里的黑就是关闭点了。你能每个点用一个字节,那么你单片机RAM肯定大,你多半用的STM的芯片。既然能显示4种 {MOD},那么2个BIT就可以控制一个点,8个点只要2个字节或者一个字就好了,每一位填什么颜 {MOD}根据显示字符的数据来定。写点PrintDot(x,y,Color);你腰关闭,直接写入黑 {MOD}。移位的话字符没移动移位,数据要移动两位才行。当然移位程序用写点来做的话比较慢,还是按字节来移动比较好。如果单片机速度快,可以改变字符串的显示坐标达到移动目的,而且很灵活。
zhou19852
5楼-- · 2020-01-20 12:41
jesen_2010 发表于 2015-8-25 10:28
我的显存是一个点对应一个字节,bit0用于控制显示与不显示,bit1-7 =0为黑 {MOD},=1为红 {MOD},=2为绿 {MOD},=3为 ...

我个人觉得每个点的显示与关闭不应该在点的数据位上设置开关,应该以颜 {MOD}控制,双 {MOD}点阵能显示4种 {MOD},红绿黄黑,这里的黑就是关闭点了。你能每个点用一个字节,那么你单片机RAM肯定大,你多半用的STM的芯片。既然能显示4种 {MOD},那么2个BIT就可以控制一个点,8个点只要2个字节或者一个字就好了,每一位填什么颜 {MOD}根据显示字符的数据来定。写点PrintDot(x,y,Color);你腰关闭,直接写入黑 {MOD}。移位的话字符没移动移位,数据要移动两位才行。当然移位程序用写点来做的话比较慢,还是按字节来移动比较好。如果单片机速度快,可以改变字符串的显示坐标达到移动目的,而且很灵活。
zhou19852
6楼-- · 2020-01-20 17:05
jesen_2010 发表于 2015-8-25 10:28
我的显存是一个点对应一个字节,bit0用于控制显示与不显示,bit1-7 =0为黑 {MOD},=1为红 {MOD},=2为绿 {MOD},=3为 ...

我个人觉得每个点的显示与关闭不应该在点的数据位上设置开关,应该以颜 {MOD}控制,双 {MOD}点阵能显示4种 {MOD},红绿黄黑,这里的黑就是关闭点了。你能每个点用一个字节,那么你单片机RAM肯定大,你多半用的STM的芯片。既然能显示4种 {MOD},那么2个BIT就可以控制一个点,8个点只要2个字节或者一个字就好了,每一位填什么颜 {MOD}根据显示字符的数据来定。写点PrintDot(x,y,Color);你腰关闭,直接写入黑 {MOD}。移位的话字符没移动移位,数据要移动两位才行。当然移位程序用写点来做的话比较慢,还是按字节来移动比较好。如果单片机速度快,可以改变字符串的显示坐标达到移动目的,而且很灵活。

一周热门 更多>