大家好,我最近在调这块液晶(内置控制芯片为T6963C)。用的是51单片机的IO方式驱动它。P1口接DB0-7,P3口接WR,CE,RD,C/D,RST等信号。程序使用的网上搜的T6963C的驱动,IO口的配置也都按照我的连线设置好了。可就是没有显示。只能看到背光LED点亮,还有复位的时候LCD里有一条线(位置是随机,复位之后就灭了)。 有用过这块液晶的朋友帮忙看看,是屏的问题,还是程序可能有问题。多谢啦!
#include "reg52.h" #include "intrins.h"
#define uchar unsigned char #define uint unsigned int
sbit _WR=P3^6; sbit _RD=P3^4; sbit _CE=P3^3; sbit C_D=P3^7; sbit RST=P3^5; sbit FS=P2^0;
void delay(uint delx) { uint i=0; while(i<delx) { i++; } }
void lcddatawrite(uchar dat) { delay(1000); C_D=0; _WR=0; _nop_();_nop_();_nop_(); P1=dat; _nop_();_nop_();_nop_(); _WR=1; }
void lcdcommand(uchar dat1,uchar dat2,uchar com,uchar num) { if((num==1)|(num==2)) { lcddatawrite(dat1); } if(num==2) { lcddatawrite(dat2); } delay(1000); C_D=1; _WR=0; _nop_();_nop_();_nop_(); P1=com; _nop_();_nop_();_nop_(); _WR=1; }
void initialize(void) { lcdcommand(0,0,0x80,0); lcdcommand(0x00,0x00,0x40,2); lcdcommand(0x1e,0x00,0x41,2); lcdcommand(0x00,0x0f,0x42,2); lcdcommand(0x1e,0x00,0x43,2); }
void clearscr() { uint i=0; lcdcommand(0x00,0x00,0x24,2); for(i=0;i<0x1000;i++) lcdcommand(0x00,0,0xc0,1); }
void displayasc(uchar x,uchar y,uchar *asc) { uint charsit; FS=0; charsit=y*30+x; lcdcommand((uchar)charsit,(uchar)(charsit>>8),0x24,2); while(*asc>0) { lcdcommand(*asc-0x20,0,0xc0,1); asc++; } }
void main() { RST=0; delay(1000); RST=1; _CE=0; initialize();
lcdcommand(0,0,0x9c,0); displayasc(0,0,"This is a LCD demo on 240128."); while(1); } |