找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2233|回复: 2
打印 上一主题 下一主题
收起左侧

使用了不连续的引脚对LCD的8位数据口进行驱动

[复制链接]
跳转到指定楼层
楼主
ID:108558 发表于 2017-2-21 16:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

如果硬件上使用了不连续的引脚对LCD的8位数据口进行驱动,
例如:液晶数据口DB0--DB1对应的是 P1_6  P1_7  数据口DB2--DB7对应的是P3_2 - P3_7
STC 89C52 ,请问有朋友遇到过类似问题么,使用了怎样的编程手法?
PS.问题出在了对LCD_data的写入方式上,因为是不连续的引脚
原来就是 #define LCD_data P0. 现在不连续了怎么搞呢.?
可以位操作来弥补吗?
比如:
P3 = P3 & 0x3F;
P1 = P1<<6;
P3 = P1 & P3;
这样 P3 就算整合完毕了用于 LCD_data = P3; 可以吗?
多谢大家帮助!不胜感激。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:85726 发表于 2017-2-21 16:52 | 只看该作者
/********************************************************
* 函数名:write_com
* 说明:1602命令写入函数
* 输入:com
* 输出:无
* 返回:无
* 备注:无
*********************************************************/
void write_com(uchar com)
{
  lcdrs=0;
  delay(5);
  lcdrw=0;
  delay(5);
  P0=com>>4;
  P2=com&0x0f;
  delay(5);
  lcden=1;
  delay(5);
  lcden=0;
}
/********************************************************
* 函数名:write_data
* 说明:1602数据写入函数
* 输入:date
* 输出:无
* 返回:无
* 备注:无
*********************************************************/
void write_data(uchar date)
{
  lcdrs=1;
  delay(5);
  lcdrw=0;
  delay(5);
  bt0=date&0x01;
  bt1=date&0x02;
  bt2=date&0x04;
  bt3=date&0x08;
  bt4=date&0x10;
  bt5=date&0x20;
  bt6=date&0x40;
  bt7=date&0x80;
//  P0=date>>4;
//  P2=date&0x0f;
  delay(5);
  lcden=1;
  delay(5);
  lcden=0;
}
/********************************************************
回复

使用道具 举报

板凳
ID:108558 发表于 2017-2-22 09:35 | 只看该作者
ning 发表于 2017-2-21 16:52
/********************************************************
* 函数名:write_com
* 说明:1602命令写入 ...

多谢!
之前没绕过来。lcd采用的是并行数据只要每位一一对应就完了...
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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