基于AVR单片机的高精度频率调节器

发布者:灵感之翼最新更新时间:2006-07-10 来源: 电子产品世界关键字:单片机  频率  正弦 手机看文章 扫描二维码
随时随地手机看文章

1?引言?
在现代化工业生产与高精度测试中,我们需要相当精确的频率来帮助判断设备性能指标。而且我们希望能够微调该频率。采用压控振荡器得到的频率不够精确,微调频率步骤烦琐,耗时漫长,因此有些测试项目限制了压控振荡器的使用。

Mega系列单片机是Atmel公司于2002年起陆续推出的。这款AVR增强型单片机具有速度快,抗干扰能力强,价格低廉等诸多优点。为了加快AVR单片机的软件编制,Atmel以及第三方提供的开发工具多种多样,程序开发方便有效。该单片机内部FLASH结构功能灵活,加锁后很难解密,可以最大限度地保护知识产权。AVR单片机可以广泛应用于通信、野外测试、汽车电子、医疗器械等领域,并且适用于各种低电压、低功耗的场合。?

本文提出一种方法能够基于AVR单片机,采用AD9850提供精确到1Hz的频率信号,不但可以发生正弦波,也可以发生方波,从而为要求频率精度高的企业解决了难题。它以Atmel公司的AVR单片机Atmega16L作为核心,能够方便、准确地控制输出频率。由于AVR单片机实现了在线可编程,所以大大简化了设计步骤,加快了设计进程,同时不会烧毁、烧费芯片,节约了成本。?

图1给出了该频率调节器的整体设计框图。用户通过4×4键盘设定频率值,AVR单片机使用I/O端口,扫描读入频率值。随后AVR单片机控制AD9850调节到用户要求的频率。AD9850的输出可以接电压比较器整形为方波,也可以经过低通滤波器限制带宽,输出正弦波形。AVR单片机同时控制液晶显示模块,使之实时显示当前频率。

图1.?频率调节器整体框图

2?控制核心与频率发生技术
2.1?控制核心
??? 本设计采用了Atmel公司的AVR单片机Atmega16L作为控制核心。AVR单片机的单周期指令能够保证高的执行效率和低成本,是精简指令集CPU中的高性能器件。AVR单片机可以提供高达16?MIPS的执行时间,具有128K字节的可编程Flash存储器,同时具备4096字节的静态RAM。AVR单片机自带看门狗定时器,在强烈的电磁干扰条件下可以防止程序跑飞。本设计中采用的Atmega16L还具有以下特点:
·???内部包含有硬件乘法器,加快乘法运算速度;I/O端口引脚数多达32根;?
·???支持在线可编程功能,不需要频繁从电路板插拔芯片;带有可编程的支持同步传输的UART端口;
·????支持三线传输SPI端口;具有方便的I2C总线端口,直接与Philips芯片接驳;
·???支持JTAG边界扫描电路;具有BOD低电压检测功能;
·???内部有8路10位的A/D变换器;具有4个PMW,可以协同或单独工作;
·? ?内部带有实时时钟电路;工作频率最高可达16MHz。

2.2?AD9850频率发生技术
??? AD9850是AD公司推出的低功耗直接数字频率合成器芯片,可以产生从直流到62.5MHz的宽频率信号,从投入市场到今天已经应用在雷达系统、低功耗频率源中。它良好的频率合成功能适合于应用在高精度测试中。本设计采用了AD9850作为波形发生器,具有体积小,功耗低的优点。

?? 在控制流程中,AVR单片机为AD9850计算了频率控制字,并且将频率控制字写入其中。联合小键盘上的“+1Hz”键和“-1Hz”键,本设计使得频率可以精确到步长为1Hz的调节。它可以产生方波和正弦波。用户要求产生正弦波时,我们设计了低通滤波器用来滤除信号的高频分量。该低通滤波器还可以使用五阶椭圆滤波器实现。图2示出了本系统的AD9850电路设计图。PC2——PC5可以同时作为I2C总线端口。

图2??AD9850电路设计

3?输入设备与输出设备
3.1?键盘输入设备与相应软件
???
? 本设计采用了4×4键盘作为频率输入设备。由于按键个数少,只有16个,需要表示从1Hz?—?10MHz的广泛频率,故在软件设计中采用了AVR单片机扫描方式。将端口A的8根I/O引脚全部作为扫描键盘使用。键盘定义除了0——9共10个数字之外,还定义了“退格”键、“全删”键、“输入”键、“+1Hz”键和“-1Hz”键,这样就可以极大地方便用户随时修改频率和微调频率。读入用户输入的频率值时,采用了延时防抖抗干扰的软件程序。扫描变量的初始值设置为0xFE,以低电平0依次变化实现扫描。本单片机键盘扫描的C代码如下所示:
????????????sccode=0xFE;/*every?scan?initiative?value,11111110*/
????????????while(sccode!=0xEF)/*sccode?is?not?11101111,follow;or?return?0*/
????????????{
????????????????PORTA=sccode;/*send?scan?code?11111110?to?portA*/
????????????????PORTA=sccode;/*send?scan?code?11111110?to?portA*/
????????????????if((PINA&0xF0)!=0xF0)/*read?portA,if?high?4?bits?are?not?1111,key?pressed?in?this?line*/
????????????????{
????????????????????recode=(PINA&0xF0)|0x0F;/*portA?high?4?bits?reserved,low?4?bits?are?1111*/
????????????????????while((PINA&0xF0)!=0xF0)
????????????????????{};
????????????????????/*read?portA,if?portA?high?4?bits?are?not?1111,key?pressed,
????????????????????if?key?pressed,we?must?wait,wait?for?key?released*/
????????????????????return((~sccode)+(~recode));/*return?row+column*/
????????????????}
????????????????else
????????????????{
????????????????????sccode=(sccode<<1)|0x01;
????????????????????/*scan?code?left?shift?1?bit,?add?1?to?right,11111101*/
????????????????}
????????????}
????最终返回的扫描结果包括按键所在的行值和列值。判断步骤是:先将端口A的高4比特记录在扫描变量recode中,低4比特置为1111。再次读入端口A的高4比特,由此判断按键是否松开。用户还未松开按键时,高4比特当中有低电平0存在,此时只能循环等待。只有当用户松开按键之后,才将高4比特与低4比特进行按位反操作,并复合形成最终返回的扫描结果。如果没有检测到有按键按下,则将扫描变量sccode向左移位1比特,继续进行下一次扫描。

3.2?液晶显示模块
??? 用户在多次进行输入频率以及“+1Hz”和“-1Hz”微调后,专注于观察信号输出对下一级电路的影响,往往忘了目前系统的输出频率。这样导致在精确测试中要求微调时也不知该向高调整还是向低调整。为了告知用户系统所处的当前频率,我们扩展了液晶显示模块,实现了当前频率在液晶显示模块上实时显示。液晶显示模块占用了单片机Atmega16L的PD0-PD7作为数据接口,采用了单片机的PB0-PB4作为控制端口。图3给出了液晶显示模块与控制器电路设计电路图。
?
?? PB0引脚选择液晶显示模块的数据存储器或指令存贮器,PB1引脚表明此次操作是读液晶显示模块还是写液晶显示模块,PB2则构成上升沿与下降沿完成读写时序。PB3负责选中液晶显示模块的左半部分,PB4负责选中右半部分,通常PB3与PB4都置为1。需要注意的是,在数据或指令准备好了之后,再让PB2进行电平变化,否则读写会出错。

?? 本设计借助单片机Atmega16L的大容量程序存贮器,将英文字母和若干汉字的字型点阵作为数组存入单片机的程序存贮器中。需要显示某字符时直接调用数组,从而简化了设计,实现了英文、汉字以及图形的显示。本设计显示界面友好,操作可控性强。

图3??液晶显示模块与控制器电路设计

4?结论
??? 为了方便现代化工业生产与精确的频率测试,我们设计了基于AVR单片机的高精度频率调节器。在本设计中,可以使用小键盘上的“+1Hz”键和“-1Hz”键,方便地进行频率精确到1Hz的调节。此频率调节器体积小而功能强,由Atmel公司的AVR单片机Atmega16L作控制核心,用户可随时调整系统输出频率。采用了4×4键盘输入用户设定的频率值,占位小而效率高,编制程序让AVR单片机扫描即可得到频率,省去了专用键盘接口芯片8279。液晶显示模块可实时显示当前频率,显示界面友好,操作可控性强。本系统可以产生方波和正弦波。

?? 本设计的硬件与软件均已经应用在某频率测试生产线中。工业生产与测试使用表明,本设计简化了频率调节过程,用户使用方便,具有节电、低成本、抗干扰能力强、频率控制精度高速度快的特点。

参考文献
[1]?Atmel?Corporation.?8-bit?AVR?Microcontroller?with?16K?Bytes?In-System?Programmable?Flash?Atmega16L?data?sheet.?Atmel?Corporation,?2003:?3-18.
[2]?Atmel?Data?Sheets.?http://www.atmel.com/dyn/products/devices.asp?family_id=607%20
[3]?Atmel?Application?Note.?http://www.atmel.com/dyn/products/app_notes.asp?family_id=607

关键字:单片机  频率  正弦 引用地址:基于AVR单片机的高精度频率调节器

上一篇:用4BIT OTP单片机实现USB/PS2 MOUSE的设计
下一篇:基于单片机的具有通讯口的智能温控表

推荐阅读最新更新时间:2024-05-13 18:12

STM32 | MCU错误代码自动追踪库的使用经验分享
大家在用STM32的时候有没有遇到过HardFault的问题呢: 下面针对这个问题做个小总结。 现象还原:在debug模式下进行仿真调试,全速运行再停止运行,程序会跑到 HardFault_Handler函数中,产生 HardFault,即硬错。其产生的原因大概有如下几类: (1)数组越界操作; (2)内存溢出,访问越界; (3)堆栈溢出,程序跑飞; (4)中断处理错误; 针对HardFault问题的定位,网上有几种方法,大概都是围绕着:在debug模式下,查看一些地址,分析寄存器、函数调用栈等,这是很让人头疼的事情。这里分享一种简单的、直观的HardFault错误定位的方法,使用开源库: CmBacktrace 。这
[单片机]
STM32 | <font color='red'>MCU</font>错误代码自动追踪库的使用经验分享
单片机静态方式点亮数码管
电路只驱动一个数码管,该数码管为共阴管,公共端接地,段管直连到单片机的P2口,所用单片机为AT89C52,电路图如下所示: 通过昨天对数码管的讲解,我们知道如果要点亮一个共阴型的数码管,只需要把公共端连到低电平,段管给高电平就可以,如下图所示。 所以看程序: 第4行:共阴数码管的字段表; 第17行:for循环,循环10次,控制数码管的显示内容; 第19行:将所要显示的内容送给数码管; 本次的内容很简单,希望对初学者有个借鉴作用。
[单片机]
<font color='red'>单片机</font>静态方式点亮数码管
STM32定时器产生不同频率的PWM
STM32产生PWM是非常的方便的,要需要简单的设置定时器,即刻产生! (1)使能定时器时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); (2)定义相应的GPIO: /* PA2,3,4,5,6输出- Key_Up,Key_Down,Key_Left,Key_Right,Key_Ctrl */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU
[单片机]
富士通半导体推出内置式电容触摸界面MCU
富士通半导体有限公司近日宣布推出采用新工艺的高安全性、高精度、高性价比的双FLASH内置式电容触摸界面MCU——MBB95850/860/870系列。该系列包括搭载高灵敏度电容触控界面的2款24引脚MB95856系列、1款32引脚MB95866和2款48/52引脚MB95876系列。富士通半导体将从2012年6月下旬开始提供样片,2012年9月开始批量供货。 随着近年来触摸技术的普及,各种触摸技术迅速发展,其中尤以电容式触摸应用发展最快。相比传统的机械式按键和电阻式触摸按键,电容式触摸手感流畅、触摸屏透光性高、面板强固耐受、防尘、防水及防电磁,且不受强光信号干扰。针对该市场需求,结合在微控制器市场的领先技术,富士通半导体推出了内
[嵌入式]
单片机基础(二):单片机并行I/O口工作原理
并行I/O口的工作原理   此处的工作原理指:电路如何把逻辑上的0和1表示为引脚上的低电位和高电位,及如何把引脚上的高低电位转化为电路内部的高低电位来表示0和1 P1口 P1.0~P1.7的八个锁存器组成特殊功能寄存器P1(90H) P1口既可输出用,又可输入用 输出 内部总线输出0时,即D为0时,非Q为1,V1处为1,则场效应管导通,电位等于其等压降约等于零,则引脚P1.x为接近于地的0V电平 内部总线输出1时,即D为1时,非Q为0,V1栅极为0V,则场效应管V1断开,场效应管输出端的电平由Vcc和上拉电阻决定,Vcc5V经过上拉电阻,引脚P1.x出输出5V高电平 输入   信号走向如图示经锁存器到D触发器,则需
[单片机]
<font color='red'>单片机</font>基础(二):<font color='red'>单片机</font>并行I/O口工作原理
时钟,秒表,流水灯的单片机汇编程序
//HJSMSY-V1.0 单片机 开发板测试程序 //--------------------------------------------- // 电脑钟 //--------------------------------------------- //=======主函数================================== ORG 0000H LJMP MAIN ORG 000BH LJMP T00 // ORG 001BH // LJMP T11 ORG 0030H //=======程序初始化============================= MAI
[单片机]
用PIC单片机实现的IC卡读写器
摘要:详细介绍PIC单片机使用SPI方式与IC卡进行数据传输的原理和电路设计,以及使用USART方式与PC机进行串行异步通信的工作原理;介绍PIC单片机听SPI方式和USART方式的设置方法。 关键词:PIC单片机 IC卡读写器 SPI方式 USART方式 引言 本设计的主要目的是介绍IC卡的数据存储技术和IC卡的数据通信,因而使用存储器卡。由于本设计中既可与IC卡进行串行同步通信,又要与上位机进行中行异步通信,因而需要选择一种同时具有这两种通信方式的单片机。因为PIC16F877不仅具有本设计所需要的两种通信方式,而且还具有运行速度快、低功耗、价格低等优点,所以选择PIC16F877单片机作为本设计的单片机。 图1是本
[单片机]
STM32微控制器中采用DMA实现方波的产生和捕获
  1 STM32微 控制器 介绍   STM32系列微控制器是ST公司基于Cortex-M3内核的高集成度的微控制器。它在性能、价格、功耗和实时性方面树立了一个新的标杆,集成了Cortex-M3内核,以及双ADC、多用途的通用 时钟 TIMx、RTC、I2C、SPI、UART、 CAN 、DMA、 USB 等丰富的 外设 。其功耗在全速72MHz所有模块都打开时也仅仅为36 mA,在低功耗模式下其功耗仅为2μA。   2 DMA和TIMx简介   STM32系列微控制器均含有DMA和通用时钟TIMx模块。其低端型号中仅包含DMA1,支持7个通道;高端型号还包括DMA2,支持5个通道。它的每个通道可任意指定工作模式,如
[电源管理]
STM32<font color='red'>微控制器</font>中采用DMA实现方波的产生和捕获
小广播
最新应用文章

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved