欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    MSP430单片机实验报告(共25页).docx

    • 资源ID:11388035       资源大小:867KB        全文页数:25页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    MSP430单片机实验报告(共25页).docx

    精选优质文档-倾情为你奉上MSP430单片机课程设计一 设计要求数字温度计(1)用数码管(或LCD)显示温度和提示信息;(2)通过内部温度传感器芯片测量环境温度;(3)有手动测量(按测量键单次测量)和自动测量(实时测量)两种工作模式;(4)通过按键设置工作模式和自动测量的采样时间(1秒1小时);(5) 具备温度报警功能,温度过高或过低报警。二 系统组成系统由G2Launch Pad及其拓展板构成,单片机为MSP430G2553。使用的通信方式对IO进行拓展,芯片为TCA6416A;使用HT1621控制LCD;三 系统流程拓展的四个按键key1、key2、key3、key4分别对应单次测量、定时测量、定时时间的增、减。定时时间分别为1s,5s,15s,30s,60s。在自动测量模式下,当温度超过设定温度上限即报警,报警时在LCD屏幕显示ERROR同时LED2闪烁,在5s后显示0。此时可重新开始手动或自动测量温度。系统示意图:四. 演示a) 手动测量温度b)自动测量温度c)报警显示ERROR同时LED闪烁d)设置时间界面五 代码部分#include "MSP430G2553.h"#include "TCA6416A.h"#include "LCD_128.h"#include "HT1621.h"#include "DAC8411.h"#define CPU_F (double)#define delay_us(x) _delay_cycles(long)(CPU_F*(double)x/.0)#define delay_ms(x) _delay_cycles(long)(CPU_F*(double)x/1000.0)static int t=0;long temp;long IntDeg;void ADC10_ISR(void);void ADC10_init(void);void LCD_Init();void LCD_Display();void GPIO_init();void I2C_IODect();void Error_Display();void WDT_Ontime(void);void LCD_Init_AUTO();void LCD1S_Display();void LCD5S_Display();void LCD15S_Display();void LCD30S_Display();void LCD60S_Display();void main(void) WDTCTL = WDTPW + WDTHOLD;/关狗 BCSCTL1 = CALBC1_8MHZ; /* 设定系统时钟频率,使程序定时精准 */ DCOCTL = CALDCO_8MHZ; /-提示初始化成功- GPIO_init(); LCD_Init(); ADC10_init(); LCD_Display(); _enable_interrupt(); /使能总中断 while(1) PinIN(); _bis_SR_register(LPM3_bits);/休眠 /*/* * 名 称:GPIO_Init() * 功 能:设定按键和LED控制IO的方向 * 入口参数:无 * 出口参数:无 * 说 明:无 * 范 例:无 */void GPIO_init() /-设定P1.0和P1.6的输出初始值-P1DIR |= BIT0;/设定P1.0和P1.6为输出P1OUT |= BIT0;/设定P1.0初值/-启用内部上拉电阻-P2REN |= BIT3; /启用P2.3内部上下拉电阻P2OUT |= BIT3; /将电阻设置为上拉 P1REN |= BIT3; /启用P1.3内部上下拉电阻P1OUT |= BIT3; /将电阻设置为上拉/-配置P2.3中断参数-P2DIR &= BIT3; / P2.3设为输入(可省略)P2IES |= BIT3; / P2.3设为下降沿中断P2IE |= BIT3 ; / 允许P1.3中断 P1DIR &= BIT3; / P1.3设为输入(可省略)P1IES |= BIT3; / P1.3设为下降沿中断P1IE |= BIT3 ; / 允许P1.3中断/* * 名 称:PORT2_ISR() * 功 能:响应P1口的外部中断服务 * 入口参数:无 * 出口参数:无 * 说 明:P2.0P2.8共用了PORT1中断,所以在PORT2_ISR()中必须查询标志位P1IFG才能知道 * 具体是哪个IO引发了外部中断。P1IFG必须手动清除,否则将持续引发PORT1中断。 * 范 例:无 */#pragma vector = PORT2_VECTOR_interrupt void PORT2_ISR(void)/-启用Port2事件检测函数-I2C_IODect();/检测通过,则会调用事件处理函数 P2IFG=0; /退出中断前必须手动清除IO口中断标志 _bic_SR_register_on_exit(LPM0_bits );/* * 名 称: I2C_IO10_Onclick() * 功 能:TCA6416A的扩展IO1.0的按下事件处理函数 * 入口参数:无 * 出口参数:无 * 说 明:无 * 范 例:无 */void I2C_IO10_Onclick() ADC10CTL0 |= ENC + ADC10SC; / Sampling and conversion start / _bis_SR_register(CPUOFF + GIE); / LPM0 with interrupts enabled _delay_cycles(1000); /-ADC转换完成中断唤醒CPU后才执行以下代码- temp = ADC10MEM;/读取AD采样值 IntDeg= temp*4225/1024 - 2777;/转换为摄氏度,并10倍处理 LCD_Init(); LCD_Display(); return;/* * 名 称: I2C_IO11_Onclick() * 功 能:TCA6416A的扩展IO1.1的按下事件处理函数 * 入口参数:无 * 出口参数:无 * 说 明:无 * 范 例:无 */void I2C_IO11_Onclick() /_enable_interrupt(); /使能总中断 /PinIN(); /_bis_SR_register(LPM3_bits);/休眠 LCD_Init_AUTO(); LCD_Display(); while(1) TCA6416A_InputBuffer=0; ADC10CTL0 |= ENC + ADC10SC; /Sampling and conversion start /-ADC转换完成中断唤醒CPU后才执行以下代码- temp = ADC10MEM;/读取AD采样值 IntDeg= temp*4225/1024 - 2777;/转换为摄氏度,并10倍处理 LCD_Display(); if(IntDeg>380) while(1) for(int j=0;j<5;j+) PinOUT(1,1); Error_Display(); delay_ms(500); PinOUT(1,0); delay_ms(500); IntDeg=0; main(); /DAC8411_Init(); /P1DIR |= BIT1; /write2DAC8411(Datai); /write2DAC8411(65535); /write2DAC8411(Datai); /i+; /if(i>SAMPLENUM) / i=0; / break; LCD_Display(); switch(t) case 0:delay_ms(1000);break;/1s case 1: delay_ms(5000);break;/5s case 2: delay_ms(15000);break;/15s case 3: delay_ms(30000);break;/30s case 4: delay_ms(60000);break;/60s /* * 名 称: I2C_IO12_Onclick() * 功 能:TCA6416A的扩展IO1.2的按下事件处理函数 * 入口参数:无 * 出口参数:无 * 说 明:无 * 范 例:无 */void I2C_IO12_Onclick() t=t+1; if(t>4) t=4; switch(t) case 0:LCD1S_Display();break; case 1: LCD5S_Display();break; case 2: LCD15S_Display();break; case 3: LCD30S_Display();break; case 4: LCD60S_Display();break; /* * 名 称: I2C_IO13_Onclick() * 功 能:TCA6416A的扩展IO1.3的按下事件处理函数 * 入口参数:无 * 出口参数:无 * 说 明:无 * 范 例:无 */void I2C_IO13_Onclick() t=t-1; if(t<0) t=0; switch(t) case 0:LCD1S_Display();break; case 1: LCD5S_Display();break; case 2: LCD15S_Display();break; case 3: LCD30S_Display();break; case 4: LCD60S_Display();break; /* * 名 称: I2C_IODect() * 功 能:TCA6416A的扩展IO事件检测函数 * 入口参数:无 * 出口参数:无 * 说 明:检测具体哪个扩展IO被按下 * 范 例:无 */void I2C_IODect() static unsigned char KEY_Now=0;unsigned char KEY_Past;KEY_Past=KEY_Now;/-判断I2C_IO10所连的KEY1按键是否被按下-if(TCA6416A_InputBuffer&BIT8) = BIT8)KEY_Now |=BIT0;elseKEY_Now &=BIT0;if(KEY_Past&BIT0)=BIT0)&&(KEY_Now&BIT0)=0) I2C_IO10_Onclick(); /-判断I2C_IO11所连的KEY2按键是否被按下-if(TCA6416A_InputBuffer&BIT9)= BIT9)KEY_Now |=BIT1;elseKEY_Now &=BIT1;if(KEY_Past&BIT1)=BIT1)&&(KEY_Now&BIT1)=0) I2C_IO11_Onclick(); /-判断I2C_IO12所连的KEY3按l键是否被按下-if(TCA6416A_InputBuffer&BITA) = BITA)KEY_Now |=BIT2;elseKEY_Now &=BIT2;if(KEY_Past&BIT2)=BIT2)&&(KEY_Now&BIT2) =0)I2C_IO12_Onclick();/-判断I2C_IO13所连的KEY4按键是否被按下-if(TCA6416A_InputBuffer&BITB) = BITB)KEY_Now |=BIT3;elseKEY_Now &=BIT3;if(KEY_Past&BIT3) = BIT3)&& (KEY_Now&BIT3) = 0)I2C_IO13_Onclick();/* * 名 称:LCD_Init() * 功 能:初始化LCD显示相关的硬件,并预设固定不变的显示内容 * 入口参数:无 * 出口参数:无 * 说 明:预设显示内容包括摄氏度oC,以及小数点。 * 范 例:无 */void LCD_Init() TCA6416A_Init(); HT1621_init(); LCD_Clear();/-显示固定不变的LCD段-LCD_DisplaySeg(_LCD_TI_logo);LCD_DisplaySeg(_LCD_QDU_logo); LCD_DisplaySeg(_LCD_RUN);LCD_DisplaySeg(_LCD_DOT2);/温度小数点/-减法构造“o”-LCD_DisplayDigit(9,5);LCD_ClearSeg(_LCD_5D);LCD_ClearSeg(_LCD_5C);/-减法构造“C”-LCD_DisplayDigit(0,6);LCD_ClearSeg(_LCD_6B);LCD_ClearSeg(_LCD_6C); LCD_DisplayDigit(0,2); LCD_DisplayDigit(0,3); LCD_DisplayDigit(0,4);void LCD_Init_AUTO() TCA6416A_Init(); HT1621_init();/-显示固定不变的LCD段-LCD_DisplaySeg(_LCD_TI_logo);LCD_DisplaySeg(_LCD_QDU_logo); LCD_DisplaySeg(_LCD_AUTO);LCD_DisplaySeg(_LCD_DOT2);/温度小数点/-减法构造“o”-LCD_DisplayDigit(9,5);LCD_ClearSeg(_LCD_5D);LCD_ClearSeg(_LCD_5C);/-减法构造“C”-LCD_DisplayDigit(0,6);LCD_ClearSeg(_LCD_6B);LCD_ClearSeg(_LCD_6C);/* * 名 称:LCD_Displaly() * 功 能:将温度值显示出来 * 入口参数:无 * 出口参数:无 * 说 明:包括对负温度的处理、拆分数字等几部分 * 范 例:无 */void LCD_Display() if( IntDeg>=0) LCD_ClearSeg(_LCD_1G);/正温度,则清除负号 else IntDeg=-IntDeg;/负温度,则做绝对值处理 LCD_DisplaySeg(_LCD_1G);/负温度,添加负号 /-清除3位显示数字- LCD_DisplayDigit(LCD_DIGIT_CLEAR,2); LCD_DisplayDigit(LCD_DIGIT_CLEAR,3); LCD_DisplayDigit(LCD_DIGIT_CLEAR,4); /-拆分3位并显示数字- LCD_DisplayDigit(IntDeg/100,2); LCD_DisplayDigit(IntDeg%100)/10,3); LCD_DisplayDigit(IntDeg%100)%10,4); /-更新缓存,真正显示- HT1621_Reflash(LCD_Buffer);/* * 名 称:ADC10_init(void) * 功 能:初始化ADC10采集内部温度传感器,单次手动采样 * 入口参数:无 * 出口参数:无 * 说 明:直接从CCS的Example中移植过来 * 范 例:无 */void ADC10_init(void)ADC10CTL0 &= ENC;ADC10CTL0 = ADC10IE + ADC10ON + REFON + ADC10SHT_3 + SREF_1; ADC10CTL1 = CONSEQ_0 + ADC10SSEL_0 + ADC10DIV_3 + SHS_0 + INCH_10; _delay_cycles(10000); ADC10CTL0 |= ENC;/* * 名 称:ADC10_ISR_HOOK * 功 能:ADC转换完成后唤醒CPU * 入口参数:无 * 出口参数:无 * 说 明:直接从CCS的Example中移植过来 * 范 例:无 */#pragma vector=ADC10_VECTOR_interrupt void ADC10_ISR_HOOK(void)_bic_SR_register_on_exit(LPM4_bits);void Error_Display() TCA6416A_Init(); HT1621_init(); LCD_ClearSeg(_LCD_DOT2); LCD_ClearSeg(_LCD_1G);/-显示固定不变的LCD段-LCD_DisplaySeg(_LCD_TI_logo);LCD_DisplaySeg(_LCD_QDU_logo); /-构造ERROR-LCD_DisplayDigit(6,2); LCD_ClearSeg(_LCD_2C);LCD_DisplayDigit(8,3);LCD_ClearSeg(_LCD_3D); LCD_DisplayDigit(8,4);LCD_ClearSeg(_LCD_4D); LCD_DisplayDigit(0,5); LCD_DisplayDigit(8,6);LCD_ClearSeg(_LCD_6D);/-更新缓存,真正显示-HT1621_Reflash(LCD_Buffer);void LCD1S_Display() LCD_ClearSeg(_LCD_DOT2);/温度小数点 /-清除3位显示数字- 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_DisplayDigit(LCD_DIGIT_CLEAR,7); /-显示数字- LCD_DisplayDigit(0,4); LCD_DisplayDigit(1,5); LCD_DisplayDigit(5,6); /-更新缓存,真正显示- HT1621_Reflash(LCD_Buffer);void LCD5S_Display() LCD_ClearSeg(_LCD_DOT2);/温度小数点 /-清除3位显示数字- 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_DisplayDigit(LCD_DIGIT_CLEAR,7); /-显示数字- LCD_DisplayDigit(0,4); LCD_DisplayDigit(5,5); LCD_DisplayDigit(5,6); /-更新缓存,真正显示- HT1621_Reflash(LCD_Buffer);void LCD15S_Display() LCD_ClearSeg(_LCD_DOT2);/温度小数点 /-清除3位显示数字- 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_DisplayDigit(LCD_DIGIT_CLEAR,7); /-显示数字- LCD_DisplayDigit(1,4); LCD_DisplayDigit(5,5); LCD_DisplayDigit(5,6); /-更新缓存,真正显示- HT1621_Reflash(LCD_Buffer);void LCD30S_Display() LCD_ClearSeg(_LCD_DOT2);/温度小数点 /-清除3位显示数字- 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_DisplayDigit(LCD_DIGIT_CLEAR,7); /-显示数字- LCD_DisplayDigit(3,4); LCD_DisplayDigit(0,5); LCD_DisplayDigit(5,6); /-更新缓存,真正显示- HT1621_Reflash(LCD_Buffer);void LCD60S_Display() LCD_ClearSeg(_LCD_DOT2);/温度小数点 /-清除3位显示数字- LCD_DisplayDigit(LCD_DIGIT_CLEAR,2); LCD_DisplayDigit(LCD_DIGIT

    注意事项

    本文(MSP430单片机实验报告(共25页).docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开