کد:
#ifndef __ARM_dac_h
#define __ARM_dac_h
/* set p0.26 to DAC output */
void dac_init( void )
{
LPC_PINCON->PINSEL1 |= 0x00200000;
return;
}
/* dac function */
void dac_value(unsigned int dac)
{
dac_init();
LPC_DAC->DACR = (dac << 6) | 0x00010000;
}
#endif
//#include "ARM_delay.h"
uint16_t DAC1[36] =
{
700,690,680,650,630, 600,550, 500,450, 400,350,300,250,200,180,150,130,110,100,
110,130,150,180,200,250,300,350,400,450,500,550,600,630,650,680,690
};
uint16_t DAC2[36] =
{
700, 600, 500, 400,300,200,100,100,100,100,100,100,100,700, 600, 500, 400,300,200,100,100,100,100,
100,100,100,700, 600, 500, 400,300,200,100,100,100,100,
};
uint16_t DAC3[36] =
{
700, 700, 700, 700, 700, 700, 700, 700, 700,
200, 200, 200, 200, 200, 200, 200, 200, 200,
700, 700, 700, 700, 700, 700, 700, 700, 700,
200, 200, 200 , 200 ,200 , 200 , 200, 200 , 200
};
int main()
{
uint8_t i;
//LPC_PINCON->PINSEL0=0 ;
//LPC_PINCON->PINSEL1=0 ;
//LPC_PINCON->PINMODE0=0;
//LPC_GPIO1->FIODIR = LPC_GPIO0->FIODIR&(~1<<8);
//LPC_GPIO0->FIOMASK=0xffffff00;
LPC_GPIO0->FIODIR = 0xffffffff;
LPC_GPIO1->FIODIR = 0xffffffff;
LPC_GPIO2->FIODIR = 0xffffffff;
LPC_GPIO3->FIODIR = 0xffffffff;
LPC_GPIO4->FIODIR = 0xffffffff;
LPC_GPIO0->FIOPIN = 0;
LPC_GPIO1->FIOPIN = 0;
LPC_GPIO2->FIOPIN = 0;
LPC_GPIO3->FIOPIN = 0;
LPC_GPIO4->FIOPIN = 0;
while (1)
{
if(((LPC_GPIO0->FIOPIN)&(1<<8))==0)
{
for (i = 0; i < 36; i++)
{
dac_value(DAC1[i]*1023/818);
}
}
if(((LPC_GPIO0->FIOPIN)&(1<<9))==0)
{
for (i = 0; i < 36; i++)
{
dac_value(DAC2[i]*1023/818);
}
}
if(((LPC_GPIO0->FIOPIN)&(1<<10))==0)
{
for (i = 0; i < 36; i++)
{
dac_value(DAC3[i]*1023/818);
}
}
}
}