找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2792|回复: 1
打印 上一主题 下一主题
收起左侧

MSP430 ADC采集 LCD1602显示

[复制链接]
跳转到指定楼层
楼主
MSP430采集ADC数据,0-3.3V,采用LCD1602显示。三张运行截图证明切实有效。
(1)0.8V


(2)1.3V


(3)3.2V



main文件代码:
  1. void Init_ADC(void)
  2. {
  3.   ADC12CTL0 = SHT0_2 + ADC12ON;             // Set sampling time, turn on ADC12
  4.   ADC12CTL1 = SHP;                          // Use sampling timer
  5.   ADC12IE = 0x01;                           // Enable interrupt
  6.   ADC12CTL0 |= ENC;                         // Conversion enabled
  7.   P6DIR = 0xFE;                            // P6.0, i/p
  8.   P6SEL|= 0x01;                            // P6.0-ADC option select
  9. }

  10. /*******************************************
  11.   函数名称:Trans_val
  12.   功 能:将16进制ADC转换数据变换成三位10进制
  13.   真实的模拟电压数据,并在液晶上显示
  14.   参 数:Hex_Val--16进制数据
  15.   n--变换时的分母等于2的n次方
  16.   返回值 :无
  17. ********************************************/

  18. void Trans_val(uchar ptr[6],uint Hex_Val)
  19. {
  20.   unsigned long caltmp;
  21.   uint Curr_Volt;
  22.   caltmp = Hex_Val;
  23.   caltmp = (caltmp<<5) + Hex_Val; //caltmp = Hex_Val * 3
  24.   Curr_Volt = caltmp>> 12; //Curr_Volt = caltmp / 2^n
  25.   // 参考电压为3.3V,所以计算公式应该为Hex_val*3.3/2^n
  26.   // 乘除计算通过移位来进行可以有效的提高程序运行效率
  27.   ptr[2] = (Curr_Volt / 10)+0x30; //个位
  28.   ptr[4] = (Curr_Volt % 10)+0x30; //小数位
  29. }

  30. void Time0_Init()
  31. {
  32.     TACTL=TASSEL_1+ ID_3+ MC_1;
  33.     CCTL0=CCIE;
  34.     CCR0=1024;
  35. }

  36. void main(void)
  37. {
  38.   WDTCTL=WDTPW + WDTHOLD; // 关闭看门狗
  39.   P6SEL|= 0x03;                            // P6.0-ADC option select
  40.   
  41.   ADC12CTL0 = SHT0_8 + ADC12ON + MSC;         // Set sampling time, turn on ADC12
  42.   ADC12CTL1 = SHP+CONSEQ_1;                 // Use sampling timer
  43.   
  44.   ADC12MCTL0 = INCH_0;
  45.   ADC12MCTL1 = INCH_1 + EOS;

  46.   ADC12IE|= BIT1;                           // Enable interrupt
  47.   ADC12CTL0 |= ENC;                         // Conversion enabled
  48.   ADC12CTL0 |= ADC12SC;       // Start convn, software controlled

  49.   P1DIR=0xFF;            // 设置方向
  50.   P1SEL=0;            // 设置为普通I/O 口
  51.   
  52.   P2DIR=0xFF;            // 设置方向
  53.   P2SEL=0;            // 设置为普通I/O 口

  54.   P2OUT=0x00;
  55.   P1OUT=0x00;
  56.   delayms(200);  
  57.   Time0_Init();  
  58.   LCD_init();
  59.    
  60.   _BIS_SR(LPM0_bits+ GIE);//进入低功耗睡眠模式
  61.   while(1)
  62.   {   
  63.     ADC12IE|=BIT1;      
  64.     ADC12CTL0 |= ENC;
  65.     ADC12CTL0 |= ADC12SC;
  66.    
  67.     LCD_dsp_string(1,1,(char*)ad0);//在第一行第一列显示"LCD TEST"
  68.    
  69.     delayms(20);
  70.   }
  71. }

  72. // ADC12 interrupt service routine
  73. #pragma vector=ADC12_VECTOR
  74. __interrupt void ADC12_ISR (void)
  75. {   
  76.   temp0 = ADC12MEM0;
  77.   Trans_val(ad0,temp0);
  78.   
  79.   temp1 = ADC12MEM1;
  80.   Trans_val(ad1,temp1);
  81.   
  82.   LPM0_EXIT;
  83. }
复制代码



Msp430 ADC采集.zip

142.15 KB, 下载次数: 44, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:585944 发表于 2019-7-19 15:05 | 只看该作者
不得行
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表