毕业论文基于STC12C5410AD单片机的倾角测试系统设计(7)

2019-04-21 13:37

山东大学学士学位论文

1) 0x10:上传数据存储器中角度数据 命令格式:

0xEE 0x10 0x01/00 0xXX 0xYY/00 0xFF 第二字节 01 表示允许上传数据 00 表示不允许上传数据 第三字节 XX表示隔多少时间上传一次

第四字节 表示上传多少次数据。00表示不受限制,YY表示实际次数(不能为00)。

2) 0x11:上传报警次数 命令格式:

0xEE 0x11 0xff 3) 0x12:上传角度上下限 命令格式:

0xEE 0x12 0xff 4) 0x13:接收设定上下限角度 命令格式:

0xEE 0x13 0xXX 0xYY 0xZZ 0xQQ 0xWW 0xRR 0xff XX:表示上限正负号,为1为正,非1为负 YY:表示上限的整数部分 ZZ:表示上限的小数部分

QQ:表示下限正负号,为1为正,非1为负 WW:表示下限的整数部分 RR:表示下限的小数部分 5) 0x14:接收设定时间 命令格式:

0xEE 0x14 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xFF 从左到右依次为 秒、分、 时、 日、 月 、星期 、年 6) 其他 :命令错误 返回给上位机的值为:

0xEE 33 30 30 0xFF 26

山东大学学士学位论文

3.6 其他部分软件设计

3.6.1 报警部分软件设计:

报警采用输出不同占空比的PWM波形,通过音调高低的变化来实现高于上限获低于下限的报警。同时加有LED灯的闪烁。并对上限和下限报警分别计数,方便向上位机传送数据。

报警计数需要注意的是:怎样区别相邻两次的不同报警及不论一次报警时间的长短,都属于一次报警。通过设置标志位,很好的解决了这个问题。

程序代码如下:

//--------------------报警程序-------------------------------- void Alarm(int temp) { int temp0;

temp0=temp;

if((temp0<=HIlimit)&&(temp0>=LOWlimit))

{ Stop_alarm(); stop=0; }

//若在正常范围内,则停止报警

else if(temp0>=HIlimit)

{

Start_HIalarm(); Is_HIalarm=1; Is_LOWalarm=0; H_is_add=1; stop=1; L_is_add=0;

} //超过上限时,进行上限报警

else if (temp0<=LOWlimit)

{

Start_LOWalarm(); Is_HIalarm=0; Is_LOWalarm=1;

27

山东大学学士学位论文

L_is_add=1; stop=1; H_is_add=0;

//低于下限时,进行下限报警

}

if((Is_HIalarm==1)&&(stop==0)&&(Is_LOWalarm==0)&&(H_is_add==1))

{

if(h_Alarm_Time==255){h_Alarm_Time=0;} h_Alarm_Time++;

H_is_add=0; }

if((Is_LOWalarm==1)&&(stop==0)&&(Is_HIalarm==0)&&(L_is_add==1)) }

3.6.2 LED显示程序设计

显示采用动态扫描的方法,即轮流点亮各数码管。显示的位码和段码分别通过单片机SPI口的MOSI输出到两个74HC595来控制。

要显示的数据有:当前时间,当前角度值,角度的上限值和角度的下限值。由键盘控制显示内容。

角度值的范围是-90.0--+90.0之间 最高位有零消隐功能,当调节角度上下限时,可实现位闪烁。

SPI发送位码和段码程序如下所示:

void sendspi(unsigned char spidata,unsigned char isBit) { unsigned char t,spi1_status=0;

SPDAT=spidata;

while(spi1_status==0) //等传输完毕 { spi1_status=SPSTAT;

{ if(l_Alarm_Time==255){l_Alarm_Time=0;} l_Alarm_Time++; L_is_add=0; }

spi1_status=spi1_status&0x80;

28

山东大学学士学位论文

}

if (isBit==1) { P21=1;

for(t=0;t<15;t++);

P21=0; //位锁存信号输出 } else { P11=1;

for(t=0;t<15;t++);

P11=0; // }

SPSTAT=0xC0; // EA=1;

}

29

段锁存信号输出 写1清SPIF标志位 山东大学学士学位论文

第四章 实验测试结果及倾角测试原理

4.1实验测试结果

由于测试条件有限,及板子的焊接也存在误差。直接测量倾角存在困难。于是采用了测试角度差值△U的办法。

AD转化的参考电压是单片机的供电电压,但每次上电后,单片机的电压不是恒定不变的值,根据多次测量在4.33伏的概率较大,下表是单片机电压在4.33伏的数据。

表4.1 Y轴倾角测量结果 真实角度差值△U1 10 30 45 60 -10 -30 -45 -60 测得实际角度差△U2 11.8 31.5 44.8 59.6 -11.5 -30.6 -45.8 -61.6 误差 (△U2-△U1)/△U1 18% 5% 0.4% 0.6% 15% 2% 1.7% 2.6% 4.2 倾角测试原理及角度计算方法

1) .倾角测量原理

MMA7260Q用于倾角测量是最典型的应用之一,它以重力( F =mgn )为输入矢量来决定物体在空间的姿态。把加速度传感器固定在物体的水平面上,当物体姿态改变时,加速度传感器的敏感轴随之转动一定角度,由于重力的作用,传感器敏感轴上的加速度会发生改变,因此可通过测量加速度的变化来反映物体姿态的变化。 2) .倾角的计算

加速度传感器在静止时,可用来测量倾斜角,倾斜角在-90?~+90?之间变化时,加速传感器输出会在-1.0g~+1.0g之间变化。输出电压对应倾斜角的公式如下所示:

30


毕业论文基于STC12C5410AD单片机的倾角测试系统设计(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:少教多学读书笔记

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: