📄 2401283.c
字号:
#include <reg52.h>#include <absacc.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit 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); //光标下移 0x4c-4f 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); //光标下移 0x4c-4f 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); //光标下移 0x4c-4f 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 + -