?? text1.c
字號:
#include<stdio.h>
#include<intrins.h>
#include <reg51.h>
#include <math.h>
#include <absacc.h>
#include <string.h>
/* 地址定義 */
#define d_add XBYTE[0x8000]
#define c_add XBYTE[0x8100]
/* 常數定義 */
#define para1 0x30;
#define uchar unsigned char
#define uint unsigned int
#define dat1 DBYTE[0x30]
#define dat2 DBYTE[0x31]
#define com DBYTE[0x32]
#define code_1 DBYTE[0x33]
#define attr DBYTE[0x34]
#define O_Y DBYTE[0x35]
#define O_X DBYTE[0x36]
/* 定義標志位 */
sbit Acc_0=ACC^0;
sbit Acc_1=ACC^1;
sbit Acc_2=ACC^2;
sbit Acc_3=ACC^3;
sbit fs=P1^1;
uchar num=0;
bit s=0;
uchar x=0;
uchar y=0;
/******************************/
code unsigned char CTABC[49][32]={
/* 0=天*/
0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,
0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,
0x01,0x00,0x02,0x80,0x02,0x80,0x04,0x40,
0x08,0x20,0x30,0x18,0x00,0x00,0x00,0x00,
/*1=下*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
0x3F,0xF8,0x01,0x00,0x01,0x00,0x01,0xC0,
0x01,0x20,0x01,0x10,0x01,0x00,0x01,0x00,
0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
/*2=為*/
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
0x09,0x00,0x05,0x10,0x1F,0xF8,0x01,0x10,
0x02,0x10,0x02,0x90,0x04,0x50,0x04,0x50,
0x08,0x10,0x30,0xE0,0x00,0x00,0x00,0x00,
/*2=公*/
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x80,
0x04,0x80,0x04,0x40,0x08,0x40,0x11,0x20,
0x21,0x18,0x02,0x00,0x02,0x80,0x04,0x40,
0x08,0xE0,0x1F,0x20,0x00,0x00,0x00,0x00,
};
/******************************/
INT_1();
CLEAR();
CCW2_PR();
PR1();
PR11();
PR12();
ST01();
ST3();
FCCW2_PR();
CCWD_PR();
FDISHAZIT(uchar x,uchar y,uchar d);
/**************************/
/* 初始化函數 */
/**************************/
INT_1()
{
fs=0;
dat1=0x00; /*設文本顯示區域首地址*/
dat2=0x00;
com=0x40;
PR1();
dat1=para1; /*設文本顯示區域寬度*/
dat2=0x00;
com=0x41;
PR1();
dat1=0x00; /*設圖形顯示區域首地址*/
dat2=0x08;
com=0x42;
PR1();
dat1=para1; /*設圖形顯示區域寬度*/
dat2=0x00;
com=0x43;
PR1();
com=0xa0; /*光標形狀設置*/
PR12();
com=0x80; /*顯示方式設置邏輯"或"合成*/
PR12();
com=0x98; /*顯示開關設置 開文本和圖形顯示*/
PR12();
}
/***************************/
/* 清顯示子程序 */
/***************************/
CLEAR()
{
unsigned char i,j;
dat1=0x00;
dat2=0x00;
com=0x24;
PR1();
com=0xb0;
PR12();
for(i=0;i<205;i++)
{
for(j=0;j<=40;j++)
{
ST3();
d_add=0x00;
}
}
com=0xb2;
PR12();
}
/************************************************/
/* 判狀態位S1,S0 函數(讀寫指令和讀寫數據狀態) */
/************************************************/
ST01()
{
do
{
ACC=c_add;
}
while(Acc_0==0,Acc_1==0);
}
/************************************/
/* 判狀態位S3函數(數據自動寫狀態) */
/************************************/
ST3()
{
do
{
ACC=c_add;
}
while(Acc_3==0);
}
DISHAZIT(uchar x,uchar y,uchar d) /*漢字寫入(圖文方式)*/
{
code_1=d;
O_X=x;
O_Y=y;
CCW2_PR();
}
/****************************/
/* 寫指令和寫數據函數 */
/****************************/
PR1() /* 雙字節參數指令寫入入口 */
{
ST01();
d_add=dat1; /* 取第一參數單元數據 */
PR11();
}
PR11() /* 單字節參數指令寫入入口 */
{
ST01();
d_add=dat2; /* 取第二參數單元數據 */
PR12();
}
PR12() /* 無參數指令寫入入口 */
{
ST01();
c_add=com; /* 寫入指令代碼 */
}
/****************************/
CCW2_PR()
{
unsigned int i,j,count1;
i=para1;
j=i*O_Y+O_X+0x0800;
for(count1=0;count1<32;count1++)
{
dat1=j%256;
dat2=j/256;
com=0x24;
PR1();
dat2=CCTAB[code_1][count1]; /* 寫入漢字左側代碼 */
com=0xc0;
PR11();
dat2=CCTAB[code_1][count1+1]; /* 寫入漢字右側代碼 */
PR11();
j=j+i;
count1++;
}
}
FDISHAZIT(uchar x,uchar y,uchar d) /*漢字寫入(反圖文方式)*/
{
code_1=d;
O_X=x;
O_Y=y;
FCCW2_PR();
}
FCCW2_PR()
{
unsigned int i,j,count1;
i=para1;
j=i*O_Y+O_X+0x0800;
for(count1=0;count1<16;count1++)
{
dat1=j%256;
dat2=j/256;
com=0x24;
PR1();
dat2=0xff-CCTAB[code_1][count1]; /* 寫入漢字左側代碼 */
com=0xc0;
PR11();
dat2=0xff-CCTAB[code_1][count1+16]; /* 寫入漢字右側代碼 */
PR11();
j=j+i;
}
}
DISDASC(uchar x,uchar y,uchar d) /*漢字寫入(文本方式)*/
{
code_1=d;
O_X=x;
O_Y=y;
CCWD_PR();
}
CCWD_PR() /* */
{
unsigned int i,j;
i=para1;
j=i*O_Y+O_X;
dat1=j%256;
dat2=j/256;
com=0x24; /* 設置顯示地址 */
PR1();
dat2=code_1; /* 寫入左上半部漢字代碼 */
com=0xc0;
PR11();
j=j+i;
dat1=j%256; /* 顯示RAM地址修正 */
dat2=j/256;
com=0x24;
PR1();
dat2=code_1+0x01; /* 寫入左下半部漢字代碼 */
com=0xc0;
PR11();
}
/***************************/
/* 演示主程序 */
/***************************/
void main()
{
INT_1(); /* 初始化函數 */
CLEAR(); /* 清屏函數 */
DISHAZIT(0x00,0x10,0X00);
DISHAZIT(0x02,0x10,0X01);
DISHAZIT(0x04,0x10,0X02);
DISHAZIT(0x06,0x10,0X03);
DISHAZIT(0x08,0x10,0X00);
DISHAZIT(0x0a,0x10,0X01);
DISHAZIT(0x0c,0x10,0X02);
DISHAZIT(0x0e,0x10,0X03);
DISHAZIT(0x10,0x10,0X00);
DISHAZIT(0x12,0x10,0X01);
DISHAZIT(0x14,0x10,0X02);
DISHAZIT(0x16,0x10,0X03);
DISHAZIT(0x18,0x10,0X00);
DISHAZIT(0x1a,0x10,0X01);
DISHAZIT(0x1c,0x10,0X02);
DISHAZIT(0x1e,0x10,0X03);
while(1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -