【精品】430实习报告-常亚_第1页
【精品】430实习报告-常亚_第2页
【精品】430实习报告-常亚_第3页
【精品】430实习报告-常亚_第4页
【精品】430实习报告-常亚_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华东)china university of petroleum20102011学年第二学期msp430单片机实习报告专业班级 测控07-2班姓 名 常 亚学 号 07054205一、实习任务以设计智能仪表为设计目的开展本次课程设计,要求先熟悉开发系统;学习 msp430f5438单片机的工作基本原理、各模块工作原理;熟悉c51编程;针对 开发电路板上的资源对各个试验进一步学习验证;根据设计内容要求进行任务 设计开发。要求实际任务能达到运行的目的。设计内容在熟悉msp430f5438单片机工作原理及内部各模块工作原理的基础上进行“芯 片温度及工作电压智能监测仪表“开发,对该仪表的几点要求:采用

2、adc模块的内部采集通道采集芯片温度及工作电压,要求采用适当的数字 滤波器进行采样数据处理,数据刷新显示周期应为2秒;采样结果转换成实际的工程参数,应按工程单位在lcd显示屏上显示,包括单 位显示,要求把芯片温度和工作电压分页显示,采用按键切换或选择显示画 面,应尽量做到操作清晰、界面美观;串口调试软件应该可以发送相应指令实现lcd显示内容的切换和相应数据上 传,实际的芯片温度、工作电压应能通过uart接口上送至计算机相应的串口调 试软件中。二、课程设计程序#include <stdio. h>#include <math. h>#include <msp430x

3、54x.h>#i nc1ude "1cdoperate.hvoid init clk(void);void systeminit(void) ;void ta ini t (void);void ad init();void halusbtnit();void uart send(void);uchar *trans data to disp(uchar *str ptr, float data, uchar d);全局变量的定义/*fl()dt vtef二2. 5; /定义参考电压的值unsigned int result 1 32, result232;/ 转换值存取变量s

4、tatic uchar flag_set=0, flag_time=o;static uint a=0;uint num=0, k=0; float votage, vtemp, t;uchar tmp_bufl10 = 0 ; /存放字符转化后的结果电压uchar tmp_buf210 = 0; 温度#define str exd '0,*函数名称:mainovoid main()!systeminit() ;/系统初始化initlcdm() ;ta_init ();ad_init() ;halusbinit();clearram(o, 0, 128, 8) ;/清屏 eint();

5、while(l)lpmo;trans_data_to_disp(tmp_buf1, votage, 2);trans data to disp(tmp buf2, t, 2);if (flag_set=l) /电压页 display_string(l, 2,电压:“);display_string(ll,2,"v");if (flag_timel) flag time=0;display string(7, 2, tmp bufl);else display_string(l, 2,"温度:");display_string(11, 2, "c

6、");if (flag time=l)flag time=0;display string(6, 2, tmp buf2) ;tf卜 吟、卜 *t*|* 打j *t* 打j *7* "卜 吟、"卜 *t*v* 打j *t* "卜 *t* "卜 *t* "卜 *t* "卜twr* *t r* t% 7% 吓 7* *t xt*功能:timer_a定时器中断服务程序 pragma vector=timer1_a1_vectorinterrupt void ta(void) uint sum_votage=0, sum_temp=

7、0;ta1ctl &二"tatfg; /清中断标志位for (k二0;k16;k+) /连续进行16次转换,提高精度 滤波 ad init ();sum temp+=result 1 k; /求和sum_votage+=result2k;num+;if (num16) num=0;sum_temp»=4; /右移4位,相当于除以16.得到平均的结果;sum votage>>=4;votage= (2vref*sum_votage) /4095; /完成转换,得到电压值vtemp= (vref*sum_temp)/4095;/得到温度相应的电压值t=(vt

8、emp-0. 986)/0. 00335; 测出温度if(+a > 1)/ 2s刷新一次数据 a = 0;flag time二1;lpmo extt;j/串口初始化程序void halusblnit()/选择串口功能 p5sel |= bit6 + bit7;uca1ctl1=ucswrst;/复位串口功能uca1ctl0=ucmode 0;/选择串口功能uca1ctl0&二"uc7btt;/ 8位数据模式uca1ctl1|= ucssel_1;/时钟源选择aclkuca1br0 =二 3;/ 32768hz/3二9600uca1br1 =0;uca1mctl=06;/

9、波特率调整因子uca1ctl1&二"ucswrst;/使能串口功能uca11e |= ucrx1e;/使能接收中断void putstring(uchar *ptr) /串口字符串发送程序while(*ptr != '0') while (! (uca11fg & uctx1fg); / 判断是否发送完毕uca1txbuf 二 *ptr+;/ 发送数据while (! (uca1ifg & uctxtfg) ;/ 判断是否发送完毕uca1txbuf 二n'void uart_send(void)uchar data=0;while (!

10、 (uca1tfg & uctxtfg) ;/ 判断是否发送完毕data = uca1rxbuf;/接收到的数据switch(data) case 0x55:/收到0x55向上位机发送电压数据 flag set=l;putstring(tmp_buf1) ; break;case oxaa:/接收到oxad向上位机发送温度数据 flag set=0;putstring(tmp_buf2); break;default :break;#pragma vector=usci al vector_interrupt void usct_a1_isr(void) uart_send( );#p

11、ragma vector = port2 vectorinterrupt void port2(void) switch(p2tv) case oxoe: flag set=l; break;/工作电压 分页显示case 0x10: flag_set=0; break; / 芯片温度default :break;void ad_init ()unsigned int i;adc12ctl2 = adc12res 2 + adc12refout; / ad 基本配置adc12ctl0 = adc12on + adc12msc + adc12sht03 + adc12ref0n + adc12re

