⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 基于avr单片机的高精度频率调节器 - 21ic中国电子网.htm

📁 DDS9850函数信号发生器 包括按键控制;方波
💻 HTM
📖 第 1 页 / 共 2 页
字号:
      <P align=left><STRONG>3&nbsp;输入设备与输出设备 <BR>3.1&nbsp;键盘输入设备与相应软件 
      <BR></STRONG>&nbsp;&nbsp;&nbsp;&nbsp; 
      本设计采用了4×4键盘作为频率输入设备。由于按键个数少,只有16个,需要表示从1Hz&nbsp;—&nbsp;10MHz的广泛频率,故在软件设计中采用了AVR单片机扫描方式。将端口A的8根I/O引脚全部作为扫描键盘使用。键盘定义除了0——9共10个数字之外,还定义了“退格”键、“全删”键、“输入”键、“+1Hz”键和“-1Hz”键,这样就可以极大地方便用户随时修改频率和微调频率。读入用户输入的频率值时,采用了延时防抖抗干扰的软件程序。扫描变量的初始值设置为0xFE,以低电平0依次变化实现扫描。本单片机键盘扫描的C代码如下所示: 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sccode=0xFE;/*every&nbsp;scan&nbsp;initiative&nbsp;value,11111110*/ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(sccode!=0xEF)/*sccode&nbsp;is&nbsp;not&nbsp;11101111,follow;or&nbsp;return&nbsp;0*/ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA=sccode;/*send&nbsp;scan&nbsp;code&nbsp;11111110&nbsp;to&nbsp;portA*/ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA=sccode;/*send&nbsp;scan&nbsp;code&nbsp;11111110&nbsp;to&nbsp;portA*/ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((PINA&amp;0xF0)!=0xF0)/*read&nbsp;portA,if&nbsp;high&nbsp;4&nbsp;bits&nbsp;are&nbsp;not&nbsp;1111,key&nbsp;pressed&nbsp;in&nbsp;this&nbsp;line*/ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recode=(PINA&amp;0xF0)|0x0F;/*portA&nbsp;high&nbsp;4&nbsp;bits&nbsp;reserved,low&nbsp;4&nbsp;bits&nbsp;are&nbsp;1111*/ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((PINA&amp;0xF0)!=0xF0) 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{}; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*read&nbsp;portA,if&nbsp;portA&nbsp;high&nbsp;4&nbsp;bits&nbsp;are&nbsp;not&nbsp;1111,key&nbsp;pressed, 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;key&nbsp;pressed,we&nbsp;must&nbsp;wait,wait&nbsp;for&nbsp;key&nbsp;released*/ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return((~sccode)+(~recode));/*return&nbsp;row+column*/ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sccode=(sccode&lt;&lt;1)|0x01; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*scan&nbsp;code&nbsp;left&nbsp;shift&nbsp;1&nbsp;bit,&nbsp;add&nbsp;1&nbsp;to&nbsp;right,11111101*/ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;最终返回的扫描结果包括按键所在的行值和列值。判断步骤是:先将端口A的高4比特记录在扫描变量recode中,低4比特置为1111。再次读入端口A的高4比特,由此判断按键是否松开。用户还未松开按键时,高4比特当中有低电平0存在,此时只能循环等待。只有当用户松开按键之后,才将高4比特与低4比特进行按位反操作,并复合形成最终返回的扫描结果。如果没有检测到有按键按下,则将扫描变量sccode向左移位1比特,继续进行下一次扫描。 
      <BR><STRONG><BR>3.2&nbsp;液晶显示模块</STRONG> <BR>&nbsp;&nbsp;&nbsp; 
      用户在多次进行输入频率以及“+1Hz”和“-1Hz”微调后,专注于观察信号输出对下一级电路的影响,往往忘了目前系统的输出频率。这样导致在精确测试中要求微调时也不知该向高调整还是向低调整。为了告知用户系统所处的当前频率,我们扩展了液晶显示模块,实现了当前频率在液晶显示模块上实时显示。液晶显示模块占用了单片机Atmega16L的PD0-PD7作为数据接口,采用了单片机的PB0-PB4作为控制端口。图3给出了液晶显示模块与控制器电路设计电路图。 
      <BR>&nbsp; <BR>&nbsp;&nbsp; 
      PB0引脚选择液晶显示模块的数据存储器或指令存贮器,PB1引脚表明此次操作是读液晶显示模块还是写液晶显示模块,PB2则构成上升沿与下降沿完成读写时序。PB3负责选中液晶显示模块的左半部分,PB4负责选中右半部分,通常PB3与PB4都置为1。需要注意的是,在数据或指令准备好了之后,再让PB2进行电平变化,否则读写会出错。 
      <BR><BR>&nbsp;&nbsp; 
      本设计借助单片机Atmega16L的大容量程序存贮器,将英文字母和若干汉字的字型点阵作为数组存入单片机的程序存贮器中。需要显示某字符时直接调用数组,从而简化了设计,实现了英文、汉字以及图形的显示。本设计显示界面友好,操作可控性强。 
      </P>
      <P align=left><IMG 
      src="基于AVR单片机的高精度频率调节器 - 21IC中国电子网.files/060710133166223.jpg" 
border=0></P>
      <P align=left>图3&nbsp;&nbsp;液晶显示模块与控制器电路设计</P>
      <P align=left><STRONG>4&nbsp;结论</STRONG> <BR>&nbsp;&nbsp;&nbsp; 
      为了方便现代化工业生产与精确的频率测试,我们设计了基于AVR单片机的高精度频率调节器。在本设计中,可以使用小键盘上的“+1Hz”键和“-1Hz”键,方便地进行频率精确到1Hz的调节。此频率调节器体积小而功能强,由Atmel公司的AVR单片机Atmega16L作控制核心,用户可随时调整系统输出频率。采用了4×4键盘输入用户设定的频率值,占位小而效率高,编制程序让AVR单片机扫描即可得到频率,省去了专用键盘接口芯片8279。液晶显示模块可实时显示当前频率,显示界面友好,操作可控性强。本系统可以产生方波和正弦波。 
      <BR><BR>&nbsp;&nbsp; 
      本设计的硬件与软件均已经应用在某频率测试生产线中。工业生产与测试使用表明,本设计简化了频率调节过程,用户使用方便,具有节电、低成本、抗干扰能力强、频率控制精度高速度快的特点。 
      <BR><BR>参考文献 
      <BR>[1]&nbsp;Atmel&nbsp;Corporation.&nbsp;8-bit&nbsp;AVR&nbsp;Microcontroller&nbsp;with&nbsp;16K&nbsp;Bytes&nbsp;In-System&nbsp;Programmable&nbsp;Flash&nbsp;Atmega16L&nbsp;data&nbsp;sheet.&nbsp;Atmel&nbsp;Corporation,&nbsp;2003:&nbsp;3-18. 
      <BR>[2]&nbsp;Atmel&nbsp;Data&nbsp;Sheets.&nbsp;http://www.atmel.com/dyn/products/devices.asp?family_id=607%20 
      <BR>[3]&nbsp;Atmel&nbsp;Application&nbsp;Note.&nbsp;http://www.atmel.com/dyn/products/app_notes.asp?family_id=607 
      <BR><BR></P>
      <P></P>
      <P><BR> </P>
      <SCRIPT event=onload for=window type=text/javascript>ImgLoad(document.getElementById("BodyLabel"));</SCRIPT>
      </DIV><BR><BR>
      <TABLE cellSpacing=0 cellPadding=0 width="97%">
        <TBODY>
        <TR>
          <TD align=right>
            <TABLE>
              <TBODY>
              <TR>
                <TD>录入:<SPAN id=MemberNameLabel>manan</SPAN> 
              <BR><BR></TD></TR></TBODY></TABLE></TD></TR>
        <TR>
          <TD align=right>【&gt;&gt;&gt;&gt;&gt;<A 
            href="http://bbs.21ic.com/club/bbs/bbsview.asp?remark=13697" 
            target=_blank><FONT color=red><B>察看网友评论 , 
            或发表您对本文的看法</B></FONT></A>】【 <A href="javascript:doPrint()">打印</A> 】 
          </TD></TR></TBODY></TABLE>
      <TABLE width="97%" align=center>
        <TBODY>
        <TR>
          <TD>上一篇:<A 
            href="http://www.21ic.com/news/html/64/show13695.htm">在P87LPC764单片机I2C总线系统中扩展LCD显示器</A><BR>下一篇:<A 
            href="http://www.21ic.com/news/html/64/show13719.htm">基于ARM核的ADμC7024在医疗电子中的应用</A> 
          </TD></TR></TBODY></TABLE></TD>
    <TD class=mr></TD>
    <TD vAlign=top width=122><IFRAME border=0 frameSpacing=0 
      src="基于AVR单片机的高精度频率调节器 - 21IC中国电子网.files/ad2006.htm" frameBorder=0 
      noResize width=120 scrolling=no 
height=600></IFRAME></TD></TR></TBODY></TABLE></DIV></DIV>
<DIV class=mframe>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
  <TBODY>
  <TR>
    <TD class=tl></TD>
    <TD class=tm><SPAN class=tt><A 
      href="http://www.21ic.com/news/search.aspx?Where=Nkey&amp;Keyword=AD9850 AVR 单片机 Atmega16L 液晶显示模块">相关新闻</A></SPAN> 
    </TD>
    <TD class=tr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
  <TBODY>
  <TR>
    <TD class=ml></TD>
    <TD class=mm></TD>
    <TD class=mr></TD></TR></TBODY></TABLE></DIV>
