共2条
1/1 1 跳转至页
1602,2131 请问那位能够提供1602液晶显示的例程我用的是2131感激涕零!
问
答 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: 你参考一下我写的程序吧。我前些天写的1602和2131链接的程序。成功显示了,你可以参考一下。所有的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里能否看一条指令到另一条指令花了多长时间
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: 你参考一下我写的程序吧。我前些天写的1602和2131链接的程序。成功显示了,你可以参考一下。所有的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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |