这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 1602,2131 请问那位能够提供1602液晶显示的例程我用的是2131感激涕

共2条 1/1 1 跳转至

1602,2131 请问那位能够提供1602液晶显示的例程我用的是2131感激涕零!

院士
2006-09-17 18:14:16     打赏
1602,2131 请问那位能够提供1602液晶显示的例程我用的是2131感激涕零!



关键词: 请问     那位     能够     提供     液晶显示     例程     用的     感激    

院士
2006-12-22 22:43:00     打赏
2楼
1: 弄了两天,还是不显示 2: 哪位能帮忙以下,感谢至极!!!! 3: 资料在你买的时候没给你吗??你可以向供应商索要!这是你的权利 4: 给的资料是单片机51的,我用ARM的开发板作的刚开始还显示数据,后来不知道改什末地方了就一直不显示了,把1602送回销售商,人家用51试的,说显示正常,可拿回来还是显示不了,所以我想验证一下是不是我的程序有问题,还是销售商在试的时候加了什末东西,1602已经不能用了,想向大家借鉴一下能够显示正常的程序,我的邮箱是llp11241225@126.com,感谢能帮忙的人 5: 1602B液晶使用范例可惜是AVR的,不过可以遗址到ARM上.



http://www.AVRdiy.com/新手入门/BASCOM-AVR例2-驱动1602液晶.htm

用M8做的四通道电压表
http://www.ourAVR.com/bbs/bbs_content.jsp?bbs_sn=526359&bbs_page_no=1&bbs_id=1000 6: 还是不行,不知道是不是硬件连接的问题 7: 你参考一下我写的程序吧。我前些天写的16022131链接的程序。成功显示了,你可以参考一下。所有的io口我都是直接连接的没有加电阻之类的。
**------------------------------------------------------------------------------------------------------
** Created by:            cyh
** Created date:        2005 10 13
** Version:                1.0
** Descriptions:        The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:    
** Modified date:      2005 10 13
** Version:
** Descriptions:        成功显示 WELCOME TO
                              WWW.MCU99.COM   
**
********************************************************************************************************/

#include "config.h"
#define rs 1<<12     //p0.12
#define rw 1<<13     //P0.13
#define e  1<<14     //P0.14
#define LCM_Data  IO0PIN


void delay()
{int i,j;
for(i=255;i>0;i--)
    for(j=255;j>0;j--);
}


void enable()
{delay();
IO0CLR=rs;
IO0CLR=rw;
IO0CLR=e;
IO0SET=e;
delay();
}


void write(int word[18])
{
int i,word1[18];
  for(i=0;i<18;i++)
     {word1[i]=word[i]*16+(IO0PIN&0xfffff00f);//p0.4-p0.11接lcd的
                                                  //数据口
      IO0PIN=word1[i];
      delay();
      IO0SET=rs;
       IO0CLR=rw;
      IO0CLR=e;
     // IO0CLR=e;
     // IO0CLR=rw;
      IO0SET=e;
      delay();
     }
}

int busy ()    //读状态检测忙信号
{   
   IO0PIN=0xffffffff;
   IO0CLR=rs;
   IO0SET=rw;
  // IO0CLR=e;
   IO0CLR=e;
   IO0SET=e;
   
   while (LCM_Data&(1<<11); //检测忙信号
   
   return(LCM_Data);
  
}
int display(int table1[18],int table2[18])
{    

    PINSEL0=0X00000000;
    
    IO0DIR=0xffffffff;
    
    IO0SET=0xffffffff;
    
    
    
        
     delay();
     delay();
     
     IO0PIN=IO0PIN&0xfffff00f|0x00000380;//8位点阵
     enable();
     delay();
     IO0PIN=IO0PIN&0xfffff00f|0x00000380;
     enable();
     delay();
     IO0PIN=IO0PIN&0xfffff00f|0x00000380;
     enable();
     delay();

    busy();
      IO0PIN=IO0PIN&0xfffff00f|0x00000380;//38H
     enable();
     
//    busy();
//    IO0PIN=IO0PIN&0xfffff00f|0x00000080;//08H
//    enable();
     
     busy();
     IO0PIN=IO0PIN&0xfffff00f|0x00000010;//01H
//     delay();
     enable();
     busy();
    IO0PIN=IO0PIN&0xfffff00f|0x00000060;//06H
    enable();
    busy();
    IO0PIN=IO0PIN&0xfffff00f|0x000000c0;//0ch
    enable();
    
    busy();
    IO0PIN=IO0PIN&0xfffff00f|0x0000800;//line1
    enable();
    busy();
    write(table1);  
    enable();
    
    busy();
    IO0PIN=IO0PIN&0xfffff00f|0x00000c00;//line2
//    delay();
    enable();
    busy();
    write(table2);
    enable();
    //IO0PIN=IO0PIN&0xfffff00f|0x00000010;
    delay();
    delay();
    delay();

    
    return 0;
}

int main(void)
{    int table1[18]={0x20,0x20,0x20,0x57,0x45,0x4c,0x43,0x4f,0x4d,0x45,0x20,0x54,0x4f,0x20,0x20,0x20,0x20,0x00};
    int table2[18]={0x20,0x57,0x57,0x57,0x2E,0x4d,0x43,0x55,0x39,0x39,0x2E,0x43,0x4F,0x4D,0x20,0x20,0x20,0x00};
    
display(table1,table2);
    return 0;
}


/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/ 8: 谢谢橡希和hotpower:),我实验过了,还是不行,用橡希的程序,可以确定应该我的硬件有问题,我把1602的第三个管脚串了一个10k的电位器与地连在一起,电源使用外部的直流稳定电源供5v,地接在电源的负端,电源部分没有和2131的开发板连接,这样做是不是有问题?
1602               2131
1(地)           直流稳压电源负端
2(电压)         直流稳压电源正端
3 (v0)           串10k电阻与1脚相连
4(rs)             p0.12
5 (rw)            p0.13
6 (e)            p0.14
7~14(DB0~DB7 )   p0.4~p0.11
15              1602的2脚
16              1602的1脚
这样接有问题吗?

真是不好意思,还要麻烦各位 9: 注意背光电压,不对的话,软件怎么弄都是瞎忙。然后要注意液晶的复位电平,必须是5V的。 10: 背光电压不就是15,16脚吗?我用一个10鸥的电阻把背光正极和电源正极连接在一起了,什末叫做液晶的复位电平,这16个脚中有复位电平吗? 11: 橡希,我运行你的程序时发现老是停在查忙出循环执行到不了显示那一步,这是为什末? 12: 对不起啊,这几天没来论坛.现在如何?哦,对不起啊,我的busy函数写错了.这个程序是早写的当时是这样写的
while (LCM_Data&(1<<12); //检测忙信号

程序通过了,但后来我才知道我些错了,但却恰好可以通过,没有再在此循环,给了我假相.后来再作其他的液晶时出现了无法读lcd状态的情况.我才意识到.
所以给你的程序改成了.

while (LCM_Data&(1<<11); //检测忙信号

但因为没有硬件我也没有测试就以为可以的.不好意思,耽误你了.

刚刚看到一些相关的帖子才知道,我得busy函数中其实一直没有读出真正的lcd状态,对状态要  

  设置io口输出--写入1--设置io口输入--读io口

这是他们讲的,我刚看到,还没有试验,我等会试试.
13: 我已经可以正常显示了,但是电源电压必须小于等于4.7V如果大于4.7的话就不正常了,是不是因为2131能提供的最大电压是3.3,电源电压和输入高电平之间有一个比例,比如Vih=0.7Vss? 14: 在 CodeWarrior里能否看一条指令到另一条指令花了多长时间在 CodeWarrior里能否看一条指令到另一条指令花了多长时间

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]