ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:254.78KB ,
资源ID:17709215      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17709215.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Msp430设计报告 数据记录仪Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Msp430设计报告 数据记录仪Word文件下载.docx

1、八段显示组合段码字节组合格式为 h、e、f、c、d、g、b、a,顺序为 D7-D0。显示代码:07BH; 112H; 24FH; 31FH; 436H;53DH; 67DH; 71BH; 87FH; 93FH; FLASH存储器1、MSP430 FLASH共有特点 :1.83.6V工作电压,2.73.6V编程电压、 擦除/编程次数可达100000次 、数据保持时间从10年到100年不等、60KB空间编程时间5秒 、保密熔丝烧断后不可恢复,不可通过JTAG进行访问 、FLASH编程/擦除由内部硬件控制,无需软件干预 、支持自编程,实现系统升级或记录系统运行数据。2、MSP430F449 FLAS

2、H分块: 60KBFLASH(0FFFFh-01100h) * 一般用于存储程序指令 * 分为120段,每段512Byte * 每段分8块,每块64Byte 256BInformation FLASH(010FFh-01000h) * 一般用于记录用户数据 * 分为两段,每段128Byte * 每段分1块,每块64Byte Segment0n可独立擦除或一次擦除 SegmentA、B可独立擦除或随Segment0n擦除3、MSP430单片机FLASH模块相关寄存器 FCTL1(0128h):* FxKEY(安全键值):读取时为96h,写入时为5Ah * BLKWRT(段编程位):设1为段写入,

3、设0不使用段写入 * WRT(编程位):设1编程,设0不编程,强制编程使ACCVIFG置位 * MERAS(主内存擦除位):设1主存全擦除,设0不擦除 * ERASE(擦除位):设1擦除一段,设0不擦除FCTL2(012Ah) * FSSELx(时钟选择):3(2):SMCLK;1:MCLK;0:ACLK * FNx(分频系数):不分频率;N:N+1次分频FCTL3(012Ch) * EMEX(立即停止):设1:立即停止FLASH操作,设0:无作用 *LOCK(锁定位):FLASH只读,设0:FLASH可读写 * WAIT(段编程等待标志位):段编程操作已成功,0:段编程操作正在进行 * AC

4、CVIFG(非法访问标志位): 1:有非法访问,0:无非法访问 * KEYV(安全键值错误标志位):安全键值有写错(触发PUC)0:安全键值没有写错 * BUSY(时序控制器忙标志位):时序控制器正忙,0:时序控制器不忙 3、各模块简介 温度数据采集模块本模块主要由温度传感器组成,主要是进行模拟信号采集。MSP430内嵌的温度传感器实际上就是一个输出电压随环境温度而变化的温度二极管,表1是它的一些基本电气特性。按照TI公司提供的资料,这个温度二极管输出的电压和对应的温度近似成简单的线性关系。所测温度可由的公式(1)求出:(1)其中,T:测量到温度,单位; VST :ADC模块的通道10测量到的

5、电压,单位mV;V0 :0时传感器的输出的电压,单位mV;TC SENSOR :传感器的传感电压,即输出电压随温度的变化情况,单位mV/。数值上等于温度每升高1,增加的输出电压。对于12位的ADC模块,VST可以通过下面的A/D转换公式求得:(2)其中,ADC12CH10:通道10所测得的温度传感器的12位A/D值;VR:正参考电压,可以取内部参考VREF+ 、AVcc或者外部参考VeREF+ ,单位mV;VR:负参考电压,单位mV。通常取VRAVss,在这种情况下,求VST的公式进一步简化为:(3)由(1)式和(3)式可见,把A/D转换所得的结果VST经过简单转换就可得到对应的温度。参数测试

6、条件最小值典型值最大值单位V0Vcc= 2.2V/3V986 - 5%986986 + 5%mVTCSENSORVcc= 2.2V/3V,TA=03.55 -3%3.553.55 +3%mV/tSENSOR30s表1:MSP430微控制器温度传感器电气特性表键盘模块本模块主要完成键盘输入任务,键盘输入采样初始时间数据,用于记录各采样时间点。键盘的每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功

