📄 12864-----c8051f单片机论坛 - xhlbbs.txt
字号:
C8051F单片机论坛 - XHLBBS- C8051F单片机论坛 ( http://www.xhl.com.cn/Default.asp )
-- CPU/Crossbar/GPIO/JTAG/Package (
http://www.xhl.com.cn/ShowForum.asp?forumid=8 )
--- [求助]我用F040怎么也无法在带字库的12864液晶上正常显示! (
http://www.xhl.com.cn/bbs/ShowPost.asp?id=3972 )
作者:ts2341
发表时间:2007-3-17 15:11:23
我用C8051F047驱动带字库的12864液晶模块(RT12864M),用F047怎么也无法正常显示,但是用常规的5V的51单片机,显示非常正常,我这里主要有这样几个问题想请教
1. 用上拉电阻接5V,要用多大的电阻;
2. 检测忙状态需要做些什么设置?
附上部分程序,请大家帮我看看哪里有问题,非地址复用方式,液晶D0-D7接到P2口,P1.5_RS(指令数据选择),P1.6_R/W(读写),P1.7_E(使能),P3.0_PSB(并/串行选择),P3.2_/RST(复位),P2口通过上拉电阻3K接5V。
sbit rs=P1^5;//寄存器选择
sbit rw=P1^6;//读写控制
sbit e=P1^7;//使能控制
sbit psb=P3^0;//串/并传输控制
sbit ret=P3^2;//液晶复位控制
sbit busy=P2^7;//液晶模块忙标志
void Config (void) {
//看门狗禁止
WDTCN = 0x07;
WDTCN = 0xDE;
WDTCN = 0xAD;
SFRPAGE = 0x0F;
XBR0 = 0x00;
XBR1 = 0x00;
XBR2 = 0x40; //交叉开关使能,使得P0-P3口能输出
XBR3 = 0x00;
SFRPAGE = 0x0F;
P0MDOUT = 0x00; //端口配置
P1MDOUT = 0xE0;
P2MDOUT = 0x00;
P3MDOUT = 0x05;
P1MDIN = 0xFF;
P2MDIN = 0xFF;
P3MDIN = 0xFF; P0 = 0x00;
P1 = 0x00;
P2 = 0x00;
P3 = 0x00;
SFRPAGE = 0x0F;
CLKSEL = 0x00;
OSCXCN = 0x00;
OSCICN = 0x84;
//采用内部晶振,为24.5MHZ8分频
} //***********检查是否LCD忙碌的子程序**********************
void check_busy(void)
{
P2=0xFF;
rs=0;
rw=1;
e =1;
while (busy==1);
e =0;
}
void sendc(uchar c){//送命令
check_busy();
rs=0;
rw=0;
P2=c;
e=1;
delay1ms(1);
e=0;
}
//**********数据写命令***************************
void send_com(unsigned char command )
{
check_busy();
rs=1;
rw=0;
P2=command;
e =1;
delay1ms(1);
e =0;
}
void dispini(){ //lcd显示初始化
ret=0;
delay1ms(40);
ret=1;
delay1ms(1);
psb=1;
delay1ms(1);
sendc(0x34);//扩充指令操作
//delay1ms(10);
sendc(0x30);//基本指令操作
//delay1ms(10);
sendc(0x01);//清除显示
//delay1ms(10);
sendc(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM 的地址计数器(AC)加1
//delay1ms(10);
sendc(0x0c);//开显示,关光标,不闪烁
}
运行的现象是一直是忙状态,busy=1(5V)。
程序仿真后,就一直定在 while (busy==1); 这句语句上了。
请问这个怎么解决。
这个程序在51上运行正常。
作者:711022027
发表时间:2007-3-17 15:48:01
好象除了数据线要接上拉电阻,控制线也要接上拉电阻! 3K可以的.我用的是3.7K.
作者:ts2341
发表时间:2007-3-17 16:18:21
试了,没用
作者:zzyat
发表时间:2007-3-17 18:20:40
将上拉电阻改为串联电阻即可,别忘了谢谢我.
作者:chenjianquan
发表时间:2007-3-17 19:32:45
我的更惨,把芯片接上去之后,开漏,没有上拉电阻时,数据口测电压都为零,是不是非得要上拉电阻呢?
但是我上拉10K电阻也不能正常显示,高电平就不到三伏,到底怎么样才能解决这个问题?
作者:chenjianquan
发表时间:2007-3-17 19:39:42
还有一点,我调节灰度的时候有四分之一的地方没有变黑,是不是片子坏了。
是不是非得要用电平转换芯片才能让液晶显示,特别是液晶没有上电时,数据口的电压就降到了1.4伏去了,上电之后,就是零伏,或者2点几伏的样子
作者:ts2341
发表时间:2007-3-18 16:44:47
还是不行啊。。那位大侠能否指教一下。
作者:wfzdy
发表时间:2007-3-18 20:21:23
接了上拉电阻还不能正常显示,一般问题是出在c8051速度过快,液晶速度慢造成的。
在rs=0;
delay(xx);
rw=1;
delay(xx);
e =1;
根据时序增加延时。试试看吧!
作者:711022027
发表时间:2007-3-21 19:11:08
同意 wfzdy 的意见,频率快上拉电阻取小点,频率慢上拉电阻取大点.上拉电阻小点功耗大,也不能太小要看IO口参数,3~5K是可以的,10K太大了!
作者:ts2341
发表时间:2007-3-22 11:03:41
谢谢了。
根据时序增加延时后,可以了!!
原来速度快也不一定好啊!!
Copyright xhl.com.cn
C8051F单片机论坛 XHLBBS © 2005-2008
Script Execution Time:46ms
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -