本设计具有以下功能:
- 热成像显示,采用松下的mg8833红外阵列
- 以24小时制显示时、分信息
本次设计采用KEIL5进行开发,下面简要介绍开发过程:
红外到彩色映射表
float pixels[64];
int16_t pixelsRaw[64];
#define RESIZE_X 32
#define RESIZE_Y 32
#define PixSize 2
int16_t pixelsRawResize[RESIZE_X*RESIZE_Y];
const uint16_t camColors[] = {0x480F,0x3810,0x2010,0x1011,0x0011,0x00B2,0x0152,0x0213,
0x02D3,0x03B4,0x0474,0x0554,0x0572,0x058F,0x05AC,0x05C9,
0x05E6,0x0603,0x0620,0x1E40,0x3E60,0x5E80,0x7EA0,0x9EC0,
0xBEE0,0xDEE0,0xE600,0xE500,0xEC00,0xEB00,0xF200,0xF0E0,
};
采集数据和插值缩放
readPixelsRaw(pixelsRaw);
for(i=0; i<64; i++)
pixelsRaw[i] = (pixelsRaw[i])>>2;
resizeBilinearGrey(pixelsRaw, pixelsRawResize, 8, 8, RESIZE_X, RESIZE_Y);
彩屏绘制
for(i=0; i<64; i++)
pixelsRaw[i] = pixelsRaw[i] << 0;
for(i = 0; i < RESIZE_Y; i++)
{
for (j = 0; j < RESIZE_X; j++)
{
LCD_Fill((0+(i)*PixSize),135-(0+(j+1)*PixSize),(0+(i+1)*PixSize),135-(0+(j)*PixSize), pixelsRawResize[j*RESIZE_Y+i]);//pixelsRaw[j*8+i]);//camColors
}
}
for(i=0; i<64; i++)
pixelsRaw[i] = pixelsRaw[i] << 0;
for(i = 0; i < RESIZE_Y; i++)
{
for (j = 0; j < RESIZE_X; j++)
{
LCD_Fill((0+(i)*PixSize),135-(0+(j+1)*PixSize),(0+(i+1)*PixSize),135-(0+(j)*PixSize), pixelsRawResize[j*RESIZE_Y+i]);//pixelsRaw[j*8+i]);//camColors
}
}
for(i=0; i<64; i++)
pixelsRaw[i] = pixelsRaw[i] << 0;
for(i = 0; i < RESIZE_Y; i++)
{
for (j = 0; j < RESIZE_X; j++)
{
LCD_Fill((0+(i)*PixSize),135-(0+(j+1)*PixSize),(0+(i+1)*PixSize),135-(0+(j)*PixSize), pixelsRawResize[j*RESIZE_Y+i]);//pixelsRaw[j*8+i]);//camColors
}
}
时间显示
day = sec / SECS_PER_DAY;
sec -= day * SECS_PER_DAY;
hr = sec / SECS_PER_HR;
sec -= hr * SECS_PER_HR;
min = sec / SECS_PER_MIN;
sec -= min * SECS_PER_MIN;
LCD_ShowChar(70, 8, (char)(48+hr/10),0,BROWN);
LCD_ShowChar(80, 8, (char)(48+hr%10),0,BROWN);
LCD_ShowChar(90, 8, (char)(46+(sec%2?12:0)),0,BROWN);
LCD_ShowChar(100, 8, (char)(48+min/10),0,BROWN);
LCD_ShowChar(110, 8, (char)(48+min%10),0,BROWN);
心得体会:
之前也了解过硬禾学堂,但是一直没有参与他们的活动,这一次能够参与Funpack活动真的很幸运。本次开发使用的软件是KEIL5,有一定的使用基础,所以上手还是比较快的,本次所用到的红外阵列之前一直没有机会用,正好趁着这次活动调通,发现显示效果很是很不错的,希望以后能多多参与硬禾学堂举办的活动,真的能学到很多东西,受益匪浅。