stm32图片显示
本扩展实验是应广大用户需求而精心制作.实现读取内部flash的图像数据,并显示在LCD上.本实验的图像数据由image2lcd V2.9生成.(仅支持16位真彩色图片的显示,其他的情况请大家参考本例程,自行设计即可.)
本代码可以SWD下载仿真.
单片机源程序如下:
- #include <stm32f10x_lib.h>
- #include "sys.h"
- #include "usart.h"
- #include "delay.h"
- #include "led.h"
- #include "key.h"
- #include "exti.h"
- #include "wdg.h"
- #include "timer.h"
- #include "lcd.h"
- #include "usmart.h"
- #include "image2lcd.h"
- #include "stdlib.h"
- extern const u8 gImage_image1[];//图片数据(包含信息头),存储在image1.c里面.
- //Mini STM32开发板扩展实验13
- //内部FLASH图片显示 实验
- //正点原子@ALIENTEK
-
- int main(void)
- {
- u8 i=0;
- HEADCOLOR *imginfo;
- u16 x=0,y=0;
- u16 x0,y0;
- imginfo=(HEADCOLOR*)gImage_image1; //得到文件信息
- Stm32_Clock_Init(9);//系统时钟设置
- delay_init(72); //延时初始化
- uart_init(72,9600); //串口1初始化
- usmart_dev.init(72);//初始化USMART
- LED_Init();
- LCD_Init();
- POINT_COLOR=RED;
- LCD_ShowString(30,50,"Mini STM32 ^_^");
- LCD_ShowString(30,70,"FLASH PICTURE TEST");
- LCD_ShowString(30,90,"ATOM@ALIENTEK");
- LCD_ShowString(30,110,"2011/10/09");
- delay_ms(1500);//等待1.5秒
- srand(imginfo->h*imginfo->w);
- while(1)
- {
- if(i==0)
- {
- LCD_Clear(0X0000);//黑屏
- if(imginfo->w>=240||imginfo->h>=320)
- {
- POINT_COLOR=RED;
- LCD_ShowString(10,70,"The Picture is too large");
- continue;
- }
- x0=x;y0=y;
- while((x+imginfo->w)>240||x==x0)//超过屏幕尺寸了
- {
- x=rand();//获得随机的x值
- }
- while((y+imginfo->h)>320||y==y0)//超过屏幕尺寸了
- {
- y=rand();//获得随机的y值
- }
- image_display(x,y,(u8*)gImage_image1);//在指定地址显示图片
- }
- i++;
- if(i>10)i=0;
- LED0=!LED0;
- delay_ms(200);
- }
- }
复制代码
所有资料51hei提供下载:
ALIENTEK MINISTM32 扩展实验13 内部FLASH图片显示实验.rar
(221.31 KB, 下载次数: 140)
|