搜索
bottom↓
回复: 30

单片机lcd1602问题 求高人指教 好人一定好报

[复制链接]

出0入0汤圆

发表于 2012-11-1 21:21:08 | 显示全部楼层 |阅读模式
做了个单片机最小系统温度传感器加各种扩展电路,解决了这个又遇到那个问题,这次是1602的液晶不能正常显示,程序我觉得没问题,别人的程序我也烧写了,不过,还是不能正常显示,这是为什么呢??液晶应该是好的,我去借别人的1602也不能显示,电路这么简单我觉得也应该没问题啊,液晶应该不用加上拉电阻吧,反正我没加。。我是学生刚接触单片机,菜鸟级别,本来不想劳烦各位大神的,可自己捣鼓半天还是这样,实属无奈啊,望各位大神不吝赐教。。。送上电路图,pcb文件和程序代码。。急!!!好人好报,好人好运。。

#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit rs=P1^1;
sbit rw=P1^2;
sbit  e=P1^3;
uchar table1[]={"i.love.you"};
uchar table2[]={"you.are.great!"};
void delay_50us(uint t)           //50us延时函数
{
         uchar j;
         for(;t>0;t--)
         for(j=19;j>0;j--);

}

void delay_50ms(uint t)          //延时50ms函数
{

  uchar j;
  for(;t>0;t--)
  for(j=6245;j>0;j--);
}
void write_com(uchar com )
{
  rs=0;
  rw=0;
  e=0;
  P0=com;
  delay_50us(10);
  e=1;
  delay_50us(10);
  e=0;


}
void write_date(uchar dat)
{
  rs=1;
  rw=0;
  e=0;
  P0=dat;
  delay_50us(10);
  e=1;
  delay_50us(10);
  e=0;



}
void init(void)
{
delay_50us(300);
write_com(0x38);
delay_50us(100);
write_com(0x38);
delay_50us(100);
write_com(0x38);
write_com(0x38);
write_com(0x08);
write_com(0x01);
write_com(0x06);
write_com(0x0c);


}


