第一张图是 LCD 手册的时序控制 其中WRX是做为 data busB0-B7 的时钟线 例程上控制 WRX 的代码如下 : .h #define LCD_WR_SET GPIOC->BSRR=1<<7 //写数据 PC7-WRX CLK PIN #define LCD_WR_CLR GPIOC->BRR=1<<7 //写数据 PC7 //PB0~15,作为数据线 #define DATAOUT(x) GPIOB->ODR=x; //数据输出 .c //写寄存器函数 void LCD_WR_REG(u8 data) { LCD_RS_CLR;//写地址 LCD_CS_CLR; DATAOUT(data); LCD_WR_CLR; LCD_WR_SET; LCD_CS_SET; } 但用示波器去看并列输出的B0 ~ B7 ( 8bit ) B0 > 示波器绿色 B7 > 示波器粉色 我看1 bit 来对齐CLK (黄色)检查, 但没有在正确的时序上完成一个 high lowclock 如何加快WRX 的时钟线在1 个bit输出时完成一个 high low ? 目前时序不对, LCD 都无法工作…. |
LCD æåçæ¶åºè¦æ±
示波å¨
数据要移位 先置数据位 然后给一个时钟上升沿跳变 一位数据就写成功了 依次移位16次 完成16位数据的读写
void Write_Value(uint8 Command,uint8 Value)
{
uint8 i;
uint16 Buf;
Buf = ((Command | Write_CMD)<<8) + Value; //数据写入缓冲
for(i=0;i<16;i++)
{
SPI3_DIN.PutVal((Buf >>(15-i)) & 0x0001);//数据位置位
delay_us(1);
SPI3_CLK.SetVal();//拉高时钟
delay_us(1);
SPI3_CLK.ClrVal();//拉低时钟
delay_us(1);
}
SPI3_CLK.ClrVal();
delay_us(1);
}
你这是刚从51过来的吧,或者你这程序是51的程序。