?? demo.c
字號:
#include <reg51.h>
#include <math.h>
#include <absacc.h>
#include <string.h>
/* 地址定義 */
#define d_add XBYTE[0x8000]
#define c_add XBYTE[0x8100]
/* 常數(shù)定義 */
#define para1 0x20;
/* 定義標(biāo)志位 */
sbit Acc_0=ACC^0;
sbit Acc_1=ACC^1;
sbit Acc_2=ACC^2;
sbit Acc_3=ACC^3;
unsigned int O_X,O_Y,com,dat1,dat2;
unsigned char code_1,attr;
/******************************/
code unsigned char CGTAB[64]={ 0x00,0x40,0x37,0x10,0x81,0x61,0x22,0x0A,/*"液"= 80H*/
0x16,0x2B,0xE2,0x22,0x22,0x22,0x23,0x22,
0x80,0x44,0xFE,0x20,0x20,0x3C,0x44,0x64,
0x98,0x48,0x50,0x20,0x50,0x8E,0x04,0x00,
0x0F,0x08,0x08,0x0F,0x08,0x08,0x0F,0x08,/*"晶"= 84H*/
0x7E,0x42,0x42,0x7E,0x42,0x42,0x7E,0x42,
0xE0,0x20,0x20,0xE0,0x20,0x20,0xE0,0x24,
0xFE,0x84,0x84,0xFC,0x84,0x84,0xFC,0x84};
code unsigned char CCTAB[4][32]={ 0x00,0x40,0x37,0x10,0x83,0x60,0x2F,0x08, /* "清"代碼為00H*/
0x13,0x22,0xE3,0x22,0x23,0x22,0x22,0x22,
0x40,0x48,0xFC,0x40,0xF8,0x40,0xFE,0x08,
0xFC,0x08,0xF8,0x08,0xF8,0x08,0x28,0x10,
0x04,0x04,0x08,0x08,0x18,0x29,0x4A,0x08, /*"華"代碼為01H*/
0x09,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,
0x40,0x48,0x58,0x60,0xC0,0x40,0x44,0x44,
0x3C,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,
0x04,0xFF,0x05,0x41,0x33,0x14,0x01,0xF6, /*"蓬"代碼為02H*/
0x1B,0x10,0x13,0x10,0x17,0x10,0x28,0x47,
0x44,0xFE,0x40,0xF8,0x10,0xE0,0x18,0x46,
0xF8,0x40,0xF8,0x40,0xFC,0x40,0x46,0xFC,
0x00,0x43,0x30,0x10,0x00,0x07,0xF1,0x11, /* "遠(yuǎn)"代碼為03H*/
0x11,0x11,0x12,0x12,0x14,0x28,0x47,0x00,
0x10,0xF8,0x00,0x00,0x08,0xFC,0x20,0x20,
0x20,0x24,0x24,0x1C,0x00,0x06,0xFC,0x00};
unsigned char DTAB[11]={ 0x37,0x45,0x4c,0x43,0x4f,0x4d,0x45,0x00,0x39,0x4f,0x55};
/***************************/
/* 演示主程序 */
/***************************/
void main()
{
unsigned char i,j,k,b;
INT_1(); /* 初始化函數(shù) */
CLEAR(); /* 清屏函數(shù) */
CGRAM(); /* 建立CGRAM內(nèi)字庫函數(shù) */
code_1=0x80; /* 漢字寫入(文本方式)*/
O_X=0x0a;
O_Y=0x07;
CCW1_PR();
code_1=0x84;
O_X=0x03;
O_Y=0x00;
CCW1_PR();
code_1=0x00; /* 漢字寫入(圖形方式)*/
O_X=0x00;
O_Y=0x00;
CCW2_PR();
code_1=0x01;
O_X=0x00;
O_Y=0x00;
CCW2_PR();
code_1=0x02;
O_X=0x00;
O_Y=0x11;
CCW2_PR();
code_1=0x03;
O_X=0x1c;
O_Y=0x6f;
CCW2_PR();
com=0x84; /* 顯示方式設(shè)置 */ /* 西文寫入*/
PR12();
com=0x9f; /* 顯示狀態(tài)設(shè)置 */
PR12();
for(i=0;i<8;i++)
{
dat1=0x0e;
dat2=0x01;
com=0x21; /* 光標(biāo)地址設(shè)置 */
PR1();
attr=i;
O_X=0x00;
O_Y=0x00;
for(b=0;b<11;b++)
{
code_1=DTAB[b];
CW2_PR();
}
}
for(j=0;j<128;j++) /* 繪點(diǎn) */
{
O_X=k;
O_Y=j;
W_DOT();
k++;
}
for(j=128;j>0;j--)
{
O_X=k;
O_Y=j;
W_DOT();
k++;
}
}
/**************************/
/* 初始化函數(shù) */
/**************************/
INT_1()
{
dat1=0x00; /*設(shè)文本顯示區(qū)域首地址*/
dat2=0x00;
com=0x40;
PR1();
dat1=para1; /*設(shè)文本顯示區(qū)域?qū)挾?/
dat2=0x00;
com=0x41;
PR1();
dat1=0x00; /*設(shè)圖形顯示區(qū)域首地址*/
dat2=0x08;
com=0x42;
PR1();
dat1=para1; /*設(shè)圖形顯示區(qū)域?qū)挾?/
dat2=0x00;
com=0x43;
PR1();
com=0xa0; /*光標(biāo)形狀設(shè)置*/
PR12();
com=0x80; /*顯示方式設(shè)置邏輯"或"合成*/
PR12();
com=0x9c; /*顯示開關(guān)設(shè)置 開文本和圖形顯示*/
PR12();
}
/***************************/
/* 清顯示函數(shù) */
/***************************/
CLEAR()
{
unsigned int i;
dat1=0x00;
dat2=0x00;
com=0x24; /* 設(shè)置顯示地址 */
PR1();
com=0xb0; /* 設(shè)置自動寫方式 */
PR12();
for(i=0;i<8200;i++) /* 清8K存儲器 */
{
ST3();
d_add=0x00;
}
com=0xb2; /* 設(shè)置自動寫結(jié)束方式 */
PR12();
}
/**************************/
/* CGRAM函數(shù) */
/**************************/
CGRAM()
{
unsigned int i;
dat1=0x03;
dat2=0x00;
com=0x22; /* 設(shè)置CGRAM偏置地址 */
PR1();
dat1=0x00;
dat2=0x1c;
com=0x24; /* 設(shè)置存儲器地址指針 */
PR1();
com=0xb0; /* 設(shè)置自動寫方式 */
PR12();
for(i=0;i<64;i++)
{
ST3();
d_add=CGTAB[i];
}
com=0xb2; /* 設(shè)置自動寫結(jié)束方式 */
PR12();
}
/********************************/
/* 漢字寫入(文本方式)函數(shù) */
/********************************/
CCW1_PR()
{
unsigned int i,j;
i=para1;
j=i*O_Y+O_X;
dat1=j%256;
dat2=j/256;
com=0x24; /* 設(shè)置顯示地址 */
PR1();
dat2=code_1; /* 寫入左上半部漢字代碼 */
com=0xc0;
PR11();
dat2=code_1+0x02; /* 寫入右上半部漢字代碼 */
PR11();
j=j+i;
dat1=j%256; /* 顯示RAM地址修正 */
dat2=j/256;
com=0x24;
PR1();
dat2=code_1+0x01; /* 寫入左下半部漢字代碼 */
com=0xc0;
PR11();
dat2=code_1+0x03; /* 寫入右下半部漢字代碼 */
PR11();
}
/********************************/
/* 漢字寫入(圖形方式)函數(shù) */
/********************************/
CCW2_PR()
{
unsigned int i,j,count1;
i=para1;
j=i*O_Y+O_X+0x0800; /* 圖形顯示區(qū)首地址為0x0800*/
for(count1=0;count1<16;count1++)
{
dat1=j%256; /* 顯示地址設(shè)置 */
dat2=j/256;
com=0x24;
PR1();
dat2=CCTAB[code_1][count1];
com=0xc0;
PR11();
dat2=CCTAB[code_1][count1+16];
PR11();
j=j+i;
}
}
/********************************/
/* 西文字符寫入(文本屬性)函數(shù) */
/********************************/
CW2_PR()
{
unsigned int i,j;
i=para1;
j=i*O_Y+O_X;
dat1=j%256;
dat2=j/256;
com=0x24; /* 顯示地址設(shè)置 */
PR1();
dat2=code_1;
com=0xc4; /* 數(shù)據(jù)寫 */
PR11();
dat2=0x08;
com=0x24;
PR1();
dat2=attr; /* 寫入屬性參數(shù) */
com=0xc4;
PR11();
}
/****************************/
/* 繪點(diǎn)函數(shù) */
/****************************/
W_DOT()
{
unsigned char i,j;
unsigned int k;
i=para1;
j=O_X%8;
O_X=O_X/8;
k=i*O_Y+O_X+0x0800;
dat1=k%256;
dat2=k/256;
com=0x24;
PR1();
j=0x07-j;
com=i|0xf8; /* 位操作 */
PR12();
}
/****************************/
/* 寫指令和寫數(shù)據(jù)函數(shù) */
/****************************/
PR1() /* 雙字節(jié)參數(shù)指令寫入入口 */
{
ST01();
d_add=dat1; /* 取第一參數(shù)單元數(shù)據(jù) */
PR11();
}
PR11() /* 單字節(jié)參數(shù)指令寫入入口 */
{
ST01();
d_add=dat2; /* 取第二參數(shù)單元數(shù)據(jù) */
PR12();
}
PR12() /* 無參數(shù)指令寫入入口 */
{
ST01();
c_add=com; /* 寫入指令代碼 */
}
/************************************************/
/* 判狀態(tài)位S1,S0 函數(shù)(讀寫指令和讀寫數(shù)據(jù)狀態(tài)) */
/************************************************/
ST01()
{
do
{
ACC=c_add;
}
while(Acc_0==0,Acc_1==0);
}
/************************************/
/* 判狀態(tài)位S2函數(shù)(數(shù)據(jù)自動讀狀態(tài)) */
/************************************/
ST2()
{
do
{
ACC=c_add;
}
while(Acc_2==0);
}
/************************************/
/* 判狀態(tài)位S3函數(shù)(數(shù)據(jù)自動寫狀態(tài)) */
/************************************/
ST3()
{
do
{
ACC=c_add;
}
while(Acc_3==0);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -