距上一次学习已经过去近一个月的时间,今天终于利用假期时间又和大家一起来学习学习利用CH32V307实现显示功能
要实现这个功能所需要的材料如下:
1.CH32V307V-R1
2.SPI I/F的显示屏(屏幕分辨率没有特殊要求,本测试用的是2。4'' 240*320的竖屏)
3.连接线材若干(USB TYPE-C一条,手机数据线即可,剩下的就是杜邦线了,看实际需求,本实验一共用到12根)
用到的材料是不是很少
以上都准备好了,接下来就是屏幕和demo板的连线,本实验用简单的GPIO控制即可,IO使用为 PE12--SCL/PE13--SDA/PE14--CS/PE15--RESET(大家虽然看到有RS这个信号,千万不要以为要用到这个,其实是不用的),背光的A与K分别连接电源与GND
以上硬件连接完成
解下来就是今天的重点了
1.编写初始化控制函数
2.编写数据控制函数
3.剩下的就和大家使用的大部分有显示屏的实验都差不多了
其实本实验的初始化和数据控制理论可以使用同一个函数(由于我们初始化的控制要求的速度不能太快,所以本实验室为分开独立的控制函数)
void LCD_WR_REG(u8 regval)
{
u8 i;
LCD_CS_H();
LCD_CS_L();
LCD_SCL_L();
delay_us(us);
LCD_SDA_L();
delay_us(us);
LCD_SCL_H();
delay_us(us);
for(i=0;i<8;i++)
{
LCD_SCL_L();
if(regval&0x80)
{
LCD_SDA_H();
}
else
{
LCD_SDA_L();
}
delay_us(us);
regval<<=1;
LCD_SCL_H();
delay_us(us);
}
LCD_SCL_L();
}
void LCD_WR_DATA(u8 data)
{
u8 i;
LCD_CS_L();
LCD_SCL_L();
delay_us(us);
LCD_SDA_H();
delay_us(us);
LCD_SCL_H();
delay_us(us);
for(i=0;i<8;i++)
{
LCD_SCL_L();
if(data&0x80)
{
LCD_SDA_H();
}
else
{
LCD_SDA_L();
}
delay_us(us);
data<<=1;
LCD_SCL_H();
delay_us(us);
}
LCD_SCL_L();
}
void LCD_WR_RGB(u8 data)
{
u8 i;
LCD_CS_L();
LCD_SCL_L();
LCD_SDA_H();
LCD_SCL_H();
for(i=0;i<8;i++)
{
LCD_SCL_L();
if(data&0x80)
{
LCD_SDA_H();
}
else
{
LCD_SDA_L();
}
data<<=1;
LCD_SCL_H();
}
LCD_SCL_L();
}
以上完成我们的实验就完成了一大半了
上图我们可以看出CH0为SCL(时钟信号)CH1为SDA(数据信号)CH2为CS(片选信号)CH3为RESET(复位信号)
根据这个我们就可以直接解析demo板输出是否为我们需要的数据,今天我么就直接使用自带的解析功能进行解析
这样我们的数据是不是一目了然呢
我们的延时是不是也是一目了然哦
这个就是我们送出的红色(0xF800)
这个就是我们demo板送出字符串的地址和数据
今天的实验到这里就结束了
SPILCD
|