现在用ST7565驱动,可怎么也点不亮.程序如下: #include "mega8.h" #include "delay.h" #define uchar unsigned char #define CS1B PORTC.0 #define A0 PORTC.1 #define MRE PORTC.2 #define MWE PORTC.3 #define DataPort PORTD
void WriteCom(uchar ComData); void WriteData(uchar Data); void InitST7565(); main() { DDRB = 0xff; DDRC = 0xff; PORTC = 0xff; DDRD = 0xff; PORTD = 0x00; CS1B = 0; InitST7565(); while(1) { PORTB.0 = ~PORTB.0; delay_ms(100); } }
/*=================================================================== 函数功能:向ST7565写命令 输入参数:命令字 输出参数:无 函数说明: ======================================================================*/ void WriteCom(uchar ComData) { MWE = 1; MRE = 1; A0 = 0; //写命令 delay_us(50); DataPort = ComData; MWE = 0; delay_ms(50); MWE = 1; }
/*=================================================================== 函数功能:向ST7565写数据 输入参数:数据 输出参数:无 函数说明: ======================================================================*/ void WriteData(uchar Data) { A0 = 1; // MRE = 1; MWE = 0; DataPort = Data; }
/*=================================================================== 函数功能:初始化ST7565,结果全屏点亮 输入参数:数据 输出参数:无 函数说明: ======================================================================*/ void InitST7565(void) { WriteCom(0x81); //设置V0电压寄存器 WriteCom(0x30); // //delay_us(50); WriteCom(0xa2); //设置LCD电压偏置 a2--1/9,a3---1/7 //delay_us(50); WriteCom(0xa1); //设置显示数据区,a0正常,a1 COM与SEG互换 //delay_us(50); WriteCom(0xc8); //选择COM扫描方向,《C7为正常方向,》C8为反向方向 //delay_us(50); WriteCom(0x27); //选择内部电阻调节比 //delay_us(50); WriteCom(0x2f); //选择内部电源供给模式 //delay_us(50); WriteCom(0xa6); //设置显示模式(a6正,a7反) //delay_us(50); WriteCom(0xaf); //打开LCD显示 //delay_us(50); WriteCom(0xa5); //全屏点亮 } |