OpenEdv-开源电子网

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

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

[复制链接]

15

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2016-3-16
在线时间
30 小时
发表于 2017-8-16 15:10:33 | 显示全部楼层 |阅读模式
1金钱
--------------------------------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);
}

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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-15 04:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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