熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2018-4-13 17:40
正文摘要:求教。。。。 已知屏的引腳定義,和驅(qū)動(dòng)代碼,我自己搗鼓好久都搞不定,求大佬指教!!!謝謝 屏的驅(qū)動(dòng)IC是 ST7735S 這是屏自帶的代碼: WriteComm(0X11); //Sleep Out Delay(120); //D ... |
|
本帖最后由 QIANLILI 于 2018-4-14 10:35 編輯 TFT液晶屏的驅(qū)動(dòng) 建議最好用低壓的單片機(jī) 如果要用C51的最好用STC8F系列。寬電壓。目前性價(jià)比也不錯(cuò)。另外,樓主貼出的只是液晶屏的初始化程序。 你還缺完整顯示代碼。 接線的話DB0-DB7可以接P1端口的P1.0-P1.7 另外 CS RST RS WRB RDB 也可以接P2端口的P2.0-P2.5 之后在程序中分別定義好。 液晶的背光電源和液晶的電源,電壓不能超過標(biāo)注電壓。一般不能大于3.7伏。 雖然我也有試過接5伏的 但是燒壞的概率很大。 所以盡量選用寬電壓單片機(jī)。 那樣單片機(jī)的電壓可以和液晶的一樣,用穩(wěn)壓后3.3伏的電壓就可。看樓主的提問,感覺樓主對單片機(jī)都不是很了解。 那么對液晶的驅(qū)動(dòng)原理也應(yīng)該不了解。 確實(shí)需要先把單片機(jī)的其它功能和例程都玩的很熟練了,才能驅(qū)動(dòng)好液晶模塊。 以下程序是驅(qū)動(dòng)8位數(shù)據(jù)接口的液晶刷屏程序。你這個(gè)也是8位數(shù)據(jù)的。但是要套用,程序需要改動(dòng)。液晶初始化代碼換成你要用的液晶的。還有你那個(gè)液晶的WriteData用的是8位。我這程序用的是16位。需要改一下。 因?yàn)槲覜]有你這種液晶屏。無法幫你修改程序及驗(yàn)證測試。你可以自己看一下代碼。等你能看懂每一行的意思。那么你就能驅(qū)動(dòng)好液晶屏了。 #define u8 unsigned char #define u16 unsigned int #define DBH P1 sbit CS = P3^2; sbit RS = P3^3; sbit RD = P3^4; sbit WR = P3^5; sbit RST = P3^6; #define RED 0xF800 #define GREEN 0x07E0 #define BLUE 0x001F #define WHITE 0xFFFF #define BLACK 0x0000 void Delay1ms() [url=]//@12.000MHz[/url] { unsigned char i, j; i = 16; j = 147; do { while (--j); } while (--i); } void delayms(unsigned int dly) { unsigned int i; for(i=0;i<dly;i++) { Delay1ms(); } } void WriteComm(u8 i) { CS=0; RD=1; RS=0; DBH=i; WR=0; WR=1; CS=1; } void WriteData(u16 color) { CS=0; RD=1; RS=1; DBH=color>>8; WR=0; WR=1; DBH=color; WR=0; WR=1; CS=1; } void LCD_Init(void) { RST = 0; delayms(100); RST = 1; delayms(100); WriteComm(0x2C); delayms(10); WriteComm(0x02); WriteComm(0x00); WriteComm(0x28); WriteComm(0x01); WriteComm(0x45); //RAM Skip AREA set WriteComm(0x00); WriteComm(0x53); WriteComm(0x00); WriteComm(0x10); WriteComm(0x03); WriteComm(0x30); WriteComm(0x1d); WriteComm(0x32); WriteComm(0x0e); WriteComm(0x40); WriteComm(0x80); WriteComm(0x42); //Y ADDRESS WriteComm(0x02); WriteComm(130); WriteComm(0x43); //X ADDRESS WriteComm(0x04); WriteComm(130); WriteComm(0x34); WriteComm(0x8d); WriteComm(0x2a); WriteComm(0x42); WriteComm(0x55); WriteComm(0x00); WriteComm(0x56); WriteComm(0x00); WriteComm(0x57); WriteComm(0x9f); WriteComm(0x51); } void SETWINDOWS(u16 Xstart,u16 Xend,u16 Ystart,u16 Yend) { WriteComm(0x42); WriteComm(Ystart); WriteComm(Yend); WriteComm(0x43); WriteComm(Xstart); WriteComm(Xend); } void DispColor(u16 color) { u16 i,j; SETWINDOWS(0,130-1,0,130-1); CS=0; RD=1; RS=1; for(i=0;i<130;i++) { for(j=0;j<130;j++) { DBH=color>>8; WR=0; WR=1; DBH=color; WR=0; WR=1; } } CS=1; } void main(void) { LCD_Init(); DispColor(0xFFFF); while(1) { DispColor(0xF800); delayms(2000); DispColor(0x07C0); delayms(2000); DispColor(0x003F); delayms(2000); } } |
| 說明你還未掌握單片機(jī)的工作原理,先補(bǔ)補(bǔ)課吧。 |
Powered by 單片機(jī)教程網(wǎng)