基于51单片机的1602变量显示。求大神赐教!
时间:10-02
整理:3721RD
点击:
我写了一个程序 显示的是固定的两排0V电压。但是如果有个实时变化的数值进来。我该怎么去控制才能让1602显示这个变化的数值呢!求大神赐教!
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P3^4; //RW直接接地
sbit EN=P3^6; //LCD1602控制
uchar code table1[]="08_XTT-IN_V:0.0V";
uchar code table2[]=" DACOUT_V:0.0V";
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com) //写指令到1602
{
RS=0;
EN=0;
P0=com;
delay(1);
EN=1;
delay(1);
EN=0;
}
void write_date(uchar date) //写数据到1602
{
RS=1;
EN=0;
P0=date;
delay(1);
EN=1;
delay(1);
EN=0;
}
void Init() //初始化
{
EN=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
void main()
{ uchar num;
init();
for(num=0;num<16;num++)
{
write_date(table1[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<16;num++)
{
write_date(table2[num]);
delay(5);
}
} 小编急求啊!
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P3^4; //RW直接接地
sbit EN=P3^6; //LCD1602控制
uchar code table1[]="08_XTT-IN_V:0.0V";
uchar code table2[]=" DACOUT_V:0.0V";
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com) //写指令到1602
{
RS=0;
EN=0;
P0=com;
delay(1);
EN=1;
delay(1);
EN=0;
}
void write_date(uchar date) //写数据到1602
{
RS=1;
EN=0;
P0=date;
delay(1);
EN=1;
delay(1);
EN=0;
}
void Init() //初始化
{
EN=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
void main()
{ uchar num;
init();
for(num=0;num<16;num++)
{
write_date(table1[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<16;num++)
{
write_date(table2[num]);
delay(5);
}
} 小编急求啊!
非常感谢。似乎有点明白了。我还是在试试看
大哥 。你能不能在我那程序的基础上帮我修改下,最好旁边再给点注释。我还是有点头晕。麻烦你了 可以吧?
谢谢。我这两天也研究出来了。跟你所说的差不多。不管怎样,非常感谢!