STM32mini开发板ucGUI彩色进度条显示例程

本文介绍了基于MiniSTM32开发板的TFTLCD颜色条显示实验代码。程序通过初始化系统时钟、延时函数、按键和LED等外设后,调用GUI库在LCD上绘制红、绿、蓝、灰、黄、青、洋红等颜色的渐变条。主函数中首先显示标题文字,然后调用DemoShowColorBar()函数实现颜色条绘制,同时LED0以400ms间隔闪烁。该代码演示了如何使用STM32的GUI库进行基本图形显示,适用于嵌入式系统的人机界面开发。

#include "led.h"

#include "delay.h"

#include "sys.h"

#include "key.h"

#include "usart.h"

#include "exti.h"

//#include "wdg.h"

#include "timer.h"

#include "pwm.h"

#include "lcd.h"

#include "gui.h"

//Mini STM32开发板范例代码

//TFTLCD显示实验

//

//:www.openedv.com

void DemoShowColorBar(void);

int main(void)

{

SystemInit();

delay_init(72); //ÑÓʱ³õʼ>>¯

NVIC_Configuration();//

uart_init(9600);

LED_Init();

KEY_Init();

// LCD_Init();

GUI_Init();//

GUI_SetBkColor(GUI_BLACK);

GUI_SetColor(GUI_WHITE);

GUI_Clear();

GUI_SetFont(&GUI_Font24_ASCII);

GUI_DispStringHCenterAt("COLOR_ShowColorBar - Sample", 160, 5);

DemoShowColorBar();

while(1)

{

delay_ms(400);

LED0 = !LED0;

}

}

void DemoShowColorBar(void)

{

int x0 = 60, y0 = 40, yStep = 15, i;//yStep 例间距

int xsize = LCD_GetDevCap(LCD_DEVCAP_XSIZE) - x0;

GUI_SetFont(&GUI_Font8x16);

#if (LCD_FIXEDPALETTE)

y0 = 66;

yStep = 13;

GUI_DispStringAt("Fixed palette: ", 0, 40);

GUI_DispDecMin(LCD_FIXEDPALETTE);

#endif

GUI_DispStringAt("Red", 0, y0 + yStep);

GUI_DispStringAt("Green", 0, y0 + 3 * yStep);

GUI_DispStringAt("Blue", 0, y0 + 5 * yStep);

GUI_DispStringAt("Grey", 0, y0 + 6 * yStep);

GUI_DispStringAt("Yellow", 0, y0 + 8 * yStep);

GUI_DispStringAt("Cyan", 0, y0 + 10 * yStep);

GUI_DispStringAt("Magenta", 0, y0 + 12 * yStep);

for (i = 0; i < xsize; i++) {

U16 cs = (255 * (U32)i) / xsize;

U16 x = x0 + i;;

/* Red */

GUI_SetColor(cs);//颜色设置

GUI_DrawVLine(x, y0 , y0 + yStep - 1);

GUI_SetColor(0xff + (255 - cs) * 0x10100L);

GUI_DrawVLine(x, y0 + yStep, y0 + 2 * yStep - 1);

/* Green */

GUI_SetColor(cs<<8);//颜色设置

GUI_DrawVLine(x, y0 + 2 * yStep, y0 + 3 * yStep - 1);

GUI_SetColor(0xff00 + (255 - cs) * 0x10001L);

GUI_DrawVLine(x, y0 + 3 * yStep, y0 + 4 * yStep - 1);

/* Blue */

GUI_SetColor(cs * 0x10000L);//颜色设置

GUI_DrawVLine(x, y0 + 4 * yStep, y0 + 5 * yStep - 1);

GUI_SetColor(0xff0000 + (255 - cs) * 0x101L);

GUI_DrawVLine(x, y0 + 5 * yStep, y0 + 6 * yStep - 1);

/* Gray */

GUI_SetColor((U32)cs * 0x10101L);//颜色设置

GUI_DrawVLine(x, y0 + 6 * yStep, y0 + 7 * yStep - 1);

/* Yellow */

GUI_SetColor(cs * 0x101);//颜色设置

GUI_DrawVLine(x, y0 + 7 * yStep, y0 + 8 * yStep - 1);

GUI_SetColor(0xffff + (255 - cs) * 0x10000L);

GUI_DrawVLine(x, y0 + 8 * yStep, y0 + 9 * yStep - 1);

/* Cyan */

GUI_SetColor(cs * 0x10100L);//颜色设置

GUI_DrawVLine(x, y0 + 9 * yStep, y0 + 10 * yStep - 1);

GUI_SetColor(0xffff00 + (255 - cs) * 0x1L);

GUI_DrawVLine(x, y0 + 10 * yStep, y0 + 11 * yStep - 1);

/* Magenta */

GUI_SetColor(cs * 0x10001);//颜色设置

GUI_DrawVLine(x, y0 + 11 * yStep, y0 + 12 * yStep - 1);

GUI_SetColor(0xff00ff + (255 - cs) * 0x100L);

GUI_DrawVLine(x, y0 + 12 * yStep, y0 + 13 * yStep - 1);

}

}