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

📄 1602test.txt

📁 1602 测试程序
💻 TXT
字号:
#include <REG52.h>
#define uchar unsigned char
#define uint unsigned int  
#define LCM_Data P2 //数据口
sbit LCM_RW = P1^1;
sbit LCM_RS = P1^2;
sbit LCM_E = P1^0; 
void delay(uint del)  //延时,晶振12M,延时因单片机型号不同会有些不同
{
 while(del--);
}
void lcd_e_toggle(void)    
{    
    LCM_E = 1;    
    delay(1);    
    LCM_E = 0;    
}    
   
void check_busy(void)
{
 bit result;
 do{
  LCM_RS = 0;
  LCM_RW = 1;
  LCM_E = 0;
  LCM_E = 1;
  LCM_Data=0xff;
  result = (bit)(LCM_Data&0x80);
  LCM_E = 0;
 }while (result == 1);
 delay(1);
}
  
// 循环检测LCD忙标志(BF),直到其值为0,方可执行下一指令    
   
void lcd_wait_until_finish(void)    
{    
    LCM_RW = 1;              // RW置1,状态为读    
    LCM_RS = 0;              // RS置0,读状态时RS需置低电平        
    LCM_E = 1;               // E 置1,读取信息    
    check_busy();   
    LCM_E = 0;               // E重置为0    
}    
   
   
// 公共函数    
   
// 向LCD写命令字    
   
void lcd_command(uchar cmd)    
{    
    LCM_RW = 0;              // RW置0,状态为写    
    LCM_RS = 0;              // RS置0,写入命令字    
        
    LCM_Data = cmd;     // 将命令字cmd送入LCD的数据端口    
    lcd_e_toggle();          // 产生使能脉冲,在下降沿开始执行,将命令字读入    
    lcd_wait_until_finish(); // 等待执行完毕    
}    
   
 
// 设置显示位置( 即写入显示地址),x,y均从0开始    
   
void lcd_goto_xy(uchar x, uchar y)    
{    
    uchar p;       // p为字符显示位置,即DDRAM中的地址    
    if (y==0)    
    {    
        p = 0x00 + x;      // (0,0)显示位置为0x00    
    }    
    else   
    {    
        p = 0x40 + x;      // (0,1)显示位置为0x40    
    }    
    lcd_command(p + 0x80); // 写入显示地址时DB7须为高电平,加0x80    
}    
   
 
// 写字符(传入的参数实际为所需显示字符的地址,即液晶字符产生器中字符的地址)    
   
void lcd_putc(uchar c)    
{    
    LCM_RW = 0;               // RW置0,状态为写    
    LCM_RS = 1;               // RS置1,写入数据    
        
    LCM_Data = c;        // 将字符c(实际上是字符的地址)送入LCD数据端口    
    lcd_e_toggle();           // 使能脉冲    
    lcd_wait_until_finish();  // 等待完成    
}    
   
   
// 指定位置写字符    
/* 
void lcd_xy_putc(uchar x, uchar y, uchar c)    
{    
    lcd_goto_xy(x,y);    
    lcd_putc(c);    
}    
*/   
// 写字符串    
   
void lcd_puts(uchar *s)    
{    
    while(*s)    
    {    
        lcd_putc(*s);    
        s++;    
    }    
}    
   
   
// 指定位置写字符串    
/*   
void lcd_xy_puts(uchar x, uchar y, uchar *s)    
{    
    lcd_goto_xy(x, y);    
    lcd_puts(s);    
}    
*/   
// LCD初始化    
   
void lcd_init(void)    

{
    lcd_command(0x38);         // 设为8位接口模式,显示2行字符    
    lcd_command(0x06);         // 写入新数据后光标右移    
    lcd_command(0x0c);         // 显示功能开,不显示光标    
    lcd_command(0x01);         // 清屏
}
main()
{ lcd_init(); 
  lcd_goto_xy(0,0);
  lcd_puts("Welcome!") ;
  while(1);
}

⌨️ 快捷键说明

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