宁波欣创电子科技官网
收藏本站
搜索

扫一扫,访问微社区

QQ登录

只需一步,快速开始

注册 找回密码
官方旗舰店新品上线AVR入门提高步步通视频SD卡高清视频教程免费下载AVR单片机十日通全集视频MSP430单片机视频教程
查看: 250|回复: 1

[问题交流] msp430AD转换序列通道多次转换

[复制链接]

1

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2018-10-10 21:27:35 | 显示全部楼层 |阅读模式
#include<msp430x14x.h>
#include"Config.h"
unsigned char TEMP1=0;                            //ADC值暂存变量
unsigned long TEMP2=0;
uchar aa,bb,cc,dd,ee,ff,gg,hh;
   
unsigned long shu[10]={'1','2','3','4','5','6','7','8','9','0'};
void Port_Init()
{
  LED8SEL  = 0x00;                      //设置IO口为普通I/O模式,此句可省
  LED8DIR  = 0xFF;                      //设置IO口方向为输出
  LED8PORT = 0xFF;                      //P2口初始设置为FF
  
  DATASEL  = 0x00;                      //设置IO口为普通I/O模式,此句可省
  DATADIR  = 0xFF;                      //设置IO口方向为输出
  DATAPORT = 0xFF;                      //P4口初始设置为FF
  
  CTRSEL  =  0x00;                      //设置IO口为普通I/O模式,此句可省
  CTRDIR |=  BIT3 + BIT4;               //设置IO口方向为输出,控制口在P63,P64
  CTRPORT =  0xFF;                      //P6口初始设置为FF  
   
  P5DIR|= BIT0 + BIT1 + BIT5 + BIT6 + BIT7;
  PSB_SET;    //液晶并口方式
  RST_SET;    //复位脚RST置高      
}
void ADC_Init()
{
  P6SEL|=0x03;
  ADC12CTL0|=  SHT0_2 + REF2_5V + REFON+MSC;
  ADC12CTL1|= ADC12SSEL_0 + SHP + CONSEQ_3 + CSTARTADD_0;
  ADC12MCTL0= SREF0+ INCH_0+EOS;
  ADC12MCTL1 = SREF0+INCH_1+EOS;
  //ADC12IE = 0x0002;
  ADC12CTL0|= ADC12ON ;
  ADC12CTL0|= ENC;
  ADC12CTL0 |= ENC + ADC12SC;  
  while ((ADC12IFG & ADC12BUSY)==0);


}
//***********************************************************************
// 显示屏命令写入函数
//***********************************************************************
void LCD_write_com(unsigned char com)
{
  RS_CLR;
  RW_CLR;
  EN_SET;
  DataPort = com;
  delay_ms(5);
  EN_CLR;
}
//***********************************************************************
// 显示屏数据写入函数
//***********************************************************************
void LCD_write_data(unsigned char data)
{
  RS_SET;
  RW_CLR;
  EN_SET;
  DataPort = data;
  delay_ms(5);
  EN_CLR;
}
//***********************************************************************
// 显示屏清空显示
//***********************************************************************
void LCD_clear(void)
{
  LCD_write_com(0x01);
  delay_ms(5);
}
//***********************************************************************
//函数名称:DisplayCgrom(uchar hz)显示CGROM里的汉字
//***********************************************************************
void DisplayCgrom(uchar addr,uchar *hz)
{
  LCD_write_com(addr);
  delay_ms(5);
  while(*hz != '\0')  
  {
    LCD_write_data(*hz);
    hz++;
    delay_ms(5);
  }
}
//****************************************************************
//函数名称:Display()显示测试结果
//****************************************************************
void Display(uchar add)
{
    TEMP1=ADC12MEM0;
     hh=TEMP1/1000;
     aa=TEMP1%1000/100;
     bb=TEMP1%100/10;
     cc=TEMP1%10;
  LCD_write_com(add);
  delay_ms(5);
  LCD_write_data(shu[aa]);
  delay_ms(5);
  LCD_write_data(shu[bb]);
  delay_ms(5);
  LCD_write_data(shu[cc]);
  delay_ms(5);
}
void Display1(uchar add)
{
      
    TEMP2=ADC12MEM1;
     dd=TEMP2/1000;
     ee=TEMP2%1000/100;
     ff=TEMP2%100/10;
     gg=TEMP2%10;
  LCD_write_com(add);
  delay_ms(5);
  LCD_write_data(shu[dd]);
  delay_ms(5);
  LCD_write_data(shu[ee]);
  delay_ms(5);
  LCD_write_data(shu[ff]);
  delay_ms(5);
}
//***********************************************************************
// 显示屏初始化函数
//***********************************************************************
void LCD_init(void)
{
  LCD_write_com(FUN_MODE);   //显示模式设置
  delay_ms(5);
  LCD_write_com(DISPLAY_ON);   //显示开
  delay_ms(5);
  LCD_write_com(CLEAR_SCREEN);   //清屏
  delay_ms(5);
}
/*#pragma vector = ADC_VECTOR
__interrupt void ADC12_IRQ(void)
{
   
  while ((ADC12IFG & ADC12BUSY)==0);
   //while((ADC12CTL0&0x02)==1);  
   _NOP(); // 处理
}*/
void main()
{
  WDT_Init();
  Clock_Init();
  Port_Init();
  Close_LED();
  delay_ms(100);
   LCD_init();                                   
  LCD_clear();
  ADC_Init();  
  //_EINT();
  while(1)
  {   
     
      DisplayCgrom(0X80,"尼尔霍格:");
      DisplayCgrom(0X88,"耶梦加德:");  
      DisplayCgrom(0X98,"苏尔特尔:");
      DisplayCgrom(0X90,"法夫尼尔:");

      Display(0x85);
      Display1(0x95);
     
  }
}
通道ADC12MEM1中的数据不能被读出来,我不知道是不是配置寄存器的问题

精品嵌入式产品尽在宁波欣创电子科技官方旗舰店http://avrgcc.taobao.com

159

主题

575

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10514

宣传达人突出贡献优秀版主论坛元老

发表于 2018-10-12 23:15:05 | 显示全部楼层
TI库里有多通道的样例,直接用就可以了
您需要登录后才可以回帖 登录 | 立即加入

在线客服

Archiver|手机版| ( 浙ICP备09058229号浙公网安备33020502000039号 )     

返回顶部