风速、风向检测仪
一、组员
陈杰 杨璨铭
二、功能
检测风速、风向并进行收集处理显示
三、元件
AT89S52 芯片
硅微压传感器 SM5551-001-D
LM324 放大器
ADC0832 芯片
LM016L 显示屏
光电编码器
LED 显示屏 4 个
7805 芯片
风速、风向检测仪
硬件系统框图
单片机部分
单片机型号:AT89S52
单片机电路:
风速、风向检测仪
风速风向系统的主电路设计主要有(1)系统时钟电路设计;(2)系统复位
电路设计;(3)电源电路设计;
(1)系统时钟电路设计;
(2)系统复位电路设计
(3)电源电路设计
风速、风向检测仪
风速测量的设计
美国的 SMI 系列硅微压传感器 SM5551-001-D 当硅片上方受力时产生变形,电阻产生压阻效
应而失去电桥平衡,输出与压力成比例的电信号
信号放大部分
LM324 放大器引脚图
放大器电路图
风速、风向检测仪
AD 转化
ADC0832 芯片
AD 转化器接线示意图
显示部分
LM016L
液晶显示器接线图
风速、风向检测仪
风向测量的设计
采用光电编码器
风向电路
LED 显示原理图
风速、风向检测仪
风速软件设计
风速部分程序
AD 转换子程序部分:
/************
读 ADC0832 函数
************/
uchar Adc0832(unsigned char channel)
{
uchar i=0;
uchar j;
uint dat=0;
uchar ndat=0;
if(channel==0)channel=2;
if(channel==1)channel=3; ADDI=1;
_nop_();
_nop_();
ADCS=0;
_nop_();
_nop_();
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
ADCLK=1;
ADDI=channel&0x1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
ADCLK=1;
ADDI=(channel>>1)&0x1;
_nop_();
_nop_();
风速、风向检测仪
ADCLK=0;
ADDI=1;
_nop_();
_nop_();
dat=0;
for(i=0;i<8;i++)
{
dat|=ADDO;
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
dat<<=1;
if(i==7)dat|=ADDO;
}
for(i=0;i<8;i++)
{
j=0;
j=j|ADDO;
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
j=j<<7;
ndat=ndat|j;
if(i<7)ndat>>=1;
}
ADCS=1;
ADCLK=0;
ADDO=1;
dat<<=8;
dat|=ndat;
return(dat);
//return ad k }
风向软件设计
风向部分程序
格雷码转化二进制码程序部分:
Unsigned int Wind_Drct=0; Unsigned int Wind_Gray=0; if (KBA1==1)
Wind_Gray+=0x0001;
if (KBA2==1) Wind_Gray+=0x0002;
If (KBA3==1) Wind_Gray+=0x0004;
if (KBA4==1) Wind_Gray+=0x0008;