原创 msp430 模数转换程序

2009-5-14 11:24 2892 6 7 分类: MCU/ 嵌入式

https://static.assets-stash.eet-china.com/album/old-resources/2009/5/14/be83ecfd-cea7-4aa2-93b9-32dcd2f23d7c.rar/*************************************************************
程序功能:对P6.0对应的模拟通道进行多次转换后,将32次平均值
          在数码管上显示(数码管显示的只是ADC的转换结果而不
          是真实的模拟电压)
--------------------------------------------------------------
特别说明:如果不进行32次平均,我们会看到最低位不停的跳变。
--------------------------------------------------------------
测试说明:调节电位器R7的调整旋钮,观察显示数字的变化
*************************************************************/
#include  <msp430x14x.h>



unsigned int Results[32];         //存放ADC的转换结果
unsigned int Average;
//数码管7位段码:0--f
unsigned char  table[]={0xC0,0xF9,0xA4,0xB0,0x99,
                            0x92,0x82,0xF8,0x80,0x90};
unsigned char DispBuf[4] = {0,0,0,0};


//记录显示位数的全局变量
unsigned char cnt = 0;
unsigned char m;



void delay1ms()
{
 unsigned char i;
 for(i=34;i>0;i--);  //延时124*8+10=1002us
}
void display (int  n )       //显示
{      
         P3OUT=0x08;                
  P1OUT=table[n / 1000];   
  delay1ms();
  P1OUT=0xff;                  //消隐
        
        
          P3OUT=0x04;                
  P1OUT=table [n %1000/ 100];   
  delay1ms();
  P1OUT=0xff;                  //消隐
        
        
          P3OUT=0x02;                 
  P1OUT=table[n % 100 /10];    
  delay1ms();
  P1OUT=0xff;                  //消隐
        
          P3OUT=0x01;                          
  P1OUT=table[n % 10];    
  delay1ms();
  P1OUT=0xff;                  //消隐
        
}   
void init(void)
{
    //ADC12初始化----------------------
   //单通道,单次采样模式
   P6SEL |= BIT7;                   //使能A/D通道 A7
   ADC12CTL0 = ADC12ON + SHT0_2;    //开ADC12内核和设置SHIT0=2(N=4)
   ADC12CTL1 |= SHP;                 //SAMPCON信号选择为采样定时器输出
   ADC12CTL1 |= CSTARTADD_7;         //定义单次转换地址
   ADC12MCTL7 |= INCH_7;
  // ADC12MCTL0 = SREF_2;             // 使用外部参考电压 Vr+ = VeREF+
   ADC12CTL0 |= ENC;                 //ADC转换允许
  
   //Timer_A初始化--------------------
 
   CCR0 = 1638-1;
   CCTL0 = CCIE;
   TACTL = TASSEL_1+MC_1;         //timerA CLK="ACLK",增计数模式
   _EINT();                       //开总中断
}


//TimerA0中断服务程序
  #pragma vector="TIMERA0"_VECTOR
  __interrupt void Timer_a(void)
  {
    LPM0_EXIT;
  }



#pragma vector="WDT"_VECTOR
__interrupt void watchdog_timer(void)
{
    m++;
    if (m==2)
    {
      m="0";
    display ( Average)  ;
    }
}


void main(void)
{
   WDTCTL = WDT_ADLY_1_9;                    // 设置内部看门狗工作在定时器模式,1.9ms中断一次
    IE1 |= WDTIE;                             // 使能看门狗中断
  init();
  P3DIR=0XFF;
  P1DIR=0XFF;
  
  LPM3;
  
      while(1)
      {ADC12CTL0 |= ADC12SC;                   // 开始转换
       while((ADC12IFG & BIT7)==0);
       _NOP();     
        
       Average="ADC12MEM7";                // 读取结果
     
   LPM3;
   
      }
    
   
}


 


 

文章评论1条评论)

登录后参与讨论

用户348986 2011-4-6 10:03

参考哈

用户223302 2009-5-13 13:51

那个电路图呢?找不到啊

用户223302 2009-5-13 00:32

学长,常用电子元件无法下载啊!
相关推荐阅读
用户226950 2012-04-07 11:48
51/STC最小系统板资料(更新中)
图片欣赏    淘宝网址:http://item.taobao.com/auction/item_detail.htm?item_num_id=9073446988  二   程...
用户226950 2011-10-13 22:59
YL-3 资料
YL-3数码管模块资料:YL-3 串行数码管资料.zip...
用户226950 2011-09-24 09:10
USB转TTL小板驱动
xp系统驱动:XP系统支持STC下载的PL-2303HX新版驱动.rar WIN7系统驱动:WIN7系统支持STC下载的PL2303HX驱动.rar...
用户226950 2011-05-24 22:48
STM32F103RBT6最小系统原理图 PCB
STM32F103RBT6最小系统板原理图 PCB 附件:做好的成品板:淘宝链接网址:http://item.taobao.com/item.htm?id=8864376956...
用户226950 2011-05-08 12:53
YL-16 STM32F103最小系统板资料(更新中)
二 数据手册:  USB协议中文版:attachment download  中文数据手册:attachment downloadSTM32选型手册:attachment downloadSTM32勘...
用户226950 2011-03-20 13:27
DS18B20温度测量模块
DS18B20 数码管温度显示程序:...
我要评论
1
6
关闭 站长推荐上一条 /2 下一条