本帖最后由 xglc 于 2018-10-12 23:10 编辑
一开始只想用串口传输图片数据在oled上显示,下图是实物:
那个我看到论坛里面好多人都说串口和下载器冲突的事情,一开始我也是出这种问题,然后我焊了个转接板,奇迹般的可以插着串口下程序了,可以不用那么麻烦了,大家可以试一下
注意波特率的设置,感谢 笨笨兔 的帖子!!!
过程中遇到困难就是图片数据的问题,一开始想用128*64,可以满屏幕,但是真正显示时会出现显示残缺的问题,因为存储空间的问题
通过修改
勉强显示,但当我想处理数据的话,又出现各种各样的问题,像程序卡死,串口不输出等,归根结底就是存储空间的问题。还要注意一点就是图片数组应该放在code区,看下图编译结果可以看到有data、xdata、code,代表内部ram,外部ram,rom,8003 内部和外部sram都是256bytes,有时编译通过,但发现xdata的值大于256,那一般程序就无法执行了,我把1024bytes放在code里面,即定义数组的时候加上code即可,但是放到code里面的数据是不能修改的,这导致我在后期想从串口获取其他图片数据时就不能用code了,那只能用data或xdata了,但它们空间又受限。最后我测试了图片大小80*60 和 60*40 ,通过分时应用一个数组,留出空间给其他处理数据。代码如下:
代码为串口中断处理,以60*40为例,一共300bytes,只定义一个150bytes的数组,重复使用2次即可,80*60同理。真的是为了这个存储空间煞费苦心啊 如果大家有好的方法,希望能交流一下。
实现上述功能之后我觉得这样有些麻烦,希望可以写个程序自动发送串口图片数据,然后我选择了用Halcon,下图为实现功能的界面:
使用Halcon实现对图片自动进行取模,并将数据传给串口,无需手动输入,更加方便。下图为Halcon取模代码:
可以先将图片数据都存好后,再发送,这样可以直接显示视频badapple。
总结一下这几天做这个项目的感受,其实我很久很久不碰51了,用ARM习惯之后,会缺少很多学习的机会,像这个存储空间的问题,在ARM上我根本不会考虑,反正跑得过来,然而这几天我发现8003的神秘之处,我可以更加优化我的数据结构,使其能达到我想要的效果,其他高位片子虽然更容易做到,但乐趣却少了点。还有就是这片子特别抗造,我中间几度以为它要烧坏了,但它真的顽强的一匹,硬是撑了过来 感谢这次活动,使我收获很多!如果有错误的地方,还请大家指正。
8F003.zip
(70.17 KB)
|