基于STC12C5410AD单片机的倾角测试系统毕业设计Word文档格式.docx

上传人:b****8 文档编号:22184896 上传时间:2023-02-02 格式:DOCX 页数:52 大小:202.18KB
下载 相关 举报
基于STC12C5410AD单片机的倾角测试系统毕业设计Word文档格式.docx_第1页
第1页 / 共52页
基于STC12C5410AD单片机的倾角测试系统毕业设计Word文档格式.docx_第2页
第2页 / 共52页
基于STC12C5410AD单片机的倾角测试系统毕业设计Word文档格式.docx_第3页
第3页 / 共52页
基于STC12C5410AD单片机的倾角测试系统毕业设计Word文档格式.docx_第4页
第4页 / 共52页
基于STC12C5410AD单片机的倾角测试系统毕业设计Word文档格式.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

基于STC12C5410AD单片机的倾角测试系统毕业设计Word文档格式.docx

《基于STC12C5410AD单片机的倾角测试系统毕业设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于STC12C5410AD单片机的倾角测试系统毕业设计Word文档格式.docx(52页珍藏版)》请在冰豆网上搜索。

基于STC12C5410AD单片机的倾角测试系统毕业设计Word文档格式.docx

MMA7260Q是一种低成本单芯片三轴向高灵敏度加速度传感器,基于表面微机械结构,集成信号调理电路、单极点低通滤波器和温度补偿部分,并且具有4种不同的灵敏度选择模式。

同时它包含一种睡眠模式,MMA7260Q能在XYZ三个轴向上以极高的灵敏度读取低重力水平的坠落、倾斜、移动、放置、震动和摇摆[10]。

主要具有以下特点:

三轴向加速度测量;

测量范围可选:

1.5g、

2g、

4g、

6g;

低功耗,工作电压:

2.2V~3.6V,工作电流500

休眠模式:

3

封装:

16引脚6mm

6mm

1.45mmQFN封装;

高灵敏度:

800mV/g(量程为

1.5g);

启动时间短:

1ms;

低噪音:

达到更高的分辨率、更高的精确度。

2.2.2结构与原理

1.结构

MMA7260Q功能框图如图2.2所示。

在IC内部主要由双芯片构成,即重力检测单元(负责加速度的侦测)与IC控制单元(负责信号处理)。

重力检测单元将检测到的加速度变化量信号送到C-V转换电路,而后进行取样、保持及信号放大处理,最后用低通滤波器滤除高频噪音,在温度补偿处理后即可输出加速度信息。

图2.2 MMA7260Q功能框图

2.原理

重力感测单元(G-CELL)由基于半导体材料的微机械结构构造而成。

物理模型可以构造成一对固定的面板,中间包含一块可移动的面板,如图2.3所示。

当系统被给定一加速度时,中间板就会漂移。

中间板移动时,它到一边(固定的面板)的距离增加,而到另一边的距离相应地减少,这种距离的变化可用来表征加速度。

G-CELL的面板构成了两个背对背的电容,当中间面板随着加速度移动时,两个面板之间的距离就会改变,因此电容值也随之改变,C=Aε/D。

这里A是指面板面积,ε是介电常数,D是面板间距。

在ASIC(专用集成电路)(ApplicationSpecificIntegratedCircuit)中使用开关电容测量出G-CELL的电容值,并从他们的差值中解析出加速度数据。

ASIC再进行信号调理和信号滤波(使用开关电容),最后输出正比于加速度的电压。

图2.3 简化的换能物理模型

灵敏度选择(g-Select):

根据g-Select1、g-Select2两脚输入电平的不同,MMA7260Q具有4种灵敏度选择模式,如表2.1所示。

根据不同的产品应用可以选择不同的灵敏度,而且在应用时可以任意改变。

睡眠模式(SleepMode):

当要提供MMA7260Q12引脚(SleepMode)低电平时,传感器在低功耗模式下运行,此时运行电流仅为3μA。

