打印

求助 哪位大侠帮看看LCD240128的程序,死活没反应呀

[复制链接]
3384|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zsh198702|  楼主 | 2011-3-30 11:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LCD, IDL, gp, IO, pi
#ifndef _LCD240128_H_
#define _LCD240128_H_

#include"sys.h"

#define WR        PCout(13)
#define RD        PCout(0)
#define CE        PCout(1)
#define CD        PCout(2)
#define RST        PCout(3)

void LCD_GPIO_Init(void);
void LCD_ODATA_CMD(u8 dat,u8 comm);
void LCD_TDATA_CMD(u8 datl,u8 dath,u8 comm);
void LCD_Auto_DATA(u8 dat);
void LCD_Write_CMD(u8 comm);
void LCD_Write_DATA (u8 dat);
void LCD_CHKBusy(u8 autowr);
void LCD_Init(void);
void LCD_CLR(void) ;
#endif

#include"LCD240128.h"

void LCD_GPIO_Init(void)
{
        RCC->APB2ENR |= 1<<2;                        //使能PORTA,PORTC
        RCC->APB2ENR |= 1<<4;

        GPIOA->CRL = 0x33333333;        //设置所用端口为通用推挽输出方式
        GPIOC->CRL &= 0xFFFF0000;
        GPIOC->CRL |= 0x00003333;
        GPIOC->CRH &= 0xFF0FFFFF;
        GPIOC->CRH |= 0x00300000;

        GPIOA->ODR |= 0x00FF;                        //拉高所有端口
        GPIOC->ODR |= 0x200F;
}

/*------------写命令或数据到LCD--------------*/
void LCD_ODATA_CMD(u8 dat,u8 comm)       //写一个数据和一个命令
{
  LCD_Write_DATA;
  LCD_Write_CMD(comm);
}
void LCD_TDATA_CMD(u8 datl,u8 dath,u8 comm)  //写两个数据和一个命令
{
  LCD_Write_DATA(datl);
  LCD_Write_DATA(dath);
  LCD_Write_CMD(comm);
}
void LCD_Auto_DATA(u8 dat)               //自动写数据
{
  LCD_CHKBusy(1);
        CD=0;
  RD=1;
        GPIOA->BRR = 0x00FF;
  GPIOA->ODR|=dat;
  WR=0;
  WR=1;
}

void LCD_Write_CMD(u8 comm)       //写命令
{
  LCD_CHKBusy(0);
  GPIOA->BRR = 0x00FF;
        CD=1;
  RD=1;
        GPIOA->ODR|=comm;
  WR=0;
  WR=1;
}
void LCD_Write_DATA (u8 dat)       //写数据
{
  LCD_CHKBusy(0);  
        CD=0;
  RD=1;
        GPIOA->BRR = 0x00FF;
        GPIOA->ODR|=dat;
  WR=0;
  WR=1;
}
void LCD_CHKBusy(u8 autowr)    //测状态
{
        u8 status;
        GPIOA->ODR|= 0xFF;
        CD = 1;
        WR = 1;
  RD=0;  
  if(autowr)
  {
                do
                {status = GPIOA->IDR;
                }while((status&0x08)==0);
        }
  else
    {
                        do
                        {        status = GPIOA->IDR;
                        }while(((status&0x01)==0)||((status&0x02)==0));
                }
        RD=1;
}
/*------------------初始化-----------------*/
void LCD_Init(void)
{  
        LCD_GPIO_Init();
        CE = 0;
        RST=0;
  RST=1;
        LCD_TDATA_CMD(0x00,0x00,0x24);
  LCD_TDATA_CMD(0x00,0x00,0x42);
        LCD_TDATA_CMD(30,0x00,0x43);                           
        LCD_Write_CMD(0x88);
  LCD_Write_CMD(0x9B);                        
}
/*--------------清RAM------------------*/
void LCD_CLR(void)
{
  u8 i,j;
  LCD_ODATA_CMD(0,0x24);
  LCD_Write_CMD(0xB0);
  for(j=0;j<8;j++)
  {
    for(i=0;i<30;i++)
      LCD_Auto_DATA(0x00);
  }
  LCD_Write_CMD(0xB3);
}






int main(void)
{
   u8 i;
        Stm32_Clock_Init(9);//系统时钟设置
        delay_init(72);                //延时初始化
        LCD_Init();
        for(i=0;i<192;i++)
        {
                LCD_ODATA_CMD(sendbuf[i],0xC0);
        }
        while(1);
}
沙发
lu150| | 2011-3-30 16:46 | 只看该作者
路过 你得自己慢慢找了 坛子上面很少有人帮你看程序的 加油

使用特权

评论回复
板凳
zsh198702|  楼主 | 2011-3-30 19:24 | 只看该作者
谢谢,困难呀

使用特权

评论回复
地板
cdping| | 2011-4-2 10:12 | 只看该作者
看别人的程序,风格不一样好麻烦

使用特权

评论回复
5
cdping| | 2011-4-2 10:12 | 只看该作者
sdgadhgfdh

使用特权

评论回复
6
zsh198702|  楼主 | 2011-4-2 15:04 | 只看该作者
:dizzy:

使用特权

评论回复
7
张文XXX| | 2012-3-26 18:05 | 只看该作者
请问楼主,240128A液晶可以用3.3v来操作吗?如果可以,那是不是电源和背光要接5V呢?:)都困扰我好久了,才入门看手册还不怎么溜。

使用特权

评论回复
8
zhaoyu2005| | 2012-3-27 09:21 | 只看该作者
屏幕的电源和背光电压看datasheet,如果是5V屏用3.3V芯片驱动,建议加电平转换芯片,如果屏幕的输入高电平为大于等于0.6Vcc(如果是0.7Vcc的话,你自己计算),那么也可以不加电平转换芯片,但是有读操作的话,驱动芯片的数据接口最好允许接5V电平,否则可能会损坏驱动芯片。

使用特权

评论回复
9
zhaoyu2005| | 2012-3-27 09:24 | 只看该作者
如果屏幕没反应,先确认对比度的是否正常,最好有交叉测试条件,同样的电路,屏在别的程序下能正常显示,或者你的程序能在别的电路上点亮屏幕,应为屏幕没反应可能是程序的问题也可能是对比度的问题,

使用特权

评论回复
10
益友电子| | 2012-3-27 16:21 | 只看该作者
建议楼主查看一下,在写数据的时候是否片选使能,一般是这个情况会造成!程序太乱,别人都不好看!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

55

帖子

1

粉丝