51单片机驱动TFT彩屏,基于ILI9325D驱动芯片的51单片机显示心形图案的程序
时间: 2023-12-23 21:05:58 浏览: 155
51单片机心形程序
本程序基于51单片机和ILI9325D驱动芯片,使用C语言编写,用于驱动TFT彩屏显示心形图案。
以下是程序代码:
```
#include <reg51.h>
#define LCD_DATA P2
sbit TFT_RST = P1^0;
sbit TFT_CS = P1^1;
sbit TFT_RS = P1^2;
sbit TFT_WR = P1^3;
sbit TFT_RD = P1^4;
void delay_ms(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<125;j++);
}
void Write_Cmd(unsigned char cmd)
{
TFT_RS = 0;
TFT_RD = 1;
TFT_CS = 0;
LCD_DATA = cmd;
TFT_WR = 0;
TFT_WR = 1;
TFT_CS = 1;
}
void Write_Data(unsigned char dat)
{
TFT_RS = 1;
TFT_RD = 1;
TFT_CS = 0;
LCD_DATA = dat;
TFT_WR = 0;
TFT_WR = 1;
TFT_CS = 1;
}
void Init_TFT()
{
TFT_RST = 0;
delay_ms(50);
TFT_RST = 1;
delay_ms(50);
Write_Cmd(0x01); //软复位
delay_ms(50);
Write_Cmd(0x11); //睡眠模式退出
delay_ms(50);
Write_Cmd(0x3A); //设置像素数据格式为16位
Write_Data(0x55);
delay_ms(50);
Write_Cmd(0x29); //开显示
delay_ms(50);
}
void Draw_Pixel(unsigned int x, unsigned int y, unsigned int color)
{
Write_Cmd(0x2A); //设置X坐标
Write_Data(x >> 8);
Write_Data(x & 0xFF);
Write_Data((x + 1) >> 8);
Write_Data((x + 1) & 0xFF);
Write_Cmd(0x2B); //设置Y坐标
Write_Data(y >> 8);
Write_Data(y & 0xFF);
Write_Data((y + 1) >> 8);
Write_Data((y + 1) & 0xFF);
Write_Cmd(0x2C); //写数据
Write_Data(color >> 8);
Write_Data(color & 0xFF);
}
void Draw_Heart()
{
unsigned int x, y;
unsigned int color = 0xF800; //红色
for (x = 40; x < 280; x++)
{
for (y = 40; y < 280; y++)
{
if (((x - 160) * (x - 160) + (y - 160) * (y - 160) - 10000) * ((x - 160) * (x - 160) + (y - 160) * (y - 160) - 10000) * ((x - 160) * (x - 160) + (y - 160) * (y - 160) - 10000) - (x - 160) * (x - 160) * (y - 160) * (y - 160) * (y - 160) <= 0)
{
Draw_Pixel(x, y, color);
}
}
}
}
void main()
{
Init_TFT();
Draw_Heart();
while(1);
}
```
程序主要包括以下几个函数:
- `void delay_ms(unsigned int ms)`:延时函数,用于延时指定时间。
- `void Write_Cmd(unsigned char cmd)`:向ILI9325D芯片发送指令。
- `void Write_Data(unsigned char dat)`:向ILI9325D芯片发送数据。
- `void Init_TFT()`:初始化TFT彩屏,设置像素数据格式为16位,开启显示。
- `void Draw_Pixel(unsigned int x, unsigned int y, unsigned int color)`:在指定坐标处画一个像素点,颜色为指定颜色。
- `void Draw_Heart()`:画一个心形图案。
在`main`函数中,首先调用`Init_TFT`函数初始化TFT彩屏,然后调用`Draw_Heart`函数画一个心形图案。
心形图案的绘制采用了数学公式,即(x-160)^2+(y-160)^2-10000)^3-(x-160)^2*(y-160)^3<=0。
程序中,红色的颜色值为0xF800,表示红色为RGB565格式下的颜色值。可以根据需要修改颜色值。
需要注意的是,本程序中的像素坐标是从40开始的,因为ILI9325D芯片的像素起始坐标为(40,40),而不是(0,0),所以需要将坐标偏移40。
以上就是基于51单片机和ILI9325D驱动芯片的TFT彩屏显示心形图案的程序。
阅读全文