⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cm1601284.c

📁 keil c51编写的LCD 12864像素LCD显示屏程序,,通过调用函数,显示grom字库中的7千多个简体中文和字符
💻 C
📖 第 1 页 / 共 3 页
字号:

	dat2=code_1;
	com=0xC0; /* 数据写 */
	PR11();

	dat2=0x08;
	com=0x24;
	PR1();
}

/****************************/
/* 绘点函数 */
/****************************/
void W_DOT()
{
	unsigned char i;
	unsigned int k;

	i=O_X%8;
	O_X=O_X/8;
	k=0x20*O_Y+O_X+0x0800;
	dat1=k%256;
	dat2=k/256;
	com=0x24;
	PR1();
	i=0x07-i;
	com=i|0xf8; /* 位操作 */
	PR12();
}
/****************************/
/* 写指令和写数据函数 */
/****************************/
void PR1() /* 双字节参数指令写入入口 */
{
	ST01();
	d_add=dat1; /* 取第一参数单元数据 */
	PR11();
}
void PR11() /* 单字节参数指令写入入口 */
{
	ST01();
	d_add=dat2; /* 取第二参数单元数据 */
	PR12();
}
void PR12() /* 无参数指令写入入口 */
{
	ST01();
	c_add=com; /* 写入指令代码 */
}
/************************************************/
/* 判状态位S1,S0 函数(读写指令和读写数据状态) */
/************************************************/
void ST01()
{
	do
	{
		ACC=c_add;
	}
	while(Acc_0==0,Acc_1==0);
}
/************************************/
/* 判状态位S2函数(数据自动读状态) */
/************************************/
void ST2()
{
	do
	{
		ACC=c_add;
	}
	while(Acc_2==0);
}
/************************************/
/* 判状态位S3函数(数据自动写状态) */
/************************************/
void ST3()
{
	do
	{
		ACC=c_add;
	}
	while(Acc_3==0);
}

void DISHAZIT(uchar x,uchar y,uchar d) /*汉字写入(图文方式)*/
{
	code_1=d;
	O_X=x;
	O_Y=y;
	CCW2_PR();
}
void DISHAZIT2(uchar x,uchar y,uchar d) /*汉字写入(图文方式)*/
{
	code_1=d;
	O_X=x;
	O_Y=y;
	CCW3_PR();
}

void DISDASC(uchar x,uchar y,uchar d) /*汉字写入(文本方式)*/
{
	code_1=d;
	O_X=x;
	O_Y=y;
	CCWD_PR();
}

void DISASC(uchar x,uchar y,uchar d)
{
	O_X=x;
	O_Y=y;
	code_1=d; /*西文写WELCOME YOU */
	CW2_PR();
}

void ShowLine(uchar x,uchar y,uchar *puts,uchar le,uchar kk)
{
	uchar uk,jk,byte;

	for(uk=x,jk=0;jk<le;jk++)
	{
		byte=puts[jk];
		if(kk==0){ DISHAZIT(uk,y,byte);}
		else {FDISHAZIT(uk,y,byte);}
		uk=uk+2; /*汉字从0x80开始,包括0x80*/
		/* else {DISASC(x,k,byte);k=k+1;} 字母 ASCII码从0X20 开始*/
	}
}

void ShowLine2(uchar x,uchar y,uchar *puts,uchar le,uchar kk)
{
	uchar uk,jk,byte;

	for(uk=x,jk=0;jk<le;jk++)
	{
		byte=puts[jk];
		if(kk==0)
                {
                        DISHAZIT2(uk,y,byte);
                }
		//else
          //      {
                        //FDISHAZIT2(uk,y,byte);
        //        }
		uk=uk+3; /*汉字从0x80开始,包括0x80*/
		/* else {DISASC(x,k,byte);k=k+1;} 字母 ASCII码从0X20 开始*/
	}
}

void FDISHAZIT(uchar x,uchar y,uchar d) /*汉字写入(反图文方式)*/
{
	code_1=d;
	O_X=x;
	O_Y=y;
	FCCW2_PR();
}
void 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;
	}
}
//------------------code----------------------
//unsigned char code welcome[];


