原子大哥、各位大神。。小弟买了STM32 mini板。现想用控制ocm12864的液晶,程序烧进去,不显示,求指教啊!!!
程序如下(含主要程序):
#define LCD_RS   Bout(8)
#define LCD_RW    Bout(9)
#define LCD_E PBout(10)
#define LCD_CS   Bout(11)
void send_cmd(u8 cmd)
{
//check_busy();
LCD_RS=0;
LCD_RW=0;
LCD_CS=0;
GPIOB->ODR=((GPIOB->ODR*0XFF00)|cmd);
LCD_E=1;
delay_us(300);
delay_us(300);
LCD_E=0;
delay_us(300);
delay_us(300);
LCD_CS=1;
}
void send_dat(u8 dat)
{
//check_busy();
LCD_RS=1;
LCD_RW=0;
LCD_CS=0;
GPIOB->ODR=((GPIOB->ODR*0XFF00)|dat);
LCD_E=1;
delay_us(300);
LCD_E=0;
delay_us(300);
LCD_CS=1;
LCD_CS=1;
}
void LCD_Init(void)
{
RCC->APB2ENR|=1<<3;
GPIOB->CRL&=0X00000000;
GPIOB->CRL|=0X88888888;
GPIOB->ODR|=1<<0;
GPIOB->ODR|=1<<1;
GPIOB->ODR|=1<<2;
GPIOB->ODR|=1<<3;
GPIOB->ODR|=1<<4;
GPIOB->ODR|=1<<5;
GPIOB->ODR|=1<<6;
GPIOB->ODR|=1<<7;
GPIOB->CRH&=0XFFFF0000;
GPIOB->CRH|=0X00003333;
GPIOB->ODR|=1<<8;
GPIOB->ODR|=1<<9;
GPIOB->ODR|=1<<10;
GPIOB->ODR|=1<<11;
send_cmd(0xE2);
delay_us(1000);
send_cmd(0xA3);
delay_us(1000);
send_cmd(0xA0);
delay_us(1000);
send_cmd(0xC8);
delay_us(1000);
send_cmd(0x24);
delay_us(1000);
send_cmd(0x81);
delay_us(1000);
send_cmd(0x14);
delay_us(1000);
send_cmd(0x2C);
delay_us(1000);
send_cmd(0x2E);
delay_us(1000);
send_cmd(0x2F);
delay_us(1000);
send_cmd(0x40);
delay_us(1000);
send_cmd(0xB0);
delay_us(1000);
send_cmd(0x10);
delay_us(1000);
send_cmd(0x00);
delay_us(1000);
send_cmd(0xAF);
send_cmd(0x81);
send_cmd(0x1b);
}
void Set_Page_Address(unsigned char dat)
{
send_cmd(0xb0|(dat&0x0f));
}
void Set_Colume_Address(unsigned char dat)
{
unsigned char tmp;
tmp=dat>>4;
send_cmd(0x10|tmp);
tmp=0x0f&dat;
send_cmd(tmp);
}
void Display_Grid(u8 data1,u8 data2)
{
u8 i,j;
for(i=0;i<8;i++)
{
Set_Page_Address(i);
Set_Colume_Address(0x00);
for(j=0;j<64;j++)
{
send_dat(data1);
send_dat(data2);
}
}
}
void hengxian(uchar k)
{
u8 i;
for(i=0;i<128;i++)
{
point(k,i);
}
}
void shuxian(uchar n)
{
uint i;
for(i=3;i<5;i++)
{
set_page_address(i);
set_colume_address(n);
write_data(0xff);
}
}
int main(void)
{
Stm32_Clock_Init(9);
delay_init(72);
uart_init(72,9600);
LCD_Init();
while (1)
{
hengxian(2);
hengxian(4);
shuxian(0);
shuxian(127);
for(j=0;j<128;j++)
{
shuxian(j);
delay_us(1000);
}
}
只想显示点东西,没有任何反应,求指教啊!!
|