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

📄 1602_c.c

📁 基于51单片机的1602液晶显示c语言及汇编程序
💻 C
字号:

///////////////////////////////////////////////////
//P2接1602的数据位
//1602第1行显示 " guangxi beihai"
//     第2行显示"    subingen   "
////////////////////////////////////////////////////


#include<reg51.h> 
#include<intrins.h>//当需用_nop_()时,使用它
#define uchar unsigned char


                                                      
uchar display1[16]={" guangxi beihai "};//要显示的数据
uchar display2[16]={"    subingen    "};




/******************************************************************
  1602程序部分      
  数据总线接到p2口   用到1ms延时程序   <intrins.h>函数
*******************************************************************/

uchar  command[]={0x38,0x38,0x38,0x38,0x08,0x01,0x06,0x0c}; /* P2=0x01;//清屏并光标复位
                                                P2=00111000;//显示模式设置,8位总线,2行,5*7
                                                P2=0x0c;//开显示。光标和闪烁
                                                P2=0x06;//文字不动,光标自动右移
                                                P2=0x80;//写入的起始位置,第1行第1列*/

sbit e=P3^7;
sbit rw=P3^6;
sbit rs=P3^0;
sbit busy=P2^7;

//init();//1602初始化
//dataw();//数据写入
//comw();//指令写入

//--------------------------延时程序-------------------------------
void delay(uchar i)
{  uchar a;
   while(i--)
      {for(a=0;a<=125;a++)
         {;}
       }
}  
//--------------------查LCD是否忙程序-----------------------
 void wait(void)
{   do
    { P2=0xff;
      rs=0;//
	  rw=1;//
	  e=0;
	  _nop_();
	  _nop_();
      e=1; }
    while(busy==1);
}


//-------------------数据写入函数-------------------------
void dataw(uchar da)
{  wait();
   rs=1;
   rw=0;
   e=1;
   P2=da;
   e=0;
}


//-------------------指令和显示地址写入子函数------------

void comw(uchar da)
{  wait();
   rs=0; 
   rw=0;
   e=1;
   P2=da;
   e=0;
}


//--------------------------初始化--------------------------------
void init(void)
{  uchar i; 
   delay(20);
    e=1; 
    for(i=0;i<8;i++)
     {comw(command[i]);
      delay(5);
     }
  
}


/****************************************************************************
  主函数部分

*****************************************************************************/
main()
  {    uchar i=0;
  
       init();//初始化
  
       comw(0x80);//写入第一行
       for(i=0;i<16;i++)
	      dataw(display1[i]);//数据写入

	   comw(0xc0);//写第二行
       for(i=0;i<16;i++)
		  dataw(display2[i]);//数据写入

	  while(1);  
   }

/*******************************************************************************/



⌨️ 快捷键说明

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