//-------------main function-------------------
void main()
{
    int i = 0;
    int j = 0;
    uchar code STR1[5]={0x00,0x01,0x02,0x03,0x04};
    uchar code STR2[5]={0x07,0x08,0x09,0x0a,0x04};
    uchar code STR3[4]={0x0b,0x0c,0x0d,0x04};
    uchar code STR4[6]={0x0e,0x0f,0x10,0x11,0x12,0x13};
    uchar data STR5[1]={0x14};
    uchar data STR6[10]={0x00,0x01,0x02,0x0b,0x05,0x06};

    while(1)
    {
         INT_1(); /* 初始化函数 */
         INT_1();
         CLEAR(); /* 清屏函数 */
         ShowLine(0x02,56,STR4,6,0);
         j = 1;
         while(j--)
         {
              for(i = 0x17; i >= 0x14; i--)
              {
                   STR5[0] = i;
                   STR5[1] = i;
                   ShowLine(0x0e,56,STR5,1,0);
                   delay_ms(50);
              }
         }
         //while(1);
         CLEAR(); /* 清屏函数 */
         CGRAM(); /* 建立CGRAM内字库函数 */
         /* 汉字写入(文本方式)*/
         ShowLine(0x01,80,STR1,5,0);
         DISDASC(0x0b,0x0a,0x82);
         DISDASC(0x0c,0x0a,0x8a);
         DISDASC(0x0d,0x0a,0xa0);
         ShowLine(0x01,96,STR2,5,0);
         DISDASC(0x0b,0x0c,0x96);
         DISDASC(0x0d,0x0c,0x82);
         DISDASC(0x0e,0x0c,0x80);
         ShowLine(0x01,112,STR3,4,0);
         DISDASC(0x0b,0x0e,0x9c);
         DISDASC(0x0c,0x0e,0x82);
         DISDASC(0x0d,0x0e,0x9a);
         ShowLine2(0x01,0x16,STR6,5,0);
         delay_ms(100);
         //while(1);
         CLEAR(); /* 清屏函数 */
    }
}

code uchar linehead[]={0x00,0x01,0x03,0x04,0x05,0x06,0x07};

code unsigned char CGTAB[320]={
/*80=0 */
0x00,0x00,0x00,0x1C,0x36,0x63,0x63,0x63,
0x63,0x63,0x63,0x63,0x36,0x1C,0x00,0x00,
/*82=1 */
0x00,0x00,0x00,0x18,0x78,0x18,0x18,0x18,
0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,
/*84=2 */
0x00,0x00,0x00,0x3E,0x63,0x63,0x63,0x06,
0x06,0x0C,0x18,0x30,0x63,0x7F,0x00,0x00,
/*86=3 */
0x00,0x00,0x00,0x3E,0x63,0x63,0x06,0x1C,
0x06,0x03,0x03,0x63,0x66,0x3C,0x00,0x00,
/*88=4 */
0x00,0x00,0x00,0x06,0x0E,0x1E,0x36,0x36,
0x66,0x66,0x7F,0x06,0x06,0x1F,0x00,0x00,
/*8a=5 */
0x00,0x00,0x00,0x7F,0x60,0x60,0x60,0x7C,
0x76,0x03,0x03,0x63,0x66,0x3C,0x00,0x00,
/*8c=6 */
0x00,0x00,0x00,0x1E,0x36,0x60,0x60,0x7C,
0x76,0x63,0x63,0x63,0x36,0x1C,0x00,0x00,
/*8e=7 */
0x00,0x00,0x00,0x7F,0x66,0x66,0x0C,0x0C,
0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,
/*90=8 */
0x00,0x00,0x00,0x3E,0x63,0x63,0x63,0x36,
0x1C,0x36,0x63,0x63,0x63,0x3E,0x00,0x00,
/*92=9 */
0x00,0x00,0x00,0x1C,0x36,0x63,0x63,0x63,
0x37,0x1F,0x03,0x03,0x36,0x3C,0x00,0x00,
/*94=:*/
0x00,0x00,0x00,0x00,0x1C,0x1C,0x1C,0x1C,
0x00,0x00,0x1C,0x1C,0x1C,0x1C,0x00,0x00,
/*96=X *//*--  调入了一幅图像:E:\jiang\林老师的项目2\CM160128_jiang\bmpfiles\乘号.bmp  --*/
/*--  宽度x高度=16x8  --*/
0x00,0x00,0x00,0x00,0x00,0xC3,0x66,0x3C,
0x18,0x3C,0x66,0xC3,0x00,0x00,0x00,0x00,
/*98= **//*--  调入了一幅图像:E:\jiang\林老师的项目2\CM160128_jiang\bmpfiles\star.bmp  --*/
/*--  宽度x高度=16x8  --*/
0x00,0x00,0x00,0x00,0x10,0x10,0xD6,0x38,
0x38,0xD6,0x10,0x10,0x00,0x00,0x00,0x00,
/*9a=V *//*--  调入了一幅图像:E:\jiang\林老师的项目2\CM160128_jiang\bmpfiles\v.bmp  --*/
/*--  宽度x高度=16x8  --*/
0x00,0x00,0x00,0x00,0xE7,0x62,0x76,0x34,
0x3C,0x3C,0x3C,0x18,0x18,0x00,0x00,0x00,
/*9c=- */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*9e=" */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -