求解答 急急急!!! 10
sbitrs=P2^4;//1602的数据/指令选择控制线sbitrw=P2^5;//1602的读写控制线sbiten=P2^7;//1602的使能控制线/*P2口接16...
sbit rs=P2^4; //1602的数据/指令选择控制线sbit rw=P2^5; //1602的读写控制线sbit en=P2^7; //1602的使能控制线
/*P2口接1602的D0~D7,注意不要接错了顺序,我以前可在这上面吃过亏~*/
uchar code table[]="LCD1602 check ok"; //要显示的内容1放入数组tablel uchar code table1[]="study up"; //要显示的内容2放入数组table1void delay(uint n) //延时函数{ uint x,y; for(x=n;x>0;x--) for(y=110;y>0;y--); }
void lcd_wcom(uchar com) //1602写命令函数{ rs=1; //选择指令寄存器 rw=1; //选择写 P0=com; //把命令字送入P2 delay(5); //延时一小会儿,1602准备接收数据 en=1; //使能线电平变化,命令送入1602的8位数据口 delay(5); en=0; }
void lcd_wdat(uchar dat) //16写数据函数
{ rs=0; //选择数据寄存器 rw=1; //选择写 P0=dat; //把要显示的数据送P2 delay(5); //延时一小会儿,让1602准备接收数据 en=1; //使能线电平变化,数据送入1602的8位数据口 delay(5); en=0;}
void lcd_init() //1602初始化函数
{ en=0; lcd_wcom(0x38); //8位数据,双列,5*7字形 lcd_wcom(0x0c); //开启显示屏,关光标,光标不闪烁 lcd_wcom(0x06); //显示地址递增,即写一个数据后,显示位置右移一位 lcd_wcom(0x01); //清屏}
void main(){ lcd_init(); lcd_wdat('1'); while(1);}
为什么 就不能显示呢 就是不知道问题在哪? 求大神 展开
/*P2口接1602的D0~D7,注意不要接错了顺序,我以前可在这上面吃过亏~*/
uchar code table[]="LCD1602 check ok"; //要显示的内容1放入数组tablel uchar code table1[]="study up"; //要显示的内容2放入数组table1void delay(uint n) //延时函数{ uint x,y; for(x=n;x>0;x--) for(y=110;y>0;y--); }
void lcd_wcom(uchar com) //1602写命令函数{ rs=1; //选择指令寄存器 rw=1; //选择写 P0=com; //把命令字送入P2 delay(5); //延时一小会儿,1602准备接收数据 en=1; //使能线电平变化,命令送入1602的8位数据口 delay(5); en=0; }
void lcd_wdat(uchar dat) //16写数据函数
{ rs=0; //选择数据寄存器 rw=1; //选择写 P0=dat; //把要显示的数据送P2 delay(5); //延时一小会儿,让1602准备接收数据 en=1; //使能线电平变化,数据送入1602的8位数据口 delay(5); en=0;}
void lcd_init() //1602初始化函数
{ en=0; lcd_wcom(0x38); //8位数据,双列,5*7字形 lcd_wcom(0x0c); //开启显示屏,关光标,光标不闪烁 lcd_wcom(0x06); //显示地址递增,即写一个数据后,显示位置右移一位 lcd_wcom(0x01); //清屏}
void main(){ lcd_init(); lcd_wdat('1'); while(1);}
为什么 就不能显示呢 就是不知道问题在哪? 求大神 展开
2015-04-28
展开全部
while(1)
{ lcd_init();
lcd_wdat(‘1’);
}主函数里这样写试试,也不知道对不对,呵呵
{ lcd_init();
lcd_wdat(‘1’);
}主函数里这样写试试,也不知道对不对,呵呵
追问
这只是一个调试,我想知道前面的时序和初始化有没有问题?
追答
void write_com(uchar com)//写命令
{
lcdrs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)//写数据
{
lcdrs=1;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
初始化好像是对的,我没有1602的数据手册,不知道时序对不对,但是我自己手里有个程序类似给你参考一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询