?? 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 + -