单片机期末测试实验报告.docx_第1页
单片机期末测试实验报告.docx_第2页
单片机期末测试实验报告.docx_第3页
单片机期末测试实验报告.docx_第4页
单片机期末测试实验报告.docx_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

MSP430单片机期末设计报告课题名称:基于msp430单片机期末测试题 起讫日期:14年6月23日- 14年6月27日 学生学号:1200308132 1200308133学生姓名: 张玥 梁尧 报告成绩: 中国计量学院信息工程学院生物医学工程专业目录1 实验仪器简介22 实验设计33 实验结果6一:实验仪器简介MSP430单片机简介:MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。德州仪器1996年到2000年初,先后推出了31x、32x、33x等几个系列,这些系列具有LCD驱动模块,对提高系统的集成度较有利。每一系列有ROM 型(C)、OTP 型(P)和 EPROM 型(E)等芯片。EPROM 型的价格昂贵,运行环境温度范围窄,主要用于样机开发。这也表明了这几个系列的开发模式,即:用户可以用 EPROM 型开发样机;用OTP型进行小批量生产;而ROM型适应大批量生产的产品。MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7 种源操作数寻址、4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。这些特点保证了可编制出高效率的源程序。MSP430 系列单片机能在25MHz晶体的驱动下,实现40ns的指令周期。16位的数据宽度、40ns的指令周期以及多功能的硬件乘法器(能实现乘加运算)相配合,能实现数字信号处理的某些算法(如FFT等)。MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压和灵活而可控的运行时钟方面都有其独到之处。首先,MSP430 系列单片机的电源电压采用的是1.8-3.6V 电压。因而可使其在1MHz 的时钟条件下运行时,芯片的电流最低会在165A左右,RAM保持模式下的最低功耗只有0.1A。其次,独特的时钟系统设计。在 MSP430 系列中有两个不同的时钟系统:基本时钟系统、锁频环(FLL 和FLL )时钟系统和DCO数字振荡器时钟系统。可以只使用一个晶体振荡器(32.768kHz)DT-26 OR DT-38,也可以使用两个晶体振荡器。由系统时钟系统产生 CPU 和各功能所需的时钟。并且这些时钟可以在指令的控制下,打开和关闭,从而实现对总体功耗的控制。由于系统运行时开启的功能模块不同,即采用不同的工作模式,芯片的功耗有着显著的不同。在系统中共有一种活动模式(AM)和五种低功耗模式(LPM0LPM4)。在实时时钟模式下,可达2.5A ,在RAM 保持模式下,最低可达0.1A 。MSP430G2553配置:低电源电压范围:1.8v至3.6v。超低功耗 运行模式:230A (在1MHz 频率和2.2V 电压条件下)待机模式: 0.5A关闭模式(RAM 保持):0.1A5 种节能模式 用于模拟信号比较功能或者斜率模数(A/D) 转换的片载比较器 可在不到1s 的时间里超快速地从待机模式唤醒 16 位精简指令集(RISC) 架构,62.5ns 指令周期时间 带内部基准、采样与保持以及自动扫描功能的10位200-ksps 模数(A/D) 转换器 基本时钟模块配置 具有四种校准频率并高达16MHz 的内部频率 串行板上编程, 内部超低功耗低频(LF) 振荡器无需外部编程电压, 32kHz 晶振 外部数字时钟源 具有两线制(Spy-Bi-Wire) 接口的片上仿真逻辑电路 两个16 位Timer_A,分别具有三个捕获/比较寄存路器 多达24 个支持触摸感测的I/O 引脚二:实验设计实验题目要求:3.编程实现如下功能:用ELVIS II平台上的信号发生器产生一个占空比可调的,频率为50HZ到1K之间可变的信号,调整信号幅值到单片机IO端口可接受的电平范围内。把这个信号输入到单片机的某个捕获功能端口,实现对这个信号的测频率和测占空比。把频率和占空比显示在液晶上。并把频率数值通过串行口上传到计算机上的串口调试助手,每隔5秒钟更新一次串行口的数据。 (LaunchPad G2 口袋实验平台)设计思路设计思路:实验要求用信号发生器发出频率和占空比可调的方波信号,分为三个模块,分别是定时器TimerA捕获、液晶显示、串口调试。我们组做了TimerA捕获和液晶显示两个模块。定时器TimerA用到了CCR0捕获模式,我们将系统时钟调成了16MHZ,设置为SMCLK、8分频、连续计数模式,CCR0捕获设置为上跳沿触发中断。中断函数里面使用的是CCR0上跳沿捕获类型中断,由于我的主函数里面的时钟设置为上跳沿触发中断,所以在中断函数里面需要3中判断:第一个上跳沿触发、第一个下跳沿触发、第二个上跳沿触发,三种if判断组合为一个完整的中断采样,当采样完毕,主函数关闭中断,进行液晶显示。这样就可以计算出信号发生器的频率和占空比了。液晶显示模块调用的是I2C通信协议、HT1621、HCA6416A、LCD_128等库函数作为驱动,主函数里面写的程序可以显示整数部分以及两位小数点,运行程序时以两秒为单位分别交替显示频率和占空比。源程序:#include#includeLCD_128.h#includeHT1621.h#includeTCA6416A.h#definemyMCLK16000000unsignedinttemp=0;unsignedcharcap_flag=0,shift=0;unsignedcharoverfloat=0;unsignedlongtime,High,Fre=0;unsignedintDuty=0;voidLCD_Display(intFRE1,intDUTE1)/清除4位显示数字,显示频率LCD_DisplayDigit(LCD_DIGIT_CLEAR,1);LCD_DisplayDigit(LCD_DIGIT_CLEAR,2);LCD_DisplayDigit(LCD_DIGIT_CLEAR,3);LCD_DisplayDigit(LCD_DIGIT_CLEAR,4);LCD_DisplayDigit(LCD_DIGIT_CLEAR,5);LCD_DisplayDigit(LCD_DIGIT_CLEAR,6);/固定显示LCD_DisplaySeg(_LCD_Hz);/拆分4位并显示数字,显示频率LCD_DisplayDigit(FRE1/100000),1);/千位LCD_DisplayDigit(FRE1%100000)/10000),2);/百位LCD_DisplayDigit(FRE1%10000)/1000),3);/十位LCD_DisplayDigit(FRE1%1000)/100),4);/个位LCD_DisplaySeg(_LCD_DOT3);LCD_DisplayDigit(FRE1%100)/10),5);/小数十分位LCD_DisplayDigit(FRE1%10),6);/小数百分位HT1621_Reflash(LCD_Buffer);/复位_delay_cycles(2*myMCLK);LCD_Clear();/清除2位显示数字,显示占空比LCD_DisplayDigit(LCD_DIGIT_CLEAR,3);LCD_DisplayDigit(LCD_DIGIT_CLEAR,4);LCD_DisplayDigit(LCD_DIGIT_CLEAR,5);LCD_DisplayDigit(LCD_DIGIT_CLEAR,6);/固定显示LCD_DisplaySeg(_LCD_TI_logo);LCD_DisplaySeg(_LCD_PRECENT);/显示百分号/拆分2位并显示数字,显示占空比LCD_DisplayDigit(DUTE1/1000),3);/十位LCD_DisplayDigit(DUTE1%1000)/100),4);/个位LCD_DisplaySeg(_LCD_DOT3);LCD_DisplayDigit(DUTE1%100)/10),5);/十分位LCD_DisplayDigit(DUTE1%10),6);/百分位/更新缓存,真正显示HT1621_Reflash(LCD_Buffer);_delay_cycles(2*myMCLK);LCD_Clear();voidmain(void)WDTCTL=WDTPW+WDTHOLD;/StopWTDDCOCTL=CALDCO_16MHZ;BCSCTL1=CALBC1_16MHZ;7TCA6416A_Init(); HT1621_init();P1DIR&=BIT2;P1DIR|=BIT0;P1OUT&=BIT0; /P1REN|=BIT2;P1SEL|=BIT2; /输入捕捉端口(P1.2)TACCTL1=CAP+CM_1+CCIS_0+SCS+CCIE;/输入捕捉,上升沿触发(upCM_1,downCM_2,updownCM_3),同步捕捉,CCR0中断使能TACTL=TASSEL_2+MC_2+TAIE+TACLR+ID_3;/选择SMCLK为时钟,连续数模式,溢出中断使能,8分频_EINT();/开启总中断while(1) _EINT();/打开中断 _delay_cycles(2*myMCLK); _DINT();/关闭中断 LCD_Display(Fre,Duty); Fre=0;/初始化 Duty=0;#pragmavector=TIMER0_A1_VECTOR_interruptvoidTimer_A1_ISR(void)switch(TAIV)case4:break;case10:overfloat+;break;/TimerA溢出中断case2:cap_flag+;if(cap_flag=1)overfloat=0;TA0CTL|=TACLR;/清定时器TACCTL1|=CM_2;if(cap_flag=2)temp=TACCR1;High=overfloat*65536+temp;TACCTL1|=CM_1;if(cap_flag=3)temp=TACCR1;time=overfloat*65536+temp;Fre=200000000/time;D

温馨提示

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

评论

0/150

提交评论