毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

51单片机函数信号发生器设计+原理框图+流程图+源代码 第9页

更新时间:2010-9-20:  来源:毕业论文
51单片机函数信号发生器设计+原理框图+流程图+源代码 第9页
5.3.2 写控制字子程序
由前文所述,写控制字子程序主要根据AD9850的串行传送时序(如图4-5)进行编程, W-CLK上升沿把25引脚的一位数据串行移入,当移动40位后,用一个FQ-UD脉冲即可更新输出频率和相位。程序简单易懂,其核心程序是将一个长整形的十进制频数,通过计算转换,使变为一个二进数,后一位位的传送到AD9850中去。
 图4-5  串行控制字装入时序
而所需频率的控制字的计算方法,我们也在前文的硬件部分推出公式(4-1)
因此写控制字的程序框图为:
部分程序为:本文来自辣.文^论^文·网
void write_dds(unsigned long dds)
{ uchar temp=0x80;
 uchar i;
 load=0;
 clk=0;
 for(i=0;i<40;i++)
 {
  clk=0;
  delay(10);
  if(dds&0x00000001)
  {
  dat=1;
  }
  else dat=0;
  delay(10);
  clk=1;
  dds=dds>>1;
 }
 load=1;
 clk=0;
 delay(10);
 load=0;
}
 void write_freq(unsigned long frequency)
{ frequency=(unsigned long)(42.94967296*frequency);    //使用100M晶振,frequence就是所要输出的频率
 write_dds(frequency); }
5.4 主函数程序设计
主函数的主要作用是中断服务、以及各模块程序的调用和总体结合使用。函数中,有一变量是贯穿主函数和各个模块子函数的传递桥梁,我们将它定义为无符号长整型全局变量unsigned long fre,以及其对应标置变量int l。毕业论文http://www.751com.cn
5.4.1 中断INT0服务函数
在中断服务函数中,主要是软件去抖动和扫描是哪一个按键按下,并执行相应的键处理。如前文所述,当引起中断时,进入中断服务函数,首先延时10ms,再次扫描P3.2口是否为低电平。确认无误后,扫描P1口,找出是哪个按键按下,并执行相应键处理,对全局变量fre进行计算。最后使标置变量l=1,表示全局变量fre出现了变化,在主函数中进行相应的处理。
void int0()interrupt 0 using 1//中断服务函数
{   EA=0;
 delay(10);
  if(INT_0==0)  //判断是否有键按下
  {
  P1=0xff;
   if(a100==0)   //步进+100按下
        {fre=fre+100;}
  if(s100==0)   //步进-100按下
         {fre=fre-100;}
   if(a1k==0)   //步进+1000按下

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] 

51单片机函数信号发生器设计+原理框图+流程图+源代码 第9页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。