proteus上基于stm32显示仪表

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


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

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


预备工作

1.stm32f1 pack包下载:
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+ampire lcd12864


6.选型定为stm32f103

内存为flash 25KB+sram 10KB,而图只能使用预先制作好的机械图表。


Zimo221工具使用

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

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

0x01(A),0x02(B),0x03(C)...

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


ampire显示原理

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


proteus上基于stm32显示仪表

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

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


用一段程序表示一下:

<code>

void

generate_bitmap_for_lcd12864(int

img_pos)

{

int

i,j,k;

unsigned

char

ch,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<

}

}

}

}

/<code>


基于像素点

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


proteus上基于stm32显示仪表


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


proteus上基于stm32显示仪表


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


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


分享到:


相關文章: