⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 AD采集和液晶显示模块程序
💻 C
字号:
//描述:ADC12-A0模数转换+LCD12864[KS0108(HD61202)]演示
//编写:微控设计网 DC版主 日期:2007.9.
//编译环境:IAR EW430 V3.42A
//验证平台: www.microcontrol.cn MC430F14+开发板 V1.0
//声明:此程序只供微控用户使用.在未得到DC版主的许可请勿将资料外公开和用于商业用途.
//******************************************************************************
# include <msp430x14x.h>
# include "lcd12864.h"
//******************************************************************************
//定义区
 unsigned int value; 
 unsigned char title0[] = {"www.Microcontrol.cn"};
 unsigned char title1[] = {"MC430F14+ Evaluation1"};
 unsigned char title2[] = {"ADC12-A0 Demo"};
 unsigned char title3[] = {"Result = "};
 unsigned char result[] = {"A0 Result:"};
 
 unsigned char ADVAL[5]={'x','x','x','x','\0'};
 unsigned char number_tab[]={'0','1','2','3','4','5','6','7','8','9'};

//******************************************************************************
void LED(void)
{
  if(P1OUT & BIT1)
     P1OUT &= ~BIT1;
  else
     P1OUT |= BIT1;
}
//******************************************************************************
//说明:单片机初始化
void init(void)
{  InitLCD();   
   //ADC12初始化----------------------
   //单通道,单次采样模式
   P6SEL |= BIT0;                   //使能A/D通道 A0
   ADC12CTL0 = ADC12ON + SHT0_2;    //开ADC12内核和设置SHIT0=2(N=4)
   ADC12CTL1 |= SHP;                 //SAMPCON信号选择为采样定时器输出
   ADC12CTL1 |= CSTARTADD_0;         //定义单次转换地址
   ADC12MCTL0 |= INCH_0;
   //ADC12MCTL0 = SREF_2;             // 使用外部参考电压 Vr+ = VeREF+
   ADC12CTL0 |= ENC;                 //ADC转换允许
   
   //Timer_A初始化--------------------
   P1DIR |= 0x02;
   CCR0 = 1638-1;
   CCTL0 = CCIE;
   TACTL = TASSEL_1+MC_1;         //timerA CLK=ACLK,增计数模式
   _EINT();                       //开总中断
}

//******************************************************************************
//说明:数值转换
void conv(unsigned int intdata, unsigned char *pc)
{  unsigned int a,b,c;
   pc[0]=number_tab[intdata/1000] ;
   a=intdata%1000 ;  
   pc[1]=number_tab[a/100] ;
   b=a%100 ;
   pc[2]=number_tab[b/10] ;
   c=b%10;
   pc[3]=number_tab[c/1] ;
}

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

//----------------------------------------------------
void main(void)
{    WDTCTL=WDTPW+WDTHOLD;     //停止WDT
     init(); 
     ShowString86(0,1, title0);
     ShowString86(2,0, title1);
     ShowString86(4,3, title2);
     ShowString86(6,2, title3);
     ReverseLinChar(0,0,21);
     LPM3;
      while(1)
      {ADC12CTL0 |= ADC12SC;            // 开始转换
       while((ADC12IFG & BIT0)==0);
       _NOP();      
       LED();  
       value=ADC12MEM0;                // 读取结果
       conv(value,ADVAL);              //数据转换调用
       ShowString86(6,11,ADVAL);  
      
     LPM3;
      }
}
//******************************************************************************


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -