📄 demo.c
字号:
#include <reg51.h>
#include <math.h>
#include <absacc.h>
/* 直接访问方式地址定义,根据用户平台接口修改 */
#define cwadd XBYTE[0x0000] /* 写指令代码地址 */
#define cradd XBYTE[0x0200] /* 写显示数据地址 */
#define dwadd XBYTE[0x0100] /* 读显示数据地址 */
#define dradd XBYTE[0x0300] /* 读忙状态地址 */
/* 定义标志位 */
sbit ACC_7=ACC^7;
/* 设为全局变量 */
unsigned int com,dat;
/*-----------光标移动演示用字库-----------*/
unsigned int TABCL[18]={0x43,0x75,0x72,0x73,0x6f,0x72,0x20,0x4c,0x65,0x66,0x74,0x20,0x53,0x63,0x72,0x6f,0x6c,0x6c};
/*-----------画面滚动演示用字库----------*/
unsigned int TABL[11]={0x4c,0x65,0x66,0x74,0x20,0x53,0x63,0x72,0x6f,0x6c,0x6c};
/*-----------建立自定义演示用字符库-----------*/
code unsigned int CGTAB[9][8]={0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02, /* "↓"代码=0 */
0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00, /* "月"代码=1 */
0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00, /* "日"代码=2 */
0x11,0x0a,0x04,0x1f,0x04,0x1f,0x04,0x00, /* "¥"代码=3 */
0x0e,0x00,0x1f,0x0a,0x0a,0x0a,0x13,0x00, /* "元"代码=4 */
0x18,0x18,0x07,0x08,0x08,0x08,0x07,0x00, /* "℃"代码=5 */
0x04,0x0a,0x15,0x04,0x04,0x04,0x04,0x00, /* "↑"代码=6 */
0x17,0x15,0x15,0x15,0x15,0x15,0x17,0x00, /* "10"代码=7 */
0x04,0x04,0x04,0x04,0x15,0x0a,0x04,0x00 }; /* "↓"代码=8 */
/*-----------自定义字符显示用字库-----------*/
code unsigned int TABDY[4][9]={0x4d,0x44,0x4c,0x53,0x34,0x30,0x32,0x36,0x36,
0x20,0x03,0x32,0x35,0x35,0x2e,0x30,0x30,0x04,
0x31,0x39,0x39,0x37,0x00,0x37,0x01,0x31,0x02,
0x20,0x54,0x3d,0x33,0x35,0x05,0x06,0x20,0x07};
/******************/
void main()
{
unsigned int i,j,k,comp;
int_1(); /* 调初始化函数 */
SCROLL(); /* 调滚动演示函数 */
CL_ENTER(); /* 调光标移动函数 */
L_ENTER(); /* 调画面滚动函数 */
HOME(); /* 调回归原始位函数 */
/*----------修改错误显示演示段----------*/
com=0x80; /* 设置DDRAM地址 */
PR1(); /* 调写指令函数 */
for(i=0;i<12;i++)
{
dat=RDTAB[i]; /* 取字符代码 */
PR2(); /* 调写数据函数 */
}
DA_READ(); /* 调修改错误显示函数 */
/*---------自定义字符显示段------------*/
com=0x80; /* 设置DDRAM地址 */
PR1(); /* 调写指令函数 */
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
dat=TABDY[i][j]; /* 取字符代码 */
PR2(); /* 调写数据函数 */
}
}
/*------------CGRAM显示段--------------*/
CGRAM(); /* 调自定义字符库函数 */
com=0x80; /* 设置DDRAM地址 */
PR1(); /* 调写指令函数 */
for(i=0;i<9;i++)
{
dat=i; /* 取字符代码 */
PR2(); /* 调写数据函数 */
}
}
/*******************/
/* 初始化函数 */
/*******************/
int_1()
{
unsigned int i,j;
for(j=0;j<3;j++)
{
cwadd=0x30; /* 工作方式设置指令代码 */
for(i=0;i<100;i++) /* 延时大于等于4.1μs(100可根据需要调整) */
{}
}
cwadd=0x38; /* 设置工作方式(8位总线) */
com=0x01; /* 清屏 */
PR1(); /* 调写指令函数 */
com=0x06; /* 设置输入方式 */
PR1(); /* 调写指令函数 */
com=0x0f; /* 设置显示方式 */
PR1(); /* 调写指令函数 */
}
/*********************/
/* 光标移动函数 */
/*********************/
CL_ENTER()
{
unsigned int i,j;
com=0x04; /* 输入方式(0x04画面不动光标左移,0x06画面不动光标右移) */
PR1(); /* 调写指令函数 */
com=0x90; /* 设置DDRAM地址 */
PR1(); /* 调写指令函数 */
for(i=0;i<18;i++)
{
dat=TABCL[i]; /* 取字符代码 */
PR2(); /* 调写数据函数 */
for(j=0;j<100;j++) /* 延时(100可根据需要调整)*/
{}
}
}
/*******************/
/* 画面滚动函数 */
/*******************/
L_ENTER()
{
unsigned int i,j;
com=0x05; /* 输入方式(com=0x05画面右移,com=0x07画面左移) */
PR1(); /* 调写指令函数 */
com=0x80; /* 设置DDRAM地址 */
PR1(); /* 调写指令函数 */
for(i=0;i<11;i++)
{
dat=TABL[i]; /* 取字符代码 */
PR2(); /* 调写数据函数 */
for(j=0;j<100;j++) /* 延时(100可根据需要调整)*/
{}
}
}
/*********************/
/* 滚动演示函数 */
/*********************/
SCROLL()
{
unsigned int i,j;
com=0x80; /* 设置DDRAM地址 */
PR1(); /* 调写指令函数 */
for(i=0;i<128;i++)
{
dat=0x21; /* 字符代码设置 */
PR2(); /* 调写数据函数 */
for(j=0;j<100;j++) /* 延时(100可根据需要调整)*/
{}
}
com=0x90; /* 设置DDRAM地址 */
PR1(); /* 调写指令函数 */
for(i=0;i<8;i++)
{
for(j=0;j<100;j++) /* 延时(100可根据需要调整) */
{}
com=0x10; /* com=0x10 光标左移一次,com=0x14 光标右移一次 */
PR1(); /* 调写指令函数 */
}
com=0x90; /* 设置DDRAM地址 */
PR1(); /* 调写指令函数 */
for(i=0;i<8;i++)
{
for(j=0;j<100;j++) /* 延时(100可根据需要调整) */
{}
com=0x18; /* com=0x18画面左移一次,com=0x1c画面右移一次*/
PR1(); /* 调写指令函数 */
}
}
/***********************/
/* 回归原始位函数 */
/***********************/
HOME()
{
com=0x02; /* 设置归home位指令代码 */
PR1(); /* 调写指令函数 */
}
/**************************/
/* 建立自定义函数 */
/**************************/
CGRAM()
{
unsigned char i,j;
com=0x40; /* 设置CGRAM地址 */
PR1(); /* 调写指令函数 */
for(i=0;i<9;i++)
{
for(j=0;j<8;j++)
{
dat=CGTAB[i][j]; /* 取字模 */
PR2(); /* 调写数据函数 */
}
}
}
/********************/
/* 读BF和AC值函数 */
/********************/
PR0()
{
com=cradd;
}
/*******************/
/* 写指令函数 */
/*******************/
PR1()
{
busy(); /* 调判忙函数 */
cwadd=com; /* 写指令 */
}
/*******************/
/* 写数据函数 */
/*******************/
PR2()
{
busy(); /* 调判忙函数 */
dwadd=dat; /* 写数据 */
}
/*******************/
/* 读数据函数 */
/*******************/
PR3()
{
busy(); /* 调判忙函数 */
dat=dradd; /* 读数据 */
}
/*****************/
/* 判忙函数 */
/*****************/
busy()
{
do
{
ACC=cradd; /* 读状态字 */
}
while (ACC_7==1); /* 判“忙”标志 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -