利用最少的连线操作LCD1602液晶屏程序(转)
jrcsh2009/08/14软件综合 IP:广东
#define DPORT      PORTB    // 定义数据端口为B端口
#define DTRIS      TRISB        // 定义数据端口的方向
#define CTRIS_E  TRISC0    // 定义端口的方向
#define CTRIS_RS TRISC1    // 定义端口的方向
#define RS    RC1    
#define E     RC0

void LCD_WriteComm(unsigned int TheComm){
// 定义向LCD写一个指令字的函数
    CTRIS_RS = 0;        // 定义端口为写状态
    CTRIS_E = 0;        
    DTRIS = 0x00;        
    DPORT = TheComm;    // 把数据输出到端口,实际上只是高4位
    RS    = 0;
    E     = 0;
    E     = 0;            // 多了一个指令,是为了让信号电平有足够得时间稳定
    E     = 1;
    DPORT = TheComm<<4;    // 将数据的低4位移位到高4位,输出到端口
    RS    = 0;
    E     = 0;
    E     = 0;
    E     = 1;
}

void LCD_WriteDate(unsigned int Hang,unsigned int No,unsigned char TheDate){
// 定义向LCD的第Hang行的第No个位置,写字符TheDate
// Hang:0,1; No:0-15;
    unsigned char tmpi;
    tmpi = Hang*0x40+No+0x80;    // 计算地址指针
    LCD_NoBusy();
    CTRIS_RS = 0;        
    CTRIS_E = 0;        
    DTRIS = 0x00;        
    DPORT = tmpi;
    RS    = 0;
    E     = 0;
    E     = 0;
    E     = 1;
    DPORT = tmpi<<4;
    E     = 0;
    E     = 0;
    E     = 1;
    
    LCD_NoBusy();
    DTRIS = 0x00;            
    DPORT = TheDate;
    RS    = 1;        
    E     = 0;
    E     = 0;
    E     = 1;
    DPORT = TheDate<<4;
    E     = 0;
    E     = 0;
    E     = 1;
}

void LCD_NoBusy(){
    delay(2);
}

void LCD_init()
// 初始化LCD显示屏
{
    
    delay(20);            //1、延时大约20ms
    CTRIS_RS = 0;        
    CTRIS_E = 0;        
    DTRIS = 0x00;        
    DPORT = 0x30;
    RS    = 0;        
    E     = 0;
    E     = 0;
    E     = 1;
    delay(5);        
    DPORT = 0x30;
    RS    = 0;        
    E     = 0;
    E     = 0;
    E     = 1;
    delay(2);        
    DPORT = 0x30;
    RS    = 0;        
    E     = 0;
    E     = 0;
    E     = 1;
    delay(2);        
    DPORT = 0x20;
    RS    = 0;        
    E     = 0;
    E     = 0;
    E     = 1;
    delay(2);        

    LCD_WriteComm(0x28);    
    delay(4);
    LCD_WriteComm(0x08);    //4、写指令08H,关闭LCD    
    LCD_NoBusy();
    LCD_WriteComm(0x01);    //5、写指令01H,清屏LCD
    LCD_NoBusy();
    LCD_WriteComm(0x06);    //6、写指令06H
    LCD_NoBusy();
    LCD_WriteComm(0x0C);    //7、写指令0CH
};
来自:计算机科学 / 软件综合
5
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
AsyncMaster
14年11个月前 IP:未同步
140300
呃。。不就是四线模式吗。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
warmonkey
14年11个月前 IP:未同步
140390
不如RS485-mcu-lcd方式
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
boddmg
14年10个月前 IP:未同步
143480
用得着吗
最爽的是用74XX595
不过速度慢点就是了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
kangyuhelf2
14年10个月前 IP:未同步
143493
- -!
刚想找。赞一个
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
jrcsh
学者 笔友
文章
491
回复
6730
学术分
4
2009/01/02注册,6年4个月前活动

.

主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}