请教大神,写的LM6029液晶程序烧写进单片机后,液晶无显示。

2019-08-14 08:11发布

--------------------------------LCD6029.c------------------------------------------------------------
#include "stm32f10x.h"
#include "lcd.h"

void Delay(u16 xus)
{
    u16 i;

        for(;xus>0;xus--)
                for(i=24000; i>0; i--);
}

void Delay1()
{
                u8 i;
                for(i=40; i>0; i--);
}

void LM6029_Init(void)
{
                GPIO_InitTypeDef GPIO_InitStructure;                                                                                                                                                                                                                                            
                RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE,ENABLE);                                                                                                       
       
                GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;                                                                                                                               
                GPIO_InitStructure.GPIO_Pin=( GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);                                                                                                       
                GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;                                                                                                                               
                GPIO_Init(GPIOB,&GPIO_InitStructure);                                                                                                                                                                       
       
                GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;                                                                                                                               
                GPIO_InitStructure.GPIO_Pin=( GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|        GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);               
                GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;                                                                                                                               
                GPIO_Init(GPIOD,&GPIO_InitStructure);
       
                GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
                GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
                GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
                GPIO_Init(GPIOE,&GPIO_InitStructure);
       
                GPIO_ResetBits(GPIOE,GPIO_Pin_0);                                                                                                                                                                                       
}

void write_com(u8 com)                                  //写入命令子函数                                                                                                                                                                                                                                               
{       
                if(com&0x01)
                                GPIO_SetBits(GPIOD,GPIO_Pin_7);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_7);       
                if(com&0x02)
                                GPIO_SetBits(GPIOD,GPIO_Pin_6);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_6);       
                if(com&0x04)
                                GPIO_SetBits(GPIOD,GPIO_Pin_5);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_5);
                if(com&0x08)
                                GPIO_SetBits(GPIOD,GPIO_Pin_4);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_4);       
                if(com&0x10)
                                GPIO_SetBits(GPIOD,GPIO_Pin_3);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_3);       
                if(com&0x20)
                                GPIO_SetBits(GPIOD,GPIO_Pin_2);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_2);       
                if(com&0x40)
                                GPIO_SetBits(GPIOD,GPIO_Pin_1);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_1);
                if(com&0x80)
                                GPIO_SetBits(GPIOD,GPIO_Pin_0);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_0);       
               
                GPIO_ResetBits(GPIOB,GPIO_Pin_7);                                                                        //RS=0       
                GPIO_ResetBits(GPIOB,GPIO_Pin_9);                                                                        //CS=0               
                GPIO_ResetBits(GPIOB,GPIO_Pin_6);                                                                        //WR=0
                Delay1();
                GPIO_SetBits(GPIOB,GPIO_Pin_6);                                                                                //WR=1
                GPIO_SetBits(GPIOB,GPIO_Pin_9);                                                                                //CS=1
}

void write_data(u8 date)                                                                             //写入数据子函数
{
                GPIO_SetBits(GPIOB,GPIO_Pin_7);                                                                                                                                                                                        //RS=1
                if(date&0x01)
                                GPIO_SetBits(GPIOD,GPIO_Pin_7);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_7);       
                if(date&0x02)
                                GPIO_SetBits(GPIOD,GPIO_Pin_6);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_6);       
                if(date&0x04)
                                GPIO_SetBits(GPIOD,GPIO_Pin_5);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_5);
                if(date&0x08)
                                GPIO_SetBits(GPIOD,GPIO_Pin_4);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_4);       
                if(date&0x10)
                                GPIO_SetBits(GPIOD,GPIO_Pin_3);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_3);       
                if(date&0x20)
                                GPIO_SetBits(GPIOD,GPIO_Pin_2);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_2);       
                if(date&0x40)
                                GPIO_SetBits(GPIOD,GPIO_Pin_1);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_1);
                if(date&0x80)
                                GPIO_SetBits(GPIOD,GPIO_Pin_0);       
                else
                                GPIO_ResetBits(GPIOD,GPIO_Pin_0);       
               
                GPIO_SetBits(GPIOB,GPIO_Pin_7);                                                                          //RS=1       
                GPIO_ResetBits(GPIOB,GPIO_Pin_9);                                                                        //CS=0               
                GPIO_ResetBits(GPIOB,GPIO_Pin_6);                                                                        //WR=0
                Delay1();
                GPIO_SetBits(GPIOB,GPIO_Pin_6);                                                                                //WR=1
                GPIO_SetBits(GPIOB,GPIO_Pin_9);                                                                                //CS=1                                                                                                                                                                                               
}

void Initialize(void)
{
       
                GPIO_SetBits(GPIOB,GPIO_Pin_5);                                                                //
                GPIO_ResetBits(GPIOB,GPIO_Pin_8);                                                        //
                Delay(10);
                GPIO_SetBits(GPIOB,GPIO_Pin_8);                                                                //
                Delay(10);
                GPIO_SetBits(GPIOB,GPIO_Pin_9);                                                                //
                GPIO_SetBits(GPIOB,GPIO_Pin_6);                                                                //
       
                write_com(0xa2);                                                                                                                       
                write_com(0xa0);                                                                                                                        //
                write_com(0xc8);                                                                                                                       
                write_com(0x40);                                                                                                               
                write_com(0x2c);                                                                                                                       
                Delay(20);
                write_com(0x2e);                                                                                                                       
                Delay(20);
                write_com(0x2f);                                                                                                                       
                Delay(20);
                write_com(0x25);                                                                                                                       
//                write_com(0x81);                                                                                                               
//                write_com(0x20);                                                                                                                       
                write_com(0xaf);                                                                                                                                                                                                                                       
                write_com(0xb0);                                                                                                                       
                write_com(0x10);                                                                                                                       
                write_com(0x00);                                                                                                               

}

void display(void)
{
                write_data('Z');
}

---------------------------主函数--------------------------------------------------------
#include "stm32f10x.h"
#include "lcd.h"

int main()
{
                LM6029_Init();                                                                                                       
               
                Initialize();
       
                GPIO_SetBits(GPIOE,GPIO_Pin_0);        //ê1PE0êä3ö¸ßμçƽ
                display();
                while(1);
}

0条回答

一周热门 更多>