zyh_126

stm32f103的240*128液晶显示

0
阅读(4462)

240*128点阵液晶采用的是华凌光电的WG240128T5,采用的是RA8806控制器。引脚定义如图:

和其他的192*64的液晶接口没有多大的区别。

在和stm32f103的连接上面可以采取GPIO和总线的连接方式,总线的连接方式比GPIO访问速度快。我选择了总线。接口电路如下:

八位数据线和STM32的D0..D7连接,片选LCD_CS连接FMSC_NE1地址为0x60000000,控制字和数据字C/D和地址A22连接,因此写控制字的地址为0x68000000,写数据位0x60000000。驱动程序初始化如下:

void STM3210E_LCD_Init(void)
{ 
        //初始化设置
        LCD_WriteReg(RA8806REG_WLCR,0x0c);//0x00//设置电源为正常模式,所有功能都有效,写入字符模式,正常显示;DISP_OFF高有效
        delayms(2000);
        LCD_WriteReg(RA8806REG_MISC,0x04);//0x01//设置BUSY信号高有效;
        //LCD_WriteReg(RA8806REG_ADSR,0x80);//0x03
        LCD_WriteReg(RA8806REG_ITCR,107);//0x90//设置数据移位时钟参数 
        LCD_WriteReg(RA8806REG_WCCR,0x40);//0x10//设置文本处理方式 光标开,闪烁,跟随字符变化
        LCD_WriteReg(RA8806REG_CHWI,0xf0);//0x11//设置文本处理方式行间距=1像素;光标为块状形式        
        LCD_WriteReg(RA8806REG_MAMR,0x11);//0x12//设置RAM(显示)工作模式,两个显示区域逻辑或合成显示
        LCD_WriteReg(RA8806REG_FNCR,0x80);//0xf0//设置字库,选择GB汉字库和ASCII块0字符库
        LCD_WriteReg(RA8806REG_FVHT,0x00);//0xf1//设置字符原大尺寸
        LCD_WriteReg(RA8806REG_BTMR,0x33);//0x80//设置闪烁时间(默认)     
        LCD_WriteReg(RA8806REG_INTR,0x30);//0x0f  
        //模块显示窗口设置
        LCD_WriteReg(RA8806REG_DWWR,0x1d);//0x21//显示窗口右边界位置(水平最大字符数,取值为240)
        LCD_WriteReg(RA8806REG_DWHR,0x7f);//0x31//显示窗口下边界位置(垂直最大行,取值为128)
         //模块工作显示窗口设置
        LCD_WriteReg(RA8806REG_AWLR,0x00);//0x40//工作窗口左边界位置(第一字符,取值为1) 
        LCD_WriteReg(RA8806REG_AWRR,0x1d);//0x20//工作窗口右边界位置(水平最大字符数,取值为240)      
        LCD_WriteReg(RA8806REG_AWTR,0x00);//0x50//工作窗口上边界位置(第一行,取值为1)        
        LCD_WriteReg(RA8806REG_AWBR,0x7f);//0x30//工作窗口下边界位置(垂直最大行,取值为128)
        //光标设置
        LCD_WriteReg(RA8806REG_CURX,0x00);//0x60//设置光标位置X坐标,使用初始值        
        //LCD_WriteReg(RA8806REG_BGSG,0x00);//0x61
        //LCD_WriteReg(RA8806REG_EDSG,0x1d);//0x62       
        LCD_WriteReg(RA8806REG_CURY,0x00);//0x70//设置光标位置Y坐标,使用初始值       
        LCD_WriteReg(RA8806REG_BGCM,0x00);//0x71       
        LCD_WriteReg(RA8806REG_EDCM,0x7f);//0x72           
        //LCD_WriteReg(RA8806REG_KSCR1,0x07);//0xa0
        //LCD_WriteReg(RA8806REG_KSCR2,0x00);//0xa1
        //LCD_WriteReg(RA8806REG_KSDR0,0x00);//0xa2        
        //LCD_WriteReg(RA8806REG_KSDR1,0x00);//0xa3        
        //LCD_WriteReg(RA8806REG_KSDR2,0x00);//0xa4        
        //LCD_WriteReg(RA8806REG_MWCR,0x00);//0xb0        
        //LCD_WriteReg(RA8806REG_MRCR,0x00);//0xb1        
        //LCD_WriteReg(RA8806REG_TPCR1,0x00);//0xc0        
        //LCD_WriteReg(RA8806REG_TPXR,0x00);//0xc1        
        //LCD_WriteReg(RA8806REG_TPYR,0x00);//0xc2
        //LCD_WriteReg(RA8806REG_TPZR,0x00);//0xc3       
        //LCD_WriteReg(RA8806REG_TPCR2,0x00);//0xc4        
        //LCD_WriteReg(RA8806REG_PCR,0x80);//0xd0        
        //LCD_WriteReg(RA8806REG_PDCR,0x10);//0xd1        
        //LCD_WriteReg(RA8806REG_PNTR,0x00);//0xe0
        LCD_WriteReg(0x00,0x34);  // 设置写入数据模式为图形模式   
}