各位大大,我在网上看到的一个程序下载到单片机中,成功了,但是不知道他是串口还是并口传输;测试PSB引脚电压为3.3V稳定;测试D0-D7分别在1.3V-2.5V之间,但是数值跳动;不明白是串口还是并口,附上程序。
#ifndef __yejing_H__
#define __yejing_H__
#define uchar unsigned char
#define uint unsigned int
uchar CMDAddress;
sbit RS=P2^5;
sbit RW=P2^6;
sbit EN=P2^7;
void delay(uchar t) //延时函数
{
uint x,y;
for(x=t;x>0;x--)
for(y=110;y>0;y--);
}
bit busy() //判忙标志位
{
bit flag;
RS=0;
RW=1;
EN=1;
flag=(bit)(P0&0x80);
EN=0;
return flag;
}
void write_cmd(uchar cmd) //写命令字
{
while(busy());
RW=0;
RS=0;
delay(5);
P0=cmd;
EN=1;
delay(5);
EN=0;
delay(5);
}
void write_date(uchar dat) //写数据
{
while(busy());
RW=0;
RS=1;
delay(5);
P0=dat;
EN=1;
delay(5);
EN=0;
delay(5);
}
void init() //初始化
{
delay(200);
write_cmd(0x30); //Extended Function Set(功能设定控制字)基本指令集 ,8位
delay(1);
write_cmd(0x30); //Function Set 基本指令集
delay(1);
write_cmd(0x0c); //(显示开关控制字),全部显示ON,游标OFF,闪烁OFF
delay(1);
write_cmd(0x01); //清屏控制字
delay(15);
write_cmd(0x06); //Entry Mode (进入设定点控制字)光标从左向右加一位移动
delay(1);
}
void SetAddress(uchar x,uchar y) //设置输入数据位置
{
switch(y)
{
case 0:CMDAddress=0x80+x;break;
case 1:CMDAddress=0x90+x;break;
case 2:CMDAddress=0x88+x;break;
case 3:CMDAddress=0x98+x;break;
}
write_cmd(CMDAddress);
}
void putstring(uchar x,uchar y,uchar *pdate) //该行是否完
{
SetAddress(x,y);
while(*pdate!='\0')
{
write_date(*pdate++);
}
}
void show() //显示"温度"
{
putstring(0,0,"温度:"); //第一排首位子显示"温度"两字
putstring(0,3,"液晶温度显示"); //第三排首位子显示"液晶温度显示"
}
void display(uint Temp ) // 显示温度值
{
uint t1,t2,t3 ; //,t0,t1,t2
t1=Temp/100%10;
t2=Temp/10%10;
t3=Temp%10;
write_cmd(0x93);
write_date(0x30+t1);
write_date(0x30+t2);
write_date('.');
write_date(0x30+t3);
write_date(0xA1);
write_date(0xE6);
}
#endif
|