7、能是什么,还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件,查出该键的功能。键盘的8个口分别与430单片机的P1和P2口的第四位相连,且P1口输入,P2口输出,二者结合,采用行扫描法确定按键。LCD显示模块本模块主要用于显示温度的数值(这里温度的值为摄氏温度值)。由ADC12模块读取的摄氏温度写入到预置的LCD_buf中,将其转为BCD数之后通过TABLE转换为LCD显示代码进行显示。这里LCD显示器用段码LCD显示器型号为LSD048,它的一些性能参数可参看上面的LCD介绍。存

8、储模块本模块主要用于存储温度采集数据及输入的初始时间数据,实现数据记录,以方便在在读取时给出温度数据及相应的采样时间。存储采用FLASH存储器,其具有掉电后数据不丢失、数据存储速度快、电可擦除、容量大、在线可编程、性价比高等优点,因此被广泛应用于单片机系统中,它的一些基本的寄存器操作可参看上面的FLASH存储器简介。电源复位模块本模块主要通过对单片机系统断电及上电操作实现复位。MSP430模块本模块是整个系统的核心部分,各模块通过此模块联系在一起,它主要任务是响应各种操作,对资源进行合理分配,通过合理调用各种资源完成任务。三、系统实现1、硬件设计 由于温度传感器可用MSP430内嵌的温度传感器

9、,键盘,LCD显示器,FLASH存储器都集成在试验箱的板子上,因此本实验不用进行其他的硬件连接,直接使用板子上的硬件资源就可以满足要求。2、软件设计本设计的软件部分由多个模块组成:主程序、ADC转换程序、LCD显示程序、键盘输入程序、FLASH存储程序、数据读取程序。下面将对这些模块的功能一一讲解。 主程序:主程序首先调用一些子程序来完成单片机初始化、显示器初始化、FLASH存储器初始化、ADC转换初始化,然后打开中断,最后进入休眠状态,等待中断,中断后执行中断函数,对温度数据进行处理。主函数是软件设计的主体,通过主函数的运行实现系统的功能要求。 ADC转换程序:由void init_ADC1

10、2(void)、void start_ADC12()、void format_Data()及中断函数组成,void init_ADC12(void)是ADC初始化函数,void start_ADC12()是启动ADC转换函数,void format_Data()是把ADC转换的温度值转换为摄氏温度值,并存入到LCD的lcd_Buf,以方便LCD显示。具体来说此模块的功能是采集模拟温度值,再进行模数转换,再把温度值表示出来。 LCD显示程序:由void init_LCD(void)、void lcd_Display()和void lcd_SetRP()函数组成,void init_LCD(voi

11、d)为LCD初始化函数,用于初始化LCD,void lcd_Display()是数据显示函数,用于显示lcd_Buf中的数据,void lcd_SetRP()是小数点设置函数,用于设置小数点的位置。此模块的功能是显示放入lcd_Buf中的数据的十进制值。键盘输入程序:该子程序实现了从键盘输入时间数据,并用FLASH存储器记录该时间数据,以便温度数据读出时知道各点的采样时刻。FLASH存储程序:这段子程序主要实现初始化FLASH存储器,设置存储器的初始地址,并把温度数据依次存入到FLASH存储器中。数据读取程序:该子程序的功能是从FLASH存储器中读取存入的采样数据,并用LCD把数据用十进制数显

12、示出来。四、系统测试1、测试方法在硬件设计及软件编译通过的基础上,把软件程序代码拷到单片机板子上,运行程序,单步执行程序,测试系统是否能对温度数据进行采集、转换、显示、存储及读取,若都能完成,则系统满足设计的要求,实验成功,若一些功能不能满足,则对硬件或软件进行合理调整,直到满足设计要求。实验中由于采样时间间隔较短,可以在不同环境下进行采样,获得相差较大的采样值。 2、问题分析 在系统测试过程中,出现各种错误是很正常的,如编译通不过,板子没有反应,出现错误数据,不能达到设计要求。出现这些问题时,应该在熟悉设计原理和板子接口图的基础上,对程序进行分步分析,明白它们的执行过程及产生结果,然后对照实

13、际结果进行分析,找出原因。在实验中,小问题是经常被忽略的,如程序编译的语法,程序书写格式,这些都应该引起我们的重视。五、工程代码/* 文件名称:* main.c* 文件说明:* 对MSP430片内温度传感器进行采样,输出温度到LCD* 程序使用单通道单次转换,温度显示的格式是华氏温度,* 带两位小数并将温度数据存入FLASH存储器中,进行读取。*/#define MSP430F449_H 0#include #includeflash.c#include adc12.cvoid main(void)unsigned int tmpv;char*s; unsigned int a; WDTCTL

