OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2025|回复: 1

诺基亚5110液晶屏总是显示不了

[复制链接]

2

主题

11

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-7-17
在线时间
16 小时
发表于 2018-8-25 20:07:12 | 显示全部楼层 |阅读模式
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;
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-7-17
在线时间
16 小时
 楼主| 发表于 2018-8-25 21:33:00 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 00:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表