proteus上基于stm32显示仪表

proteus上基于stm32显示仪表

这几个月由于疫情影响,导致我也基本上没有收入来源,基本上快要破产了。隔离期间,刚好能接个活,能解决点饭钱吧。

下面这个项目我以前也没有接触过,只是我一直在做嵌入式开发,所以收悉起来也挺快的。

因为这个项目重点在图形界面,图形界面的库我收集过,有像TouchGFx,littlevgl,emwin,ucgui,awtk,microwindows,guilite等等,最终还是选择用littlevgl作为参考。

预备工作

1.stm32f1pack包下载:https://www.keil.com/dd2/Pack/#/eula-container

2.安装proteus8.9版本

A.安装P8.9.sp0.exe,安装好license。

B.安装PP8.9.exe。

3.字模软件

字模软件:PCtoLCD2002

图形软件:zimo221

4.Ampire12864资料

https://wenku.baidu.com/view/96a606a8a1c7aa00b42acb44.html

5.cpu选型与液晶选型

A.stm32f401+ili9341

B.stm32f103+ampirelcd12864

6.选型定为stm32f103

内存为flash25KB+sram10KB,而图只能使用预先制作好的机械图表。

Zimo221工具使用

因为我们使用的是这个工具来采集图像,一般执行的操作流程是,”打开图像图标”—>”取模方式(C51)”—>”参数设置”—>”其他选项”—>横向取模等等。

也就是说,一般使用的是横向取模,那么一个这样的数组:

0x01(A),0x02(B),0x03©…

它在屏幕上的排序方式就是从左到右排列,A的最高位是第一个像素点,依次而论。

ampire显示原理

要了解它的显示原理,需要看一个图:

可以看出来,y这一列表示的是列,总共有128个像素点,分为左右两个半屏,刚好每个屏是64个像素点。

我们前面的zimo221工具生成的像素点是横向排列的,而这里的ampirelcd12864则可以看出来是第一个字节竖向排列,第二个字节依次。因此,需要将zimo221的生成结果利用c语言做一下转换。

用一段程序表示一下:

voidgenerate_bitmap_for_lcd12864(intimg_pos){ inti,j,k; unsignedcharch,tmp; for(i=0;i<16;i++){ for(j=0;j<64;j++){ ch=bmps[img_pos][i+j*16]; for(k=0;k<8;k++){ tmp=(ch>>(7-k))&1; bmp_tmp[img_pos][j/8][i*8+k]|=tmp<<(j%8); } } } }基于像素点

其实这个项目是基于这样的图片做的。

放到proteus之后,如下图所示:

这个项目的代码暂时为客户保密,而把整个思路则描述出来。

如果大家有什么项目需要合作,也可以给我留言,我主要专做于嵌入式开发工作。

本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。