全套资料包含:Proteus仿真源文件+keil C语言源程序+AD原理图+流程图+元器件清单+说明书等
资料下载:
通过网盘分享的文件:资料分享
链接: 百度网盘 请输入提取码 提取码: tgnu
目录
项目功能:
产品功能描述:
本系统由51系列单片机、风向采集模块、风速采集模块及电源组成。
1、单片机实时采集风速传感器数据,将采集模拟量转化为数字量,计算风速大小,单位m/s,显示精度0.1,范围:0-30m/s。
2、单片机实时采集风向传感器数据,将采集模拟量转化为数字量,计算风向角度,单位度,范围0-360度。
3、LCD1602实时显示当前风速大小,风向角度值。
项目文件:
一、Proteus仿真源文件
二、AD原理图文件
二、报告说明书
三、系统流程图
四、器件清单
元件清单 | ||
元件符号 | 元件名称 | 数量 |
C1, C2 | 470uf电解电容 | 2 |
C3, C4 | 104 瓷片电容 | 2 |
C5 | 10uf电解电容 | 1 |
C6, C7 | 30pf瓷片电容 | 2 |
C8, C9, C10, C11 | 104瓷片电容 | 4 |
J1 | DC005电源插座 5.5-2.1MM DC电源座 | 1 |
K1 | 轻触按键 | 1 |
P1 | LCD1602液晶显示屏+16P排座 | 1 |
P2 | 4针排针 | 1 |
PR1 | 103排阻 | 1 |
R1 | 3K电阻 | 1 |
R2 | 10K电阻 | 1 |
SW1 | 自锁开关 | 1 |
U1 | 7805芯片+散热片+螺丝 | 1 |
U2 | STC89C52单片机+DIP40插座 | 1 |
U3 | 风速传感器+XH2.54-3A插座 | 1 |
U4 | TLC2543芯片+DIP20插座 | 1 |
U5 | 风向模块+XH-2.54-3A插座 | 1 |
Y1 | 12M晶振 | 1 |
五、Keil c语言程序源代码(部分)
#include <REGX52.H> //包含头文件
#include "LCD1602.H" //液晶显示头文件
#include "TLC2543.H" //AD 转换头文件
//下面定义一些变量用于
uint Wind_speed=0,Wind_direction=0; //Wind_speed 风速度 Wind_direction风向
float speed_Value=0,direction_Value=0; //speed 风速度 direction风向
void display_dispose() //显示函数
{
LCD1602_write(0,0x80); //第一行显示的是风速
LCD1602_writebyte("Speed:"); //0x30是字符数字首地址,可以参考1602字符表
if(Wind_speed>99)LCD1602_write(1,0x30+Wind_speed/100);
else LCD1602_writebyte(" ");
LCD1602_write(1,0x30+Wind_speed/10%10);
LCD1602_write(0,0xC0); //第二行显示的是风向
LCD1602_writebyte("Direction:");
LCD1602_write(1,0x30+Wind_direction/100);
LCD1602_write(1,0x30+Wind_direction/10%10);
LCD1602_write(1,0x30+Wind_direction%10);
LCD1602_write(1,0xdf);
LCD1602_writebyte(" ");
}
//简单叙述一下测量原理,对于风速风向传感器,都是对测量的数据进行电压输出
//例如风向,0-360度对应着0.4V-2V电压
//但是这个数据一般情况下是需要校准的,比如下面的这个,风向,实际0-360度对应的是0.42V-2.02V电压
//每一个器件都有差异性,都需要校准,由于风速无法提供校准环境,所以就没哟进行校准,完全按照说明书上的数据进行计算
void data_dispose() //数据处理函数
{
if(ms%3==0)
{
speed_Value=read2543(0); // 实际输出是,不是说明书里的0-5V 0.04-5V
if(speed_Value<32.768) Wind_speed=0;
else
{
speed_Value=speed_Value/8.192; //得到电压值,并且保留两位小数
Wind_speed=(speed_Value-0.04)*0.65322; //1V对应风速是6.48
}
}
else
{
direction_Value=read2543(1);
if(direction_Value>=1646.592) //方向实际的输出电压值是2.02-0.42V
{
Wind_direction=360;
}
else if(direction_Value<344.064)
{
Wind_direction=0;
}
else
{
direction_Value=direction_Value/819.2; //得到电压值,浮点型整数
Wind_direction=(direction_Value-0.42)*223.60;
}
}
}
void main() //主函数
{
TMOD=0x01; //配置定时器,使其工作在方式1,中断时间是50ms
TH0=0x3C; //
TL0=0xB0;
ET0=1;
TR0=1;
EA=1;
LCD1602_cls(); //液晶初始化
while(1)
{
data_dispose(); //调用数据处理函数
display_dispose(); //调用显示函数
}
}
六、全套资料包含
七:项目资源获取
需要完整的资料可以点击下面的名片关注,回复“资料”!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