萬用電路板

----纯属爱好,谁与共鸣

« 【图】LCD1602液晶显示程序基于MSP430的红外遥控器解码 »

MSP430F149的ADC模块测试成功!

/***********************************************
程序功能:MSP430F149的ADC模块测试
程序简介:设置430内部的的12位ADC模块工作,讲采集的数据的10进制数值显示在数码管上
程序现象:从P6.0输入一个模拟电压值(0~2.5V),就可以看到LED数码管上显示了一个四位数
且随着输入电压的变化而变化(0000~4095)
作者:鱼小
时间:2008-08-11凌晨
地点:机电楼电赛培训基地
***********************************************/
#include <msp430x14x.h>
#define uint unsigned int
#define duan P2OUT //LED段
#define wei P1OUT //LED位(P1低四位)
uint ADC0;  //保存输出值
char dis_buffer[4];
char seg7code[]={0xc0,0xf9,0xa4,
0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳数码管段码,最后一位为空

//ADC12初始化
void ADC12setup(void)
{
//ADC12设置**************************
 P6SEL |= 0x01;        //使用A/D通道 A0
 ADC12CTL0 = ADC12ON ; //开ADC12内核,设SHT0=2 (N=4)
 ADC12CTL1 = SHP ;     //SAMPCON信号选为采样定时器输出
//ADC12内部参考电压设置
 ADC12CTL0 |= REF2_5V; //选用内部参考电压为2.5V
 ADC12CTL0 |= REFON;   //内部参考电压打开
 ADC12MCTL0 |= SREF_1; //R+=2.5V R-=VSS
 //转换允许
 ADC12CTL0 |= ENC ;    //转换允许(上升沿)
 ADC0=0x00;
}

//延时
void delay(uint i){
 while(i--){
  char j;
  for (j=0;j<125;j++);
 }
}

//数据变换
void data_converter( char *p,unsigned int value)
{
 unsigned int m,n,j=0;
 p[0]=value/1000;
 m=value%1000;
 p[1]=m/100;
 n=m%100;
 p[2]=n/10;
 j=n%10;
 p[3]=j/1;
}

//数码管显示
void display()
{
    uint i;
    for(i=0;i<4;i++)
    {
        switch(i)
        {
        case 0:wei=0x0e;duan=seg7code[dis_buffer[0]];delay(1);duan=0xff;break;
        case 1:wei=0x0d;duan=seg7code[dis_buffer[1]];delay(1);duan=0xff;break;
        case 2:wei=0x0b;duan=seg7code[dis_buffer[2]];delay(1);duan=0xff;break;
        case 3:wei=0x07;duan=seg7code[dis_buffer[3]];delay(1);duan=0xff;break;
        default:break;
        }
    }
}

//主函数
void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  P1DIR=0xff;
  P2DIR=0xff;
  ADC12setup();
  for (;;)
 {
  ADC12CTL0 |= ADC12SC;                     //sampling open,AD转换完成后

(ADC12BUSY=0),ADC12SC自动复位;
  while((ADC12IFG & BIT0) == 0);            //等转换结束
  ADC0 = ADC12MEM0;                         //读转换数据值,同时清ADC12IFG0标志
  data_converter(dis_buffer,ADC0);      //数据变换
  display();
 }
}

 本文转载自队友博客,原文地址:http://blog.ednchina.com/stumpy/144676/message.aspx

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

赞助商广告

最近发表

热文排行

最新评论及回复

广告

图标汇集

Powered By Z-Blog 1.8 Walle Build 100427

Copyright 2008-2011 JiangX.com 萬用電路板 All Rights Reserved.
鄂ICP备08003060号 [login]