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

📄 2401283.c

📁 液晶屏LCM2401283的规格说明书及其显示控制程序
💻 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 + -