基于Atmega16L的高精度频率调节器

发布者:廿由人最新更新时间:2011-12-10 关键字:Atmega16L  单片机  频率  控制 手机看文章 扫描二维码
随时随地手机看文章

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,可以协

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.

关键字:Atmega16L  单片机  频率  控制 引用地址:基于Atmega16L的高精度频率调节器

上一篇:基于AVR单片机的嵌入式“瘦服务器”系统设计思想
下一篇:AVR单片机解密后的熔丝配置

推荐阅读最新更新时间:2024-03-16 12:48

提高MSP430G系列单片机的Flash 擦写寿命的方法
摘要 在嵌入式设计中,许多应用设计都需要使用EEPROM 存储非易失性数据,由于成本原因,某些单片机在芯片内部并没有集成EEPROM。MSP430G 系列处理器是TI 推出的低成本16 位处理器,在MSP430G 系列单片机中并不具备EEPROM。为了存储非易失性数据,MSP430G 系列处理器在芯片内部划分出了256 字节的Flash 空间作为信息Flash,可用于存储非易失性数据,但是由于Flash 与EEPROM 在擦写寿命上存在一定差距,所以在实际应用中,这种应用方式并不能够满足所有客户的需求。本应用笔记介绍了使用代码区域Flash 来模拟EEPROM,通过一定的软件处理算法,可以大大增加数据存储周期的一种方法。本文
[嵌入式]
提高MSP430G系列<font color='red'>单片机</font>的Flash 擦写寿命的方法
基于C8051F系列单片机的无线收发电路设计
    数据采集及传输系统是现代测量仪器的基础。在工业测控、医疗监护和实验研究中得到广泛应用。当数据采集点处于非固定位置或运动状态时,数据采集系统必须与主机分离。同时还需利用电池供电。因此,由无线收发电路或模块组成的数据采集及传输系统是有效的解决方式。比较典型的无线收发电路或模块有采用2.4 GHz通信频率的无线传感器网络传感器节点,433/868/915 MHz通信频率的遥控模块及数传模块、900/1 800 MHz通信频率的GSM模块,但现有的无线收发电路或模块易造成系统体积过大、功耗偏高,不能完全满足采用电池供电的便携式监测系统的需要,尤其是需要大规模、密集型部署,仅需要近距离通信的场合,传统的无线通信模块容易造成网络通信的
[网络通信]
STM32F103单片机输出相位可调PWM波
STM32定时器功能如下 通常使用的是PWM模式,可以通过PWM功能可以生成频率和占空比可调的方波信号,有时候需要生成初始相位可调的方波,PWM功能就就不能满足要求了。可以通过输出比较模式来实现。 输出比较模式是将计数器CNT的值和捕获比较寄存器CCR的对比,当CNT值等于CCR的值时,翻转输出电平。 通过捕获比较寄存器CCMR模式设置位的描述可以看出,输出比较模式只有当 CCR = CNT时,输出电平才会翻转。而PWM模式下 CNT CCR 时输出一个电平,CNT CCR时输出相反的电平。 通过一个示意图来看看PWM输出模式 上图中是PWM输出的示意图,可以看出CNT的值从变化范围是 0---ARR,之间
[单片机]
STM32F103<font color='red'>单片机</font>输出相位可调PWM波
彩色电视接收机自动增益控制(AGC)电路分析
本文详细介绍彩色电视接收机自动增益控制AGC(Automatic GainContr01)电路设计分析。 在彩色电视传输系统中,由于接收环境不同或外界干扰以及器件老化等产生的影响,接收到的信号的强弱可能变化很大。当信号较弱时,图像对比度变小,清晰度差且同步不稳定,无法成像。而信号较强,将使后级放大器进入饱和区和截止区,导致信号严重失真,而且还会将同步脉冲切割掉,得不到良好的图像。这将影响用户正常观看电视节目。 1 自动增益控制(AGC)电路 http://www.elecfans.com/soft/study/auto/2010/2010021067902.html 自动增益控制(AGC)电路不论在早期的分立及小规模集成电路中
[模拟电子]
彩色电视接收机自动增益<font color='red'>控制</font>(AGC)电路分析
基于51单片机的教室智能照明控制系统
一.硬件方案 本系统以51单片机作为控制模块的核心部件,采用热释红外人体传感器检测人体的存在,采用光敏三极管构成的电路检测环境光的强度;根据教室合理开灯的条件,通过对人体存在信号和环境光信号的识别与判断,完成对教室灯光的智能控制,避免了教室用电的大量浪费。系统还具有报警功能;同时还采用了软/硬件的“看门狗”等抗干扰措施。 主要由51单片机STC89C52、时钟芯片DS1302、液晶屏LCD1602、比较器芯片LM339、光敏电阻、红外对管、按键、LED等构成;如图: 二.设计功能 (1)使用4个LED灯模拟教室的照明灯,在符合条件开启时,人数小于10人亮一个灯,10-20人亮二个灯,20-30人亮三个灯,大于30人则全亮四
[单片机]
基于51<font color='red'>单片机</font>的教室智能照明<font color='red'>控制</font>系统
用87C196NT单片机实现CAN总线通信
    摘要: 主要介绍CAN总线的原理及如何用87C196NT单片机实现基于CAN总线的网络通信;对其硬件和软件设计作详细的分析,最后给出下位机程序。     关键词: 单片机 CAN总线 87C196NT PCA82C200 1 CAN总线简介 CAN(Controller Area Network)即控制器局域网,主要用于各种设备监测及控制的一种现场总线。CAN总线最初是由德国Bosch公司为汽车的监测、控制系统而设计的。CAN总线具有独特的设计思想,良好的功能特性和极高的可靠性,现场抗干扰能力强。具体来讲,CAN总线具有如下特点: *结构简单,只有2根线与外部相连,且内部含有错误探测和管理模块
[网络通信]
如何使用示波器解决LCD控制器调试难题
当LCD液晶屏显示异常时,以往通过现象逆向推导,对参数进行修改,这种方式费时费力。有了长存储示波器,调试LCD控制器再也不烧脑,下文通过实际案例分享ZDS4054Plus在LCD测试中的应用。 一、LCD控制器、驱动器工作原理 要使LCD的显示文字或图像,需要通过LCD控制器输出RGB数据给LCD驱动器,LCD驱动器就把数据放到缓存中,然后以60帧/秒的速度刷新LCD屏显示。(由于液晶分子的特性:当长时间固定在某一个电压不变时,会导致液晶分子遭到破坏,所以要以一定的频率(通常是60Hz)不停的刷新LCD屏。所以视频播放帧率虽然只有23~30帧/秒,TFT-LCD的显示刷新频率却达到60Hz。LCD控制器时序控制着视频帧率;LCD驱
[测试测量]
如何使用示波器解决LCD<font color='red'>控制</font>器调试难题
STM32单片机对TFTLCD的驱动设计
看了TFTLCD和FSMC(灵活的静态存储控制器)的简介,还是一知半解,不知所云。 TFTLCD使用80并口,80 并口有如下一些信号线: CS: TFTLCD 片选信号。 WR:向 TFTLCD 写入数据。 RD:从 TFTLCD 读取数据。 D[15: 0]: 16 位双向数据线。 RST:硬复位 TFTLCD。 RS:命令/数据标志( 0,读写命令; 1,读写数据)。 只是记住FSMC在使用的时候要初始化和使能就行了。 关于lcd.c这个文件竟然接近3000行,好吧,我是写不出来,只能在主函数里调用了。 main.c: intmain(void) { u8x=0; u8lcd_id[12];//存放LCDID字符串
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

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