在低端的嵌入式平台上,内存只有几十 KB,没有足够的内存使用 framebuffer,通常直接向寄存器中写入坐标和颜色数据。lcd_reg.inc 提供了基于寄存器实现的 LCD,用它实现不同平台的 LCD 时,只需要提供两个宏即可: set_window_func 设置要写入颜色数据的区域,相对于每次设置坐标而言,可以极大提高工作效率。 write_data_...
我们都知道结构体是顺序排列的,所以LCD_REG的地址是0x6c000000,变量大小是2个字节(16位),所以LCD_RAM的地址就是0x6c000002,刚好就是我们选择A0地址线(HADDR1)拉高的值。 那如果选择其他地址线,这里就需要做一点变动。比如选择A3,我们逆向操作来解决这个问题,A3写数据地址是0x6c000010,也就是LCD_RAM的地址。LCD...
结构体的地址即为LCD_REG的地址。那么LCD_RAM的地址将为LCD_REG地址加2,因为是u16,双字节类型。FSMC...
lcd_reg->LCDSADDR3=(480*16/16);/*开启LCD控制信号*/lcd_reg->LCDCON1 |=(1<<0);*gpbdat |=1;/*输出高电平, 使能背光*//*POWER输出*/lcd_reg->LCDCON5 |=(1<<3);/*根据LCD手册设置LCD控制器,比如VCLK频率*//*分配frambuffer,并把地址告诉LCD控制器,*/register_framebuffer(s3c_lcd);retu...
LCD->lcd_reg = cmd; } 1. 2. 3. 4. 5. ② 发送数据函数: static void lcd_write_data(volatile uint16_t data) { data = data; //make compiler happy LCD->lcd_ram = data; } 1. 2. 3. 4. 5. ③ 读取数据函数: static uint16_t lcd_read_data(void) ...
void LCD_RegWrite(unsigned char Command) { LCD_A0 = 0; //A0 置低,示意进行寄存器操作 LCD_RW = 0; //RW 置低,示意进行写入操作 LCD_EP = 0; //EP 先置低,以便后面产生跳变沿 LCD_CS = 0; //片选 CS 置低 DAT_PORT = Command; //装载数据置总线 ...
vu 16 LCD_REG; // RS=0;vu 16 LCD_RAM; // RS=1;}LCD_TypeDef;//使用NOR/SRAM的 ...
LCD_WR_CMD(LCD_Reg);// 要读取的寄存器 usleep(5);// 延时5us returnLCD_RD_DATA();// 返回读取的数据 } //开始写GRAM void LCD_WriteRAM_Prepare(void) { LCD_WR_CMD(lcddev.wramcmd); } //LCD写GRAM //RGB_Code:颜色值 void LCD_WriteRAM(u16 RGB_Code) ...
LCD Version 1.00 字体(字体家族名称:LCD;字体风格样式名称:Regular),共有290个字符。字符分布范围:基本拉丁文,拉丁文-1补充,拉丁文扩充-A,拉丁文扩充-B,空白修饰字母,希腊文和科普特文,一般标点符号,货币符号,似字母符号,数学运算符号,几何形状,专用区
#define LCDSADDR2 __REG(0X4D000018) //STN/TFT: frame buffer start address 2 #define LCDSADDR3 __REG(0X4D00001C) //STN/TFT: virtual screen address set #define REDLUT __REG(0X4D000020) //STN: red lookup table #define GREENLUT __REG(0X4D000024) //STN: green lookup table ...