我准备用SPI屏当示波屏幕。
只用五根线加电源、地就可以了。
需要注意的是,我的屏上的输入引脚标着MOS,这不是主出从入么,那么我就没定义这条线,而是定义了屏幕上的MIS,很显然这个是主入从出。
没想到,倒莓的事又一次光顾了我,我加电了好几次,也检查了几次就是刷不成功屏,后来我把管脚从MIS移到了MOS。这才好用。
怎么也没想到屏的厂家能想的这么周到,把主出从入都标的这么明白。怪我多心了,屏幕上的主就是指单片机,而从是屏幕。
管脚定义如下:
而串行输出各函数如下:
void LCD_Writ_Bus(char da) //´®ÐÐÊý¾ÝдÈë
{
bitdata=da;
LCD_SDI=bit7;LCD_SCK=0;LCD_SCK=1;
LCD_SDI=bit6;LCD_SCK=0;LCD_SCK=1;
LCD_SDI=bit5;LCD_SCK=0;LCD_SCK=1;
LCD_SDI=bit4;LCD_SCK=0;LCD_SCK=1;
LCD_SDI=bit3;LCD_SCK=0;LCD_SCK=1;
LCD_SDI=bit2;LCD_SCK=0;LCD_SCK=1;
LCD_SDI=bit1;LCD_SCK=0;LCD_SCK=1;
LCD_SDI=bit0;LCD_SCK=0;LCD_SCK=1;
}
void LCD_WR_DATA8(char da) //·¢ËÍÊý¾Ý-8λ²ÎÊý
{
LCD_DC=1;
LCD_Writ_Bus(da);
}
void LCD_WR_DATA(int da)
{
LCD_DC=1;
LCD_Writ_Bus(da>>8);
LCD_Writ_Bus(da);
}
void LCD_WR_REG(char da)
{
LCD_DC=0;
LCD_Writ_Bus(da);
}
刷屏函数如下:
void LCD_Clear(u16 Color)
{
u16 i,j;
Address_set(0,0,LCD_W-1,LCD_H-1);
for(i=0;i<LCD_W;i++)
{
for (j=0;j<LCD_H;j++)
{
LCD_WR_DATA(Color);
}
}
}
主函数如下:
void main(void)
{
unsigned char i;
GPIO_Init();
Lcd_Init();
LCD_Clear(BLUE); //ÇåÆÁ
while(1)
{
for(i=0;i<2;i++)
{
//LEDS=(1<<i);
P00=1;
delay();
P00=0;
delay();
}
ADC_Test();
}
}
可见我就刷一个蓝屏:
以下是仿真截图:
|
用硬件的SPI呀,速度很快的,IO模拟的SPI太慢了。