📄 2401283.c
字号:
#include <reg52.h>
#include <absacc.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit wr_=P2^0;
sbit rd_=P2^1;
sbit cs_=P2^2;
sbit a0=P2^3;
sbit rst=P2^4;
uchar data cradd1,cradd2,dat2,dat0,com,ctrlcode;
uchar urow,ucol,h;
uchar code hztab[2*32]={
0x40,0x00,0x27,0xF0,0x24,0x10,0x07,0xF0,0x94,0x10,0x54,0x10,0x17,0xF0,0x20,0x00,
0x2F,0xFC,0xC9,0x24,0x49,0x24,0x49,0x24,0x49,0x24,0x49,0x24,0x5F,0xFE,0x40,0x00, /* 温*/
0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x2F,0xFC,0x22,0x20,0x23,0xE0,
0x20,0x00,0x27,0xF8,0x22,0x10,0x21,0x20,0x20,0xC0,0x41,0x30,0x46,0x0E,0x98,0x04, /* 度*/
};
/*=======================================================*/ /* 延时子程序*/
void short_delay(uint i)
{ uint j;
for(j=0;j<=i;j++);
}
void delayms(uchar tickms)
{ uchar count,i;
_nop_();
_nop_();
_nop_();
for(i=tickms;i>0;i--)
{ for(count=0;count<=58;count++) {;}
_nop_();
}
}
/* ----------------------------------------*/
void WraDataByte(uchar dat0)/* 写显示数据子程些*/
{
P0=0xff;
a0=0;
_nop_();
P0=dat0;
_nop_();
_nop_();
cs_=0;
wr_=0;
_nop_();
wr_=1;
cs_=1;
}
/* ----------------------------------------*/
void WraControlByte(uchar com)/* 写指令代码子程序)*/
{
P0=0xff;
a0=1;
_nop_();
_nop_();
P0=com;
_nop_();
_nop_();
cs_=0;
wr_=0;
_nop_();
wr_=1;
cs_=1;
a0=1;
}
/* ----------------------------------------*/
void FullWithTwoByte(uchar data1,uchar data2)
{
uchar i,j;
for(i=0;i<30;i++)
{
WraDataByte(data1);
}
for(j=0;j<30;j++)
{
WraDataByte(data2);
}
}
/* -----------清屏子程序-----------------------------*/
void clr(void)
{ uchar i;
WraControlByte(0x59);
WraDataByte(0x54);
WraControlByte(0x46);
WraDataByte(0x00);
WraDataByte(0x40);
WraControlByte(0x4C);
WraControlByte(0x42);
for(i=0;i<120;i++)
{
FullWithTwoByte(0x00,0x00);
}
}
/* ----------------------------------------*/
void wrhz(unsigned int row,unsigned int col) /* 写汉字子程序 */
{
int i,k;
unsigned int cursor,tempaddress;
unsigned int temprow,tempcol;
unsigned char addl,addh;
WraControlByte(0x59);
WraDataByte(0x54);
WraControlByte(0x4f); //光标下移
for(i=0;i<2;i++) /*4个汉字*/
{
tempcol=col+i*2;
for(k=0;k<16;k++)
{
temprow=row+k;
cursor=0x4000+temprow*40+tempcol; //加上显示一区的起始地址
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
WraControlByte(0x46); //设置光标指针
WraDataByte(addl);
WraDataByte(addh);
WraControlByte(0x42);
WraDataByte(hztab[i*32+2*k]);
}
for(k=0;k<16;k++)
{
temprow=row+k;
cursor=0x4000+temprow*40+tempcol+1;//加上显示一区的起始地址
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
WraControlByte(0x46); //设置光标指针
WraDataByte(addl);
WraDataByte(addh);
WraControlByte(0x42);
WraDataByte(hztab[i*32+(2*k+1)]);
}
}
WraControlByte(0x4c);
}
/* ----------------------------------------*/
void wrzf(void) /* 写字符子程序 */
{
int i;
WraControlByte(0x59);
WraDataByte(0x54);
WraControlByte(0x46); //设置光标指针
WraDataByte(0x00);
WraDataByte(0x00);
WraControlByte(0x4c);
WraControlByte(0x42);
for (i=1;i<700;i++)
{
WraDataByte(0x00);
}
WraControlByte(0x59);
WraDataByte(0x54);
WraControlByte(0x46); //设置光标指针
WraDataByte(0x2c);
WraDataByte(0x00);
WraControlByte(0x4c);
WraControlByte(0x42);
WraDataByte(0x3a);
WraDataByte(0x32);
WraDataByte(0x34);
WraDataByte(0x31);
WraDataByte(0x2e);
WraDataByte(0x31);
WraDataByte(0xdf);
WraDataByte(0x43);
}
/* -------------初始化子程序---------------------------*/
void Initial()
{
WraControlByte(0x40);
WraDataByte(0x30);
WraDataByte(0x87);
WraDataByte(0x07);
WraDataByte(0x1d);
WraDataByte(0x39);
WraDataByte(0x95);
WraDataByte(0x28);
WraDataByte(0x00);
WraControlByte(0x44);
WraDataByte(0x00); /* ----------一区首地址------------------------------*/
WraDataByte(0x00);
WraDataByte(0x7f);
WraDataByte(0x00); /* ----------二区首地址------------------------------*/
WraDataByte(0x40);
WraDataByte(0x7f);
WraDataByte(0x00); /* ----------三区首地址------------------------------*/
WraDataByte(0x80);
WraDataByte(0x00);
WraDataByte(0x00);
WraControlByte(0x5d);
WraDataByte(0x07);
WraDataByte(0x87);
WraControlByte(0x5a);
WraDataByte(0x00);
WraControlByte(0x5b);
WraDataByte(0x08);
WraControlByte(0x58);
WraDataByte(0x56);
}
/* ----------------------------------------*/
/* 主程序 */
main()
{ uchar data i,j;
uchar code hztab[2][16*2];
rst=0;
delayms(1000);
delayms(1000);
delayms(1000);
rst=1;
delayms(1000);
delayms(1000);
delayms(1000);
Initial();
clr();
delayms(1000);
delayms(1000);
delayms(1000);
delayms(1000);
delayms(1000);
do{
wrhz(0x00,0x00); /* 显示汉字 */
wrzf( ); /* 显示字符 */
for(i=0;i<30;i++)
{
delayms(1000);
}
}while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -