欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
STC12C5A60S2驅動ST7789的測試代碼
[打印本頁]
作者:
michaelchain
時間:
2021-12-28 12:26
標題:
STC12C5A60S2驅動ST7789的測試代碼
就一個main.c, 幾種顏色切換, 僅用作屏幕好壞判斷, 點亮測試, 在這里發一個備忘
#include "stc12c5a60s2.h"
#include <intrins.h>
#define RED 0XF800 //紅色
#define GREEN 0X07E0 //綠色
#define BLUE 0X001F //藍色
#define WHITE 0XFFFF //白色
#define DATA_H P2
#define DATA_L P0
sbit LCD_CS = P3^2; // -> 9
sbit LCD_CD = P3^4; // -> 11 就是TFT上的LCD_WR引腳
sbit LCD_RESET = P3^6; // -> 15
sbit LCD_MOSI = P1^5; // ->13
sbit LCD_MISO = P1^6; // -> 14
sbit LCD_SCK = P1^7;// -> 10 就是TFT上的LCD_RS引腳
void Delay1ms() //@12.000MHz
{
unsigned char i, j;
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
}
void delay_ms(unsigned int ms)
{
while(ms--)
{
Delay1ms();
}
}
unsigned char SPI_RW(unsigned char byte)
{
unsigned char bit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++) // 輸出8位
{
LCD_SCK=0;
LCD_MOSI=(byte&0x80); // MSB TO MOSI
byte=(byte<<1); // shift next bit to MSB
LCD_SCK=1;
byte|=LCD_MISO; // capture current MISO bit
}
return byte;
}
void LCD_CD_DATA(unsigned char val)
{
LCD_CS=0;
LCD_CD=1;
SPI_RW(val);
LCD_CS=1;
}
void LCD_CD_REG(unsigned char reg)
{
LCD_CS=0;
LCD_CD=0;
SPI_RW(reg);
LCD_CS=1;
}
void LCD_Init()
{
P0=0;
P2=0;
LCD_RESET=0;
delay_ms(10);
LCD_RESET=1;
delay_ms(120);
//---------------------------------------------------------------------------------------------------//
LCD_CD_REG(0x11);
delay_ms(120); //Delay 120ms
//------------------------------display and color format setting--------------------------------//
LCD_CD_REG(0x36);
LCD_CD_DATA(0x00);
LCD_CD_REG(0x3a);
LCD_CD_DATA(0x05);
//--------------------------------ST7789V Frame rate setting----------------------------------//
LCD_CD_REG(0xb2);
LCD_CD_DATA(0x0c);
LCD_CD_DATA(0x0c);
LCD_CD_DATA(0x00);
LCD_CD_DATA(0x33);
LCD_CD_DATA(0x33);
LCD_CD_REG(0xb7);
LCD_CD_DATA(0x35);
//---------------------------------ST7789V Power setting--------------------------------------//
LCD_CD_REG(0xbb);
LCD_CD_DATA(0x28);
LCD_CD_REG(0xc0);
LCD_CD_DATA(0x2c);
LCD_CD_REG(0xc2);
LCD_CD_DATA(0x01);
LCD_CD_REG(0xc3);
LCD_CD_DATA(0x0b);
LCD_CD_REG(0xc4);
LCD_CD_DATA(0x20);
LCD_CD_REG(0xc6);
LCD_CD_DATA(0x0f);
LCD_CD_REG(0xd0);
LCD_CD_DATA(0xa4);
LCD_CD_DATA(0xa1);
//--------------------------------ST7789V gamma setting---------------------------------------//
LCD_CD_REG(0xe0);
LCD_CD_DATA(0xd0);
LCD_CD_DATA(0x01);
LCD_CD_DATA(0x08);
LCD_CD_DATA(0x0f);
LCD_CD_DATA(0x11);
LCD_CD_DATA(0x2a);
LCD_CD_DATA(0x36);
LCD_CD_DATA(0x55);
LCD_CD_DATA(0x44);
LCD_CD_DATA(0x3a);
LCD_CD_DATA(0x0b);
LCD_CD_DATA(0x06);
LCD_CD_DATA(0x11);
LCD_CD_DATA(0x20);
LCD_CD_REG(0xe1);
LCD_CD_DATA(0xd0);
LCD_CD_DATA(0x02);
LCD_CD_DATA(0x07);
LCD_CD_DATA(0x0a);
LCD_CD_DATA(0x0b);
LCD_CD_DATA(0x18);
LCD_CD_DATA(0x34);
LCD_CD_DATA(0x43);
LCD_CD_DATA(0x4a);
LCD_CD_DATA(0x2b);
LCD_CD_DATA(0x1b);
LCD_CD_DATA(0x1c);
LCD_CD_DATA(0x22);
LCD_CD_DATA(0x1f);
LCD_CD_REG(0x29);
LCD_CD_REG(0x2c);
}
void LCD_SetArea(unsigned int stx,unsigned int sty,unsigned int endx,unsigned int endy)
{
LCD_CD_REG(0x2A);
LCD_CD_DATA(stx>>8);
LCD_CD_DATA(stx&0xff);
LCD_CD_DATA(endx>>8);
LCD_CD_DATA(endx&0xff);
LCD_CD_REG(0x2B);
LCD_CD_DATA(sty>>8);
LCD_CD_DATA(sty&0xff);
LCD_CD_DATA(endy>>8);
LCD_CD_DATA(endy&0xff);
}
void LcdWirteColorData(unsigned int color)
{
LCD_CS=0;
LCD_CD=1;
SPI_RW(color>>8);
SPI_RW(color);
LCD_CS=1;
}
void LCD_Clear(unsigned int color)
{
unsigned int i,j;
LCD_SetArea(0,0,239,319);
LCD_CD_REG(0x2C);
for(i=0;i<320;i++)
{
for(j=0;j<240;j++)
{
LcdWirteColorData(color);
}
}
}
void main()
{
delay_ms(100);
// SPI_Init();
LCD_Init();
while(1)
{
LCD_Clear(WHITE);
delay_ms(300);
LCD_Clear(RED);
delay_ms(300);
LCD_Clear(BLUE);
delay_ms(300);
LCD_Clear(GREEN);
delay_ms(300);
}
}
復制代碼
作者:
312439374
時間:
2022-1-11 20:49
能共享下電路嗎?
作者:
lgwd
時間:
2022-1-12 13:08
通常開發LCD硬件都是購買某個廠家的產品。廠家都會提供全套演示程序,包括硬件連接說明、基本的LCD命令和數據的讀寫、基本圖形的繪制程序。單個程序意義不大,因為自己去摸索編制這些,不僅很花功夫且問題多多。一些LCD驅動芯片的初始化程序達到三百多行,自己根據芯片手冊去寫都難以成功!
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1