📄 main.c
字号:
//******************************************************************************
// 说明:将A0~A3四路模拟输入通道采集到的电压值显示在液晶屏上
//******************************************************************************
#include<msp430x14x.h>
#include"lcd12864.h"
// 全局变量
unsigned int A0results;
unsigned int A1results;
unsigned int A2results;
unsigned int A3results;
unsigned char A0[5] = {'x','x','x','x','\0'};
unsigned char A1[5] = {'x','x','x','x','\0'};
unsigned char A2[5] = {'x','x','x','x','\0'};
unsigned char A3[5] = {'x','x','x','x','\0'};
unsigned char title0[] = {"A0 Channel : "};
unsigned char title1[] = {"A1 Channel : "};
unsigned char title2[] = {"A2 Channel : "};
unsigned char title3[] = {"A3 Channel : "};
unsigned char number_tab[]={'0','1','2','3','4','5','6','7','8','9'};
// LED灯指示函数
void ledflash()
{
unsigned int i = 10000;
P1OUT ^= BIT1;
while(i--);
}
// 分解位函数
void convert(unsigned int data,unsigned char *p)
{
unsigned int a,b,c;
p[0] = number_tab[data / 1000];
a = data % 1000;
p[1] = number_tab[a / 100];
b = a % 100;
p[2] = number_tab[b / 10];
c = b % 10;
p[3] = number_tab[c];
}
// 主函数
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
InitLCD(); // 液晶屏初始化
P1DIR |= BIT1;
ShowString86(0,0,title0); // 在第0行,从第0列开始显示
ShowString86(1,0,title1); // 在第2行,从第0列开始显示
ShowString86(2,0,title2); // 在第4行,从第0列开始显示
ShowString86(3,0,title3); // 在第6行,从第0列开始显示
P6SEL = 0x0F; // Enable A/D channel inputs
ADC12CTL0 = ADC12ON + MSC + SHT0_8;// Turn on ADC12, extend sampling time
// to avoid overflow of results
ADC12CTL1 = SHP + CONSEQ_3; // Use sampling timer, repeated sequence
ADC12MCTL0 = INCH_0; // ref+=AVcc, channel = A0
ADC12MCTL1 = INCH_1; // ref+=AVcc, channel = A1
ADC12MCTL2 = INCH_2; // ref+=AVcc, channel = A2
ADC12MCTL3 = INCH_3 + EOS; // ref+=AVcc, channel = A3, end seq.
ADC12IE = 0x08; // Enable ADC12IFG.3
ADC12CTL0 |= ENC; // Enable conversions
ADC12CTL0 |= ADC12SC; // Start conversion
_BIS_SR(LPM0_bits + GIE); // Enter LPM0, Enable interrupts
}
// ADC12转中断端服务程序
#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR (void)
{
A0results = ADC12MEM0; // Move A0 results, IFG is cleared
A1results = ADC12MEM1; // Move A1 results, IFG is cleared
A2results = ADC12MEM2; // Move A2 results, IFG is cleared
A3results = ADC12MEM3; // Move A3 results, IFG is cleared
convert(A0results,A0); // 将A0采集到的电压值分解成四个数
convert(A1results,A1); // 将A0采集到的电压值分解成四个数
convert(A2results,A2); // 将A0采集到的电压值分解成四个数
convert(A3results,A3); // 将A0采集到的电压值分解成四个数
ShowString86(0,13,A0); // 将A0采集到的电压值显示在液晶屏上
ShowString86(1,13,A1); // 将A1采集到的电压值显示在液晶屏上
ShowString86(2,13,A2); // 将A2采集到的电压值显示在液晶屏上
ShowString86(3,13,A3); // 将A3采集到的电压值显示在液晶屏上
ledflash(); // led灯指示
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -