?? xianshi2.c
字號:
#include<reg55.h>
#include<intrins.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit fmq=P1^6;
//*********文字定義****************
extern uchar code yuan[32];
extern uchar code ding[32];
extern uchar code jin[32];
extern uchar code sheng[32];
extern uchar code tan[32];
//*************LCD與ECU接口定義***************
sbit A0=P2^2;
sbit e1=P2^5;
sbit e2=P2^4;
sbit rw=P2^3;
//*******************delay********************
void delay(uint num)
{ while(num--); }
//****************SEND COMMAND****************
//-----------內(nèi)部函數(shù),不直接調(diào)用-------------
void send_command(uchar cmd)
{
A0=rw=0; //A0=0,選擇指令;rw=0,寫。
e1=e2=1;
P0=cmd;
delay(2);
e1=e2=0;
}
//*******SELECT PAGE AND LINE AND PUT DATA IN*********
//----------內(nèi)部函數(shù),不直接調(diào)用--------------
void lw(uchar x,uchar y,uchar dd) //x為列地址,y為頁地址,dd為數(shù)據(jù)。
{
if (x<61)
{
e1=1;
A0=rw=0; //A0=0,選擇指令.
P0=0xb8|y;
e1=0;
e1=1;
A0=rw=0;
P0=0x00|x;
e1=0;
e1=1;
A0=1; //A0=1,選擇數(shù)據(jù);
rw=0;
P0=dd;
e1=0;
}
else
{
x=x-61;
e2=1;
A0=rw=0;
P0=0x00|x;
e2=0;
e2=1;
A0=rw=0;
P0=0xb8|y;
e2=0;
e2=1;
A0=1;
rw=0;
P0=dd;
e2=0;
}
P0=0xff;
}
//***********INITIALIZE LCD*************
void lcd_init(void)
{
uchar x,y;
e1=e2=0;
A0=rw=0;
send_command(0xae); //關(guān)顯示
send_command(0xc0); //設(shè)置顯示起始行為第0行
send_command(0xa4); //關(guān)靜態(tài)驅(qū)動模式
send_command(0xbb); //設(shè)置頁地址為第三頁
send_command(0xa9); //設(shè)置為1/32DUTY
send_command(0xa0); //設(shè)置顯示方向為反向
send_command(0xee); //關(guān)閉讀-修改-寫模式并恢復(fù)列地址指針到讀修改-寫模式前的位置。
send_command(0xaf); //開顯示
}
//****************CLEAR SCREEN ALL******************
void clr_screen_all(void)
{
uchar x,y;
for (y=0;y<4;y++)
{
for (x=0;x<122;x++)
lw(x,y,0);
}
}
//*******************WRITE CHINESE******************
void write_chinese(x,y,array) //x為列地址,y為頁地址,array為字模數(shù)組。
uchar x,y;
uchar array[];
{
uchar j,dd; //j為漢字32個字模
for(j=0;j<32;j++)
{
dd=array[j];
if(y==0)
{
if(j<16) lw(x+j,2,dd);
else lw(x+j-16,3,dd);
}
else if(y==1)
{
if(j<16) lw(x+j,3,dd);
else lw(x+j-16,0,dd);
}
else if(y==2)
{
if(j<16) lw(x+j,0,dd);
else lw(x+j-16,1,dd);
}
}
}
//******************WRITE CHINESE REVERSE*********************
void write_chinese_reverse(x,y,array)
uchar x,y;
uchar array[];
{
uchar j,dd;
for(j=0;j<32;j++)
{
dd=~array[j];
if(y==0)
{
if(j<16) lw(x+j,2,dd);
else lw(x+j-16,3,dd);
}
else if(y==1)
{
if(j<16) lw(x+j,3,dd);
else lw(x+j-16,0,dd);
}
else if(y==2)
{
if(j<16) lw(x+j,0,dd);
else lw(x+j-16,1,dd);
}
}
}
//*********************WRITE CHINESE LOVE******************
void ily(void)
{
write_chinese(15,1,yuan);
write_chinese(35,1,ding);
write_chinese_reverse(55,1,jin);
write_chinese_reverse(75,1,sheng);
write_chinese(95,1,tan);
}
//*********************MAIN**********************
void main(void)
{
fmq=0;
lcd_init();
clr_screen_all();
delay(20000);
ily();
delay(20000);
}
//****************漢字代碼*****************
uchar code yuan[32]= {0x20,0x38,0xA7,0x62,0x10,0x20,0xA0,0x6C,0x6B,0xAA,0x2A,0x3A,0x26,0xA0,0x20,0x00,
0x12,0x13,0x12,0x0A,0x29,0x25,0x12,0x12,0x49,0x85,0x7F,0x02,0x0D,0x18,0x08,0x00};
uchar code ding[32]= {0x00,0x10,0x0C,0xA4,0x24,0x24,0x25,0xE6,0x24,0x24,0x24,0x24,0x14,0x0C,0x04,0x00,
0x40,0x20,0x18,0x07,0x08,0x10,0x20,0x7F,0x42,0x42,0x42,0x42,0x40,0x40,0x00,0x00};
uchar code jin[32]= {0x80,0x80,0x40,0x20,0x10,0x08,0x24,0x43,0xC4,0x08,0x10,0x20,0x60,0xC0,0x40,0x00,
0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x82,0x42,0x32,0x0E,0x02,0x00,0x00,0x00,0x00};
uchar code sheng[32]= {0x00,0x80,0x60,0x1E,0x10,0x10,0x10,0x10,0xFF,0x12,0x10,0x10,0x98,0x10,0x00,0x00,
0x01,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0x61,0x40,0x00};
uchar code tan[32]= {0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x5F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -