ili9341寄存器0x36介绍
时间: 2024-04-20 09:19:53 浏览: 24
ili9341是一款常用的液晶显示驱动芯片,它具有丰富的功能和寄存器设置。寄存器0x36是ili9341中的一个寄存器,用于设置显示方向。
ili9341的寄存器0x36,也称为MADCTL(Memory Access Control)寄存器,用于控制像素数据在屏幕上的显示方向。该寄存器的位字段可以设置水平和垂直方向的扫描方向、RGB颜色顺序以及行列交换等参数。
具体来说,寄存器0x36的位字段含义如下:
- 位7:MY(垂直翻转),设置为1时,垂直方向上的扫描方向将翻转。
- 位6:MX(水平翻转),设置为1时,水平方向上的扫描方向将翻转。
- 位5:MV(行列交换),设置为1时,行和列的扫描方向将交换。
- 位4:ML(垂直刷新),设置为1时,垂直刷新方向将从右到左。
- 位3:RGB(颜色顺序),设置为1时,颜色顺序将从BGR变为RGB。
- 位2-0:无效位,保留。
通过设置寄存器0x36的不同位字段,可以实现不同的显示方向和颜色顺序。
相关问题
python怎么写ILI9341寄存器地址
ILI9341是一种常用的TFT液晶屏驱动芯片,其寄存器地址可以通过SPI总线来访问。以下是Python代码示例,可以通过SPI总线读写ILI9341的寄存器地址:
```python
import spidev
# 打开SPI总线接口,设备号为0,频率为10MHz
spi = spidev.SpiDev()
spi.open(0, 0)
spi.max_speed_hz = 10000000
# 定义ILI9341的寄存器地址
CMD_SLEEP_OUT = 0x11
CMD_DISPLAY_ON = 0x29
CMD_COL_ADDR_SET = 0x2A
CMD_PAGE_ADDR_SET = 0x2B
CMD_MEM_WRITE = 0x2C
# 发送命令到ILI9341
def send_command(cmd):
spi.xfer([cmd])
# 发送数据到ILI9341
def send_data(data):
spi.xfer([data])
# 设置ILI9341的列地址范围
def set_col_addr(start, end):
send_command(CMD_COL_ADDR_SET)
send_data(start >> 8)
send_data(start & 0xFF)
send_data(end >> 8)
send_data(end & 0xFF)
# 设置ILI9341的行地址范围
def set_page_addr(start, end):
send_command(CMD_PAGE_ADDR_SET)
send_data(start >> 8)
send_data(start & 0xFF)
send_data(end >> 8)
send_data(end & 0xFF)
# 写入像素数据到ILI9341
def write_pixels(pixels):
send_command(CMD_MEM_WRITE)
for pixel in pixels:
send_data(pixel >> 8)
send_data(pixel & 0xFF)
# 关闭SPI总线
spi.close()
```
其中,`CMD_SLEEP_OUT`、`CMD_DISPLAY_ON`、`CMD_COL_ADDR_SET`、`CMD_PAGE_ADDR_SET`、`CMD_MEM_WRITE`分别是ILI9341的寄存器地址。`set_col_addr()`和`set_page_addr()`函数用于设置ILI9341的列地址和行地址范围。`write_pixels()`函数用于写入像素数据到ILI9341。在使用SPI总线操作ILI9341之前,需要先打开SPI总线接口,然后在操作完成后关闭SPI总线。
野火ILI9341驱动芯片的LCD驱动
野火ILI9341驱动芯片的LCD驱动是通过配置液晶屏的相关寄存器来实现的。在初始化过程中,会配置液晶屏的上电过程、显示屏的伽玛参数、分辨率、像素格式等内容。具体的初始化代码如下所示:
```c
void ILI9341_Init(void) {
ILI9341_GPIO_Config(); // 配置IO口
ILI9341_BackLed_Control(ENABLE); // 点亮LCD背光灯
ILI9341_REG_Config(); // 配置液晶屏相关寄存器
ILI9341_GramScan(6); // 设置默认扫描方向
}
```
此外,还可以通过以下代码获取LCD液晶屏的芯片ID:
```c
uint16_t ILI9341_Read_ID(void) {
uint16_t id = 0;
ILI9341_Write_Cmd(0xD3);
ILI9341_Read_Data();
ILI9341_Read_Data();
id = ILI9341_Read_Data();
id <<= 8;
id |= ILI9341_Read_Data();
return id;
}
```
需要注意的是,实际上野火ILI9341驱动芯片的LCD驱动与淘宝商品资料上所写的9325/9328不同。因此,读取ID号时可能无法获取正确的结果。真正的ILI9325驱动芯片(如微雪的3.2寸彩屏)可以从0号寄存器上读取ID号为0x9325。[2]
在写命令时,可以按照以下时序进行操作:
```c
LCD_CS = 0; // 片选选中
LCD_RD = 1; // 禁止读
LCD_DC = 0; // 写命令
DATAOUT(Data); // 输出
LCD_WR = 0; // 写入开始
LCD_WR = 1; // 写入结束
LCD_CS = 1; // 结束片选
```
对于ILI9341驱动芯片的修改后的时序,读时序可能会有所不同。[3]
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)