找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5618|回复: 1
收起左侧

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

[复制链接]
ID:51707 发表于 2013-7-11 02:55 | 显示全部楼层 |阅读模式
#include<pic.h>

__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++);
}
回复

使用道具 举报

ID:56605 发表于 2014-6-10 17:18 | 显示全部楼层
多谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表