📄 cm1601284.c
字号:
#include <reg52.h>
#include <STRING.H>
#include <stdio.h>
#include <intrins.h>
#include <math.h>
#include <absacc.h>
#include <string.h>
#include "character.h"
/* 地址定义 */
#define d_add XBYTE[0x8000]
#define c_add XBYTE[0x8100]
/* 常数定义 */
#define para1 0x20;
#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]
//-------------register------------------------
sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit ACC0 = ACC^0;
sbit ACC1 = ACC^1;
/* 定义标志位 */
sbit Acc_0=ACC^0;
sbit Acc_1=ACC^1;
sbit Acc_2=ACC^2;
sbit Acc_3=ACC^3;
uchar num=0;
bit s=0;
uchar x=0;
uchar y=0;
/******************************/
code uchar linehead[];
code unsigned char CGTAB[320];
code unsigned char CCTAB[24][32];
unsigned char code CCTAB2[12][144];
unsigned char code DTAB[11]={ 0x37,0x45,0x4c,0x43,0x4f,0x4d,0x45,0x00,0x39,0x4f,0x55};
unsigned char code ASC[10]={ 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19};
//-------------------------------------------------------------------
void INIT_1();
void CLEAR();
void CGRAM();
void CCWR1_PR();
void CCW2_PR();
void CCW3_PR();
void CW2_PR();
void W_DOT();
void PR1();
void PR11();
void PR12();
void ST01();
void ST2();
void ST3();
void DISHAZIT(uchar x,uchar y,uchar d);
void DISHAZIT2(uchar x,uchar y,uchar d);
void DISHAZIW(uchar x,uchar y,uchar d);
void DISDASC(uchar x,uchar y,uchar d);
void DISASC(uchar x,uchar y,uchar d);
void FCCW2_PR();
void ShowLine(uchar x,uchar y,uchar *puts,uchar le,uchar kk);
void FDISHAZIT(uchar x,uchar y,uchar d);
void GUANGBIAO(uchar x,uchar y);
void delay(int t);
//-------------------------------------------------------------------
unsigned char code welcome[128][160];
//--------------------function---------------------------
void delay_ms(int ms)
{
int i = 0;
int j = 0;
for(i = ms; i > 0; i--)
{
j = 1000;
while(j--)
{
}
}
}
//--------------------------------------------
/**************************/
/* 初始化函数 */
/**************************/
void INT_1()
{
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=0x9c; /*显示开关设置 开文本和图形显示*/
PR12();
}
/***************************/
/* 清显示子程序 */
/***************************/
void 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();
}/**************************/
/* CGRAM函数 */
/**************************/
void CGRAM()
{
unsigned int i;
dat1=0x03;
dat2=0x00;
com=0x22; /* 设置CGRAM偏置地址 */
PR1();
dat1=0x00;
dat2=0x1c;
com=0x24; /* 设置存储器地址指针 */
PR1();
com=0xb0; /* 设置自动写方式 */
PR12();
for(i=0;i<320;i++)
{
ST3();
d_add=CGTAB[i];
}
com=0xb2; /* 设置自动写结束方式 */
PR12();
}
/********************************/
/* 汉字写入(文本方式)函数 */
/********************************/
void CCW1_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();
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();
}
void 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 CCW2_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=CCTAB[code_1][count1]; /* 写入汉字左侧代码 */
com=0xc0;
PR11();
dat2=CCTAB[code_1][count1+16]; /* 写入汉字右侧代码 */
PR11();
j=j+i;
}
}
void CCW3_PR()
{
unsigned int i,j,count1;
i=para1;
j=i*O_Y+O_X+0x0800;
for(count1=0;count1<48;count1++)
{
dat1=j%256;
dat2=j/256;
com=0x24;
PR1();
dat2=CCTAB2[code_1][count1]; /* 写入汉字左侧代码 */
com=0xc0;
PR11();
dat2=CCTAB2[code_1][count1+48]; /* 写入汉字中间代码 */
PR11();
dat2=CCTAB2[code_1][count1+96]; /* 写入汉字右侧代码 */
PR11();
j=j+i;
}
}
/********************************/
/* 西文字符写入(文本属性)函数 */
/********************************/
void CW2_PR()
{
unsigned int i,j;
i=para1;
j=i*O_Y+O_X;
dat1=j%256;
dat2=j/256;
com=0x24; /* 显示地址设置 */
PR1();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -