|
幫師兄做的,其中一部分是風速風向在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
2020-4-30 11:35 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
37.76 KB, 下載次數: 53, 下載積分: 黑幣 -5
溫濕度和風速風向在Lcd顯示
|