打印

高手进来指导一下

[复制链接]
1225|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
soch|  楼主 | 2010-5-3 19:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个程序是lcd1602,单片机是51,为什么 显示总从在第一行第一个字符开始显示呢
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit CS=P1^0;
sbit CLK=P1^1;
sbit DIO=P1^2;
uchar code table[]="Current Volt:";
void delay4us()
{
 _nop_();
 _nop_();
 _nop_();
 _nop_();
}
void delayms(uint ms)
{
 uchar i;
 while(ms--)
 {
         for(i=0;i<120;i++);
 }
}

void write_command(uchar cmd)
{
 RS=0;
   RW=0;
 E=0;
 P0=cmd;
 E=1;
 delay4us();
 E=0;
 
}
void write_data(uchar dat)
{
 RS=1;
 RW=0;
 E=0;
 P0=dat;
 E=1;
 delay4us();
 E=0;
}
void init()
{
 write_command(0x38);
 delayms(1);
 write_command(0x0f);
 delayms(1);
 write_command(0x06);
 delayms(1);
 write_command(0x01);
 delayms(1);
}
void main()
{
 uchar i;
 init();
 write_command(0x83);
//这条语句没起作用????它总是从第一行第一个位置开始写
 delayms(5);
 i=0;
  for(i=0;i<13;i++)
 {
         write_data(table[i]);
         delayms(1);
 }

 while(1);
}
那条写命令就是换成 write_command(0xc0);也是从第一行第一个字 符开始显示好像这条语句根本就没有起做用不知道为什么。

相关帖子

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

本版积分规则

0

主题

41

帖子

1

粉丝