12、f2_5v;adc12mctl0 |= adc12sree_1 + adc12inch_10;/ 采样温度adc12mctl1 |= adc12sref 1 + adc 12inch 11+adc12eos; / 采样 vacc/2adc12ctij = adc12shp + adc12conseq 3;/ 选择转换模式for (i二0; i0xffff; i+) ;/等待基准电压建立ucsctl8 > modosckeqen;adc12ctl0 |= adc12enc; / 开启转换adc12ctl0 |= adc12sc; / 开始转换if (adc12ifg =0x03) /如果转

13、换完毕,读走数据result! num=adc12mem0; / 保存第一通道值 温度result2num二 adc12mem1; 电压void tainit(void)ta1ctl = tassel_aclk + ta ie + taclr; /ta 的时钟源选择为 xt1clkta1ccr0 = 32768;/ 一次定时is ,一秒内读50次数据ta1ctl |= mc up;连续增计数模式xlx kjx xlx kjx xlx kjx xlx kjx xlx kjxklx klx klx klx kix vx klx xax klx xax klx klx kix kixxax/ >

14、;1%void init_clk(void)p7sel |= 0x03;/xt1 起振ucsctl1 = dc0rsel_5; /选择 dco 的范围ucsctl2 = 243;/设置 dco 频率为 16mucsctl4 = selm_3 + sela_o + sels_3; /设置 mclk = dcoc, mclk =dco, aclk=xt1while (sfrifg1 & ofifg) /判断晶振是否起振 ucsctl7 &二 (xt1lfoffg + dcoffg) ;/ 清除失效标志位sfrifg1 &二ofifg; /清除失效中断标志位i/*浮点数转化为

15、字符型数据显示*/uchar *trans_data_to_disp(uchar *str_ptr, float data, uchar d)uint integral part=0; /整数部分float decimal part=0; /小数部分uint temp;uchar i, n;integral part 二(uint) (data); 整数部分temp=integralpart;n=0;don+;temp= (uint) (temp/10) ; /得到整数部分位数nwhile(temp!=0);temp=integral_part;for( i二0; (i<n)&&

16、amp;(i<20); i+) *(str_ptr + n-li) = (uchar) (temp%10) +'o' ; /从低位(str ptr + nt)开 始,获取相应位temp=(uint)(temp/10);!if( (d=0) | | (i=20) *(str_ptr + i) = str end;/此吋 i 二 n 或 20return str_ptr;!else *(str_ptr + i) = '.' ;/此时 i 二 n ,且 n < 20小数部分decimal_part = data - integral_part;for(i=

17、n+l; (i<d+n+l)&&(i<20); i+)decimal part = decimal_part * 10;*(strjptr + i) = (uchar) (decimal_part) +'o' ; /从高位(str_ptr + n+1)开 始,获取相应位decimal_part 二 decimal_part 一 (uchar)(decimal_part);*(strjptr + i) = str_end; /此时 i = d+n+1 或 20return str ptr;>1>1%x%1%1%x 7"%1%1jx

18、 xl jx夕 a、"八 *、*,、", *.、* a、"、夕 a、"、xix ,、"、b,、x |x ".、x |x .、"、",、x ix jx "、x %x %< % xy xy xy xt xy xy 斗 j xt 斗 jxy v、斗 xyxy 刁 j "4、斗 j "(、斗 j "4、斗 j "4、斗"4、斗 j* 函数名称:systeminit ()void systeminit()wdtctl = wdtpw+wdth0ld;停止看门狗

19、pad1r=oxffff;设置不用的10 口pa0ut=0; pasel = 0;pbdtr=oxffff; pbout=0;pbsel = 0;pcdtr=oxffff; pcout=0; pcsel = 0;pdd1r=oxffff; pdout=0; pdsel = 0;ped ir=oxffff;peout 二o;pesel = 0;p11dtr=oxff; p110ut =0; pl 1see = 0;pjdtr :=oxff; pjout = 0;p2dtr &二 ( btt6 + btt7);/p2. 6 p2. 7设置为输入p2ren|= bit6 + b1t7;上拉下

20、拉电阻使能p20ut|= bit6 + b1t7;/p2. 6 p2. 7 为上拉p2ies|= bit6 + bit7;/p2. 6 p2. 7下降触发p2te|= btt6 + btt7;/p2. 6 p2.7屮断使能p2ifg二0;/中断标志清除,防止配置过程中出现中断标志为1init_clk();三、实习总结通过为期10天的msp430单片机的实习,首先了解和熟悉msp430f5438单片机的集成 开发环境1ar软件的使用。然后再熟悉德州仪器公司主流微处理器msp430系列高端产品 msp430f5438的硬件结构和相应的功能,以及相应功能实习所需的寄存器的配置。此款单 片机功能之强大

21、,包括低功耗、看门狗、ucs、电源管理模块pmm、高达87的通用i/o端 口、dma.定时比较器、实时时钟(rtc)、通用串并行通信接口(usart、spt、t2c)以及 12位的ad转换器。其屮最重要的特色是低功耗的应用,可以使此款单片机通过电池供电 应用于便携的仪表的场合。前7天主要是熟悉以上功能,最后三天是完成以上提供的任 务。在做任务过程屮遇到一些困难比如串口通信下位机只能收不能发,通过不断地调试修 改程序完成任务。在任务的指标环节上温度可能有点和实际不符,但是通过调试发现不是 程序问题,通过查资料知道msp430内嵌的温度传感器实际上就是一个输出电压随环境 温度而变化的温度二极管表1是它的一些基本电气特性。按照ti公司提供的资料,这个温度二极管输出的电压 和对应的温度近似成简单

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论