void main()
{
  uchar j;
  init();
  write_com(0x80);
  for(j=0;j<16;j--)
  {
    write_date(table1[j]);
        delay_50us(20);


  }
  write_com(0x80+0x40);
  for(j=0;j<16;j--)
  {
    write_date(table2[j]);
        delay_50us(20);

        }

   while(1);
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入264汤圆

发表于 2012-11-1 21:48:24 | 显示全部楼层
加大延时试一试。

出0入0汤圆

发表于 2012-11-1 21:54:14 来自手机 | 显示全部楼层
黑方块有显示吗?

出0入0汤圆

发表于 2012-11-1 22:21:44 | 显示全部楼层
P0必须加上拉电阻!!!除非你不当IO用

出0入0汤圆

 楼主| 发表于 2012-11-1 22:39:23 | 显示全部楼层
jlhgold 发表于 2012-11-1 22:21
P0必须加上拉电阻!!!除非你不当IO用

那为什么我用4个p0的口控制4位数码管的位选可以呢,我也没加上拉电阻啊??不解。。

出0入0汤圆

 楼主| 发表于 2012-11-1 22:40:52 | 显示全部楼层
mcu_lover 发表于 2012-11-1 21:48
加大延时试一试。

总觉得不是这个问题,好吧我试试。。

出0入0汤圆

 楼主| 发表于 2012-11-1 22:45:45 | 显示全部楼层
xtxtt 发表于 2012-11-1 21:54
黑方块有显示吗?

反正他都是亮的,有些乱码  附上实物图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-11-1 23:23:15 | 显示全部楼层
因为用法不一样!!!无法上拉,所以没有逻辑高!

出0入0汤圆

发表于 2012-11-2 09:32:16 | 显示全部楼层
主函数里面 for循环 很明显的错误是 j++  不是j--

出0入0汤圆

发表于 2012-11-2 09:34:34 | 显示全部楼层
还有table1[]里面只有10个字符 for 循环10次就写完了  但你循环了16次 后面就可能显示乱码~

出0入0汤圆

发表于 2012-11-2 14:40:53 来自手机 | 显示全部楼层
硬件连接问题,或者软件逻辑问题,分开找试试

出0入0汤圆

发表于 2012-11-2 15:57:04 | 显示全部楼层
这个可能需要调节对比度电位器,调试时需要慢慢地左右反复调节,我也遇到过这个情况,经调节对比度电位器后就正常了.

出0入0汤圆

发表于 2012-11-2 17:22:02 | 显示全部楼层
大呵欠E 发表于 2012-11-1 22:39
那为什么我用4个p0的口控制4位数码管的位选可以呢,我也没加上拉电阻啊??不解。。 ...

数码管 共阳极 低电平点亮

出0入0汤圆

发表于 2012-11-3 15:01:52 | 显示全部楼层
大呵欠E 发表于 2012-11-1 22:45
反正他都是亮的,有些乱码  附上实物图

看你的这2个图片
lcd是好的
这种情况我以前也遇到过
原因是lcd的那3个控制引脚接错了

出0入0汤圆

发表于 2012-11-3 15:43:51 | 显示全部楼层
初始化函数里将使能端拉低:
e=0;

出0入0汤圆

 楼主| 发表于 2012-11-4 20:24:43 | 显示全部楼层
lycreturn 发表于 2012-11-2 09:32
主函数里面 for循环 很明显的错误是 j++  不是j--

嗯 对 粗心。。可是尽管改了还是不能正常显示

出0入0汤圆

 楼主| 发表于 2012-11-4 20:25:29 | 显示全部楼层
lxa0 发表于 2012-11-3 15:01
看你的这2个图片
lcd是好的
这种情况我以前也遇到过

没接错啊,我看了 几遍,应该没错的

出0入0汤圆

发表于 2012-11-4 21:25:27 来自手机 | 显示全部楼层
电压要主意,有的是5V.有的3.3

出0入0汤圆

 楼主| 发表于 2012-11-4 22:22:05 | 显示全部楼层
jlhgold 发表于 2012-11-1 23:23
因为用法不一样!!!无法上拉,所以没有逻辑高!

加了10k的上拉电阻还是不行   是乱码啊。。给图片给你看。。到底是怎么回事?????

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-11-4 22:24:20 | 显示全部楼层
lryxr2507 发表于 2012-11-2 15:57
这个可能需要调节对比度电位器,调试时需要慢慢地左右反复调节,我也遇到过这个情况,经调节对比度电位器后就 ...

乱码的  对比度调节的可以了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-11-5 07:13:07 | 显示全部楼层
至少能显示一些乱码了 也算前进一步了 再接再厉就能成功了

出0入0汤圆

 楼主| 发表于 2012-11-5 09:42:49 | 显示全部楼层
739211964 发表于 2012-11-3 15:43
初始化函数里将使能端拉低:
e=0;

不是拉了吗

出0入0汤圆

发表于 2012-11-5 10:29:07 | 显示全部楼层
你晶振用多大的?这里应该用12M的晶振,如果用其它晶振就需要从新计算延时函数.(从目前的现象来看很有可能是延时不对).

出0入0汤圆

 楼主| 发表于 2012-11-5 17:48:46 | 显示全部楼层
lryxr2507 发表于 2012-11-5 10:29
你晶振用多大的?这里应该用12M的晶振,如果用其它晶振就需要从新计算延时函数.(从目前的现象来看很有可能是 ...

好了  原因是我用P0口同时控制的数码管位选的4个IO口干扰了,其次是P0口没加上拉电阻,我擦终于被我找出来了,各个模块要分开啊。。。。

出0入0汤圆

 楼主| 发表于 2012-11-5 17:49:41 | 显示全部楼层
jlhgold 发表于 2012-11-1 23:23
因为用法不一样!!!无法上拉,所以没有逻辑高!

好了  原因是我用P0口同时控制的数码管位选的4个IO口干扰了,其次是P0口没加上拉电阻,我擦终于被我找出来了,各个模块要分开啊。。。。

出0入0汤圆

发表于 2012-11-5 17:58:45 | 显示全部楼层
这都能干扰!

出0入0汤圆

 楼主| 发表于 2012-11-5 18:02:15 | 显示全部楼层
jlhgold 发表于 2012-11-5 17:58
这都能干扰!

是啊,我都不敢相信,你说共阴的数码管还会干扰,难道有电流流入。。呵呵

出0入0汤圆

发表于 2012-11-5 19:01:38 | 显示全部楼层
啊,你数码管直接接在io口上面的啊?

出0入0汤圆

 楼主| 发表于 2012-11-5 19:59:04 | 显示全部楼层
jlhgold 发表于 2012-11-5 19:01
啊,你数码管直接接在io口上面的啊?

嗯。。对啊。。本来我只想做一个温度传感器的 后来觉得太浪费单片机资源了 就又加了1602 和步进电机。。

出0入0汤圆

发表于 2012-11-5 20:04:51 | 显示全部楼层
晕 如果在做 你可以弄一个74244或者74245放中间 也可以用串转并 接数码管
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 14:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表