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

📄 zk.c

📁 是单片机上液晶显示程序:带中文字库的LM3033:控制器是ST7920
💻 C
字号:
#include<REG51.H>
#include "INTRINS.H"

#define  LCD_BUS  P0
 sbit RS= P2^5;
 sbit RW=P2^6;
 sbit E =P2^7; 
 /*
sbit pcb=P1^3;
sbit RS= P1^0;
sbit RW=P1^1;
sbit E =P1^2;
  */






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

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

   void delay(unsigned int t) ;             //延时t倍///

   unsigned char  check_bf(unsigned char Address_AC);   //LCD标志位查询//
   void  write_data(unsigned char dispdata);    //写数据//
   void write_comand(unsigned char cmdcode);    //写命令//

   void lcd_init();                           ///LCD初始化//
  void stringdisp (unsigned char  code *str,unsigned char adress); //显示字符串//


	 void disp_graph();						    //总界面:教室灯控系统
	 void disp_graph_password();                //密码输入登录界面
	 void disp_graph_set();					    //系统设置总界面
/////////////////////////////////////////////////////

   unsigned char  code str[]="  教室灯控系统  ";	  //登陆总界面
   unsigned char  code str1[]="  ●登陆界面  →";
   unsigned char  code str2[]="  ●设置界面  →";

   unsigned char  code str_password1[]="请输入登录密码:";	 //输入密码界面
   unsigned char  code str_password2[]="  ******  ";
   unsigned char  code str_password3[]="   1 2 3 4 5 6  ";
   unsigned char  code str_password4[]="     6 7 8 9    ";

   unsigned char  code str_set1[]="设置选项:    ";	  //设置总界面
   unsigned char  code str_set2[]="●密码设置    →";
   unsigned char  code str_set3[]="●系统时间设置→";
   unsigned char  code str_set4[]="●定时时间设置→";

  // unsigned char code str3[]="1234567891234567";

// unsigned char  code str12[14][3]={"1 ","2 ","3 ","4 ","5 ","6 ","7 ","8 ","9 ","10","11","12","13","14",};

//////////////////////////////////////////////////////////////////
 void main()
 {

  LCD_BUS=0XFF;


  LCD_BUS=LCD_BUS
  lcd_init();
 stringdisp("1",0x8b);
 //disp_graph();			  //登陆总界面
  //disp_graph_password();
  // disp_graph_set();


  //stringdisp(&str3,0x80);   ///////显示开机画面//////

  //write_comand(0x85);
 // stringdisp("1",0x88);
  // data_disp(198,0x98);	//数字显示

 delay(100);
   }

/**********************************************************************
函数原型: void  delay(unsigned int t)
入口参数:
		   t  :  延时程序t倍的100us
出口参数:   无
返 回 值:  无
说    明: LCD液晶延时子程序t倍100us
**********************************************************************/
///////////////////延时程序/////////////////////////////////////

  void  delay(unsigned int t)          //延时程序t倍100us
  {
    unsigned char j;
    unsigned int  i;
    for(i=0;i<t;i++)
    for(j=0;j<29;j++);

}
/***********************************************************************
函数原型:check_bf(unsigned char Address_AC)
入口参数:无
出口参数:无

返回值:
      Address_AC:当前状态的地址(一个无符号字符)
功能说明:LCD液晶的状态BF查询和DDRAM的地址查询
************************************************************************/
////////////////////////////查询BF///////////////////////////////////////

unsigned char check_bf(unsigned char Address_AC)
  {
   unsigned char  BF;         ////忙标志位,BF是某字节的一位,是D7位,如果为1,则忙//////
   LCD_BUS=0x00 ;
   do
    {
     RS=0;
     RW=1;
     E=1;
     BF=LCD_BUS;              /////此处BF定义不是一个位,而是一个字节,不过在处理中代表标志位bf///
     _nop_();
     E=0;
	 Address_AC=BF;
     BF=BF&0x80;               ////取出BF////
     }while( BF!=0x00 ) ;                 //////判断是否忙?///////
	 Address_AC=Address_AC&0x7f;  ///读出DDRAM的地址指针AC的值
     delay(5) ;
	 return(Address_AC);
  }
/**********************************************************************
函数原型:write_comand(unsigned char cmdcode)
入口参数:
		   cmdcode  :  命令字 (0x01:清屏)
出口参数:   无
返 回 值:  无
说    明: 对lcd写命令字
**********************************************************************/
/////////////////////////写命令子程序//////////////////////////////////

 void write_comand(unsigned char cmdcode)
 {
   check_bf();
   RS=0;
   RW=0;
   E=1;
   LCD_BUS=cmdcode;
   _nop_();
    _nop_();
	 _nop_();
	  _nop_();
   E=0;
   delay(5) ;
 }
/***********************************************************************
函数原型:write_data(unsigned char dispdata)
入口参数:
          dispdata:写入lcd要显示内容
出口参数:无
返回值:  无
功能说明:LCD液晶的数据写入指令
************************************************************************/
//////////////////////////写数据子程序///////////////////////////////////

void  write_data(unsigned char dispdata)
  {
   check_bf();
   RS=1;
   RW=0;
   E=1;
   LCD_BUS=dispdata;
   _nop_();
    _nop_();
	 _nop_();
	  _nop_();
	   _nop_();

   E=0;

   }
/******************************************************************
 函数:lcd_init()
入口参数:无
出口参数:无
返回值:无
功能说明:LCD液晶的初始化
********************************************************************/
 /////////////////////////液晶初始化////////////////////////////////
void  lcd_init()
 {
    delay(100);
    write_comand(0x30);                   //8并,基本指令
	delay(10);
    write_comand(0x30);                  //8并,
    delay(5);

    // write_comand(0x0c);                  //整体显示开,游标关不反白
   //  write_comand(0x0d);                  //整体显示开,游标关反白
    write_comand(0x0f);                  //整体显示开,游标开反白
	delay(10);

    write_comand(0x01);                  //清屏
	delay(5);

	write_comand(0x06);                  //游标移动方向及地址AC的增减方式

 }
/***********************************************************************
函数原型:stringdisp(unsigned char code *str,unsigned char adress)
入口参数:
              str:要写入lcd显示的字符串数组
		  adress :要设定字符串在液晶显示中地址
出口参数:无
返回值:  无
功能说明:LCD液晶的字符串显示子程序
************************************************************************/

///////////////////////////字符串显示////////////////////////////////////

void  stringdisp(unsigned char code *str,unsigned char adress)       //字符串显示
  {
    write_comand(0x30);
    write_comand(adress);
    while(*str>0)
     {
      write_data(*str) ;
      str++;
      delay(1);
      }
   }


///////////////////////////系统登陆界面///////////////////////////////////

 void disp_graph()
  {
    lcd_init();
    stringdisp(&str,0x80);       //////总界面:教室灯控系统////////
	delay(100);
    stringdisp(&str1,0x88);     //////总界面:登陆界面////////////
	delay(100);
//	stringdisp(&str2,0x88);     //////总界面:设置界面////////////
//    delay(100);
    write_comand(0x8f);


//	write_comand(0x34);			////设置为全反白显示
   //	write_comand(0x05);
     }


⌨️ 快捷键说明

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