/************************************************************************************************** * @fn HalLcd_HW_Init * * @brief Initilize HW LCD Driver. * * @param None * * @return None **************************************************************************************************/ void HalLcd_HW_Init(void) { /* Initialize LCD IO lines */ halLcd_ConfigIO(); /* Initialize SPI */ halLcd_ConfigSPI(); HalLcd_HW_Control(0xaf); //开显示 HalLcd_HW_Control(0x40); //显示起始行为0 HalLcd_HW_Control(0xa0); //RAM列地址与列驱动同顺序 HalLcd_HW_Control(0xa6); //正向显示 HalLcd_HW_Control(0xa4); //显示全亮功能关闭 HalLcd_HW_Control(0xa2); //LCD偏压比1/9 HalLcd_HW_Control(0xc8); //行驱动方向为反向 HalLcd_HW_Control(0x2f); //启用内部LCD驱动电源 HalLcd_HW_Control(0xf8); //升压电路设置指令代码 HalLcd_HW_Control(0x00); //倍压设置为4X HalLcd_HW_SetContrast(0x68);//set contrast 对比度 /* Clear the display */ HalLcd_HW_Clear(); }
/* 作用 设置LCD 文本显示的其实行和列 参数1 line,范围:0~7,即能够显示的行为1~8行,也就是lcd手册里提到的page 参数2 col,范围:0~127,即lcd的总列数,显示的起始位置可以设置到每一列 */ void set_ddram_line_col(uint8 line,uint8 col) { uint8 page,coll,coll_l,coll_h; page = line; coll = col; coll_h = coll>>4; coll_l = coll&0x0f; HalLcd_HW_Control(0xB0+page); HalLcd_HW_WaitUs(15); // 15 us HalLcd_HW_Control(0x10+coll_h); HalLcd_HW_WaitUs(15); // 15 us HalLcd_HW_Control(0x00+coll_l); HalLcd_HW_WaitUs(15); // 15 us }
/************************************************************************************************** * @fn HalLcd_HW_SetContrast * * @brief Set display contrast * * @param uint8 value - contrast value * * @return none **************************************************************************************************/ void HalLcd_HW_SetContrast(uint8 value) { HalLcd_HW_Control(CONTRAST_CTRL_REGISTER); HalLcd_HW_Control(value); }
/* 30/8/2010 ++ by feibit */ void SET_DDRAM_ADDR(uint8 x, uint8 y) { HalLcd_HW_Control(y|0xb0); HalLcd_HW_Control((x >> 4)|0x10); HalLcd_HW_Control(x&0x0f); }
/************************************************************************************************** 初始化,已根据lcd12864手册更改 **************************************************************************************************/ void HalLcd_HW_Init(void) { /* Initialize LCD IO lines */ halLcd_ConfigIO(); /* Initialize SPI */ halLcd_ConfigSPI(); HalLcd_HW_Control(0xe2); //软复位 HalLcd_HW_WaitUs(15000); // 15 us HalLcd_HW_Control(0x2c); //升压步聚1 HalLcd_HW_WaitUs(15); // 15 us HalLcd_HW_Control(0x2e); //升压步聚2 HalLcd_HW_WaitUs(15); // 15 us HalLcd_HW_Control(0x2f); //升压步聚3 HalLcd_HW_WaitUs(150); // 15 us HalLcd_HW_Control(0x23); //粗调对比度,可设置范围0x20~0x27 HalLcd_HW_WaitUs(15); // 15 us HalLcd_HW_Control(0x81); //微调对比度 HalLcd_HW_WaitUs(15); // 15 us HalLcd_HW_Control(0x28); //0x1a,微调对比度的值,可设置范围0x00~0x3f HalLcd_HW_WaitUs(15); // 15 us HalLcd_HW_Control(0xa2); // 1/9偏压比(bias) HalLcd_HW_WaitUs(15); // 15 us HalLcd_HW_Control(0xa0); //行扫描顺序:从上到下 HalLcd_HW_WaitUs(15); // 15 us HalLcd_HW_Control(0xc8); //列扫描顺序:从左到右 HalLcd_HW_WaitUs(15); // 15 us HalLcd_HW_Control(0x40); //起始行:第一行开始 HalLcd_HW_WaitUs(15); // 15 us HalLcd_HW_Control(0xaf); //打开显示 HalLcd_HW_WaitUs(15); // 15 us HalLcd_HW_Control(0xa4); HalLcd_HW_WaitUs(15); // 15 us HalLcd_HW_Clear(); //display_string_5x7(1,1,"abcdefghijklmnopqrstuvwxyz"); //display_string_5x7(8,1,"uvwxyz0123456789"); //while(1); }