writelcd(virt_port); //先写高4位后再写低4位 这是在选择四个数据线的时候
virt_port|=0x08;
writelcd(virt_port); //使能E脚为高电平
virt_port&=~0x08;
writelcd(virt_port); //使能E脚为低电平
t=ins<<4;
virt_port|=t&0xf0; //取低字节向1602写数据
writelcd(virt_port);
virt_port|=0x08; //使能E脚为高电平
writelcd(virt_port);
virt_port&=~0x08; //使能E脚为低电平
writelcd(virt_port);
virt_port=0;
writelcd(virt_port);
}
void writedata(uchar d) //写数据到1602
{
uchar xdata i,t;
uint xdata j;
for(j=0;j<500;j++);
virt_port|=0x02; //光标返回指令
writelcd(virt_port);
virt_port|=d&0xf0; //取高字节数据给数据寄存器
writelcd(virt_port);
virt_port|=0x08; //使能E脚为高电平
writelcd(virt_port);
virt_port&=0xf7; //使能E脚为低电平
writelcd(virt_port);
virt_port&=0x07; //设置光标右移,文字也右移
writelcd(virt_port);
t=d&0x0f;
virt_port|=t<<4; //取低字节数据给数据寄存器
writelcd(virt_port);
virt_port|=0x08; //使能E脚为高电平
writelcd(virt_port);
for(i=3;i>0;i--);
virt_port&=0xf7; //使能E脚为低电平
writelcd(virt_port);
virt_port=0; //数据清零
writelcd(virt_port);
}
void lcdchar (void)
{
uchar a,b,c,d;
h=h<<8;
temp=h+l;
temp=temp*250;
temp=temp/4096;
a=temp/1000;d=temp%1000;
if(a!=0)
{
writedata(tab1[a]); //除100
}
b=d/100;d=d%100;
writedata(tab1[b]);
writedata(tab1[10]);
c=d/10; d=d%10;
writedata(tab1[c]);
writedata(tab1[d]);
writedata(tab1[11]);
}
void lcdinit()
{
uint xdata i;
virt_port=0x00;
writelcd(virt_port); //RS脚为零写指令寄存器 RW为低电平
virt_port|=0x08; //使能脚E=1
writelcd(virt_port);
virt_port&=0xf7; //使E=0使能脚发生跳变高--低
writelcd(virt_port);
for(i=1000;i>0;i--); //3次延时,重要!
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] 下一页
本文关键字:程序 51单片机,单片机-工控设备 - 51单片机