新手上路
- 积分
- 38
- 金钱
- 38
- 注册时间
- 2018-7-17
- 在线时间
- 16 小时
|
10金钱
我把rst,ce,dc,din,bl分别接到PF0到PF5,进行下面的配置,但是总是无法显示,反倒背光可以自由调节,求大佬看一下,我就移植了以前的51的代码
static void Nokia_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);
GPIO_InitStructure.GPIO_Pin=rst_pin | ce_pin | dc_pin | din_pin | clk_pin | bl_pin;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init(Nokia_Port, &GPIO_InitStructure);
rst=1;ce=1;dc=1;din=1;clk=1;bl=1;
}
static void delay15us(u32 i) //@12.000MHz
{
while (--i);
}
void delay(u16 i)
{
u16 j;
j=6*i;
while(--j)
delay15us(500);
}
void delayms(unsigned int ii)//1ms延时函数
{
unsigned int i,x;
for (x=0;x<ii;x++)
{
for (i=0;i<100;i++);
}
}
void LCD_WriteByte(u8 date, u8 com)
{
u8 i=0;
if(com==0)
dc=0;
else
dc=1;
ce=0;
for(i=0;i<8;i++)
{
if(date&0x80)
din = 1;
else
din = 0;
date = date << 1;
clk = 0;
clk = 1;
delay15us(15);
printf("%x %d\n",date,din);
}
ce=1;
}
void location(u8 x, u8 y)
{
LCD_WriteByte(0X40|y,0);
LCD_WriteByte(0X80|x,0);
}
void clean(void)
{
u16 i;
ce=0;
location(0,0);
for(i=0;i<504;i++)
LCD_WriteByte(0x00,1);
ce=1;
}
void LCDinit(void)
{
Nokia_GPIO_Config();
ce=1;
delayms(1);
ce=0;
LCD_WriteByte(0x21,0);
LCD_WriteByte(0xc6,0);
LCD_WriteByte(0x13,0);
LCD_WriteByte(0x06,0);
LCD_WriteByte(0x20,0);
LCD_WriteByte(0x0c,0);
}
void photo(u8 date[])
{
u16 i;
ce=0;
location(0,0);
for(i=0;i<504;i++)
LCD_WriteByte(~date[i],1);
ce=1;
}
void speak(u8 date[],u8 n,u8 nor)
{
u16 i;
ce=0;
location(0,n);
for(i=0;i<168;i++)
{
if(nor) LCD_WriteByte(date[i],1);
else LCD_WriteByte(~date[i],1);
}
ce=1;
}
/*--------------------------------------------
LCD_write_byte: 使用SPI接口写数据到LCD
输入参数:dt:写入的数据;
command :写数据/命令选择;
----------------------------------------------*/
void LCD_write_byte(unsigned char dt, unsigned char command)
{
unsigned char i;
ce=0;
dc=command;
for(i=0;i<8;i++)
{
if(dt&0x80)
din=1;
else
din=0;
dt=dt<<1;
clk=0;
clk=1;
}
dc=1;
ce=1;
din=1;
}
|
|