打印

驱动液晶屏问题

[复制链接]
1030|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拿起书本|  楼主 | 2014-5-14 17:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//ST7920   LCD
#include"stm32f10x_conf.h"
#include"stm32f10x.h"
#include"appinclude.h"

static   void   delay(u16  t)//粗略延时tms  
{
   u16 i;
  while(t--)
    {
      i=12;//可以自己修改的;
      while(i--);
    }
}

void SendByte(u8 Dbyte)
{
     u8 i;
     for(i=0;i<8;i++)
     {
//           LCD_CLKIO(1);

                   if(Dbyte&0x80)   
                                 LCD_DATAIO(0);//数据线拉高

                   else   LCD_DATAIO(1);

           Dbyte=Dbyte<<1;        //左移一位            
           LCD_CLKIO(0);   //时钟线拉高
                   delay(1);
           LCD_CLKIO(1);  //时钟线拉低
                   delay(1);
     }
}

//u8 ReceiveByte(void)
//{
//     u8 i,temp1,temp2;
//     temp1 = 0;
//     temp2 = 0;
//     for(i=0;i<8;i++)
//     {
//           temp1=temp1<<1;
//           LCD_CLKIO(1);
//           LCD_CLKIO(0);        
//           LCD_CLKIO(1);
//           if(READ_DATAIO()) temp1++;
//     }
//     for(i=0;i<8;i++)
//     {
//           temp2=temp2<<1;
//           LCD_CLKIO(1);
//           LCD_CLKIO(0);        
//           LCD_CLKIO(1);
//           if(READ_DATAIO()) temp2++;
//     }
//     return ((0xf0&temp1)+(0x0f&temp2));
//}

//void CheckBusy( void )
//{
//    // do   SendByte(0xfc);         //11111,RW(1),RS(0),0
//   //  while(0x80&ReceiveByte());       //BF(.7)=1 Busy
//}

void Lcd_WriteCmd(u8 Cbyte )
{
     LCD_CS(0);        //片选线拉高
//     CheckBusy();
delay(10);
     SendByte(0xf8);              //11111,RW(0),RS(0),0
delay(100);
     SendByte(0xf0&Cbyte);        //高四位
delay(100);
     SendByte(0xf0&(Cbyte<<4));   //低四位(先执行<<)
delay(100);
     LCD_CS(1);
}

void Lcd_WriteData(u8 Dbyte )
{
     LCD_CS(0);
//     CheckBusy();
delay(10);
     SendByte(0xfa);              //11111,RW(0),RS(1),0
delay(100);
     SendByte(0xf0&Dbyte);        //高四位
delay(100);
     SendByte(0xf0&(Dbyte<<4));   //低四位(先执行<<)
delay(100);
     LCD_CS(1);
}

void Lcd_Init(void)
{

    Lcd_WriteCmd(0x30);        //选择基本指令集           选择8bit数据流
delay(1000);
    Lcd_WriteCmd(0x06);          //           读写时,地址递增
delay(1000);
    Lcd_WriteCmd(0x0c);          //开显示(无游标、不反白)
delay(1000);
    Lcd_WriteCmd(0x01);          //清除显示,并且设定地址指针为00H
delay(1000);

//Lcd_WriteCmd(0xc0);

//delay(1000);
}
//显示中英文
void str_Disp(u8 x,u8 y,u8 *s) //使用自带的字库
{
Lcd_WriteCmd(0x80+y*16+x);  //写地址
delay(1000);
while(*s>0)
    {
  Lcd_WriteData(*s);    //写数据
  delay(1000);
  s++;   
    }
  
}

void   cleardisp()
{
Lcd_WriteCmd(0x30);        //选择基本指令集           选择8bit数据流
delay(100);
       Lcd_WriteCmd(0x01);          //清除显示,并且设定地址指针为00H
delay(100);   
}

刚烧进程序时,运行是正常的,屏点亮,显示字体,但断电再上电之后,屏就不亮了,什么情况呢?
沙发
tianli1980| | 2014-6-3 17:10 | 只看该作者
你的STM32 boot弄对了吗?还有reset,感觉是个低级的错误

使用特权

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

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4195

帖子

31

粉丝