📄 main.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 + -