找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2378|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机TFT刷屏程序

[复制链接]
跳转到指定楼层
楼主
ID:247853 发表于 2017-11-9 20:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "REG52.H"
#include "lcd_driver.h"

void main(void)
{
        TFT_Init();
        while(1)
        {
                TFT_ClearScreen(BLUE);   
                TFT_ClearScreen(RED);                     
                TFT_ClearScreen(GREEN);
                TFT_ClearScreen(WHITE);
                TFT_ClearScreen(BLACK);
                TFT_ClearScreen(YELLOW);
                TFT_ClearScreen(CYAN);

        }
}
#include "lcd_driver.h"

void Delay(unsigned int dly)
{
    unsigned int i,j;

    for(i=0;i<dly;i++)
            for(j=0;j<255;j++);
}

void Delayms(unsigned int c)   //误差 0us   c*10ms
{
    unsigned char a, b;

        //--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
    for (;c>0;c--)
        {
                for (b=38;b>0;b--)
                {
                        for (a=130;a>0;a--);
                }

        }

}



void WriteComm(unsigned int cmd)
{

        uchar bit8;

        TFT_RS = 0;
        TFT_CS = 0;
                for(bit8=0;bit8<8;bit8++)
        {
                TFT_SCL = 0;
                if((cmd&0x80) == 0x80)
                TFT_SDI = 1;
                else
                TFT_SDI = 0;
                TFT_SCL = 1;
                cmd = (cmd<<1);
        }

                TFT_CS = 1;

}


void WriteData(unsigned int dat)
{
         uchar i,datH,datL,bit8;
         datH = dat >> 8;
         datL = dat & 0xFF;

        
        TFT_RS = 1;
        TFT_CS = 0;

        for(bit8=0;bit8<8;bit8++)
        {
                TFT_SCL = 0;
                if((datH&0x80) == 0x80)
                TFT_SDI = 1;
                else
                TFT_SDI = 0;
                TFT_SCL = 1;
                datH = (datH<<1);
        }
               

                for(bit8=0;bit8<8;bit8++)
        {
                TFT_SCL = 0;
                if((datL&0x80) == 0x80)
                TFT_SDI = 1;
                else
                TFT_SDI = 0;
                TFT_SCL = 1;
                datL = (datL<<1);
        }

                TFT_CS = 1;
}         




void TFT_Init(void)
{
        //CS0=0;
        
        TFT_RST=1;  
        Delay(100);
        
        TFT_RST=0;
        Delay(400);

        TFT_RST=1;
        Delay(400);

        //ILI9163C,FOR LB1.41
//WriteStart();
WriteComm(0xd0);WriteData(0x0003); // set SS and NL bit
WriteComm(0xeb);WriteData(0x0b00); // set 1 line inversion
WriteComm(0xec);WriteData(0x000f); // set GRAM write direction and
WriteComm(0xc7);WriteData(0x030f); // set GRAM write direction and
WriteComm(0x01);WriteData(0x011C); // set SS and NL bit
WriteComm(0x02);WriteData(0x0100); // set 1 line inversion
WriteComm(0x03);WriteData(0x1030); //
WriteComm(0x07);WriteData(0x0000);
WriteComm(0x08);WriteData(0x0808); //
WriteComm(0x0F);WriteData(0x0601); //

WriteComm(0x10);WriteData(0x0A00); //
WriteComm(0x11);WriteData(0x1B41); //
Delay(50);
WriteComm(0x12);WriteData(0x200E); //
WriteComm(0x13);WriteData(0x0020); // Set GVDD 52 30
WriteComm(0x14);WriteData(0x4A5F); // Set VCOMH/VCOML voltage 5f60

WriteComm(0x30);WriteData(0x0000);
WriteComm(0x31);WriteData(0x00DB);
WriteComm(0x32);WriteData(0x0000);
WriteComm(0x33);WriteData(0x0000);
WriteComm(0x34);WriteData(0x00DB);
WriteComm(0x35);WriteData(0x0000);
WriteComm(0x36);WriteData(0x00AF);
WriteComm(0x37);WriteData(0x0000);
WriteComm(0x38);WriteData(0x00DB);
WriteComm(0x39);WriteData(0x0000);

WriteComm(0x50);WriteData(0x0000);
WriteComm(0x51);WriteData(0x0803);
WriteComm(0x52);WriteData(0x0C07);
WriteComm(0x53);WriteData(0x0501);
WriteComm(0x54);WriteData(0x070C);
WriteComm(0x55);WriteData(0x0308);
WriteComm(0x56);WriteData(0x0000);
WriteComm(0x57);WriteData(0x0105);
WriteComm(0x58);WriteData(0x1100);
WriteComm(0x59);WriteData(0x0011);

WriteComm(0x20);WriteData(0x0000); // Set GRAM Address
WriteComm(0x21);WriteData(0x0000); // Set GRAM Address


WriteComm(0x07);WriteData(0x1017);
WriteComm(0x22);
        


}




void TFT_SetWindow(unsigned int xStart,unsigned int yStart,unsigned int xEnd,unsigned int yEnd)
{
        //ILI9163C

WriteComm(0x36);WriteData(xEnd); //HEA7-0
WriteComm(0x37);WriteData(xStart); // HSA7-0
WriteComm(0x38);WriteData(yEnd); // VEA7-0
WriteComm(0x39);WriteData(yStart); // VSA7-0

WriteComm(0x20);WriteData(xStart);
WriteComm(0x21);WriteData(yStart);

WriteComm(0x22);

        
}


void TFT_ClearScreen(unsigned int color)
{
        unsigned int i,j;
        TFT_SetWindow(0,0,TFT_XMAX,TFT_YMAX);
        for(i=0;i<TFT_XMAX+1;i++)
        {
            for(j=0;j<TFT_YMAX+1;j++)
                {
                        WriteData(color);                        
                }
        }         
}
剩余查看附件

刷屏.zip

45.44 KB, 下载次数: 19, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表