原创 SED1565 6800时序 12864液晶 驱动

2008-9-20 10:36 5197 5 6 分类: 工程师职场

https://static.assets-stash.eet-china.com/album/old-resources/2008/9/20/49e8c80e-8530-4d1d-98eb-ef0d63b34dac.rar#ifndef _LCD12864_H_
#define _LCD12864_H_
/****------------------------------------------------****/
#include"intrins.h"


#define LCD_Data     P0


sbit A0 = 0x94;
sbit EP = 0x93;
sbit RW = 0x92;
sbit RES =0x90;


#define Busy     0x80


/*
数据线接 P0
RESET P1_0
A0 P1_4
RW P1_2
EP P1_3
*/


//========================================================================
// 描述: 写一个字节的数据至LCD中的控制寄存器当中
// 参数: Command  写入的数据,低八位有效(byte)
//========================================================================
void sendorder(unsigned char Command)

// RES =1;


 A0 = 0;
 RW = 0;


 LCD_Data = Command;
 EP = 0;


 EP = 1;
}
//========================================================================
// 描述: 写一个字节的显示数据至LCD中的显示缓冲RAM当中
// 参数: Data 写入的数据
//========================================================================
void senddata(unsigned char Dat)
{
// RES = 1;


 A0 = 1;
 RW = 0;


 LCD_Data = Dat;
 EP = 0;


 EP = 1;
}



//========================================================================
// 描述: 从LCD中的显示缓冲RAM当中读一个字节的显示数据
//========================================================================
unsigned char Data_Read(void)
{
 unsigned char Read_Data;


 A0 = 1;
 RW = 1;
 EP = 0;


 EP = 1;
 LCD_Data = 0xff;


 EP = 0;


 EP = 1;
 Read_Data = LCD_Data;
//SPLC501在读出数据时需要连续两次读操作方可读出
 return Read_Data;


}


//========================================================
//页设置子函数
//========================================================
void setpage(unsigned char a)
{
a|=0xb0;
sendorder(a);
}


//========================================================
//列设置子函数
//========================================================
void setaddr(unsigned char addr)
{
 unsigned char a,b;
 a=addr;
 a&=0x0f;


 b=addr>>4;
 b|=0x10;


 sendorder(a);
 sendorder(b);
 }


//========================================================
//清屏子函数     fill ROM with 0 or 1
//========================================================
void ClearScreen( unsigned char a)
{
 unsigned char z1,z2;
 if(a!=0) a="0xff";
 for(z1=0;z1<8;z1++)
 {
  setpage(z1);
  setaddr(0);
     for(z2=0;z2<128;z2++)
  {
   senddata(a);
  }
 }


}


/**-------------------------------------------------------------------------**/
//========================================================


//初始化LCD
//========================================================
void InitGraphic(void)
{
LCD_Data =0x00;                  //端口初始化


sendorder(0xaf); //LCD_ON /*显示开关指令 Display ON*/        


sendorder(0x2f); //上电模式


sendorder(0x81); //电量设置模式(屏幕亮度) //0x81-0xff
sendorder(0x30); //指令数据


sendorder(0x27); //内部电压调节电阻设置  //0x20-0x27


sendorder(0xa2); //偏压设置  // 1/9偏压
 
sendorder(0xc8); //Com 扫描方式设置(0xc8反向)


sendorder(0xa0); //Segment方向选择(0xa1反向)


sendorder(0xa4); //全屏变亮(0xa5变亮)


sendorder(0xa6); //正相反相显示控制指令,RAM中数据不变(0xa7)


sendorder(0xac); //静态指示器控制指令(0xad为on)
sendorder(0x00);


sendorder(0x40); //设置显示起始行对应RAM行号


ClearScreen(0);


}


 



/*------------------------------------------------------------------------------------------------------*/


#endif

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户204701 2009-6-3 19:41

ni zhe suan shen me yi si ma
相关推荐阅读
用户139057 2008-11-12 20:16
AD592温度检测设计方案
AD592温度检测设计方案<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  一、系...
我要评论
1
5
关闭 站长推荐上一条 /3 下一条