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

📄 cssuner-1602.c

📁 长沙太阳人的602字符液晶的文档和代码。
💻 C
字号:
/////////////////////////
//自己写的一段代
//51+lcd1602
//code by BearBearBearBear
//2007.10.10
//antoine_kid@126.com
////////////////////////
#include <reg51.H>
#include<intrins.h>

sbit RS = P2^0;
sbit RW = P2^1;
sbit EN = P2^2;


/////////////软件延时/////////
void delay(unsigned int n)
{
 unsigned int cc;
 while(n-->0)
 {
  for(cc=10;cc>0;cc--); 
 }

}
////////////////////////////////

////////////读lcd状态指令//////
void recom( )
{
 EN=0;
 RS=0;
 RW=1;
 EN=1;

}
////////////////////////////////

//////////测试是否忙///////////////
void busytest()
{ 
  P1=0xff;
   RS=0;
   RW=1;
   EN=1;
   while((P1&0x80)==0x80)
   {
     EN=0;  //这两句protues仿真必须加
     EN=1;  //
   };
   EN=0;

}
/////////////////////////////////

////////////写lcd指令不判断是否忙//////
void wrcom(unsigned char n)
{
 RS=0;
 RW=0;
 P1=n;
 EN=1;
 _nop_();
 EN=0;
}
////////////////////////////////


//////////写lcd指令判断是否忙//////
void wrcomn (unsigned char n)
{     
 busytest();
    wrcom(n);
}
/////////////////////////////

////////清屏//////////////
void clrscr()
{
  wrcomn(0x01);  //清屏
}
/////////////////////////////


///////////初始化lcd///////////
void initlcd()
{
 delay(150);
 wrcom(0x38);
 delay(50);
 wrcom(0x38);
 delay(50);
 wrcom(0x38);


 wrcomn(0x38);
 wrcomn(0x08);  //关显示 不显示光标
  wrcomn(0x01);  //清屏
  wrcomn(0x06);  //光标模式
    wrcomn(0x0c); //开显示
}
////////////////////////////

//////////设置光标位置/////////
void setpos(unsigned char x,unsigned char y)
{
    busytest();
 x&=0x0f;
 y&=0x03;
 if(y==0x00)
  wrcomn(x|0x80);
 else if(y==0x01)
  wrcomn((x+0x40)|0x80); 
}

/////////////////////////////////

////////////写数据//////////////
void wrightdata(unsigned char n)
{
 busytest();
 RS=1;
 RW=0;
 P1=n;
 EN=1;
 _nop_();
 EN=0;
}
///////////////////////

 


///////////写字符串数据////////
void wrightstrdata(unsigned char *s,unsigned int length)
{
 int x,y;
 int YMAX,XMAX[2];
 if(length>16) 
 {
  YMAX=2;
  XMAX[0]=16;
  XMAX[1]=length-16;
 }
 else
 {
  YMAX=1;
  XMAX[0]=length;
  XMAX[1]=0; 
 }
    for(y=0;y<YMAX;y++)
      for(x=0;x<XMAX[y];x++)
     {  
    setpos(x,y);
        wrightdata(*s); 
      s++;
  }
}
///////////////////////////////

///////////主程序////////////
void main()
{
 EN=0;
 initlcd();
 while(1)
 {
      clrscr();
   wrightstrdata("abcdefghijklmopqrstuvwxyz",26);
      delay(3000);
      clrscr();
      wrightstrdata("1234567890",10);
      delay(3000);
      clrscr();
      wrightstrdata("ABCDEFGHIJKLMNOPRSTUVWXYZ",26);
      delay(3000);   
 }
}
////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -