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

📄 cm1601284.c

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