adc.c

来自「我写的针对lpc2141的ucos源码」· C语言 代码 · 共 89 行

C
89
字号
#include <LPC214X.h>
#include "type.h"
#include "adc.h"
#include "delay.h"


void adc_init(uint8 ch)
{

	switch(ch) {
		case 1: AD_SEL(1);
				break;
		case 2:	AD_SEL(2);
				break;
		case 3: AD_SEL(3);
				break;
		case 4: AD_SEL(4);
				break;
		case 6: AD_SEL(6);
				break;
		case 7: AD_SEL(7);
				break;
	}
	AD0CR|=AD0CR_PDN|0x00000000<<8;	 //CLKDIV

}

uint16 adc_once()
{
	uint32 result;
	AD0CR|=AD0CR_START;
	do {
		result=AD0GDR;


	}while( (result & ADDR_DONE_MASK) == 0 );
	AD0CR&=~AD0CR_START;
	return ADDR_RESULT(result);
}

void dac_triangle()
{
	uint16 i;
	USE_DAC;
	while(1) {
		for(i=0;i<1024;i++)	{
			DACR=DACR_VALUE(i);
			//delay(3);
		}
		for(i=1022;i>0;i--)	{
			DACR=DACR_VALUE(i);
			//delay(3);
		}
	}
	
}


//generate sine wave by DAC
void dac_sin()
{
uint16 sin_wave[100]=
{512,544,576,607,639,670,700,730,758,786,
812,838,862,885,906,926,944,960,975,988,
998,1007,1014,1019,1022,1023,1022,1019,1014,1007,
998,987,975,960,944,926,906,885,862,838,
812,786,758,729,700,670,639,607,575,543,
511,479,447,415,384,353,323,293,265,237,
210,185,161,138,117,97,79,63,48,35,
24,16,9,3,0,0,1,4,9,16,
25,36,48,63,79,97,117,139,161,185,
211,237,265,294,323,354,385,416,448,480};

	uint16 i;
	USE_DAC;
	while(1) {
		for(i=0;i<100;i++)	{
			DACR=DACR_VALUE(sin_wave[i]);
			delay(1);
		}
	}	
	


}

	
			

⌨️ 快捷键说明

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