?? lcd12232.c
字號(hào):
#include <reg52.h>
#include <absacc.h>
#include <intrins.h>
//TG12232E 串行方式測(cè)試程序
//22.1184MHz AT89C52
//V0(第3腳)接電位器,要仔細(xì)調(diào)節(jié)電位器,應(yīng)用中PSB可以直接接地
//第1腳地線,第2腳+5V
//7-14腳空
//17腳+5V
//18腳接地線
sbit bitCS = P3^0; //RS 第4腳
sbit bitSID = P3^1; //RW 第5腳
sbit bitSCLK = P3^2; //E 第6腳
sbit bitPSB = P3^3; //PSB 第15腳
sbit bitRESET = P3^4; //RESET 第16腳
code unsigned char* textlist = "冬冬QQ:3136822 TG12232E測(cè)試 ";
code unsigned char* gb = "TG12232E測(cè)試 冬冬QQ:3136822 ";
//圖片尺寸: 128 * 32
code unsigned char picture1[] =
{
0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xE0,
0xEE,0x7F,0xDF,0xFF,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xFF,0xFF,0xF7,0x00,
0xDF,0xFF,0xBF,0xFF,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xFF,0xFF,0xCC,0x71,
0xBF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xFF,0xFF,0xC1,0xFC,
0x30,0xC1,0xFF,0xFF,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xFF,0xBF,0xC7,0xFF,
0x00,0x00,0x7F,0xFF,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xFF,0x3F,0x9F,0xC7,
0x00,0x00,0x7F,0xFF,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xFF,0x1F,0xBF,0xC4,
0x00,0x00,0x3F,0xFF,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xFE,0x1F,0xB9,0xE4,
0x00,0x07,0x9F,0xFF,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFE,0x1F,0xA9,0xFC,
0x00,0x0F,0xCF,0xFF,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFE,0x1F,0x83,0xC8,
0x00,0x0D,0xEF,0xFF,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFE,0x1F,0x89,0x48,
0x00,0x1E,0x6F,0xFF,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0x1F,0x84,0x48,
0x00,0x36,0x2F,0xFF,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0x9F,0x82,0x10,
0x00,0x37,0x3F,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0x9F,0x01,0xE0,
0x00,0x3F,0xEF,0xFC,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xDF,0x00,0x00,
0x00,0x3F,0xAF,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0x00,0x00,
0x00,0x25,0x5F,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0x00,0x00,
0x00,0x23,0x9F,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0x00,0x00,
0x01,0x1C,0x3F,0xE0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0x00,0x00,
0x01,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xFD,0xFF,0x00,0x00,
0x01,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xFB,0xFF,0x00,0x00,
0x02,0x00,0x7F,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFB,0xFF,0x80,0x00,
0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xF3,0xFF,0x80,0x00,
0x00,0x00,0xFF,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xE7,0xFF,0xC0,0x00,
0x7E,0x01,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xEF,0xFF,0xC0,0x00,
0x1C,0x03,0xFF,0xFC,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xCF,0xFF,0xE0,0x00,
0x00,0x07,0xFF,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x9F,0xFF,0xF0,0x00,
0x38,0x0F,0xF7,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x9F,0xFF,0xF8,0x00,
0x00,0x1F,0xF7,0xFF,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0x3F,0xFF,0xFC,0x00,
0x00,0x3F,0xF6,0x80,0x18,0x00,0x00,0x00,
0x00,0x00,0x00,0x7F,0x3F,0xFF,0xE7,0x00,
0x00,0x5F,0xF6,0xC0,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x7F,0xFF,0xC4,0x80,
0x00,0xBF,0xF7,0x60,0x03,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x7F,0xF7,0xC4,0x60,
0x03,0x3F,0xF3,0x60,0x00,0x80,0x00,0x00
};
//-- 寬度x高度=128x32 --
code unsigned char picture2[] =
{ 0x00,0x00,0x00,0xFF,0x8C,0xFC,0x3F,0xC1,
0x00,0x10,0x00,0x0F,0xFC,0x78,0x00,0x00,
0x00,0x00,0x00,0xFF,0x8C,0xFC,0x7F,0xE1,
0x00,0x00,0x00,0x0F,0xFC,0x3C,0x00,0x00,
0x00,0x00,0x00,0xFF,0x8C,0xFE,0xF0,0xF1,
0x00,0x00,0x00,0x07,0xFD,0xBC,0x00,0x00,
0x00,0x00,0x00,0xFF,0xBC,0xFF,0xE0,0x79,
0x00,0x00,0x00,0x07,0xFD,0xBC,0x00,0x00,
0x00,0x00,0x00,0xFF,0x3C,0xFE,0xE6,0x79,
0x00,0x00,0x00,0x07,0xFD,0xFC,0x00,0x00,
0x00,0x00,0x01,0xFF,0x38,0xFF,0xE6,0x78,
0x00,0x00,0x00,0x07,0xFD,0xFC,0x00,0x00,
0x00,0x00,0x01,0xFF,0x38,0xFE,0xE6,0xF8,
0x00,0x00,0x00,0x07,0xFD,0xFC,0x00,0x00,
0x00,0x00,0x01,0xFF,0x78,0xFE,0xC7,0xF8,
0x00,0x00,0x00,0x07,0xFD,0xFC,0x00,0x00,
0x00,0x00,0x01,0xFE,0x78,0xFF,0x07,0xF8,
0x00,0x00,0x00,0x07,0xFD,0xFC,0x00,0x00,
0x00,0x00,0x01,0xFE,0x78,0xFE,0x07,0xF8,
0x00,0x03,0xFC,0x07,0xFF,0xFC,0x00,0x00,
0x00,0x00,0x01,0xFE,0xFB,0xFE,0x03,0xD8,
0x00,0x00,0xFF,0xC3,0xFF,0xEC,0x00,0x00,
0x00,0x00,0x01,0xFE,0xFB,0xFE,0x03,0xF0,
0x00,0x00,0x7F,0xFF,0xFF,0xEC,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFB,0xFE,0x0D,0xF0,
0x00,0x00,0x00,0x0F,0xFF,0xEC,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFB,0xFE,0x0F,0xC0,
0x00,0x00,0x00,0x03,0xFF,0xEC,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFB,0xFE,0x00,0x00,
0x00,0x00,0x00,0x03,0xFF,0xEC,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFB,0xBE,0x00,0x00,
0x00,0x00,0x00,0x03,0xFF,0xEC,0x00,0x00,
0x00,0x00,0x05,0xFF,0xFB,0xBE,0x00,0x00,
0x00,0x00,0x00,0x03,0xFF,0xEC,0x00,0x00,
0x00,0x00,0x23,0xFF,0xFF,0x7E,0x00,0x00,
0x00,0x00,0x00,0x03,0xFF,0xEC,0x00,0x00,
0x00,0x01,0x21,0xFF,0xFF,0x7E,0x00,0x00,
0x80,0x00,0x00,0x03,0xFF,0xEC,0x00,0x00,
0x00,0x00,0xE1,0xFF,0xFF,0x7E,0x00,0x01,
0x00,0x00,0x00,0x03,0xFF,0xEC,0x00,0x00,
0x00,0x00,0x71,0xFF,0xFF,0x7E,0x00,0x03,
0x00,0x00,0x00,0x03,0xFF,0xEC,0x00,0x00,
0x00,0x00,0xD9,0xFF,0xFF,0x7E,0x00,0x02,
0x00,0x00,0x00,0x03,0xFF,0xEC,0x00,0x00,
0x00,0x01,0x07,0xFF,0xFF,0x7F,0x00,0x01,
0x00,0x00,0x08,0x01,0xFF,0xEC,0x00,0x00,
0x00,0x00,0x03,0xFF,0xFE,0xFF,0x00,0x00,
0x00,0x00,0x08,0x01,0xFF,0xEC,0x00,0x00,
0x00,0x01,0x0F,0xFF,0xFE,0xFF,0x80,0x00,
0x00,0x00,0x18,0x01,0xFF,0xEC,0x00,0x00,
0x00,0x00,0xD9,0xFF,0xFE,0xFF,0x80,0x00,
0x00,0x00,0xFF,0x01,0xFF,0xEC,0x00,0x00,
0x00,0x00,0x61,0xFF,0xFE,0xFF,0x40,0x00,
0x00,0x00,0x7E,0x01,0xFF,0xEC,0x00,0x00,
0x00,0x01,0xA1,0xFB,0xFE,0xFF,0x40,0x00,
0x00,0x00,0x3C,0x01,0xFF,0xEC,0x00,0x00,
0x00,0x00,0x21,0xFB,0xFE,0xFF,0x20,0x01,
0x80,0x00,0x3E,0x01,0xFF,0xEC,0x00,0x00,
0x00,0x00,0x23,0xFB,0xFE,0xFF,0x10,0x00,
0xFE,0x00,0x26,0x01,0xFF,0xEC,0x00,0x00,
0x00,0x00,0x0D,0xFB,0xFE,0xFF,0x08,0x00,
0x00,0x00,0x00,0x03,0xFF,0xEC,0x00,0x00,
0x00,0x00,0x01,0xFB,0xFE,0xFF,0x08,0x00,
0x00,0x00,0x00,0x03,0xFF,0xEC,0x00,0x00
};
//200us子程序
void tg12232e_delay100us()
{
unsigned char i;
for(i=0;i<45;i++) _nop_();
}
//1S子程序
void tg12232e_delay()
{
unsigned int i;
for(i=0;i<10000;i++) tg12232e_delay100us();
}
void lcd_nop(void) //200ns
{
_nop_();
}
void tg12332e_wbyte(unsigned char sendbyte)
{
unsigned char data j=8;
for(;j>0;j--){
sendbyte<<=1; //無論C51怎樣實(shí)現(xiàn)這個(gè)操作,始終會(huì)使CY=sendbyte^7;
bitSID=CY;
lcd_nop();
bitSCLK=1;
lcd_nop();
bitSCLK=0;
}
}
void tg12232e_wrins(unsigned char indata)
{
bitCS = 1;
tg12332e_wbyte(0xf8);
tg12332e_wbyte(indata & 0xf0);
tg12332e_wbyte(indata << 4);
bitCS = 0;
}
void tg12232e_wrdata(unsigned char indata)
{
bitCS = 1;
tg12332e_wbyte(0xfa);
tg12332e_wbyte(indata & 0xf0);
tg12332e_wbyte(indata << 4);
bitCS = 0;
}
//圖形子程序
void tg12232e_tuxing(unsigned char * ppicture)
{
unsigned char ROW,COL,count1,count2;
COL = 0x00;
ROW = 0x00;
for(count2=32;count2>0;count2--){
tg12232e_wrins(0x3e); //EXSET 開圖形顯示,進(jìn)入擴(kuò)展指令模式
tg12232e_wrins(ROW | 0x80);//SETB ACC.7 first write vertical address
tg12232e_wrins(COL | 0x80);//SETB ACC.7 second write horizontal address
tg12232e_wrins(0x3a); //NXSET 開圖形顯示,進(jìn)入基本指令模式
for(count1=8 ;count1>0;count1--){
tg12232e_wrdata(*ppicture);
ppicture ++;
tg12232e_wrdata(*ppicture);
ppicture ++;
}
ROW ++;
}
COL = 0x08;
ROW = 0x00;
for(count2=32;count2>0;count2--){
tg12232e_wrins(0x3e); //EXSET 開圖形顯示,進(jìn)入擴(kuò)展指令模式
tg12232e_wrins(ROW | 0x80);//SETB ACC.7 first write vertical address
tg12232e_wrins(COL | 0x80);//SETB ACC.7 second write horizontal address
tg12232e_wrins(0x3a); //NXSET 開圖形顯示,進(jìn)入基本指令模式
for(count1=8 ;count1>0;count1--){
tg12232e_wrdata(*ppicture);
ppicture ++;
tg12232e_wrdata(*ppicture);
ppicture ++;
}
ROW ++;
}
}
//圖形模式清屏子程序
void tg12232e_clear(unsigned char indata)
{
unsigned char ROW,COL,count1,count2;
ROW = 0x00;
COL = 0x00;
for(count2=32;count2>0;count2--){
tg12232e_wrins(0x3e); //EXSET
tg12232e_wrins(ROW | 0x80);//SETB ACC.7 first write vertical address
tg12232e_wrins(COL | 0x80);//SETB ACC.7 second write horizontal address
tg12232e_wrins(0x3a); //NXSET
for(count1=8;count1>0;count1--){
tg12232e_wrdata(indata);
tg12232e_wrdata(indata);
}
ROW ++;
}
ROW = 0x00;
COL = 0x08;
for(count2=32;count2>0;count2--){
tg12232e_wrins(0x3e); //EXSET
tg12232e_wrins(ROW | 0x80);//SETB ACC.7 first write vertical address
tg12232e_wrins(COL | 0x80);//SETB ACC.7 second write horizontal address
tg12232e_wrins(0x3a); //NXSET
for(count1=8;count1>0;count1--){
tg12232e_wrdata(indata);
tg12232e_wrdata(indata);
}
ROW ++;
}
}
//文本模式下寫漢字&字符子程序
void tg12232e_text(unsigned char *ptext)
{
unsigned char count1;
tg12232e_wrins(0x38);
tg12232e_delay100us();
tg12232e_wrins(0x80);//SET FIRST ROW DDRAM ADDRESS
for(count1=8;count1>0;count1--){
tg12232e_wrdata(*ptext);
ptext++;
tg12232e_wrdata(*ptext);
ptext++;
}
tg12232e_wrins(0x90);//SET SECOND ROW DDRAM ADDRESS
for(count1=8;count1>0;count1--){
tg12232e_wrdata(*ptext);
ptext++;
tg12232e_wrdata(*ptext);
ptext++;
}
tg12232e_wrins(0x88);//SET THIRD ROW DDRAM ADDRESS
for(count1=8;count1>0;count1--){
tg12232e_wrdata(*ptext);
ptext++;
tg12232e_wrdata(*ptext);
ptext++;
}
tg12232e_wrins(0x98);//SET FOURTH ROW DDRAM ADDRESS
for(count1=8;count1>0;count1--){
tg12232e_wrdata(*ptext);
ptext++;
tg12232e_wrdata(*ptext);
ptext++;
}
tg12232e_delay();
}
//文本模式下清屏子程序
void tg12232e_clear_text()
{
unsigned char count1;
tg12232e_wrins(0x38);
tg12232e_delay100us();
tg12232e_wrins(0x80); //SET DDRAM ADDRESS
for(count1=64;count1>0;count1--){
tg12232e_wrdata(0x20);
}
}
//初始化子程序
void tg12232e_initial()
{
unsigned char i;
bitCS = 0;
bitSID = 0;
bitSCLK = 0;
bitPSB = 0;
bitRESET = 0;
tg12232e_delay100us();
tg12232e_delay100us();
tg12232e_delay100us();
tg12232e_delay100us();
tg12232e_delay100us();
bitRESET = 1;
tg12232e_wrins(0x38); //function set DL--8 bit MPU bus interface set
tg12232e_delay100us();
tg12232e_wrins(0x38); //function set RE--basic instruction set
tg12232e_delay100us();
tg12232e_wrins(0x38); //function set x
tg12232e_delay100us();
tg12232e_wrins(0x01); //display clear screen
for(i=0;i<100;i++) tg12232e_delay100us();
tg12232e_wrins(0x06); //entry mode set I/D=1
tg12232e_delay100us();
tg12232e_wrins(0x0c); //display on
tg12232e_delay100us();
}
void main()
{
unsigned char dat,count1;
while(1){
tg12232e_initial();
tg12232e_tuxing(picture2);
tg12232e_delay();
tg12232e_tuxing(picture1);
tg12232e_delay();
tg12232e_clear(0x00);
tg12232e_delay();
tg12232e_wrins(0x38);
tg12232e_delay100us();
tg12232e_wrins(0x80); //SET DDRAM ADDRESS
dat = 0x41;
for(count1=64;count1>0;count1--) tg12232e_wrdata(dat++);
tg12232e_delay();
tg12232e_text(textlist);
tg12232e_delay();
tg12232e_text(gb);
tg12232e_delay();
tg12232e_clear_text();
tg12232e_delay();
tg12232e_clear(0x00);
tg12232e_delay();
tg12232e_clear(0xaa);
tg12232e_delay();
tg12232e_clear(0x55);
tg12232e_delay();
tg12232e_clear(0xff);
tg12232e_delay();
tg12232e_clear(0x00);
tg12232e_delay();
tg12232e_clear(0x80);
tg12232e_delay();
tg12232e_clear(0x00);
tg12232e_delay();
tg12232e_clear(0xff);
tg12232e_delay();
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -