- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验七函数信号发生器设计
实验七 函数信号发生器设计
一、实验目的
1. 掌握单片机片内DAC的使用及应用程序设计
二、实验内容
内DAC设计制作一个发生器,该发生器能产生正弦波、方波、三角波。输出波形的频率范围为100Hz~20kHz;频率可调,频率步进间隔≤100Hz。
输出波形幅度范围0~V(峰-峰值)。
具有显示输出波形的类型、频率的功能。三、实验说明
通过本实验,掌握单片机片内DAC使用方法,掌握基于单片机的工作原理与设计方法。
必须用模块化方法进行C语言程序设计。
四、实验仪器和设备
PC机、Keil uVision2软件,C8051F330单片机,EC3在线仿真器。
五、实验原理
内DACvoid main ()
{
unsigned char i;
SysClkIn(); //配置系统时钟频率
dog_set(); //看门狗配置
Port_Init() ; //端口初始化
DAC_Init(); // DAC初始化
interrupt_Init(); //中断初始化
timer_init();
DelayMs(300); //延时300ms,等待ZLG7289 复位完毕
ZLG7289_Init(500); //调用ZLG7289 的初始化函数
while(1)
{ if(key==10) //输入频率启动键
{ TR1=0;
key=0xff;
for(i=0;i5;i++) //输入频率
{
while(key==0xff );
a[i]=key;
ZLG7289_Download(1,i,1,a[i]);
sum=sum*10+a[i]; //显示频率;
key=0xff;
}
if(sum=100sum800)
{counter=100000/sum;
counter1=(65536-counter+16)/256;
counter2=(65536-counter+16)%256;
sum=0;}
else if(sum=800sum2000)
{ counter=100000/sum;
counter1=(65536-counter+10)/256;
counter2=(65536-counter+10)%256;}
else if(sum=2000)
{ counter=100000/sum;
counter1=(65536-counter+3)/256;
counter2=(65536-counter+3)%256;
sum=0;}}
else if(key==11)
TR1=1;
else if(key==12)
{ for(i=0;i=20;i++)
{
b1[i]=(int)(511*sin(2*3.14*i/20)+513)/4;
b2[i]=(int)(511*sin(2*3.14*i/20)+513)%4;
}
ZLG7289_Download(1,5,1,key-11);
key=0xff;
}
else if(key==13)
{
for(i=0;i=10;i++)
{
b1[i]=(1023*i/10)/4;
b2[i]=(1023*i/10)%4;
}
for(i=11;i=20;i++)
{
b1[i]=(1023*(20-i)/10)/4;
b2[i]=(1023*(20-i)/10)%4;
}
ZLG7289_Download(1,5,1,key-11);
key=0xff;
}
else if(key==14)
{
for(i=0;i=20;i++)
{
if(i=10)
{
b1[i]=0,b2[i]=0;
}
else
{
b1[i]=255,b2[i]=3;
}
}
ZLG7289_Download(1,5,1,key-11);
key=0xff;
}
}
}
void keyinterrupt() interrupt 0 //按键中断产生的单片机外部中断0
{
key=ZLG7289_Key();
文档评论(0)