STM32F746-Disco带有一个480x272分辨率的屏幕,可以非常方便的在这个液晶屏上画图。
在Mbed中,已经为这个液晶屏做好了一个对象,我们只要调用它,就可以非常方便的画出各种图形。
首先,需要包含头文件LCD_DISCO_F746NG.h
#include "LCD_DISCO_F746NG.h" 然后,定义一个lcd变量。
LCD_DISCO_F746NG lcd;
现在你就可以开始画图了,如:
lcd.SetTextColor 设置文字或图形颜色
lcd.SetBackColor 设置背景颜色
lcd.Clear 清屏
lcd.DrawRect 画矩形
lcd.DrawCircle 画圆
lcd.DrawEllipse 画椭圆
lcd.DisplayStringAt 显示文字
下面的程序先显示了两行文字,然后随机画矩形。
#include "mbed.h" #include "LCD_DISCO_F746NG.h" #define WIDTH 468 #define HEIGHT 260 LCD_DISCO_F746NG lcd; DigitalOut led1(LED1); uint16_t cnt; int main() { led1 = 1; lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"MBED EXAMPLE", CENTER_MODE); lcd.SetTextColor(LCD_COLOR_WHITE); lcd.SetBackColor(0); lcd.DisplayStringAt(0, LINE(8), (uint8_t *)"ICKEY.cn", CENTER_MODE); lcd.SetTextColor(LCD_COLOR_RED); lcd.DrawRect(10, 10, WIDTH - 10, HEIGHT - 10); lcd.SetTextColor(LCD_COLOR_GREEN); lcd.DrawCircle(200, 100, 100); wait(1); while(1) { lcd.SetTextColor(rand()); lcd.DrawRect(rand()%WIDTH, rand()%HEIGHT, rand()%WIDTH, rand()%HEIGHT); cnt++; if(cnt > 300) { cnt = 0; lcd.Clear(rand()); } wait(0.1); led1 = !led1; } }
注:画圆、椭圆的函数像素不能超过屏幕,否则程序会停止运行。
运行效果:
完整例子:
前面的例子把DrwaRect的参数看错了,应该是Xpos, Ypos, Width, Height,而不是x1,y1,x2,y2这样两个顶点的座标。
修正后的程序: