新闻  |   论坛  |   博客  |   在线研讨会
利用ADuC7026的DAC输出控制LED亮度试验源程序
mayer | 2009-06-18 18:38:20    阅读:1620   发布文章

利用ADuC7026的DAC输出控制LED亮度试验源程序

 

/*********************************************************************

 功能: 配置DAC输出正弦波控制LED亮度
  
*********************************************************************/

#include<ADuC7026.h>

void delay(int lengh)
{
   while(lengh>0)
     lengh--;
}

void SysClkInit(void)
{
  PLLKEY1=0xAA;
  PLLCON="0x01";   //PLL配置 
  PLLKEY2=0x55;
  POWKEY1=0x01;
  POWCON="0x00";  //CPU时钟配置为41.78MHz
  POWKEY2=0xF4;
}
// Table is placed in Flash/EE
const static unsigned short TableS[64] = {
  0x07FF, 0x08C8, 0x098E, 0x0A51, 0x0B0F, 0x0BC4, 0x0C71, 0x0D12,
  0x0DA7, 0x0E2E, 0x0EA5, 0x0F0D, 0x0F63, 0x0FA6, 0x0FD7, 0x0FF5,
  0x0FFF, 0x0FF5, 0x0FD7, 0x0FA6, 0x0F63, 0x0F0D, 0x0EA5, 0x0E2E,
  0x0DA7, 0x0D12, 0x0C71, 0x0BC4, 0x0B0F, 0x0A51, 0x098E, 0x08C8,
  0x07FF, 0x0736, 0x0670, 0x05AD, 0x04EF, 0x043A, 0x038D, 0x02EC,
  0x0257, 0x01D0, 0x0159, 0x00F1, 0x009B, 0x0058, 0x0027, 0x0009,
  0x0000, 0x0009, 0x0027, 0x0058, 0x009B, 0x00F1, 0x0159, 0x01D0,
  0x0257, 0x02EC, 0x038D, 0x043A, 0x04EF, 0x05AD, 0x0670, 0x0736 
 };

unsigned long int   i = 0;

void main()
{
 int a="1",b=0;
 SysClkInit();  
 while(1)
  { 
    // DAC0控制
 i=0;
 DAC0CON = 0x12;      // 使用内部核时钟更新DAC,输出范围0-2.5v
 DAC0DAT = 0x08000000;    // 调整坐标,从中间开始
 while(a)
 {
   DAC0DAT = (TableS[i] << 16);
   delay(200000);
   i++;
   i &= 0x003f;
   if(i==63)
   { a="0"; b="1"; }      
 }
 DAC0DAT = (0x0fff << 16);
 delay(500000);
 // DAC1控制
 i=0;
 DAC1CON = 0x12;      // 使用内部核时钟更新DAC,输出范围0-2.5v
 DAC1DAT = 0x08000000;    // 调整坐标,从中间开始
 while(b)
 {
   DAC1DAT = (TableS[i] << 16);
   delay(200000);
   i++;
   i &= 0x003f;
   if(i==63)
   { a="1"; b="0"; }      
 }
 DAC1DAT = (0x0fff << 16);
 delay(500000);
  } 
}

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客