当提供其高电平时,传感器就会保持正常的运行模式。

表2.1MMA7260Q灵敏度选择模式

g-Select1

g-Select2

g值

灵敏度

1.5g

800mV/g

1

2g

600mV/g

4g

300mV/g

6g

200mV/g

可按照下面规则选择g值:

1.5g适合自由落体或精确的倾斜补偿应用;

2g适合手持式运动检测或游戏控制;

4g适合与低震动监控、运输和处理;

6g适合高震动监控与较高的震动读取。

2.2.3倾角测试模块电路设计

MMA7260Q的供电电压在2.2~3.6V之间,输出信号在0~3V以内,电源本采用3.3伏电压供电,而且输出的信号可直接输入STC12的A/D通道而不必对信号电压进行变换。

MMA7260Q与STC12单片机的接口电路如图2.4所示。

图2.4接口电路图

本文应用中选择g值为1.5g,加速度传感器灵敏度选择引脚g-select1、g-select2全部接为低电平。

计算公式如公式2-1所示。

=1.65(2-1)

=800mv/g,

=0.85~2.45之间变化

给MMA7260Q的12引脚(

)提供高电平,即不是工作在睡眠模式。

MMA7260Q内部使用开关电容作为滤波器,为降低时钟带来的噪声,在输出通道上采用简单的RC滤波,在输出通道上使用1kΩ的电阻和0.1μF的电容构成RC滤波器即可(如图5,XOUT、YOUT、ZOUT)。

另外,A/D采样率的选择不能干扰加速度计采样频率(11kHz),以防混叠误差。

2.3LED显示模块

2.3.1SPI简介

1.SPI简介

串行外设接口(SerialPeripheralInterface,简称SPI)实际上是一种串行总线接口标准,SPI方式可允许同时同步接收和传送8位数据,是一种全双工串行总线。

其速度比UART串行接口要快。

SPI支持在同一总线上将多个从机连接到一个主机。

同一总线上也可以有多个主机,当两个或多个主机试图同时进行数据传输时,需要进行碰撞检测[11]。

STC12C5410AD单片机集成了SPI接口,它是一个全双工高速同步通信接口,既可以和其他微处理器通信,也可以与具有SPI兼容接口的器件,如存储器、A/D转换器、D/A转换器、LED或LCD驱动器等进行同步通信。

SPI也可以在一个多主机系统中负责内部处理器之间的通信。

SPI接口有两种操作模式:

主模式和从模式。

在主模式中支持高达3Mbit/s的速率(工作频率为12MHz时,如果CPU主频采用20MHz到36MHz,则可更高);

从模式时速度无法太快,速度在fosc/8以内较好。

此外,SPI接口还具有传输完成标志和写冲突标志保护功能。

SPI接口由MISO(与P1.6共用)、MOSI(与P1.5共用)、SCLK(与P1.7)和/SS(与P1.4共用)4根信号线构成。

2.SPI接口的数据通信过程

在SPI中,传输总是由主机启动的。

作为主机时,如果SPI使能(SPEN=1)并选择作为主机,主机对SPI数据寄存器的写操作将启动SPI时钟发生器和数据的传输。

在数据写入SPDAT之后的半个到一个SPI位时间后,数据将出现在MOSI引脚。

需要注意的是,主机可以通过将对应器件的/SS引脚驱动为低电平实现与之通信。

写入主机SPDAT寄存器的数据从MOSI引脚移出发送到从机的MOSI引脚。

同时从机SPDAT寄存器的数据从MISO引脚移出发送到主机的MISO引脚。

传输完一个字节后,SPI时钟发生器停止,传输完成标志(SPIF)置位并产生一个中断(如果SPI中断使能)。

主机和从机CPU的两个移位寄存器可以看作是一个16位循环移位寄存器。

当数据从主机移位传送到从机的同时,数据也以相反的方向移入。

这意味着在一个移位周期中,主机和从机的数据相互交换。

2.3.2显示功能设计

系统当前角度,角度下限值和时间都采用LED数码管来显示。

显示当前角度用到4位数码管,显示上下限报警值时要同时显示,用到4位数码管,时间显示当前的分秒。

所以系统用8个数码管就可以完成显示功能。

采用该单片机的SPI串行接口进行控制,需要把串行数据转换在并行数据来控制数码管显示。

系统选74HC595有8位串行输入/输出或者并行输出功能的芯片。

74HC595是具有8位移位寄存器和一个存储器,三态输出功能。

移位寄存器和存储器是分别的时钟。

移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线,输出寄存器可以直接清除100MHz的移位频率。

/G(13脚):

高电平时禁止输出(高阻态)。

用一个引脚控制它,可以方便地产生闪烁和熄灭效果。

74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。

这在串行速度慢的场合很有用处,数码管没有闪烁感。

系统首先由SPI分别向两片74HC595先发送段码再发送位码,两片74HC595实现数码管段码和位码的控制,显示方式采用动态扫描方式。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

显示模块电路如图2.5,2.6所示

图2.5单片机与74HC595连接图

图2.6LED驱动电路

2.4单片机编程下载及串口通讯设计

该系列单片机是采用串口下载用户程序,有在系统编程功能。

目前采用RS232接口与计算机通信,但随着计算机技术的发展,支持热插拔的USB标准接口将取代RS232接口,因此计算机将越来越少配置甚至不配置RS232接口。

RS232接口与USB接口虽然都属于串行接口,但它们的数据格式、通信协议、信号电平以及机械连接方式则不同。

这样单片机不能编程下载和和上位机通讯,这样给开发带来了麻烦。

解决这一问题就得把现有的单片机异步通讯接口转换成USB接口。

方案是采用USB/RS232桥接器件如CP2102,CP2103进行设计,计算机通过USB接口虚拟一个RS232接口,与传统设备器件连接,设备对计算机接口的形式为USB接口。

设计现在CP2102来实现RS232~USB之间的转换。

SiliconLaboratories公司推出的USB接口与RS232接口转换器CP2102/CP2103是一款高度集成的USB-UART桥接器,提供一个使用最小化元件和PCB空间来实现RS232转换USB的简便解决方案。

CP2102/CP2103包含了一个USB功能控制器、USB收发器、振荡器和带有全部调制解调器控制信号的异步串行数据总线(UART)。

CP2102/CP2103作为USB/RS232双向转换器,一方面可以从主机接收USB数据并将其转换为RS232信息流格式发送给外设;

另一方面可从RS232外设接收数据转换为USB数据格式传送至主机,其中包括控制和握手信号。

图2.7是CP2102与USB接口图,该芯片可以从USB接口处获取电源。

R,T分别接单片机的TXD(发射端)和RXD(接收端)。

图2.7CP2102与USB接口

2.5DS1302简介

DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。

实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。

工作电压宽达2.5~5.5V。

采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。

DS1302的外部引脚分配如图2.8所示。

DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中[12]。

图2.8DS1302电路连接图

2.6微控制器模块

2.6.1STC12系列单片机简介

宏晶STC12C5410AD单片机是新一代单片机,它主要特点是高速,高可靠,宽电压,低功耗,超强抗干扰,无法解密[11]。

该单片机有以下性能:

1)高速:

1个时钟周期/机器时间,增强8051内核,速度比普通51单片快8~12倍。

2)宽电压:

5.5V~3.5V,2.2V~3.8V(STC12LE5410AD系列)。

3)低功耗设计:

空闲模式,掉电模式(可由外部中断唤醒)。

4)工作频率:

0~35MHz,相当于普通8051:

0~420MHz。

5)12K/10K/8K/6K/4K/2K字节片内的程序Flash存储器,可以擦写10万次以上

6)512字节片内数据存储器,内部集成了2K字节的数据Flash存储器(EEPROM)。

7)ISP/IAP,在系统可编程/在应用可编程,无需编程器和仿真器。

8)10位ADC,8通道STC12C2052AD为8位ADC,4路PWM可选,4通道捕获/比较功能(PWM/PCA/CCU)---可用来再实现4个定时器或四个外部中断(支持上升沿/下降沿中断)

9)6个16位定时器,包括T0、T1,PCA也是4个定时器。

10)硬件看门狗(WTD),高速SPI通讯接口,全双工异步串行口通讯(UART)兼容普通8051串口。

11)通用I/O口,可以设置为4种工作模式,有准双向口/弱上拉,仅为输入/高阻,开漏,推挽/强上拉。

每个I/O口驱动能力均可达20mA,但整个芯片最大不得超过55mA.

选择STC12C5410AD单片机为主控器件,单片机的片上资源能满足系统的功能要求,减少了外围器件,加强了系统的抗干扰能力,提高系统稳定性,降低了开发成本和开发难度。

2.6.2单片机系统电路设计

1)MMA7260Q与单片机的接口。

单片机STC12C5410AD的P1为通用数字I/O与12位AD转换器模拟输入通道复用端口。

本文中使用MSP430F1612的P1.0/ADC0、P1.1/ADC1、P1.2/ADC2作为模拟输入通道,分别与加速度传感器MMA7260Q三轴向模拟信号输出XOUT、YOUT、ZOUT连接,实现加速度信号的采集;

MMA7260Q与STC12C5410AD接口电路如图2.9所示。

图2.9MMA7260Q与MSP430接口示意图

2)74HC595与单片机接口

单片机的SPI由MISO(与P1.6共用)、MOSI(与P1.5共用)、SCLK(与P1.7)和/SS(与P1.4共用)4根信号线构成。

由于只是选择主机模式故/SS信号线不用。

74HC595与单片机接口电路如图2.10所示

图2.1074HC595与单片机接口

2.7其他电路设计

2.7.1.键盘电路设计

系统涉及到压力的上下限报警值的设定,时间的设定,由于没有过多的键,考虑到单片机的I/O口,所以用独立式键盘来实现,如图2.11所示。

接收按键信号的时候,会出现前沿和后沿抖动,采用用软件延时的办法消除抖动[13]。

图2.11键盘电路设计

2.7.2.声光报警电路设计

报警功能主要是角度超过设定的上线报警值或低于设定的下线报警值时候会发出报警信号,系统采用较为常用的方案设计——声光报警。

声音报警用蜂鸣器来实现,光报警采用高亮度红光LED来实现。

报警声音可以有高低报警,LED闪烁报警[14]。

原理图如图2.12所示。

图2.12声光报警电路设计

第三章软件设计

软件采用KeiluVision3作为下位机系统的开发平台。

3.1数据处理

3.1.1角度数据采集设计

MMA7260Q输出为模拟信号,采集过程需进行AD转换。

STC12C5410AD单片机集成有8路高速模数转换器(ADC)。

,它是一种逐次比较型模数转换器,速度可达到100KHz(10万次/秒),10位的转换精度,ADC输入通道与P1口复用,上电复位后P1口为弱上拉型I/O口,用户可以通过软件设置将8路中的任何一路设置为A/D转换,不需作为A/D使用的口可继续作为I/O口使用。

A/D采样率的选择不能干扰加速度计采样频率(11kHz),以防混叠误差。

AD转换频率:

11.0592MHZ/210=52khz

52khz/2=26khz

A/D转换结果计算公式如下:

(ADC_DATA[7:

0],ADC_LOW2[1:

0])=1024×

Vin/Vcc

其中,Vin为模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。

数据采集子程序流程图如图3.1所示。

图3.1数据采集子程序流程图

3.1.2数字滤波及工程变换部分

