کد:
#include <LPC17xx.H>
#include <stdio.H>
#include <uart.c>
unsigned short ADC_Read(unsigned char channel)
{
unsigned int i;
//-----------------------------
LPC_PINCON->PINSEL1 = 1<< 14; // p0.24 select as ADC0.0
LPC_PINCON->PINSEL1 <<= (channel*2); //select AD0.0 to AD0.3 pin depend channel nomber
LPC_SC->PCONP |= (1 << 12); // Enable power to AD block
LPC_ADC->ADCR |= 1<<channel; //select AD0.0 TO AD0.3 depend adc channel nomber
LPC_ADC->ADCR |= 0x0100; // ADCLK is 12.5 MHz
//LPC_ADC->ADCR |= 0x10000; // BURST bit 1 << 16
LPC_ADC->ADCR |= 0x200000; //Power up, 1 << 21
//LPC_ADC->ADCR |= 0x08000000; //Start conversion on a falling edge on the selected CAP/MAT signal.
// 1 << 27
//-----------------------------
LPC_ADC->ADCR |= 0x01000000; // Start A/D Conversion , When the BURST bit is 0
do
{
switch (channel)
{
case 0:
i = LPC_ADC->ADDR0; // Read A/D Data Register
break;
case 1:
i = LPC_ADC->ADDR1; // Read A/D Data Register
break;
case 2:
i = LPC_ADC->ADDR2; // Read A/D Data Register
break;
case 3:
i = LPC_ADC->ADDR3; // Read A/D Data Register
break;
}
} while ((LPC_ADC->ADGDR & 0x80000000) == 0); // Wait for end of A/D Conversion
return (i >> 4) & 0x0FFF; // bit 4:15 is 10 bit AD value
}
void delay (uint32_t Time)
{
uint32_t i;
i = 0;
while (Time--) {
for (i = 0; i < 5000; i++);
}
}
#define family_lpc17xx
#define TFTLCD_DATAPORT_1
#define TFTLCD_DATAPORT_OFFSET 14
#define TFTLCD_CONTROLPORT_2
#define TFTLCD_RST 3
#define TFTLCD_RS 5
#define TFTLCD_CS 4
#define TFTLCD_RD 7
#define TFTLCD_WR 6
#define PORTRAIT
#include <tftlcd_functions.h>
int main()
{
char a0[100];
char a1[100];
char a2[100];
char a3[100];
SystemInit();
UART2_Init();
tftlcd_init();
while (1) {
UART2_SendString("ADC0 Read:");
UART2_SendChar(ADC_Read(0));
new_line();
UART2_SendString("ADC1 Read:");
UART2_SendChar(ADC_Read(1));
new_line();
UART2_SendString("ADC2 Read:");
UART2_SendChar(ADC_Read(2));
new_line();
UART2_SendString("ADC3 Read:");
UART2_SendChar(ADC_Read(3));
new_line();
tftlcd_clear();
sprintf(a0," %i",ADC_Read(0));
tftlcd_gotoxy(1,1);
tftlcd_putsf("ADC0 Number:",0,10000,0);
tftlcd_gotoxy(13,1);
tftlcd_puts(a0,0,100000,0);
sprintf(a1," %i",ADC_Read(1));
tftlcd_gotoxy(1,2);
tftlcd_putsf("ADC1 Number:",0,10000,0);
tftlcd_gotoxy(13,2);
tftlcd_puts(a1,0,100000,0);
sprintf(a2," %i",ADC_Read(2));
tftlcd_gotoxy(1,3);
tftlcd_putsf("ADC2 Number:",0,10000,0);
tftlcd_gotoxy(13,3);
tftlcd_puts(a2,0,100000,0);
sprintf(a3," %i",ADC_Read(3));
tftlcd_gotoxy(1,4);
tftlcd_putsf("ADC3 Number:",0,10000,0);
tftlcd_gotoxy(13,4);
tftlcd_puts(a3,0,100000,0);
delay(200);
}
}