⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 splc501.c

📁 基于Mega16的SPLC501液晶的驱动程序
💻 C
字号:
#include <iom16v.h> 

#define  P_IO_Data_Data     PORTB 
#define  P_IO_Control_Data  PORTD 
#define  C_RST_Pin     0x10 
#define  C_AOP_Pin     0x20  
#define  C_EP_Pin      0x80 
#define  C_RWP_Pin     0x40 


//======================================================== 
//字模 
//======================================================= 
char s1[]={
/*--  文字1:  S1  --*/ 
0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字2:  放  --*/ 
0x10,0x10,0x1F,0x92,0x72,0x13,0x11,0x02,0x1C,0xF3,0x50,0x10,0x11,0x1E,0x10,0x00,
0x02,0x0C,0xF0,0x02,0x01,0xFE,0x00,0x02,0x04,0x08,0xD0,0x70,0x8C,0x06,0x04,0x00,
/*--  文字3:  大  --*/ 
0x04,0x04,0x04,0x04,0x04,0x04,0x05,0xFE,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
0x00,0x01,0x02,0x04,0x08,0x30,0xC0,0x00,0x80,0x60,0x10,0x0C,0x06,0x03,0x02,0x00,
/*--  文字4:  器  --*/ 
0x02,0x02,0xF2,0x92,0x92,0x93,0xF3,0x0E,0x03,0xF3,0x92,0x9A,0x96,0xF2,0x00,0x00,
0x40,0x40,0x7E,0xA2,0xA2,0x22,0x3E,0x00,0x3E,0x22,0xA2,0xA2,0x7E,0x60,0x40,0x00,
/*--  文字5:  增  --*/ 
0x08,0x08,0xFF,0x08,0x08,0x00,0x9F,0x51,0x75,0x13,0x1F,0x33,0xD5,0x51,0x1F,0x00,
0x10,0x18,0xF0,0x20,0x20,0x00,0x00,0x7F,0x52,0x52,0x52,0x52,0x52,0x7F,0x00,0x00,
/*--  文字6:  益  --*/ 
0x00,0x08,0x09,0x49,0x2A,0x1C,0x08,0x08,0x18,0x28,0xCC,0x4A,0x09,0x09,0x00,0x00,
0x82,0x82,0x02,0x7E,0x42,0x42,0x7E,0x42,0x42,0x7E,0x42,0x42,0x7E,0x82,0x02,0x00
};\
char s2[]={
/*--  文字1:  S2  --*/ 
0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0x20,0x00,0x00,0x00,
0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x18,0x08,0x00,
/*--  文字2:  滤  --*/ 
0x08,0x04,0x81,0x66,0x00,0x1F,0x12,0x12,0xFF,0x54,0x54,0x54,0x55,0x18,0x10,0x00,
0x20,0x3E,0xC2,0x04,0x18,0xEC,0x00,0x1C,0x82,0xA2,0x92,0x82,0x8E,0x10,0x0C,0x00,
/*--  文字3:  波 --*/ 
0x08,0x06,0x80,0x67,0x00,0x1F,0x11,0x11,0x11,0xFF,0x11,0x11,0x11,0x18,0x10,0x00,
0x20,0x20,0xFF,0x02,0x0C,0xF1,0x01,0x82,0x64,0x18,0x18,0x64,0x86,0x03,0x02,0x00,
/*--  文字4:  通 --*/ 
0x02,0x82,0x63,0x00,0x00,0x4F,0x4A,0x4A,0x6A,0x5F,0x5A,0x6A,0x4F,0x00,0x00,0x00,
0x02,0x04,0xF8,0x04,0x02,0xFA,0x42,0x42,0x42,0xFA,0x52,0x4A,0xF2,0x02,0x02,0x00,
/*--  文字5:  带  --*/ 
0x01,0x26,0x24,0x24,0xFC,0x24,0x24,0xFF,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0x00,
0x00,0x00,0x00,0xFC,0x80,0x80,0x80,0xFF,0x80,0x88,0x84,0xF8,0x00,0x00,0x00,0x00,
};
char s3[]={
/*--  文字1:  S3  --*/ 
0x00,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x00,0x00,
0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
/*--  文字2: 截  --*/ 
0x08,0x29,0x2F,0x29,0xFD,0x2B,0x29,0x29,0x29,0x08,0xFF,0x08,0x29,0x18,0x08,0x00,
0x40,0x80,0xFF,0x52,0x52,0xFE,0x52,0x52,0x02,0x04,0x88,0x78,0xCC,0x82,0x07,0x00,
/*--  文字3: 止 --*/ 
0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0xFF,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,
/*--  文字4: 频 --*/ 
0x04,0x3C,0x04,0x04,0xFD,0x24,0x24,0x00,0x4F,0x58,0x6B,0x48,0x48,0x4F,0x40,0x00,
0x22,0xC2,0x04,0x08,0xD0,0x20,0xC2,0x02,0xE4,0x18,0xE0,0x10,0x08,0xE4,0x06,0x00,
/*--  文字5: 率  --*/ 
0x00,0x30,0x28,0x25,0x20,0x26,0xAC,0x75,0x26,0x24,0x28,0x25,0x28,0x20,0x20,0x00,
0x10,0x50,0x90,0x10,0x10,0x50,0xD0,0x7F,0x50,0xD0,0x30,0x10,0x90,0x50,0x10,0x00,
};


char j;
//======================================================== 

