Nebula Pi评测报告lcd1602·

Nebula Pi 开发板评测报告(九)——LCD1602模块功能测试

ii11nnocent

ii11nnocent

163 0

LCD1602是常见的工业液晶显示模块,开发板上没有焊接LCD1602模块,而是采用排座的形式将接口引出,将开发板上部的跳帽连接右侧LCD,并将LCD1602插入上部黄色排座即可将LCD1602与开发板连接。 使用LCD1602显示Nebula PI字符串的程序如下:

#include "reg52.h"  
  
#define LCD_DB  P2              //宏定义P0口  
sbit RW = P3^5;  
sbit RS = P3^6;  
sbit E  =   P3^4;                       //位定义LCD1602的RW、RS和E端口  
  
void delay(unsigned int i);  
void LCD_WriteCom(unsigned char com);  
void LCD_WriteData(unsigned char dat);  
void LCD_Init(void);  
void LCD_WriteString(unsigned int x,unsigned int y,unsigned char *p);  
  
void delay(unsigned int i)  //延时程序  
{  
    while(i--);  
}  
  
void LCD_WriteCom(unsigned char com)    //写入命令  
{  
    LCD_DB = com;                   //待传送代码放入P0口  
      
    delay(100);                     //延时,等待数据稳定  
    RS = 0;                             //选择发送命令  
    RW = 0;                             //选择写入  
    E = 1;                              //写入时序  
    delay(100);                     //下降沿保持时间  
    E = 0;  
}  
  
void LCD_WriteData(unsigned char dat)       //写入数据  
{  
    LCD_DB = dat;                   //待传送代码放入P0口  
      
    delay(100);                     //延时,等待数据稳定  
    RS = 1;                             //选择输入数据  
    RW = 0;                             //选择写入  
    E = 1;                              //写入时序  
    delay(100);                     //下降沿保持时间  
    E = 0;  
}  
  
void LCD_Init(void)         //LCD初始化子程序  
{  
    LCD_WriteCom(0x38);     //功能设定,设置双行显示,8位数据总线DB0~DB7,5X7点阵/字符  
    LCD_WriteCom(0x0c);     //显示开关设定,开显示,不显示光标  
    LCD_WriteCom(0x06);     //进入模式设定,写一个数据后光标向右移动,显示屏不移动  
    LCD_WriteCom(0x01);     //清屏,清空DDRAM的内容  
}  
  
/*显示字符串函数,x为行数:1~2,y为列数:1~16,*p是要显示的字符串指针*/  
void LCD_WriteString(unsigned int x,unsigned int y,unsigned char *p)  
{  
     x--;  
    y--;  
    while(*p != '\0')                         //如果没显示到字符串结尾时,就进入循环  
    {  
        if(x==0)                                 //在第一行显示  
        {  
            y|=0x80;  
            LCD_WriteCom(y);  //将需要显示的列数位置与0x80相与,得到在该行下的具体位置  
            LCD_WriteData(*p); //显示p中的字符  
            y++;                        //显示完一个字符后,列数+1  
            p++;                       //指针地址+1,显示下一个字符  
        }  
        if(x==1)                                //在第二行显示  
        {  
            y|=0xc0;  
            LCD_WriteCom(y); //将需要显示的列数位置与0xc0相与,得到在该行下的具体位置  
            LCD_WriteData(*p); //显示p中的字符  
            y++;                        //显示完一个字符后,列数+1  
            p++;                       //指针地址+1,显示下一个字符  
        }  
    }         
}  
  
void main(void)  
{  
    LCD_Init();  
    while(1)  
    {  
        LCD_WriteString(1,5,"Nebula PI");  //在第一行第五列开始显示字符串
    }  
}

所属系列

从当前文章继续阅读它所在合集中的前后内容。

相关文章

优先推荐同专题、同标签和同作者内容,补足热门文章。

评论 0

登录 后参与评论

评论

成为第一个评论的人