中级会员
 
- 积分
- 273
- 金钱
- 273
- 注册时间
- 2017-7-19
- 在线时间
- 89 小时
|
1金钱
某宝买了块兼容原子哥开发板的液晶,不过我是单独用C8T6核心板接杜邦线的,用IO口模拟16位8080接口时序。
液晶的D0-D15用整组PB口,其他的控制端用PA的若干个口。PB3、PB4的JTAG功能已经关掉。
但由于PB2是BOOT1引出而且接了个10K电阻,测试过如果D2用这个脚,往GRAM里写0XFFFF(白色)时会卡住,不过写其他颜色就没问题,有点费解。。。
所以D2改用PA12代替,然后写0XFFFF是正常了,但写了一次之后再也不能写任何颜色了,现象不是黑屏就是白屏。这时候奇怪的地方来了,在debug里调出PA、PB的状态窗口,只要点击和液晶控制相关的ODR寄存器的任何一个位,0就白屏1就黑屏。已经确定不是背光问题,因为黑屏时还会微亮。其他颜色代码只要不是0XFFFF都没问题。。。
还有个疑问就是,8080接口不是速度很快吗,为什么刷一次屏要300ms左右??眼睛都能看到刷的过程。有人用SPI都能30帧/s是怎么做到的?
[mw_shl_code=c,true]/***************** LCD 8080接口时序 *****************/
/*------- 写命令时序 ----------*/
void LCD_WR_CMD(unsigned short dat)//一组IO口16位,所以数据是16位的
{
LCD_CS_0;//片选拉低
LCD_RS_0;//RS为0是写命令
LCD_WR_0;//写操作,先拉低以便产生上升沿
LCD_RD_1;
DATAOUT(dat)//往数据口放数据
if((dat&0x0004) == 0x0004) D2out = 1;
else D2out = 0;
LCD_WR_1;
LCD_CS_1;//片选拉高
}
/*------- 写数据时序 --------*/
void LCD_WR_DAT(unsigned short dat)
{
LCD_CS_0;
LCD_RS_1;//RS为1是写数据
LCD_WR_0;//写操作,先拉低以便产生上升沿
LCD_RD_1;
DATAOUT(dat)
if((dat&0x0004) == 0x0004) D2out = 1;
else D2out = 0;
LCD_WR_1;
LCD_CS_1;
}
/*-------- 读数据时序 -----------*/
unsigned short LCD_RD_DAT(void)
{
u16 dat = 0;
Input_mode();//IO口模式设置为输入模式以便接收数据
LCD_CS_0;
LCD_RS_1;//数据
LCD_WR_1;
LCD_RD_0;//读操作,先拉低以便产生上升沿
delay_us(5);
dat = DATAIN//取出IDR里的数据
if(D2in) dat = dat | 0x0004;
else dat = dat & (~0x0004);
LCD_RD_1;
LCD_CS_1;
Output_mode();//IO口模式换回输出模式
return dat;
}[/mw_shl_code]
[mw_shl_code=c,true]
/*------- 清屏函数 -------*/
void LCD_Clear(u16 color)//填充的颜色
{
u32 i;
LCD_WR_CMD(LCD_CMD_COLADDR);//设置列地址
LCD_WR_DAT(0x00); //列开始地址0(0x0000)
LCD_WR_DAT(0x00);
LCD_WR_DAT(0x00); //列结束地址239(0x00ef)
LCD_WR_DAT(0xef);
LCD_WR_CMD(LCD_CMD_ROWADDR);//设置行地址
LCD_WR_DAT(0x00); //行开始地址0(0x0000)
LCD_WR_DAT(0x00);
LCD_WR_DAT(0x01); //行结束地址319(0x013f)
LCD_WR_DAT(0x3f);
LCD_WR_CMD(LCD_CMD_GRAM);//开始写显示数据
for(i=0;i<76800;i++) LCD_WR_DAT(color);//一共240*320=76800个点
}[/mw_shl_code]
|
最佳答案
查看完整内容[请看2#楼]
D2的问题,仿真看D2的波形就知道了
至于背光忽闪忽闪的,检查背光控制脚是不是也顺带被你设置了?
至于速率,8080并口,是你的MCU有硬件并口,才会快,否则是比较慢的。
SPI 30帧,你自己计算SPI时钟就知道了。STM32F1最快18M,那么18M/320/240/8/2, 是最快速度,不可能比这个快。
|