您的位置:首页 > 其它

手持式设备18位彩色LCD显示屏的一种电池图标显示方案

2010-04-02 17:03 218 查看
手持式设备,18位彩色LCD显示屏的一种电池图标显示方案:

我做的一款产品用到了320x240的彩色显示屏,界面上需要显示一款电池图标,并且图标要根据电量变化来更新。
由于我用的是一款只有64k flash的MCU,且没有外部库扩展Flash,所以从存储空间的角度来说,直接存储几个电量状态的电池图标是不太可行的,而且要想使得对电量的显示等级多,则存的图标就多,显示空间就会被占用更多。

于是想了下面这个方案来解决这个问题:

把电池图标切成5个部分,即5个小图标,电池尾部batteryPartTail,电量部分batteryPart1,无电部分batteryPart0,有电无电结合部分gImage_batteryPart1,电池头部batteryPartHead。只需存储这五部分,相当于我一个整个的电池图片都没有存。

这样做有三个好处:

一是,压缩了存储空间。
二是,可以无限扩展电池的长度和电量变化的档数,而不论怎么变化,用于存储电池图标的空间是不变的,这多以后扩展很有好处。
三是,由于分开了有电和无电的图标,我们就可以通过给出的电量百分比percent和总电池量对应的显示长度FULL_BATTERY,换算出需要显示的有电batteryPart1和无电图标batteryPart0的个数,比较灵活。

Code 如下:

//具体图标对应的数组我就不写了,你可以找任意一个电池取出这五个部分即可。
const unsigned char gImage_batteryPartTail_9x34[926];
const unsigned char gImage_batteryPart1_3x34[314];
const unsigned char gImage_batteryPart10_6x34[620];
const unsigned char gImage_batteryPart0_3x34[314];
const unsigned char gImage_batteryPartHead_9x34[926];
#define FULL_BATTERY 18
void DisplayPic_Battery( INT16U x_in, INT16U y_in, INT16U percent)
{
INT16U x,y;
INT8U i,j;
INT8U cycle_i, cycle_j;

cycle_i = (INT8U)(percent*FULL_BATTERY/100);
cycle_j = FULL_BATTERY - cycle_i;
x = x_in;
y = y_in;
disppic( gImage_batteryPartTail_9x34,34,9,x,y);
x+=9;
for ( i=0; i
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