标题: LCD1602显示 [打印本页]

作者: 墨月敏姐姐    时间: 2018-11-27 11:03
标题: LCD1602显示
#include <reg51.h>
#include <intrins.h>

sbit rs= P3^5;    //寄存器类型,1表示数据寄存器,2表示指令寄存器
sbit rw = P3^6;   //读写选择  1表示读,0表示写
sbit ep = P3^7;   //读写使能,下降沿使能


void delay(unsigned char ms)     //延时 n  ms
{
unsigned char i;
while(ms--)
{
  for(i = 0; i<123; i++)   
  {
   ;
  }   
}
}

bit lcd_bz()           //判断LCD是否忙碌
{
bit result;
rs = 0;
rw = 1;
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (bit)(P1 & 0x80);
ep = 0;
return result;
}
void lcd_wcmd(unsigned char cmd)     //写指令
{
while(lcd_bz());//判断LCD是否忙碌
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P1 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}

void lcd_pos(unsigned char pos)      //显示地址
{
lcd_wcmd(pos | 0x80);
}
             //写数据
void lcd_wdat(unsigned char dat)
{
while(lcd_bz());//判断LCD是否忙碌
rs = 1;
rw = 0;
ep = 0;
P1 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}

void lcd_wstr(const unsigned char *s)
{
  unsigned int x,y,z;
  x=number/10000;     //x 1,2,3,4
  y=(number/1000)%10;  // y 2
  z=(number/100)%10;     //z 3
  write_LCD_DATA1(int2charLCD[x]);
  display_LCD_string(".");
  write_LCD_DATA1(int2charLCD[y]);
  write_LCD_DATA1(int2charLCD[z]);
}

void lcd_init()          //LCD初始化
{
lcd_wcmd(0x38);    //功能设定
delay(1);
lcd_wcmd(0x0c);    //显示器开关
delay(1);
lcd_wcmd(0x06);    //设定进入模式
delay(1);
lcd_wcmd(0x01);    //清除显示屏,把光标移至左上角
delay(1);
}

void main(void)
{
lcd_init();// LCD初始化
delay(10);
lcd_pos(0x01);//设置显示位置
//i = 0;
while(1){
  lcd_wstr("abcdefg");
  lcd_pos(0x42);
  lcd_wstr("abcdefg");
  lcd_wcmd(0x01);
  delay(3);
}
}







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1