2192|3

14

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

跪求帮完善程序,加个移屏 [复制链接]

/*****************************************************************
* 文件名:Lcd1602.c
* 描  述:1602液晶驱动文件
* 版本号:1.0.0
*****************************************************************/
// 配置头文件
#include
#include
#include "LCD1602.h"

void delayms(unsigned int j)
{
        unsigned int i;
        while(j --)
        {
                for(i = 0; i < 1200; i ++);
        }
}


// LCD1602引脚配置
#define LCD1602_DB    P0

sbit LCD1602_RS  =  P2^5;
sbit LCD1602_RW  =  P2^6;
sbit LCD1602_EN  =  P2^7;


// 5us驱动函数延时专用
#define delay_5us()     {_nop_();_nop_();_nop_();_nop_();_nop_();}

//// 驱动函数声明:写数据与写命令
//void LCD1602_Write_Cmd(unsigned char);
//void LCD1602_Write_Data(unsigned char);
//


/*****************************************************************
函数名:        LCD1602_Init
描述:            LCD1602 初始化

入口参数:  无
出口参数:   无
返回值:        无
*****************************************************************/
void LCD1602_Init()
{
    LCD1602_Write_Cmd(0x38);            //  8位数据,两行,5 * 7点阵
    LCD1602_Write_Cmd(0x38);            //  8位数据,两行,5 * 7点阵
                LCD1602_Write_Cmd(0x38);            //  8位数据,两行,5 * 7点阵
                LCD1602_Write_Cmd(0x38);            //  8位数据,两行,5 * 7点阵
    // 三种显示方式
    LCD1602_Write_Cmd(0x0c);           //  开显示但无标
    // LCD1602_Write_Cmd(0x0e);         //  开显示,有光标但光标不闪烁
    //LCD1602_Write_Cmd(0x0f);            //  开显示,有光标且光标闪烁
        
    LCD1602_Write_Cmd(0x06);            //  显示地址指针自加1
    LCD1602_Write_Cmd(0x01);            //  清屏
                LCD1602_Clear();
}

/*****************************************************************
函数名:        LCD1602_ShowStr
描述:            在指定的行,指定的位置显示指定的字符串

入口参数:  x :显示位置   y:1 or 2   s: 字符串地址
出口参数:   无
返回值:        无
*****************************************************************/

void LCD1602_ShowStr(unsigned char x,unsigned char y, unsigned char *s)
{
    if(y == 1)                          //  写第一行x位置
    {
        LCD1602_Write_Cmd(0x80 + x);
    }
    else                                //  写第二行x位置
    {
        LCD1602_Write_Cmd(0xc0 + x);
    }
    while(*s)                           //  逐个写入字符
    {
        LCD1602_Write_Data(*s);
        s ++ ;
    }     
}

/*****************************************************************
函数名:        LCD1602_Clear
描述:            LCD1602 清屏

入口参数:  无
出口参数:   无
返回值:        无
*****************************************************************/
void LCD1602_Clear(void)
{
    LCD1602_Write_Cmd(0x01);           // 写入清屏命令
    delayms(10);
}

// LCD底层驱动:写命令
void LCD1602_Write_Cmd(unsigned char cmd)
{  
    LCD1602_RS = 0;                         // 选择指令寄存器  
    LCD1602_RW = 0;                         // 选择写
                LCD1602_EN = 1;                         // 使能LCD
                delay_5us();
    LCD1602_DB = cmd;                       // 写入命令值   
    delayms(10);     
    LCD1602_EN = 0;                         //释放总线
   
}

// LCD底层驱动:写数据
void LCD1602_Write_Data(unsigned char Data)
{
    LCD1602_RS  = 1;                        // 选择数据寄存器
    LCD1602_RW  = 0;                        // 选择写
                LCD1602_EN  = 1;                        // 使能LCD
    delay_5us();
    LCD1602_DB  = Data;                     // 写入数据值
    delayms(10);
    LCD1602_EN  = 0;                        //释放总线
   
}
此帖出自51单片机论坛

最新回复

http://www.tudou.com/programs/view/r8F5NulaZGc/ 是不是这个样子  详情 回复 发表于 2015-4-6 22:39
点赞 关注
 

回复
举报

927

帖子

0

TA的资源

纯净的硅(中级)

沙发
 
给字符串前面加空格,再把后面的给截掉或移动到字符串前面来就可以了,关键是字符串处理,跟屏的驱动无关。
如:
ABCDEFGHI
  ABCDEFGH
    ABCDEFG
或者:
ABCDEFGHI
ABCDEFGHI
I ABCDEFGH
HI ABCDEFG
此帖出自51单片机论坛
 
 
 

回复

2002

帖子

24

TA的资源

五彩晶圆(高级)

板凳
 
 

回复

14

帖子

0

TA的资源

一粒金砂(初级)

4
 
shower.xu 发表于 2015-4-6 22:39
http://www.tudou.com/programs/view/r8F5NulaZGc/
是不是这个样子

嗯···
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表