资源简介
基于LPC213X/LPC214X的简易信号发生器,可以实现发出正弦波、三角波、方波、阶梯波。并可调幅值、频率。
代码片段和文件信息
#include “lpc213x.h“
#include “main.h“
#include “math.h“
void DelayNS(uint16 dly)
{
uint16 i;
for(; dly>0; dly--)
for(i=0; i<50000; i++);
}
/*
三角波
*/
void sj()
{
uint16 i;
for(i=0;i<512;i++)
{
table[i]=i*2;
}
for(i=512;i<1024;i++)
{
table[i]=(1023-i)*2;
}
}
/*
正弦波
*/
void zx()
{
double T = (2 * 3.1415926)/1024;
uint16 i;
for(i=0;i<1024;i++)
{
table[i] = 512+511*sin(T*i);
}
}
/*
方波
*/
void fb()
{
uint16 i;
for(i=0;i<1024;i++)
{
if(i<512)
{ table[i]=1023;}
else
{ table[i]=0;}
}
}
/*
阶梯波
*/
void jt()
{
uint16 im;
m=0;
for(i=0;i<1024;i++)
{
if(i%128==0)
{
m=i;
}
table[i]=m;
}
}
void change()
{
switch(key)
{
case 0:zx();break;
case 1:fb();break;
case 2:sj();break;
case 3:jt();break;
default: break;
}
}
void time()
{
T0TC=0;
T0PR=0;
T0MCR=0x03;
T0MR0=Fpclk/100*fc/100;
T0TCR=0x01;
/*
VICIntSelect=VICIntSelect & (~(1<<4));
VICIntEnable =(1<<4);
VICVectCntl1=0x20|4;
VICVectAddr1=(uint32)IRQ_Timer0;
*/
}
void KeyScan(void)
{
if(!K0)
{ DelayNS(10); //延时去抖动
if(!K0)
{
key++;
if(key>3) key=0;
change();
}
while(!K0); //等待键松开
}
if(!K1)
{
DelayNS(10); //延时去抖动
if(!K1)
{
if(h<26)
h=h+1;
}
while(!K1); //等待键松开
}
if(!K2)
{
DelayNS(10); //延时去抖动
if(!K2)
{
if(h>0)
h=h-1;
}
while(!K2); //等待键松开
}
if(!K3)
{ DelayNS(10); //延时去抖动
if(!K3)
{
if(fc<100)
fc=fc+4;
time();
}
while(!K3); //等待键松开
}
if(!K4)
{ DelayNS(10); //延时去抖动
if(!K4)
{
if(fc>4)
fc=fc-4;
time();
}
while(!K4); //等待键松开
}
}
/*
void __irq IRQ_Timer0(void)
{
if(t>1024)
{
t=0;
}
DACR=((table[t]*h/26)<<6)|(1<<16);
//for (j=0; j<0x20; j++);
t++;
while((T0IR&0x01) == 0 );
T0IR = 0x01;
VICVectAddr = 0x00;
}
*/
int main(void){
PINSEL0 = 0x00000000;
PINSEL1 = (PINSEL1&(~(0x03<<18))) | (0x02<<18); // P0.25 连接Aout
zx();
time();
while(1)
{
KeyScan();
if(t>1024)
{
t=0;
}
DACR=((table[t]*h/26)<<6)|(1<<16);
t++;
while((T0IR&0x01) == 0 ); // 等待定时时间到
T0IR = 0x01; // 清除中断标志
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2092 2011-09-28 01:34 DAC\Config.h
文件 3702 2018-12-25 23:35 DAC\DAC.PWI
文件 204215 2018-12-25 23:34 DAC\DAC_1.DSN
文件 3534 2018-12-25 23:50 DAC\DAC_1.PWI
文件 178610 2018-12-19 01:06 DAC\ks.DSN
文件 3836 2018-12-25 23:42 DAC\ks.PWI
....... 85483 2018-12-25 23:50 DAC\ks.uvgui.13156
文件 85478 2018-12-19 16:21 DAC\ks.uvgui.new
文件 5705 2018-12-19 01:06 DAC\ks.uvopt
文件 15745 2018-12-18 10:52 DAC\ks.uvproj
文件 169050 2018-12-25 23:21 DAC\Last Loaded DAC.DBK
文件 204215 2018-12-25 23:31 DAC\Last Loaded DAC_1.DBK
文件 172773 2018-12-18 17:43 DAC\Last Loaded ks.DBK
文件 79950 2018-12-25 23:44 DAC\Listings\ks.map
文件 44621 2018-12-19 15:07 DAC\Listings\startup.lst
文件 2412 2018-12-25 23:50 DAC\main.c
文件 396 2018-12-25 23:16 DAC\main.h
文件 30756 2018-12-25 23:44 DAC\ob
文件 1247 2018-12-25 23:44 DAC\ob
文件 24486 2018-12-25 23:44 DAC\ob
文件 36692 2018-12-25 23:44 DAC\ob
文件 274 2018-12-25 23:44 DAC\ob
文件 479 2018-12-18 10:12 DAC\ob
文件 767 2018-12-25 23:44 DAC\ob
文件 18963 2018-12-25 23:44 DAC\ob
文件 170 2018-12-25 23:44 DAC\ob
文件 39760 2018-12-25 23:44 DAC\ob
文件 32 2018-12-19 15:07 DAC\ob
文件 3344 2018-12-19 15:07 DAC\ob
文件 14185 2018-12-19 00:24 DAC\ob
............此处省略11个文件信息
- 上一篇:红绿灯自动识别代码
- 下一篇:链接-提取码.txt
评论
共有 条评论