<DIV class=mframe>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
  <TBODY>
  <TR>
    <TD class=ml></TD>
    <TD class=mm></TD>
    <TD class=mr></TD></TR></TBODY></TABLE></DIV>
<TABLE id=footer cellSpacing=0 cellPadding=0 border=0>
  <TBODY>
  <TR style="LINE-HEIGHT: 130%" align=middle>
    <TD height=60><BR>
      <P align=center><IMG height=13 
      src="基于AVR单片机的高精度频率调节器 - 21IC中国电子网.files/p_gc.gif" width=12><A 
      href="http://www.21ic.com/news/show.aspx?id=1&amp;cid=42"><FONT 
      color=#000000> 本站介绍</FONT></A>| <FONT color=#003333><IMG height=13 
      src="基于AVR单片机的高精度频率调节器 - 21IC中国电子网.files/p_gc.gif" width=12><A 
      href="http://www.21ic.com/news/show.aspx?id=2&amp;cid=42" 
      target=_blank><FONT color=#000000> 合作联络</FONT></A></FONT><FONT 
      color=#000000>| </FONT><FONT color=#003333><IMG height=13 
      src="基于AVR单片机的高精度频率调节器 - 21IC中国电子网.files/p_gc.gif" width=12><A 
      href="http://www.21ic.com/news/show.aspx?id=3&amp;cid=42" 
      target=_blank><FONT color=#000000> 欢迎投稿</FONT></A>| <IMG height=13 
      src="基于AVR单片机的高精度频率调节器 - 21IC中国电子网.files/p_gc.gif" width=12><A 
      href="http://www.21ic.com/news/show.aspx?id=4&amp;cid=42"><FONT 
      color=#000000> 广告业务</FONT></A></FONT><FONT color=#000000>| <IMG height=13 
      src="基于AVR单片机的高精度频率调节器 - 21IC中国电子网.files/p_gc.gif" width=12><A 
      href="http://www.21ic.com/news/sitemap.aspx">网站地图</A><FONT 
      color=#000000>|</FONT> <FONT color=#000000><IMG height=13 
      src="基于AVR单片机的高精度频率调节器 - 21IC中国电子网.files/p_gc.gif" width=12></FONT><A 
      onclick="javascript:window.external.addFavorite('http://www.21ic.com','21IC 中国电子网')" 
      href="http://www.21ic.com/news/html/64/show13697.htm#">加入收藏</A><FONT 
      color=#000000>|</FONT> <FONT color=#000000><IMG height=13 
      src="基于AVR单片机的高精度频率调节器 - 21IC中国电子网.files/p_gc.gif" width=12></FONT><A 
      href="http://www.21ic.com/news/search.aspx">站内搜索</A><FONT 
      color=#000000>|</FONT> <FONT color=#000000><IMG height=13 
      src="基于AVR单片机的高精度频率调节器 - 21IC中国电子网.files/p_gc.gif" width=12></FONT><A 
      href="mailto:info@21ic.com">联系我们</A> 
      <HR align=center width="80%" color=#0066ff SIZE=1>

      <P></P>
      <TABLE cellSpacing=0 cellPadding=0 width=600 align=center border=0>
        <TBODY>
        <TR>
          <TD align=middle width="100%" colSpan=2><FONT 
            color=blue>ICP许可证号:</FONT><FONT color=red>[京 041110]</FONT><BR><A 
            href="http://www.21ic.com/news/show.aspx?id=2&amp;cid=42" 
            target=_blank>总部:北京市海淀区中关村南大街2号数码大厦A座32层3215室</A> 
            <BR>联系电话:010-51626290 传真: 010-51626279 <IMG 
            src="基于AVR单片机的高精度频率调节器 - 21IC中国电子网.files/email.gif"><A 
            href="mailto:info@21ic.com">info@21ic.com</A> <BR>Better 
            View:800*600 Best View:1024x768 为了本系统能够更好的为您服务,请使用IE4.0或以上版本浏览器 
            <BR><BR>除特别声明外的站内文章均为作者高论,并不代表21IC之观点<BR>版权所有 谢绝转载(C)21IC中国电子网 
            2000-2007</TD></TR></TBODY></TABLE>
      <DIV class=menuskin id=popmenu 
      onmouseover="clearhidemenu();highlightmenu(event,'on')" 
      style="Z-INDEX: 100" 
      onmouseout="highlightmenu(event,'off');dynamichide(event)"></DIV>
      <SCRIPT language=javascript1.2 type=text/javascript>
	
	jsdone=true;
	</SCRIPT>
      </FONT></TD></TR></TBODY></TABLE></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -