发新帖我要提问
12
返回列表
打印
[STM32F4]

STM32+ LCD- - 内部温度传感器

[复制链接]
楼主: chenqiang10
手机看帖
扫描二维码
随时随地手机跟帖
21
chenqiang10|  楼主 | 2017-11-25 22:21 | 只看该作者 回帖奖励 |倒序浏览
LCD写入数据
void TFT_WriteData(u16 dat)
{
        TFT->TFT_DATA = dat<<8;
}

void TFT_WriteData_Color(u16 color)
{
        TFT->TFT_DATA = color&0xff00;
        TFT->TFT_DATA = color<<8;
}

使用特权

评论回复
22
向北lm| | 2017-11-25 22:22 | 只看该作者
不错,感谢楼主分享

使用特权

评论回复
23
chenqiang10|  楼主 | 2017-11-27 12:00 | 只看该作者
初始化LCD屏 这个很长,直接使用就行
void TFT_Init(void)
{
        uint16_t i;

        TFT_GPIO_Config();
        TFT_FSMC_Config();

        //************* Start Initial Sequence **********//       
        TFT_WriteCmd(0xCB);  
        TFT_WriteData(0x39);
        TFT_WriteData(0x2C);
        TFT_WriteData(0x00);
        TFT_WriteData(0x34);  
        TFT_WriteData(0x02);   

        TFT_WriteCmd(0xCF);  
        TFT_WriteData (0x00);
        TFT_WriteData (0xa2); //c1
        TFT_WriteData (0Xf0);  //30
         
        TFT_WriteCmd(0xE8);  
        TFT_WriteData (0x84);          //85
        TFT_WriteData (0x11);          //00
        TFT_WriteData (0x7a);          //79
       
       
        TFT_WriteCmd(0xEA);  
        TFT_WriteData (0x66);  //00
        TFT_WriteData (0x00);
       
        TFT_WriteCmd(0xED);  
        TFT_WriteData (0x55);         //64
        TFT_WriteData (0x01);         //03
        TFT_WriteData (0X23);         //12
        TFT_WriteData (0X01);         //81
         
        TFT_WriteCmd(0xF7);  
        TFT_WriteData (0x20);         //20
       
       
        TFT_WriteCmd(0xC0);    //Power control
        TFT_WriteData (0x1c);   //VRH[5:0]         //1c
         
        TFT_WriteCmd(0xC1);    //Power control
        TFT_WriteData (0x13);   //SAP[2:0];BT[3:0]         //13
         
        TFT_WriteCmd(0xC5);    //VCM control
        TFT_WriteData (0x23);
        TFT_WriteData (0x3F);
         
        TFT_WriteCmd(0xC7);    //VCM control2
        TFT_WriteData(0xA5);
       
        TFT_WriteCmd(0xB1);  
        TFT_WriteData (0x00);
        TFT_WriteData (0x17);
       
        TFT_WriteCmd(0x3A);  
        TFT_WriteData (0x55);
       
        TFT_WriteCmd(0xB6);  
        TFT_WriteData (0x0A);
        TFT_WriteData (0xa2);  //a2
        TFT_WriteData (0x27);
        TFT_WriteData (0x00);
         
        TFT_WriteCmd(0x36);    // Memory Access Control
        TFT_WriteData (0x08);           //08        BGR
         
        TFT_WriteCmd(0xF2);    // 3Gamma Function Disable
        TFT_WriteData (0x02);         //00
         
        TFT_WriteCmd(0x26);    //Gamma curve selected
        TFT_WriteData (0x01);
         
        TFT_WriteCmd(0xE0);    //Set Gamma
        TFT_WriteData (0x0F);
        TFT_WriteData (0x14);
        TFT_WriteData (0x13);
        TFT_WriteData (0x0C);
        TFT_WriteData (0x0E);
        TFT_WriteData (0x05);
        TFT_WriteData (0x45);
        TFT_WriteData (0x85);
        TFT_WriteData (0x36);
        TFT_WriteData (0x09);
        TFT_WriteData (0x14);
        TFT_WriteData (0x05);
        TFT_WriteData (0x09);
        TFT_WriteData (0x03);
        TFT_WriteData (0x00);
         
        TFT_WriteCmd(0XE1);    //Set Gamma
        TFT_WriteData (0x00);
        TFT_WriteData (0x24);
        TFT_WriteData (0x26);
        TFT_WriteData (0x03);
        TFT_WriteData (0x0F);
        TFT_WriteData (0x04);
        TFT_WriteData (0x3F);
        TFT_WriteData (0x14);
        TFT_WriteData (0x52);
        TFT_WriteData (0x04);
        TFT_WriteData (0x10);
        TFT_WriteData (0x0E);
        TFT_WriteData (0x38);
        TFT_WriteData (0x39);
        TFT_WriteData (0x0F);

        TFT_WriteCmd(0x2A );
        TFT_WriteData(0x00);
        TFT_WriteData(0x00);
        TFT_WriteData(0x00);
        TFT_WriteData(0xEF);

        TFT_WriteCmd(0x2B );
        TFT_WriteData(0x00);
        TFT_WriteData(0x00);
        TFT_WriteData(0x01);
        TFT_WriteData(0x3F);
         
        TFT_WriteCmd(0x11);    //Exit Sleep
        for(i=50000; i>0; i--);         //延时
        for(i=50000; i>0; i--);
        for(i=50000; i>0; i--);
        for(i=50000; i>0; i--);
        for(i=50000; i>0; i--);
        for(i=50000; i>0; i--);
        TFT_WriteCmd(0x29);    //Display on
}

使用特权

评论回复
24
chenqiang10|  楼主 | 2017-11-27 12:01 | 只看该作者
设置要操作的窗口范围   xStart:窗口起始X坐标  yStart:窗口起始Y坐标  xEnd:窗口结束X坐标  yEnd:窗口结束Y坐标

void TFT_SetWindow(uint16_t xStart, uint16_t yStart, uint16_t xEnd, uint16_t yEnd)
{
        TFT_WriteCmd(0x2A);

    TFT_WriteData(xStart/256);
    TFT_WriteData(xStart%256);
    TFT_WriteData(xEnd/256);
    TFT_WriteData(xEnd%256);

    TFT_WriteCmd(0x2b);
    TFT_WriteData(yStart/256);
    TFT_WriteData(yStart%256);
    TFT_WriteData(yEnd/256);
    TFT_WriteData(yEnd%256);
    TFT_WriteCmd(0x2c);
}

使用特权

评论回复
25
chenqiang10|  楼主 | 2017-11-27 12:03 | 只看该作者
将LCD清屏成相应的颜色
void TFT_ClearScreen(uint16_t color)
{
        uint16_t 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++)
                {
                        TFT_WriteData_Color(color);
                }
        }
}

使用特权

评论回复
26
sopc12| | 2017-11-27 16:53 | 只看该作者
其实我还没看懂,你具体的用途

使用特权

评论回复
27
doniexun| | 2018-1-23 22:18 | 只看该作者
楼主写得很认真,感谢

使用特权

评论回复
28
mintspring| | 2018-1-26 15:46 | 只看该作者
使用内部温度传感器检测温度是不准确的,误差比较大。因此通常是不采用此传感器进行测温。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则