|
帮师兄做的,其中一部分是风速风向在lcd上显示
#include“reg52.h”
#define uchar unsigned char
#define uint unsigned int
uchar wind_dat[16];
void ADC0832_delay_ms(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
/**********************************ADC0832********************************/
uchar choiceADC(uchar Channel) //获取数值返回。入口:通道(0或1)。出口:数值。
{
uchar i,Dat1=0,Dat2=0;
CLK=0;
DI=1;
CS=0;
CLK=1;
CLK=0; //第一脉冲,开始位
DI=1;
CLK=1;
CLK=0; //第二脉冲,模式选择
DI=Channel;//通道选择,0或1
CLK=1;
CLK=0; //第三脉冲,通道选择
DI=1; //释放输入线
for(i=0;i<8;i++) //从高到低取一次数
{
CLK=1; //下降沿有效
CLK=0;
if(DO) Dat1|=0x80>>i;
}
for(i=0;i<8;i++) //从低到高取一次数
{
if(DO) Dat2|=0x01<<i;
CLK=1; //下降沿有效
CLK=0;
}
CS=1;
DI=1;
CLK=1; //数据读取完成,释放所有数据线
if(Dat1==Dat2) return Dat1; //校验两次数相等,输出
else return 0;
}
void wind_receive()
{
wind_dat[0] ='D' ;
wind_dat[1] ='I';
wind_dat[2] ='R';
wind_dat[3] =':';
if(choiceADC(0)*5/255%10*72==0&&choiceADC(0)*5/255%10*72==360)
{
wind_dat[4] ='N';
wind_dat[5] =' ';
}
if(choiceADC(0)*5/255%10*72>0&&choiceADC(0)*5/255%10*72<90)
{
wind_dat[4] ='E';
wind_dat[5] ='N';
}
if(choiceADC(0)*5/255%10*72==90)
{
wind_dat[4] ='E';
wind_dat[5] =' ';
}
if(choiceADC(0)*5/255%10*72>90&&choiceADC(0)*5/255%10*72<180)
{
wind_dat[4] ='E';
wind_dat[5] ='S';
}
if(choiceADC(0)*5/255%10*72==180)
{
wind_dat[4] ='S';
wind_dat[5] =' ';
}
if(choiceADC(0)*5/255%10*72>180&&choiceADC(0)*5/255%10*72<270)
{
wind_dat[4] ='W';
wind_dat[5] ='S';
}
if(choiceADC(0)*5/255%10*72==270)
{
wind_dat[4] ='S';
wind_dat[5] =' ';
}
if(choiceADC(0)*5/255%10*72>270&&choiceADC(0)*5/255%10*72<360)
{
wind_dat[4] ='W';
wind_dat[5] ='N';
}
wind_dat[6] =' ';
wind_dat[7] ='S';
wind_dat[8] ='P';
wind_dat[9] ='E';
wind_dat[10] =':';
if(choiceADC(1)*5/255%10*6>10)
{
wind_dat[11] ='0'+(choiceADC(1)*5/255*6/10);
wind_dat[12] ='0'+(choiceADC(1)*5/255*6%10);
wind_dat[13] ='M';
wind_dat[14] ='/';
wind_dat[15] ='S';
}
else
{
wind_dat[11] ='0'+(choiceADC(1)*5/255*6);
wind_dat[12] ='M';
wind_dat[13] ='/';
wind_dat[14] ='S';
wind_dat[15] =' ';
}
}
void main()
{
uint i;
LcdInit(); //1602初始化
while(1)
{
wind_receive();
LcdWriteCom(0x80+0x40);
for(i=0;i<16;i++)
{
LcdWriteData(wind_dat[i]);
}
}
|
-
-
sensor.rar
37.76 KB, 下载次数: 53, 下载积分: 黑币 -5
温湿度和风速风向在Lcd显示
|