#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit rs=P3^0;
sbit rw=P3^1;
sbit e=P3^2;
void delay_1(uchar t)//延时
{
uchar i;
while(t--)
for(i=0;i<255;i++);
}
void delay_2()//5个机器周期
{
_nop_();
_nop_();
_nop_();
}
//读忙状态
uchar lcd_r_start()
{
uchar s;
rw=1;
delay_2();
rs=0;
delay_2();
e=1;
delay_2();
s=P1;
delay_2();
e=0;
delay_2();
rw=0;
delay_2();
return(s);
}
//写命令字
void lcd_w_cmd(uchar com)
{
uchar i;
do{
i=lcd_r_start();
i=i&0x80;
delay_1(2);
}
while(i!=0);
rw=0;
delay_2();
rs=0;
delay_2();
e=1;
delay_2();
P1=com;
delay_2();
e=0;
delay_2();
rw=1;
delay_1(20);
}
void intl()//初始化
{
lcd_w_cmd(0x3c);
lcd_w_cmd(0x0e);
lcd_w_cmd(0x01);
lcd_w_cmd(0x06);
}
//写数据
void lcd_w_dat(uchar dat)
{
uchar i;
do{
i=lcd_r_start();
i=i&0x80;
delay_1(2);
}while(i!=0);
rw=0;
delay_2();
rs=1;
delay_2();
e=1;
delay_2();
P1=dat;
delay_2();
e=0;
delay_2();
rw=1;
delay_1(20);
}
void main()
{
uchar led[]="0123456789abcdef";
uchar i;
intl();
lcd_w_cmd(0x80);//定义光标位置
for(i=0;i<16;i++)//显示字符
{
lcd_w_dat(led);
delay_1(20);
}
lcd_w_cmd(0xc0);//定义第二行光标位置
for(i=0;i<16;i++)
{
lcd_w_dat(led[15-i]);
delay_1(20);
}
while(1);
}
上面红 {MOD}的部分:为什么下面这样写不行
for(i=15;i<=0;i--)
{
lcd_w_dat(led);
delay_1(20);
}
这样写最后显示的结果不稳定,第二行的数据会动来动去,且第一行的数据会消失
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
应该是led;
一周热门 更多>