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;
}
}
用户348986 2011-4-6 10:03
用户223302 2009-5-13 13:51
用户223302 2009-5-13 00:32