3057|3

40

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求大神帮忙写一个g2553ADC10温度传感器测量温度并通过串口传递给超级终端的代码 [复制链接]

求大神帮忙写一个g2553ADC10温度传感器测量温度并通过串口传递给超级终端的代码,学校搞培训,一共讲了5个学时,让我们用g2553设计,写代码一直没有设计好,希望大神抽时间帮忙写一个,提供给我学习使用,或者给我一个编程的思路,我再自己编写调试,有c语言基础,但是对单片机编程还是门外汉,提前谢谢大家了

[ 本帖最后由 416202554 于 2013-5-20 21:22 编辑 ]

最新回复

//****************************************************************************** //  MSP430G2x33/G2x53 Demo - ADC10, Sample A10 Temp and Convert to oC and oF // //  Description: A single sample is made on A10 with reference to internal //  1.5V Vref. Software sets ADC10SC to start sample and conversion - ADC10SC //  automatically cleared at EOC. ADC10 internal oscillator/4 times sample //  (64x) and conversion. In Mainloop MSP430 waits in LPM0 to save power until //  ADC10 conversion complete, ADC10_ISR will force exit from any LPMx in //  Mainloop on reti. Temperaure in oC stored in IntDegC, oF in IntDegF. //  Uncalibrated temperature measured from device to device will vary with //  slope and offset - please see datasheet. //  ACLK = n/a, MCLK = SMCLK = default DCO ~1.2MHz, ADC10CLK = ADC10OSC/4 // //                MSP430G2x33/G2x53 //             ----------------- //         /|\|              XIN|- //          | |                 | //          --|RST          XOUT|- //            |                 | //            |A10              | // //  D. Dang //  Texas Instruments Inc. //  December 2010 //   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10 //****************************************************************************** #include  "msp430g2553.h" long temp; long IntDegF; long IntDegC; void main(void) {   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT   ADC10CTL1 = INCH_10 + ADC10DIV_3;         // Temp Sensor ADC10CLK/4   ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;   __enable_interrupt();                     // Enable interrupts.   TACCR0 = 30;                              // Delay to allow Ref to settle   TACCTL0 |= CCIE;                          // Compare-mode interrupt.   TACTL = TASSEL_2 | MC_1;                  // TACLK = SMCLK, Up mode.   LPM0;                                     // Wait for delay.   TACCTL0 &= ~CCIE;                         // Disable timer Interrupt   __disable_interrupt();   while(1)   {     ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start     __bis_SR_register(CPUOFF + GIE);        // LPM0 with interrupts enabled     // oF = ((A10/1024)*1500mV)-923mV)*1/1.97mV = A10*761/1024 - 468     temp = ADC10MEM;     IntDegF = ((temp - 630) * 761) / 1024;     // oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278     temp = ADC10MEM;     IntDegC = ((temp - 673) * 423) / 1024;     __no_operation();                       // SET BREAKPOINT HERE   } } // ADC10 interrupt service routine #pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR (void) {   __bic_SR_register_on_exit(CPUOFF);        // Clear CPUOFF bit from 0(SR) } #pragma vector=TIMER0_A0_VECTOR __interrupt void ta0_isr(void) {   TACTL = 0;   LPM0_EXIT;                                // Exit LPM0 on return } 复制代码  详情 回复 发表于 2013-5-21 11:32
 
点赞 关注

回复
举报

1149

帖子

3

TA的资源

五彩晶圆(初级)

沙发
 
你可以参考官网的实例代码,那个已经解释的比较清楚啦!
 
 

回复

5015

帖子

12

TA的资源

裸片初长成(初级)

板凳
 
  1. //******************************************************************************
  2. //  MSP430G2x33/G2x53 Demo - ADC10, Sample A10 Temp and Convert to oC and oF
  3. //
  4. //  Description: A single sample is made on A10 with reference to internal
  5. //  1.5V Vref. Software sets ADC10SC to start sample and conversion - ADC10SC
  6. //  automatically cleared at EOC. ADC10 internal oscillator/4 times sample
  7. //  (64x) and conversion. In Mainloop MSP430 waits in LPM0 to save power until
  8. //  ADC10 conversion complete, ADC10_ISR will force exit from any LPMx in
  9. //  Mainloop on reti. Temperaure in oC stored in IntDegC, oF in IntDegF.
  10. //  Uncalibrated temperature measured from device to device will vary with
  11. //  slope and offset - please see datasheet.
  12. //  ACLK = n/a, MCLK = SMCLK = default DCO ~1.2MHz, ADC10CLK = ADC10OSC/4
  13. //
  14. //                MSP430G2x33/G2x53
  15. //             -----------------
  16. //         /|\|              XIN|-
  17. //          | |                 |
  18. //          --|RST          XOUT|-
  19. //            |                 |
  20. //            |A10              |
  21. //
  22. //  D. Dang
  23. //  Texas Instruments Inc.
  24. //  December 2010
  25. //   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
  26. //******************************************************************************
  27. #include  "msp430g2553.h"

  28. long temp;
  29. long IntDegF;
  30. long IntDegC;

  31. void main(void)
  32. {
  33.   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  34.   ADC10CTL1 = INCH_10 + ADC10DIV_3;         // Temp Sensor ADC10CLK/4
  35.   ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;
  36.   __enable_interrupt();                     // Enable interrupts.
  37.   TACCR0 = 30;                              // Delay to allow Ref to settle
  38.   TACCTL0 |= CCIE;                          // Compare-mode interrupt.
  39.   TACTL = TASSEL_2 | MC_1;                  // TACLK = SMCLK, Up mode.
  40.   LPM0;                                     // Wait for delay.
  41.   TACCTL0 &= ~CCIE;                         // Disable timer Interrupt
  42.   __disable_interrupt();

  43.   while(1)
  44.   {
  45.     ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
  46.     __bis_SR_register(CPUOFF + GIE);        // LPM0 with interrupts enabled

  47.     // oF = ((A10/1024)*1500mV)-923mV)*1/1.97mV = A10*761/1024 - 468
  48.     temp = ADC10MEM;
  49.     IntDegF = ((temp - 630) * 761) / 1024;

  50.     // oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278
  51.     temp = ADC10MEM;
  52.     IntDegC = ((temp - 673) * 423) / 1024;

  53.     __no_operation();                       // SET BREAKPOINT HERE
  54.   }
  55. }

  56. // ADC10 interrupt service routine
  57. #pragma vector=ADC10_VECTOR
  58. __interrupt void ADC10_ISR (void)
  59. {
  60.   __bic_SR_register_on_exit(CPUOFF);        // Clear CPUOFF bit from 0(SR)
  61. }

  62. #pragma vector=TIMER0_A0_VECTOR
  63. __interrupt void ta0_isr(void)
  64. {
  65.   TACTL = 0;
  66.   LPM0_EXIT;                                // Exit LPM0 on return
  67. }
复制代码

点评

谢谢版主  详情 回复 发表于 2013-7-10 00:26
 
个人签名《MCU工程师炼成记》作者之一
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 板凳wstt 的帖子

谢谢版主
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表