采样结束后进行数字滤波,数字滤波有多种方式,由于角度变化,可慢可快,所以为了适应快速变化的角度的测量,相比之下,采用了均值滤波,由于它实现简单,占用单片机的资源较少,是一种比较好的选择。

其滤波效果与所选择的采样次数有关,次数越大,效果越好,但花费时间越长[15]。

--------------------滤波程序---------------------------

floatfilter(void)//AD滤波平均值滤波

{floatsum=0;

floatad_data;

charcount;

for(count=0;

count<

N;

count++)

{

sum+=Get_data();

}

return(sum/N);

}

将滤波后的结果带入公式:

800(3.1)

就可以得到角度值。

以下为程序代码:

intChengeADtoAngle(floatm1)//m1为数字量

{floatq2,q1;

q1=(m1/1023)*4335;

//q1为得到的电压值4335为实际单片机的电压值

q2=((q1-1650)/800);

//分子分母同时扩大1000倍

return(572.96*asin(q2));

//将角度扩大10倍

}

3.2数据存储部分

为了观察角度的变化及对角度的历史数据经行分析,需要将该数据与出现该数据的时间同时记录。

这种记录对数据的分析及对异常数据出现的原因的查找具有重要意义若采用单片机计时,一方面占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机资源。

DS1302时钟芯片可以用于时间记录,很好地解决了这个问题。

STC12C5410AD单片机内部集成了2K字节的数据Flash存储器(EEPROM),地址范围是2800H~2FFFH。

这2K字节的数据Flash存储器分为4个扇区,每个扇区包含512字节。

数据Flash擦除只有扇区擦除,没有字节擦除。

对于数据Flash存储器的操作有三个基本命令,分别是字节读、字节编程和扇区擦除。

进行字节编程时,只能将“1”改为“0”,或“1”保持为“1”,“0”保持为“0”。

考虑到数据Flash只有扇区擦除,所以将数据按扇区存储,不按字节数存储。

角度数据分为整数和小数部分存储,这是由于用UART传输方便而定的。

角度数据再加上时间标签共9个字节。

称之为一个数据块。

每个扇区可存储56个数据块。

考虑到数据存储空间有限,于是采取的这样的存储方法:

采样的角度值与上一次的角度值比较,如果相差不大的话,则舍弃本次角度值,如果相差很大,则经进行存储,程序流程图如图3.2所示。

图3.2数据存储子程序

部分子程序

//------------扇区擦除功能-----------------

voidsector_erase(unsignedintaddr)//送地址

{ISP_CONTR=0x83;

//系统工作时钟<

12Mhz打开IAP功能

ISP_CMD=0x03;

//3为扇区擦除功能

ISP_ADDRH=addr>

>

8;

//----地址右移八位取高地址

ISP_ADDRL=addr&

0x00ff;

EA=0;

//以免中断打断

ISP_TRIG=0x46;

ISP_TRIG=0xb9;

EA=1;

iap_disable();

//-----------字节编程-----------------------

voidbyte_program(unsignedintaddr,chardat)//送地址addr和数据dat

{

ISP_CONTR=0x83;

ISP_CMD=0x02;

//2为字节编程

ISP_DATA=dat;

EA=1;

//--------------------字节读功能-------------------

unsignedcharbyte_read(unsignedintaddr)//送地址

unsignedchardat;

ISP_CMD=0x01;

//1为字节读功能

dat=ISP_DATA;

return(dat);

3.3DS1302软件设计

DS1302是SPI总线驱动方式。

它要向寄存器写入控制字,还需要读取相应寄存器的数据。

1)DS1302的控制字节

表4.1DS1302的控制字

RAM

A4

A3

A2

A1

A0

RD

/CK

/WR

DS1302的控制字如图所示。

控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中。

位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;

位5至位1指示操作单元的地址;

最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。

2)数据输入输出(I/O)

在控制

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1