Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17994
  • 博文数量: 6
  • 博客积分: 491
  • 博客等级: 下士
  • 技术积分: 90
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-02 14:30
文章分类
文章存档

2011年(1)

2010年(5)

我的朋友
最近访客

分类: 嵌入式

2010-11-25 22:31:59

1、P0之外的端口能连接LCD吗?比如,P2、P1能连LCD1602吗?
=> 可以.我们做的板子,P2连得LCD1602,并且顺序完全颠倒,我写的程序0k的.
   P1口,网上有说成功的例子.

2、单片机板子布线,为了美观、方便,引脚顺序打乱。
=> 没事.我贴出来我的LCD1602.h部分测试程序,自己比较啦(区别部分已划底线)
测试条件:P0与LCD1602的顺序完全颠倒
A、正常1602驱动
  #define Data  P0//数据端口
/******************************************************************/
/*                   写入命令函数                                 */
/******************************************************************/
void WriteCommand(unsigned char c)
{
 DelayMs(5);
 E=0;
 RS=0;
 RW=0;
 _nop_();
 E=1;
 Data=c;
 E=0;
}
/******************************************************************/
/*                   写入数据函数                                 */
/******************************************************************/
void WriteData(unsigned char c)
{
 DelayMs(5);  //操作前短暂延时,保证信号稳定
 E=0;
 RS=1;
 RW=0;
 _nop_();
 E=1;
 Data=c;
 E=0;
 RS=0;
}

B1、颠倒的处理方法1(我们做的板子这样子处理的)
加入 
uchar sortData(uchar dat)
{
    uchar temp=0;
    uchar i;
    for (i=0; i<7; i++)
    {
        temp |= dat&0x01;
        dat >>= 1;
        temp<<= 1;
    }
    temp |= dat&0x01; 
    return temp;       
}

使用 
#define Data  P0//数据端口
/******************************************************************/
/*                   写入命令函数                                 */
/******************************************************************/
void WriteCommand(unsigned char c)
{
 DelayMs(5);//操作前短暂延时,保证信号稳定
 E=0;
 RS=0;
 RW=0;
 _nop_();
 E=1;
 c = sortData(c);
 Data=c;
 E=0;
}
/******************************************************************/
/*                   写入数据函数                                 */
/******************************************************************/
void WriteData(unsigned char c)
{
 DelayMs(5);  //操作前短暂延时,保证信号稳定
 E=0;
 RS=1;
 RW=0;
 _nop_();
 E=1;
 c =sortData(c);
 Data=c;
 E=0;
 RS=0;
}

B2、颠倒的处理方法2
加入 
void Data(uchar dat)
{
    data0= dat&0x01;
    data1= dat&0x02;
    data2= dat&0x04;
    data3= dat&0x08;
    data4= dat&0x10;
    data5= dat&0x20;
    data6= dat&0x40;
    data7= dat&0x80;
}// 这个函数,发送顺序估计有条件,按照LCD接收的从0~7或者P0发送的从0~7(估计是前者)
使用 
#define Data  P0//数据端口
/******************************************************************/
/*                   写入命令函数                                 */
/******************************************************************/
void WriteCommand(unsigned char c)
{
 DelayMs(5);//操作前短暂延时,保证信号稳定
 E=0;
 RS=0;
 RW=0;
 _nop_();
 E=1;
 Data(c); //注意:原来后面的Data=c;不再需要了 
 E=0;
}
/******************************************************************/
/*                   写入数据函数                                 */
/******************************************************************/
void WriteData(unsigned char c)
{
 DelayMs(5);  //操作前短暂延时,保证信号稳定
 E=0;
 RS=1;
 RW=0;
 _nop_();
 E=1;
 Data(c); //注意:原来后面的Data=c;不再需要了
 E=0;
 RS=0;
}
阅读(652) | 评论(0) | 转发(0) |
0

上一篇:TLC1549使用

下一篇:看破和放下的关系

给主人留下些什么吧!~~