打印

求助12864程序出错了

[复制链接]
1394|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
21an|  楼主 | 2012-2-15 13:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
刚刚接触mcu,遇到12864的问题,编写程序显示汉字,前三行正常显示,第四行不显示程序如下
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit lcdrs =P2^0;
sbit lcdrw =P2^1;
sbit lcden =P2^2;
sbit lcdpsb=P2^3;
uchar temp1[]="12864 基础显示";
uchar temp2[]="2012年02月05日";
uchar temp3[]="我爱MCU";
uchar temp4[]="123456";
void delay (uint z)   //延时函数
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
write_com(uchar com)
{
uchar temp=0;
lcdrs=0;
lcdrw=1;
/*do//读是否忙碌
{
  lcden=1;
  delay(5);
  temp=P0;
  lcden=0;
}
while(temp&0x80);*/
lcdrw=0;
P0=com;
lcden=1;
delay(5);
lcden=0;
}
void lcdinit()
{
lcdrs=1;
write_com(0x30);
delay(5);
write_com(0x02);
delay(5);
write_com(0x0c);
delay(5);
write_com(0x01);
delay(5);
write_com(0x06);
}
write_date(uchar date)
{
uchar temp=0;
lcdrs=0;
lcdrw=1;
do
{
  lcden=1;
  delay(5);
  temp=P0;
  lcden=0;
}
while(temp&0x80);
lcdrs=1;
lcdrw=0;
P0=date;
lcden=1;
delay(5);
lcden=0;
}

void main()
{
  int i=0;
  lcdpsb=1;
  lcdinit();
  write_com(0x80);//第一行地址
  for(i=0;i<14;i++)
   write_date(temp1);
    write_com(0x90);//第二行地址
  for(i=0;i<16;i++)
   write_date(temp2);
  write_com(0x88);//第三行地址
  for(i=0;i<7;i++)
   write_date(temp3);
  write_com(0x98);//第四行地址
  for(i=0;i<6;i++);
   write_date(temp4);
while(1);
}
有知道的帮帮小弟吧,感激不尽

20120215.jpg (312.17 KB )

20120215.jpg

相关帖子

沙发
mage心寒| | 2012-2-15 14:36 | 只看该作者
最后一个FOR循环多了个分号,就写了一次。。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
21an + 1 谢谢你
板凳
21an|  楼主 | 2012-2-15 14:40 | 只看该作者
心细如丝丫,佩服佩服。谢谢你

使用特权

评论回复
地板
hwk612167| | 2012-2-15 14:43 | 只看该作者
LS真细心!
这个,你这个函数真能显示啊?不应该是这样么:
for(i=0;i<14;i++)
   write_date(temp1[i]);
写函数参数为uchar类型,你传个地址,这也行?

使用特权

评论回复
5
mage心寒| | 2012-2-15 14:44 | 只看该作者
本帖最后由 mage心寒 于 2012-2-15 14:46 编辑

最好写成一个函数形式的比较好看:
for(i=0;i<6;i++)  
{
        write_data(temp4);   
}
把这四行用一个display函数写在一起主函数写个display就好了。。

使用特权

评论回复
6
mage心寒| | 2012-2-15 14:47 | 只看该作者
上面写错了为啥个、还改不了跟4楼一样是:
for(i=0;i<6;i++)
  {
         write_data(temp4[i]);
  }

使用特权

评论回复
7
hwk612167| | 2012-2-15 14:47 | 只看该作者
建议LZ增加一个子函数,字符串显示函数,如:
LCD_dsp_str(unsigned char *str, unsigned char len);
LCD显示的地址也可作为形参,这样主程序会显得更简洁。

使用特权

评论回复
8
hwk612167| | 2012-2-15 17:15 | 只看该作者
我回帖的时候看到帖子分别在3、4楼,怎么过一会来看就变成4、7楼,多出好几帖,回帖有个审核过程???

使用特权

评论回复
9
21an|  楼主 | 2012-2-15 18:01 | 只看该作者
这个真能显示。谢谢你宝贵的建议,我一定会修改这个程序的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

55

帖子

1

粉丝