//函数声明 
//======================================================== 
 void InitGraphic(void); 
 void sendorder(void); 
 void senddata(void); 
 void setpage( int a); 
 void setaddr( int addr); 
 void ClearScreen( int a); 
 void show(char *q,char a,char b,char n); 
 void x(char n); 
 void show1();
 void show2();
 void show3();
//======================================================== 
//初始化LCD 
//======================================================== 
void InitGraphic(void) 
{ 
 //======================================================== 
 P_IO_Data_Data =0x00;                  //端口初始化 

 P_IO_Control_Data =0x8f; 
  
//======================================================== 

//======================================================== 
 P_IO_Data_Data =0xe2;                  //复位 reset 
 sendorder();                              //送命令子函数 
 P_IO_Data_Data =0xe3;                  //空操作  
 sendorder(); 
 P_IO_Data_Data =0xc0;                  //COM口扫描方向63---0 
  sendorder(); 
 P_IO_Data_Data =0xa0;                  //ADC(segment方向)设定为正常  A1  reverse 
  sendorder(); 
 //电源设定 
 //======================================================== 
 P_IO_Data_Data =0xa2;                  // LCD偏压设定 1/9 bias 
  sendorder(); 
 P_IO_Data_Data =0x24;                  //V5电压内部电阻调整设置  
  sendorder(); 
 P_IO_Data_Data =0x81;                  //电量设置模式 (双字节) 
  sendorder();                                 
 P_IO_Data_Data =0x1a;                  //调整显示屏亮度 
  sendorder(); 
 P_IO_Data_Data =0xd2;                  //驱动模式 
  sendorder(); 
 P_IO_Data_Data =0x00;                  //模式2 
 sendorder(); 
 P_IO_Data_Data =0x2c;                  //上电控制设置   REGULATOR on 
 sendorder(); 
 P_IO_Data_Data =0x2e;                //上电控制设置   +FOLLOWER oFF  ????(或许是) 
 sendorder(); 
 P_IO_Data_Data =0x2f;                 //上电控制设置   +FOLLOWER on   ????(或许是) 
 sendorder();                              //power set  over 
  //======================================================== 
 P_IO_Data_Data =0xaf;                  //开显示 
 sendorder(); 
 setpage(0);                                //页设置为第0页  
 P_IO_Data_Data =0x40;                  //显示起始行设置为第0行  
 sendorder(); 
 setaddr(0);                                //列设置为第0列 

 P_IO_Data_Data =0xa4;                  //全屏点亮 
 sendorder();   
 P_IO_Data_Data =0xa6;                  //正常显示 
 sendorder(); 
 ClearScreen(0);                           //清屏全部ROM填零 
}                                
//======================================================== 
//初始化LCD结束 

//发送命令子函数 
//======================================================== 
void sendorder(void) 
{ 
char c; 
c=C_AOP_Pin|C_EP_Pin|C_RWP_Pin; 
c^=0xff; 
P_IO_Control_Data=c; 
P_IO_Control_Data=c|C_EP_Pin; 
P_IO_Control_Data=c; 
} 
//======================================================== 
//写入数据子函数 
//======================================================== 
void senddata(void) 
{ 
char c; 
c=C_AOP_Pin|C_EP_Pin|C_RWP_Pin; 
c^=0xff; 
P_IO_Control_Data=c; 
P_IO_Control_Data=c|C_AOP_Pin|C_EP_Pin; 
P_IO_Control_Data=c; 
} 
//======================================================== 
//页设置子函数 
//======================================================== 
 void setpage( int a) 
{ 
a|=0xb0; 
P_IO_Data_Data =a; 
sendorder(); 
} 
//======================================================== 
//列设置子函数 
//======================================================== 
void setaddr( int addr) 
{ 
 int b; 
b=addr>>4; 
b&=0x1f; 
b|=0x10; 
addr&=0x0f; 
P_IO_Data_Data =addr;                 //低四位
sendorder(); 
P_IO_Data_Data =b;                    //高四位
sendorder(); 
 } 
//======================================================== 
//清屏子函数     fill ROM with 0 or 1 
//======================================================== 
void ClearScreen( int a) 
{ 
 int z1,z2; 
if(a!=0) a=0xff; 
for(z1=0;z1<8;z1++) 
{ 
setpage(z1); 
setaddr(0); 
    for(z2=0;z2<128;z2++) 
    { 
    P_IO_Data_Data =a; 
     senddata(); 
    } 
} 
} 
//======================================================== 
//显示汉字 
//======================================================== 
void show(char *q,char a,char b,char n)   //汉字 
{char i,*p; 
p=q+32*n; 
setpage(a+1); 
setaddr(b); 
for(i=0;i<16;i++) 
{x(*p); 
p++;} 
setpage(a); 
setaddr(b); 
for(i=16;i<32;i++) 
{x(*p); 
p++;} 
} 
void show1()
{
show(s1,5,0,0);
show(s1,5,32,1);
show(s1,5,48,2);
show(s1,5,64,3);
show(s1,5,80,4);
show(s1,5,96,5);
}
void show2()
{
show(s2,3,0,0);
show(s2,3,32,1);
show(s2,3,48,2);
show(s2,3,64,3);
show(s2,3,80,4);

}
void show3()
{
show(s3,1,0,0);
show(s3,1,32,1);
show(s3,1,48,2);
show(s3,1,64,3);
show(s3,1,80,4);

}

void x(char n) 
{ 
P_IO_Data_Data =n; 
senddata(); 
} 

void main() 

{  
DDRB=0xff;
PORTB=0xff; 
DDRD=0xff; 
PORTD=0xff;   //直接将复位端拉高。 

InitGraphic(); 
while(1) 
{ 

show1();
show2();
show3();
} 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -