?? disp1.c
字號(hào):
#define uchar unsigned char
#define uint unsigned int
#define nop() asm("nop")
#include<reg51.h>
#include<absacc.h>
#include <stdio.h>
//#include <AT89X51.h>
sbit cs1=P2^6; //液晶屏左屏選通信號(hào)//
sbit cs2=P2^7; //液晶屏右屏選通信號(hào)//
sbit e_lcm=P2^5; //液晶屏使能信號(hào)//
sbit d_i=P2^4;
///////////////////////////////word/////////////////////////////////////
unsigned char code chinese[]=
{
/*-- 文字: 歡 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x00,0x80,0x00,0x80,0xFC,0x80,0x05,0xFE,0x85,0x04,0x4A,0x48,0x28,0x40,0x10,0x40,
0x18,0x40,0x18,0x60,0x24,0xA0,0x24,0x90,0x41,0x18,0x86,0x0E,0x38,0x04,0x00,0x00,
/*-- 文字: 迎 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x40,0x00,0x21,0x80,0x36,0x7C,0x24,0x44,0x04,0x44,0x04,0x44,0xE4,0x44,0x24,0x44,
0x25,0x44,0x26,0x54,0x24,0x48,0x20,0x40,0x20,0x40,0x50,0x00,0x8F,0xFE,0x00,0x00,
/*-- 文字: 使 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x08,0x40,0x0C,0x40,0x1B,0xFE,0x10,0x40,0x37,0xFC,0x64,0x44,0xA4,0x44,0x27,0xFC,
0x24,0x44,0x22,0x40,0x21,0x80,0x20,0x80,0x21,0x70,0x22,0x1E,0x2C,0x04,0x00,0x00,
/*-- 文字: 用 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x00,0x00,0x1F,0xFC,0x10,0x84,0x10,0x84,0x10,0x84,0x1F,0xFC,0x10,0x84,0x10,0x84,
0x10,0x84,0x1F,0xFC,0x10,0x84,0x10,0x84,0x20,0x84,0x20,0x84,0x40,0x94,0x80,0x88,
/*-- 文字: 高 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x02,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00,0x0F,0xE0,0x08,0x20,0x0F,0xE0,0x00,0x00,
0x7F,0xFC,0x40,0x04,0x4F,0xE4,0x48,0x24,0x48,0x24,0x4F,0xE4,0x40,0x14,0x40,0x08,
/*-- 文字: 壓 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x00,0x00,0x3F,0xFE,0x20,0x00,0x20,0x80,0x20,0x80,0x20,0x88,0x2F,0xFC,0x20,0x80,
0x20,0xA0,0x20,0x90,0x20,0x98,0x40,0x90,0x40,0x80,0xBF,0xFE,0x00,0x00,0x00,0x00,
/*-- 文字: 氣 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x08,0x00,0x08,0x00,0x1F,0xFE,0x10,0x00,0x20,0x00,0x4F,0xF8,0x00,0x00,0x1F,0xF0,
0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x0A,0x00,0x0A,0x00,0x06,0x00,0x02,
/*-- 文字: 體 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x10,0x40,0x18,0x40,0x10,0x40,0x20,0x40,0x37,0xFC,0x60,0xC0,0xA0,0xE0,0x21,0x60,
0x21,0x50,0x22,0x48,0x24,0x4E,0x2B,0xF4,0x20,0x40,0x20,0x40,0x20,0x40,0x00,0x00,
/*-- 文字: 燈 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x10,0x00,0x10,0x00,0x11,0xFE,0x10,0x10,0x54,0x10,0x54,0x10,0x58,0x10,0x90,0x10,
0x10,0x10,0x18,0x10,0x24,0x10,0x22,0x10,0x40,0x10,0x40,0x50,0x80,0x20,0x00,0x00,
/*-- 文字: 點(diǎn) --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x01,0x00,0x01,0x00,0x01,0xF8,0x01,0x00,0x01,0x10,0x1F,0xF8,0x10,0x10,0x10,0x10,
0x10,0x10,0x1F,0xF0,0x10,0x10,0x01,0x10,0x28,0x88,0x24,0x44,0x44,0x44,0x00,0x00,
/*-- 文字: 火 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x01,0x00,0x01,0x80,0x01,0x00,0x01,0x10,0x11,0x18,0x11,0x20,0x11,0x40,0x11,0x00,
0x22,0x80,0x02,0x80,0x04,0x40,0x04,0x20,0x08,0x30,0x10,0x1C,0x20,0x08,0x40,0x00,
/*-- 文字: 測(cè) --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x40,0x02,0x27,0xC2,0x24,0x42,0x84,0x52,0x45,0x52,0x55,0x52,0x15,0x52,0x25,0x52,
0x25,0x52,0x25,0x52,0xC5,0x52,0x41,0x02,0x42,0x82,0x42,0x42,0x44,0x4A,0x48,0x04,
/*-- 文字: 試 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x00,0x20,0x40,0x28,0x20,0x24,0x30,0x24,0x27,0xFE,0x00,0x20,0xE0,0x20,0x27,0xE0,
0x21,0x20,0x21,0x10,0x21,0x10,0x21,0x0A,0x29,0xCA,0x36,0x06,0x20,0x02,0x00,0x00,
/*-- 文字: 儀 --*/
/*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x08,0x80,0x08,0x40,0x10,0x68,0x12,0x48,0x22,0x08,0x62,0x10,0xA1,0x10,0x21,0x10,
0x20,0xA0,0x20,0xA0,0x20,0x40,0x20,0xA0,0x21,0x10,0x22,0x0E,0x2C,0x04,0x20,0x00,
};
unsigned char code start[]=
{
0,1,2,3,4,5,6,7,255,8,9,10,11,12,13
};
///////////////////////////////display functions//////////////////////
//------------------------------------------------//
void send_command_l(uchar d) //左屏控制信號(hào)//
{uchar data i;
d_i=0; cs1=1; cs2=0;
P0=d;
e_lcm=1;
for(i=5;i!=0;i--);
e_lcm=0;
for(i=5;i!=0;i--);
e_lcm=1;
//EA=1;
}
//-------------------------------------------------//
void send_data_l(uchar d) //左屏數(shù)據(jù)信號(hào)//
{uchar data i;
d_i=1; cs1=1; cs2=0;
for(i=10;i!=0;i--);
P0=d;
for(i=10;i!=0;i--);
e_lcm=1;
for(i=10;i!=0;i--);
e_lcm=0;
for(i=5;i!=0;i--);
e_lcm=1;
// EA=1;
}
//------------------------------------------------//
void send_command_r(uchar d) //右屏控制信號(hào)//
{uchar data i;
d_i=0; cs1=0; cs2=1;
P0=d;
e_lcm=1;
for(i=5;i!=0;i--);
e_lcm=0;
for(i=5;i!=0;i--);
e_lcm=1;
// EA=1;
}
//-----------------------------------------------//
void send_data_r(uchar d) //右屏數(shù)據(jù)信號(hào)//
{uchar data i;
d_i=1; cs1=0; cs2=1;
P0=d;
e_lcm=1;
for(i=5;i!=0;i--);
e_lcm=0;
for(i=5;i!=0;i--);
e_lcm=1;
//EA=1;//
}
////////////////////////////顯示文字函數(shù)//////////////////////////
//用于顯示人機(jī)交互,參數(shù)輸入,輸出所需的文字,符號(hào)。單個(gè)文字或符//
//號(hào)均為16*16大小。函數(shù)無(wú)返回值,有4個(gè)變量,x表示要顯示的列,y表//
//示要顯示的行。p1為要顯示的數(shù)組的首地址,表示數(shù)組中的第幾個(gè)字。
//lth表示數(shù)組長(zhǎng)度,回車不
//記長(zhǎng)度.數(shù)組由字庫(kù)中映射序號(hào)組成.數(shù)組中255表示回車換行.換行后與//
//x,y表示的初始位置對(duì)齊。x取值范圍0,1,2,3,4,5,6。y取值范圍1,2,3///
//,4.....125,126,127。sign==1表示正常顯示,sign==0表示反色顯示.//
//不能在中間區(qū)域顯示漢字,要么左半屏,要么右半屏//
//////////////////////////////////////////////////////////////////
void display_output_word(uchar x,uchar y,uchar *p1,uchar lth,bit sign)
{
uchar *p2; //指向字庫(kù)中某個(gè)字的地址
uchar idata j;
uchar idata i;
uchar idata k; //字記錄,用于設(shè)定下一個(gè)字的起始列,便于換行。
k=0;
for(j=0;j<lth;j++)
{
if(*p1==255) //回車換行
{
x=x+2; //移動(dòng)到下一行
k=0; //字記錄初始化
}
else //無(wú)回車換行
{
p2=&chinese; //取字庫(kù)首地址;保存在word.h中數(shù)組chinese
p2=p2+(*p1*32); //移動(dòng)到相應(yīng)字所對(duì)應(yīng)的地址
if((y+k*16)>63) //右半屏
{
send_command_r(x+184);
send_command_r(y+k*16);
for(i=0;i<16;i++) //顯示上半字
{
if(sign==1)
{
send_data_r(*p2);
p2++;
}
else
{
send_data_r(*p2^0xff); //反色顯示
p2++;
}
}
send_command_r(x+184+1);
send_command_r(y+k*16);
for(i=0;i<16;i++) //顯示下半字
{
if(sign==1)
{
send_data_r(*p2);
p2++;
}
else
{
send_data_r(*p2^0xff);
p2++;
}
}
k++; //字記錄增一
}
else //左半屏
{
send_command_l(x+184);
send_command_l(y+64+k*16);
for(i=0;i<16;i++) //顯示上半字
{
if(sign==1)
{
send_data_l(*p2);
p2++;
}
else
{
send_data_l(*p2^0xff);
p2++;
}
}
send_command_l(x+184+1);
send_command_l(y+64+k*16);
for(i=0;i<16;i++) //顯示下半字
{
if(sign==1)
{
send_data_l(*p2);
p2++;
}
else
{
send_data_l(*p2^0xff);
p2++;
}
}
k++; //字記錄增一
}
}
p1++; //數(shù)組指針后移向下一個(gè)字
}
}
///////////////////////////顯示初始化函數(shù)/////////////////////////
//用于顯示器的初始化,無(wú)返回參數(shù),無(wú)輸入?yún)?shù)。無(wú)全局變量。 //
//////////////////////////////////////////////////////////////////
void display_initial()
{
send_command_l(0x3e); //關(guān)顯示器
send_command_r(0x3e);
send_command_l(0x3f); //開顯示器
send_command_r(0x3f);
//send_command_l(0xc0); //設(shè)置起始行
//send_command_r(0xc0);
}
void main(void)
{
//display_initial();
display_output_word(0,0,start,14,1);
while(1){;}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -