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

📄 lcd1602.c

📁 PROTEUS的仿真实例 有数字显示 很好的
💻 C
字号:
#include <reg51.h>
#include <intrins.h>

typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef bit BOOL ; 

sbit rs = P2^0;  //
sbit rw = P2^1;
sbit ep = P2^2;
unsigned char i,j,k,m,n;
unsigned char  dis1[] = {"WELCOME!"};

unsigned char  dis2[] = {' ','t','i','m','e',':','0','0',':','0','0',':','0','0',' ',' '};


delay(unsigned char ms)
{       // 延时子程序
 
 while(ms--)
 {
  for(i = 0; i< 250; i++)
  {
   _nop_();
   _nop_();
   _nop_();
   _nop_();
  }
 }
}

BOOL lcd_bz()
{       // 测试LCD忙碌状态
 BOOL result;
 rs = 0;
 rw = 1;
 ep = 1;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 result = (BOOL)(P0 & 0x80);
 ep = 0;
 return result; 
}

lcd_wcmd(BYTE cmd)
{       // 写入指令数据到LCD
 while(lcd_bz());
 rs = 0;
 rw = 0;
 ep = 0;
 _nop_();
 _nop_(); 
 P0 = cmd;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 ep = 1;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 ep = 0;  
}

lcd_pos(BYTE pos)
{       //设定显示位置
 lcd_wcmd(pos | 0x80);
}

lcd_wdat(BYTE dat) 
{       //写入字符显示数据到LCD
 while(lcd_bz());
 rs = 1;
 rw = 0;
 ep = 0;
 P0 = dat;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 ep = 1;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 ep = 0; 
}

lcd_init()
{       //LCD初始化设定
 lcd_wcmd(0x38);   //
 delay(1);
 lcd_wcmd(0x0c);   //
 delay(1);
 lcd_wcmd(0x06);   //
 delay(1);
 lcd_wcmd(0x01);   //清除LCD的显示内容
 delay(1);
}
show1()
{j=0;
 while(dis1[j] != '\0')
 {                   // 显示字符welcome!
  lcd_wdat(dis1[j]);
  j++;
  delay(80);
  }
}
show2()
{k=0;
 while(dis2[k] != '\0')
 {                     // 显示时间
  lcd_wdat(dis2[k]);
  k++;
  delay(1);
 }
}

main()
{

 lcd_init();        // 初始化LCD   
 delay(10);
 lcd_pos(0);       // 设置显示位置为第一行的第0个字符.0--15
 show1();
 
lcd_init();
delay(30);
 if(P3^0==0) 
                      //判断是否有键按下//
  delay(20);    //软件延时//
 while(P3^0==0)  //确认是否按下//
{
lcd_init();  // 初始化LCD
delay(30); 
lcd_pos(0); 
dis2[7]+=1;
show2();
}
 delay(200);

   
 // while(1);            //进行扫描//
//{if(P3^0==0) 
                      //判断是否有键按下//
//  delay(20);    //软件延时//
 //if(P3^0==0)  //确认是否按下//
//{
//lcd_init();  // 初始化LCD
//delay(30); 
//lcd_pos(0); 
//dis2[7]+=1;
//show2();
}// }  // while(1);   // 




⌨️ 快捷键说明

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