十分钟搞定SSD1963液晶屏驱动
2016-07-05 11:28
495 查看
SSD1963简介
• Display feature− Built-in 1215K bytes frame buffer. Support up to 864 x 480 at 24bpp display
− Support TFT 18/24-bit generic RGB interface panel
− Support 8-bit serial RGB interface
− Hardware rotation of 0, 90, 180, 270 degree
− Hardware display mirroring
− Hardware windowing
− Programmable brightness, contrast and saturation control
− Dynamic Backlight Control (DBC) via PWM signal
• MCU connectivity
− 8/9/16/18/24-bit MCU interface
− Tearing effect signal
• I/O Connectivity
− 4 GPIO pins
• Built-in clock generator
• Deep sleep mode for power saving
• Core supply power (VDDPLL and VDDD): 1.2V±0.1V
• I/O supply power(VDDIO): 1.65V to 3.6V
• LCD interface supply power (VDDLCD): 1.65V to 3.6V
规格书:链接: http://pan.baidu.com/s/1eR8dHUM 密码: 7jih
硬件
此程序所对应的硬件信息如下:1. MCU :LPC1768
2. 液晶屏:4.3寸TFT液晶
3. 驱动方式:8线驱动
SSD1963驱动代码
SSD1963.h#ifndef _SSD1963_H_ #define _SSD1963_H_ #include "lpc17xx.h" #include "Common.h" #define LCD_XSIZE (480) //设置液晶屏的分辨率 长 #define LCD_YSIZE (272) //设置液晶屏的分辨率 宽 #define LCD_CONTROLLER (1963) //设置液晶屏的驱动芯片型号 #define SSD1963_RESET_LOW() LPC_GPIO0->FIOCLR = _BV(6) #define SSD1963_RESET_HIGH() LPC_GPIO0->FIOSET = _BV(6) #define SSD1963_WR_LOW() LPC_GPIO1->FIOCLR = _BV(27) #define SSD1963_WR_HIGH() LPC_GPIO1->FIOSET = _BV(27) #define SSD1963_RD_LOW() LPC_GPIO1->FIOCLR = _BV(28) #define SSD1963_RD_HIGH() LPC_GPIO1->FIOSET = _BV(28) #define SSD1963_CS_LOW() LPC_GPIO0->FIOCLR = _BV(5) #define SSD1963_CS_HIGH() LPC_GPIO0->FIOSET = _BV(5) #define SSD1963_DC_LOW() LPC_GPIO0->FIOCLR = _BV(4) #define SSD1963_DC_HIGH() LPC_GPIO0->FIOSET = _BV(4) #define SSD1963_DATA_IN() LPC_GPIO2->FIODIR0 = 0x00 #define SSD1963_DATA_OUT() LPC_GPIO2->FIODIR0 = 0xff #define SSD1963_Write8BitData(d) SSD1963_CS_LOW(); SSD1963_DC_HIGH(); SSD1963_WR_LOW(); LPC_GPIO2->FIOPIN0 = (d); NOP(); SSD1963_WR_HIGH(); SSD1963_CS_HIGH() #define SSD1963_Read8BitData(d) SSD1963_DATA_IN(); SSD1963_CS_LOW(); SSD1963_DC_HIGH(); SSD1963_RD_LOW(); NOP(); (d) = LPC_GPIO2->FIOPIN0; SSD1963_RD_HIGH(); SSD1963_CS_HIGH(); SSD1963_DATA_OUT() #define SSD1963_WriteCMD(d) SSD1963_CS_LOW(); SSD1963_DC_LOW(); SSD1963_WR_LOW(); LPC_GPIO2->FIOPIN0 = (d); NOP(); SSD1963_WR_HIGH(); SSD1963_CS_HIGH() #define SSD1963_CMD_Nop 0x00 #define SSD1963_CMD_Reset 0x01 #define SSD1963_CMD_GPM 0x0A #define SSD1963_CMD_GAM 0x0B #define SSD1963_CMD_GDM 0x0D #define SSD1963_CMD_EnSM 0x10 #define SSD1963_CMD_ExSM 0x11 #define SSD1963_CMD_EnPM 0x12 #define SSD1963_CMD_EnNM 0x13 #define SSD1963_CMD_ExIM 0x20 #define SSD1963_CMD_EnIM 0x21 #define SSD1963_CMD_SGaC 0x26 #define SSD1963_CMD_SDOff 0x28 #define SSD1963_CMD_SDOn 0x29 #define SSD1963_CMD_SCAdd 0x2A #define SSD1963_CMD_SPAdd 0x2B #define SSD1963_CMD_WMS 0x2C #define SSD1963_CMD_RMS 0x2E #define SSD1963_CMD_SPArea 0x30 #define SSD1963_CMD_SSArea 0x33 #define SSD1963_CMD_STOff 0x34 #define SSD1963_CMD_STOn 0x35 #define SSD1963_CMD_SAM 0x36 #define SSD1963_CMD_SSS 0x37 #define SSD1963_CMD_ExIdM 0x38 #define SSD1963_CMD_EnIdM 0x39 #define SSD1963_CMD_WMC 0x3C #define SSD1963_CMD_RMC 0x3E #define SSD1963_CMD_STS 0x44 #define SSD1963_CMD_GS 0x45 #define SSD1963_CMD_RDDB 0xA1 #define SSD1963_CMD_SLM 0xB0 #define SSD1963_CMD_GLM 0xB1 #define SSD1963_CMD_SHP 0xB4 #define SSD1963_CMD_GHP 0xB5 #define SSD1963_CMD_SVP 0xB6 #define SSD1963_CMD_GVP 0xB7 #define SSD1963_CMD_SGC 0xB8 #define SSD1963_CMD_GGC 0xB9 #define SSD1963_CMD_SGV 0xBA #define SSD1963_CMD_GGS 0xBB #define SSD1963_CMD_SPP 0xBC #define SSD1963_CMD_GPP 0xBD #define SSD1963_CMD_SPC 0xBE #define SSD1963_CMD_GPC 0xBF #define SSD1963_CMD_SLG0 0xC0 #define SSD1963_CMD_GLG0 0xC1 #define SSD1963_CMD_SLG1 0xC2 #define SSD1963_CMD_GLG1 0xC3 #define SSD1963_CMD_SLG2 0xC4 #define SSD1963_CMD_GLG2 0xC5 #define SSD1963_CMD_SLG3 0xC6 #define SSD1963_CMD_GLG3 0xC7 #define SSD1963_CMD_SG0R 0xC8 #define SSD1963_CMD_GG0R 0xC9 #define SSD1963_CMD_SG1R 0xCA #define SSD1963_CMD_GG1R 0xCB #define SSD1963_CMD_SG2R 0xCC #define SSD1963_CMD_GG2R 0xCD #define SSD1963_CMD_SG3R 0xCE #define SSD1963_CMD_GG3R 0xCF #define SSD1963_CMD_SDC 0xD0 #define SSD1963_CMD_GDC 0xD1 #define SSD1963_CMD_SDT 0xD4 #define SSD1963_CMD_GDT 0xD5 #define SSD1963_CMD_StPll 0xE0 #define SSD1963_CMD_SPll 0xE2 #define SSD1963_CMD_GPll 0xE3 #define SSD1963_CMD_GPllS 0xE4 #define SSD1963_CMD_SDS 0xE5 #define SSD1963_CMD_SLF 0xE6 #define SSD1963_CMD_GLF 0xE7 #define SSD1963_CMD_SPDI 0xF0 #define SSD1963_CMD_GPDI 0xF1 void SSD1963_GPIO_Init(void); void SSD1963_Init(void); void SSD1963_SetCursor(uint16_t x, uint16_t y); void SSD1963_SetWindows(uint16_t StartX, uint16_t StartY, uint16_t EndX, uint16_t EndY); uint16_t SSD1963_GetPoint(uint16_t x, uint16_t y); void SSD1963_SetPoint(uint16_t x, uint16_t y, uint32_t color); void SSD1963_WriteColor(uint32 data); void SSD1963_ON(void); void SSD1963_OFF(void); #endif
SSD1963.c
#include "Delay.h" #include "SSD1963.h" #define LCD_HDP (LCD_XSIZE - 1) #define LCD_HT 531 #define LCD_HPS 43 #define LCD_LPS 8 #define LCD_HPW 1 #define LCD_VDP (LCD_YSIZE - 1) #define LCD_VT 288 #define LCD_VPS 12 #define LCD_FPS 4 #define LCD_VPW 10 #define BKCOLOR LCD_BKCOLORINDEX #define COLOR LCD_COLORINDEX #define SdCmd(d) SSD1963_WriteCMD(d) #define SdData(d) SSD1963_Write8BitData(d) uint16 SSD1963_ReadColor(void) { uint8 d; uint16 temp; SSD1963_Read8BitData(d); temp = d >> 3; temp <<= 6; SSD1963_Read8BitData(d); temp |= (d & 0x3f) >> 2; temp <<= 5; SSD1963_Read8BitData(d); temp |= (d & 0x1f) >> 3; return temp; } void SSD1963_WriteColor(uint32 data) { SSD1963_Write8BitData((uint8)(data )); SSD1963_Write8BitData((uint8)(data >> 8)); SSD1963_Write8BitData((uint8)(data >> 16)); } void SSD1963_ON(void) { SSD1963_WriteCMD(SSD1963_CMD_SPC); SSD1963_Write8BitData(0x00); SSD1963_Write8BitData(0x60); SSD1963_Write8BitData(0x01); SSD1963_Write8BitData(0x00); SSD1963_Write8BitData(0x00); SSD1963_Write8BitData(0x00); SSD1963_WriteCMD(SSD1963_CMD_SDOn); } void SSD1963_OFF(void) { SSD1963_WriteCMD(SSD1963_CMD_SPC); SSD1963_Write8BitData(0x00); SSD1963_Write8BitData(0xff); SSD1963_Write8BitData(0x01); SSD1963_Write8BitData(0x00); SSD1963_Write8BitData(0x00); SSD1963_Write8BitData(0x00); SSD1963_WriteCMD(SSD1963_CMD_SDOff); } void SSD1963_GPIO_Init(void) { LPC_GPIO0->FIODIR |= _BV(4) | _BV(5) | _BV(6) ; LPC_GPIO1->FIODIR |= _BV(27) | _BV(28) ; LPC_GPIO2->FIODIR0 = 0xff; } void SSD1963_Init(void) { SSD1963_GPIO_Init(); SSD1963_RESET_LOW(); SSD1963_DATA_OUT(); SSD1963_CS_HIGH(); SSD1963_WR_HIGH(); SSD1963_RD_HIGH(); DelayUS(500); SSD1963_RESET_HIGH(); DelayMS(5); SdCmd(0xe2); SdData(0x3B); SdData(0x02); SdData(0x04); DelayUS(500); SdCmd(0xe0); SdData(0x01); DelayUS(500); SdCmd(0xe0); SdData(0x03); DelayUS(500); SSD1963_WriteCMD(SSD1963_CMD_Reset); DelayUS(500); SdCmd(0xe6); SdData(0x00); SdData(0xb8); SdData(0x50); SSD1963_WriteCMD(SSD1963_CMD_SLM); SSD1963_Write8BitData(0x20); SSD1963_Write8BitData(0x00); SSD1963_Write8BitData(LCD_HDP >> 8); SSD1963_Write8BitData(LCD_HDP & 0xFF); SSD1963_Write8BitData(LCD_VDP >> 8); SSD1963_Write8BitData(LCD_VDP & 0xFF); SSD1963_Write8BitData(0x00); SSD1963_WriteCMD(SSD1963_CMD_SHP); SSD1963_Write8BitData(LCD_HT >> 8); SSD1963_Write8BitData(LCD_HT & 0xFF); SSD1963_Write8BitData(LCD_HPS >> 8); SSD1963_Write8BitData(LCD_HPS & 0xFF); SSD1963_Write8BitData(LCD_HPW); SSD1963_Write8BitData(LCD_LPS >> 8); SSD1963_Write8BitData(LCD_LPS & 0xFF); SSD1963_Write8BitData(0x00); SSD1963_WriteCMD(SSD1963_CMD_SVP); SSD1963_Write8BitData(LCD_VT >> 8); SSD1963_Write8BitData(LCD_VT & 0xFF); SSD1963_Write8BitData(LCD_VPS >> 8); SSD1963_Write8BitData(LCD_VPS & 0xFF); SSD1963_Write8BitData(LCD_VPW); SSD1963_Write8BitData(LCD_FPS >> 8); SSD1963_Write8BitData(LCD_FPS & 0xFF); SdCmd(0xf0); SdData(0x00); SdCmd(0x11); SdCmd(0x13); SdCmd(0x20); SdCmd(0x38); SdCmd(0xB8); SdData(0x0f); SdData(0x01); SdCmd(0xba); SdData(0x01); DelayUS(500); SdCmd(0xba); SdData(0x03); DelayUS(500); SdCmd(0x36); SdData(0x00); DelayUS(500); SSD1963_ON(); } void SSD1963_SetCursor(uint16_t x, uint16_t y) { SSD1963_WriteCMD(SSD1963_CMD_SCAdd); 89bb SSD1963_Write8BitData(x >> 8); SSD1963_Write8BitData(x & 0xFF); SSD1963_Write8BitData(LCD_HDP >> 8); SSD1963_Write8BitData(LCD_HDP & 0xFF); SSD1963_WriteCMD(SSD1963_CMD_SPAdd); SSD1963_Write8BitData(y >> 8); SSD1963_Write8BitData(y & 0xFF); SSD1963_Write8BitData(LCD_VDP >> 8); SSD1963_Write8BitData(LCD_VDP & 0xFF); } void SSD1963_SetWindows(uint16_t StartX, uint16_t StartY, uint16_t EndX, uint16_t EndY) { SSD1963_WriteCMD(SSD1963_CMD_SCAdd); SSD1963_Write8BitData(StartX >> 8); SSD1963_Write8BitData(StartX & 0xFF); SSD1963_Write8BitData(EndX >> 8); SSD1963_Write8BitData(EndX & 0xFF); SSD1963_WriteCMD(SSD1963_CMD_SPAdd); SSD1963_Write8BitData(StartY >> 8); SSD1963_Write8BitData(StartY & 0xFF); SSD1963_Write8BitData(EndY >> 8); SSD1963_Write8BitData(EndY & 0xFF); } void SSD1963_SetPoint(uint16_t x, uint16_t y, uint32_t color) { SSD1963_SetCursor(x, y); SSD1963_WriteCMD(SSD1963_CMD_WMS); SSD1963_WriteColor(color); } uint16_t SSD1963_GetPoint(uint16_t x, uint16_t y) { SSD1963_SetCursor(x, y); SSD1963_WriteCMD(SSD1963_CMD_RMS); return (SSD1963_ReadColor()); }
相关文章推荐
- solr searching 过程解析
- 2016/7/5
- solr indexing 和基本的数据操作
- jsonp 跨域调用
- BeanUtils制作自定义的转换器
- BeanUtils制作自定义的转换器
- ZUI前段框架简介
- Request
- Paginator
- L4,an exciting trip
- 理解solr中的 Analyzer,Tokenizer,Filter
- solr Document,Fields,Schema设计概况
- iOS9 画中画 Picture in Picture
- solr admin UI
- 299. Bulls and Cows
- 进程cpu过高问题排查
- mahout中LDA简介以及示例
- iOS AudioSession详解 Category选择 听筒扬声器切换kAudioSessionCategory_MediaPlayback
- java框架之spring(web环境配置)
- Nhibernate总结(一)查询返回指定字段