×
单片机 > 单片机程序设计 > 详情

PIC单片机驱动LCD1602液晶循环显示两行字符串程序

发布时间:2020-06-17 发布时间:
|

#include


__CONFIG(0x1832);

//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡


//LCD控制线宏定义

#define rs RA0  

#define rw RA1

#define e  RA2


char web[ ] = {"www.51hei.com"};

char tel[ ] = {"QQ:776860123 " };


  

void init();                   //申明I/O口初始化函数

void lcd_init();               //申明LCD初始化函数

void write(char x);            //申明显示1字节数据函数

void lcd_enable();             //申明LCD显示设置函数

void delay();                  //申明延时函数

void writelcd(char *pt);       //声明LCD写字符串函数


/****************************************************************************

* 名    称:main() 

* 功    能:主函数

* 入口参数:

* 出口参数:

* 说    明:

****************************************************************************/

void main()

{

    init();                //调用I/O口初始化函数

    lcd_init();            //调用LCD初始化函数 


    {

        writelcd(web);          //调用显示公司web地址函数

        PORTD = 0XC0;           //设置第2行显示地址

        lcd_enable();           //调用LCD显示设置函数

        writelcd(tel);          //调用显示公司tel函数

    }

    while (1);

}


/****************************************************************************

* 名    称:init() 

* 功    能:I/O口初始化

* 入口参数:

* 出口参数:

* 说    明:

****************************************************************************/

void init()

{

    ADCON1 = 0X07;               //设置A口为普通I/O口

    RA1=1;

    TRISA = 0X00;                //设置A口为输出

    TRISD = 0X00;                //设置D口为输出

}


/****************************************************************************

* 名    称:lcd_init() 

* 功    能:LCD初始化

* 入口参数:

* 出口参数:

* 说    明:

****************************************************************************/

void lcd_init()

{

    PORTD = 0X1;                 //清除显示

    lcd_enable();

    PORTD = 0X38;                //8位2行5*7点阵

    lcd_enable();

    PORTD = 0X0e;                //显示开,光标开,闪烁

    lcd_enable();

    PORTD = 0X06;                //文字不动,光标右移

    lcd_enable();

    PORTD = 0X80;                //公司web显示地址

    lcd_enable();

}


/****************************************************************************

* 名    称:write() 

* 功    能:写一个字节数据到LCD

* 入口参数:char x 字符

* 出口参数:

* 说    明:

****************************************************************************/

void write(char x)

{

    PORTD = x;                   //待显示数据送PORTD口

    rs = 1;                      //该字节数据为数据,而不是命令

    rw = 0;                      //此次操作为写,而不是读

    e = 0;                       //拉低使能信号

    delay();                     //保持使能信号为低一段时间

    e = 1;                       //拉高使能信号,建立LCD操作所需要的上升沿

}


/****************************************************************************

* 名    称:lcd_enable() 

* 功    能:LCD显示设置

* 入口参数:

* 出口参数:

* 说    明:

****************************************************************************/

void lcd_enable()

{

    rs = 0;                     //该字节数据为命令,而不是数据

    rw = 0;                     //此次操作为写,而不是读

    e = 0;                      //拉低使能信号

    delay();                    //保持使能信号为低一段时间

    e = 1;                      //拉高使能信号,建立LCD操作所需要的上升沿

}


/****************************************************************************

* 名    称:delay() 

* 功    能:延时

* 入口参数:

* 出口参数:

* 说    明:

****************************************************************************/

void delay()

{

    int i;

    for (i = 0;i < 5000;i++);

}


/****************************************************************************

* 名    称: writelcd()

* 功    能: 在LCD上显示字符串

* 入口参数:char *pt 字符串的首地址

* 出口参数:

* 说    明:

****************************************************************************/

void writelcd(char *pt)

{

    while(*pt)

        write(*pt++);

}


关键字:PIC单片机  驱动LCD1602液晶  循环显示

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机中高阻态的实质及意义