社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 精华区
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
搜索
查看: 700|回复: 3

[求助] 跪求帮完善程序,加个移屏

[复制链接]

21

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-4-6 21:37:12 | 显示全部楼层 |阅读模式
/*****************************************************************
* 文件名:Lcd1602.c
* 描  述:1602液晶驱动文件
* 版本号:1.0.0
*****************************************************************/
// 配置头文件
#include <reg52.h>
#include <intrins.h>
#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单片机论坛

回复

使用道具 举报

868

TA的帖子

0

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2015-4-6 21:45:55 | 显示全部楼层
给字符串前面加空格,再把后面的给截掉或移动到字符串前面来就可以了,关键是字符串处理,跟屏的驱动无关。
如:
ABCDEFGHI
  ABCDEFGH
    ABCDEFG
或者:
ABCDEFGHI
ABCDEFGHI
I ABCDEFGH
HI ABCDEFG

回复

使用道具 举报

1973

TA的帖子

24

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2015-4-6 22:39:49 | 显示全部楼层

回复

使用道具 举报

21

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2015-4-7 16:49:01 | 显示全部楼层
shower.xu 发表于 2015-4-6 22:39
http://www.tudou.com/programs/view/r8F5NulaZGc/
是不是这个样子

嗯···

回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-9-22 16:15 , Processed in 0.997184 second(s), 19 queries , Redis On.

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