图3.37 风速测量总电路图
第四章软件设计方案
4.1软件结构划分
采用结构化软件设计的方法,使得设计简单,易于调试和移植,提高编程效率。采用结构化设计软件的方法将本系统软件划分为图4.1.1所示的4个模块:脉冲计数模块、计时模块、转速计算模块和风速显示模块。其中最主要的是计时模块和转速计算模块。
红外测速系统 次数计算模块 计时模块 转速计算模块 风速显示模块 图4.1.1系统模块划分
16
4.1.1 计时模块 图4.1.1 计时流程图 由图3.2.2可知当红外线发射管发射的红外线未被挡板挡住时,接收管受红外线照射呈导通状态,经三极管输入到单片机中断端口的电压为高电平,不产生中断;而当红外线发射管发射的红外线被挡板挡住时,接收管不受红外线照射则呈截止状态,经三极管输入到单片机中断端口的电压跳变为低电平。从而激活中断程序对脉进行计数。计数流程图如图5所示。由于计数需要与计时同步,所以需要在产生第一次红外光被挡住时(红外光被挡住时Pass=0,反之Pass=1),也即中断口电位由高变低时打开定时器。 4.1.2转速计算模块
由于系统采用同步M/T法测量转速,所以计算转速时,需要的参数有盘脉冲数和计时值。本系统中AT89C51单片机采用频率为12MHz的外接晶振,则每个机器周期为1us。单片机定时器的计数脉冲周期为一个机器周期,若定时器从零开时计数,关闭定时器时其计数值为m,则计时时间就是m微秒。计算转速部分程序如下。
m=TH0×256 //读出计数器的计数变量TH0,并将其左移8位 m=TH0+TL0 //获得时钟脉冲数
17
time=m //计算出计时时间
n=60106/(9*time) /计算转速r/min
风速=n*Α 米/秒(Α为转速与风速的关系式) 风的种类 无风 USB小风扇 12 3 吹风筒中风 吹风筒强风 22 8 30 12 转速(转/秒) 0 风速(米/秒) 0 以上测得数据是通过风速仪实际测得数据。
利用线性回归方程,代入4组数据测得风速和转速的线性回归方程为 y=0.4x-0.7 r=0.98
总 结
为了更好的把原理与实践结合,把学习的理论原理知识应用到实际的工程技术上,提高解决工程问题的能力,老师给我们安排了课程设计,在实践中探索学习,提高我们的实践操作能力。跟指导老师交流过后,我们选择了光风速测量的课题。在本次课程设计中 ,进一步学会了团队合作与完成一个项目的分工合作,极大地提高了工作效率。小组成员之间一起参与讨论,研究解决问题,提出好的想法来改善模块功能,各司其责的同时又互帮互助,提高自身能力的同时又增强了同学之间的友谊。
。
18
参考文献:
[1]张永枫. 单片机应用实训教程. 西安电子科技大学出版社 [2]顾兴海,高富强,张帆. 风速测量系统设计. 微计算机信息 [3]孙以才 压力传感器的设计制造与应用. 北京冶金工业出版社 [4]郭天祥 新概念51单片机C语言教程-入门、提高、开发、拓展全攻略 电子工业出版社
附件1 最小系统仿真程序:
#include
sbit LED=P1^0; //定义LED接P1.0口// void Delay () //延时函数//
{unsigned char i,j; for(i=255;i>0;i--) for(j=255;j>0;j--); }
void main () {while(1)
{LED=0; // LED灭//
Delay (); //返回延时函数// LED=1; //LED亮// Delay (); //反回延时函数// }
19
附件2 动态显示程序:
#include
uint mm=1234; //显示1234// uchar jj; uchar code
table[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,}; delay(uint m) { uint i,j; for(i=m;i>0;i--) for(j=110;j>0;j--); }
xian_shi()
{ uchar qian,bei,shi,ge; qian=mm/1000; bei=mm00/100; shi=mm0/10; ge=mm; P2=0x80; P0=table[qian]; delay(50); P2=0; P2=0x40;
P0=table[bei]; delay(50); P2=0;
20