14、 = WDTHOLD + WDTPW; /停止看门狗 init_LCD(); /初始化LCDinit_ADC12(); /初始化ADC12init_Flash(void); / Flash初始化 _EINT(); /使能中断 while(a=0;a8;a+) start_ADC12(); /启动ADC12 while(adc_Flag = 0); /等待转换完称 lcd_Display(); /显示数据到LCD lcd_SetRP(); /显示小数点 tmpv = 0; while(tmpv 0x5ffff) tmpv+;/延时 s=(char*)0x1000;while(a=0,a8,a+)

15、/显示采集的数据read_Flash(s, lcd_Buf,int, 8);lcd_Display(); /*adc12.cadc12操作*/#ifndef MSP430F449_H#endif#ifndef LCD_IN_USElcd.c#define REFVOL 2.5 /vcc参考设为2.5unsigned char adc_Flag;char*p=0x1000;/* 初始化ADC12*/void init_ADC12(void) ADC12CTL0 = ADC12ON + REFON + REF2_5V + SHT0_6;/ 设置ADC12 的内部参考电压2.5伏 ADC12CTL1

16、 = SHP; / 设置使用采样时钟 ADC12MCTL0 = INCH_10 + SREF_1; / 选择通道A10,即片内温度传感器输出 ADC12IE |= 0x01; / 使能中断 ADC12CTL0 |= ENC; / 使能转换 /* 启动 ADC12void start_ADC12() ADC12CTL0 |= ADC12SC; adc_Flag = 0;* 把数据编程要显示的格式,然后写到lcd_Buf中去*/void format_Data() int result; unsigned char tmp; result = ADC12MEM0; result = ( int)(

17、REFVOL * result )/ 4096 - 0.986) /0.0000355); /得到对应的温度值*10,以包括小数两位 for(tmp=0;tmp7;tmp+) lcd_Buftmp = result % 10; /把结果转换成十进制,并存放在LCD缓冲区中 result = result /10; / erase_Flash(p); write_Flash(p, lcd_Buf,8); /数据存入Flash中* 中断向量#pragma vector = ADC_VECTOR _interrupt void ADC_Interrupt(void) format_Data(); /

18、格式化数据并显示到LCD adc_Flag = 1; /指示有数据要显示/* lcd.cLCD 模块*/#define LCD_IN_USE 8#define RADIX_POINT 0x08/* 数据定义 const unsigned char NUM_LCD16= 0x7B, 0x12, 0x4f, 0x1f, 0x36, /0 4 0x3d, 0x7d, 0x13, 0x7f, 0x3f, /5 9 0x73, 0x7c, 0x69, 0x5e, 0x6f, / 6E 0x65; / Funsigned char lcd_BufLCD_IN_USE; / 自定义显示缓冲区,用于 / 外部

19、设定要显示的数据 /* 模块初始化*/void init_LCD(void) char tmpv; BTCTL |= 0x10; / set LCD 时钟 P3DIR = 0xff; / 输出模式 P5SEL = 0xfc; / 置为外围模块 LCDCTL = LCDON+LCD4MUX+LCDP1; / 4Mux 模式 for (tmpv = 0;tmpvtmpv+) LCDMEMtmpv = 0x00; /clear LCD LCDMEM7 = 0x02; / 设置LCDMEM7 /* 更新LCD缓冲区的内容,把数据显示到LCD*/void lcd_Display() for(tmpv=0

20、;LCD_IN_USE-1; LCDMEMtmpv = NUM_LCDlcd_Buftmpv; /更新LCDMEM中的内容 * 设置小数点void lcd_SetRP() LCDMEM2 |= 0x80; / 显示小数点 /* 文件名:* flash.c * 对MSP430自带Flash进行操作*/#define FLASH_C 0#endif * 初始化 Flash*/void init_Flash(void) FCTL2 = FWKEY + FSSEL0 + FN0; / 设置时钟频率为ACLK * 读Flash* 输入参数说明:* addr: 读地址* length: 要读取的字节数* readBuf: 用以存储读取内容的缓存区地址*/ void read_Flash(char* addr,char * readBuf,int length) unsigned int cnt; while(FCTL3 & 0x01) = 0x0001); / 等待flash空闲 for(cnt=0;cntlen;cnt+)

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

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