标题: 使用了不连续的引脚对LCD的8位数据口进行驱动 [打印本页]

作者: 464893214    时间: 2017-2-21 16:42
标题: 使用了不连续的引脚对LCD的8位数据口进行驱动

如果硬件上使用了不连续的引脚对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; 可以吗?
多谢大家帮助!不胜感激。


作者: ning    时间: 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;
}
/********************************************************

作者: 464893214    时间: 2017-2-22 09:35
ning 发表于 2017-2-21 16:52
/********************************************************
* 函数名:write_com
* 说明:1602命令写入 ...

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





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1