基于单片机的频率计设计(精选8篇)
1.基于单片机的频率计设计 篇一
单片机原理课程设计报告
题目:智能数字频率计设计
专业: 信息工程 班级:信息111 学号:*** 姓名:*** 指导教师:***
北京工商大学计算机与信息工程学院
1、设计目的
(1)了解和掌握一个完整的电子线路设计方法和概念;
(2)通过电子线路设计、仿真、安装和调试,了解和掌握电子系统研发产品的一个基本流程。
(3)了解和掌握一些常见的单元电路设计方法和在电子系统中的应用: 包括放大器、滤波器、比较器、计数和显示电路等。
(4)通过编写设计文档与报告,进一步提高学生撰写科技文档的能力。
2、设计要求
(1)基本要求
设计指标:
1.频率测量:0~250KHz; 2.周期测量:4mS~10S; 3.闸门时间:0.1S,1S;
4.测量分辨率:5位/0.1S,6位/1S; 5.用图形液晶显示状态、单位等。
充分利用单片机软、硬件资源,在其控制和管理下,完成数据的采集、处理和显示等工作,实现频率、周期的等精度测量方案。在方案设计中,要充分估计各种误差的影响,以获得较高的测量精度。
(2)扩展要求
用语音装置来实现频率、周期报数。
(3)误差测试
调试无误后,可用数字示波器与其进行比对,记录测量结果,进行误差分析。
(4)实际完成的要求及效果
1.测量范围:0.1Hz~4MHz,周期、频率测量可调; 2.闸门时间:0.05s~10s可调; 3.测量分辨率:5位/0.01S,6位/0.1S; 4.用图形液晶显示状态、单位(Hz/KHz/MHz)等。
3、硬件电路设计
(1)总体设计思路 本次设计的智能数字频率计可测量矩形波、锯齿波、三角波、方波等信号的频率。系统共设计包括五大模块: 主芯片控制模块、整形模块、分频模块、档位选择模块、和显示模块。设计的总的思想是以AT89S52单片机为核心,将被测信号送到以LM324N为核心的过零比较器,被测信号转化为方波信号,然后方波经过由74LS161构成的分频模块进行分频,再由74LS153构成的四选一选择电路控制档位,各部分的控制信号以及频率的测量主要由单片机计数及控制,最终将测得的信号频率经LCD1602显示。
各模块作用如下: 1.主芯片控制模块: 单片机AT89S52 内部具有2个16位定时/计数器T0、T1,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。利用单片机的计数器和定时器的功能对被测信号进行计数。以AT89S52 单片机为控制核心,来完成对各种被测信号的精确计数、显示以及对分频比的控制。利用其内部的定时/计数器完成待测信号周期/频率的测量。
2.整形模块:整形电路是将一些不是方波的待测信号转化成方波信号,便于测量。本设计使用运放器LM324连接成过零比较器作为整形电路。
3.分频模块: 考虑单片机利用晶振计数,使用11.0592MHz 时钟时,最大计数速率将近500 kHz,因此需要外部分频。分频电路用于扩展单片机频率测量范围,并实现单片机频率测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。本设计使用的分频芯片是74LS161实现4分频及16分频。
4.档位选择模块:控制74LS161不分频、4分频 或者 16分频,控制芯片是74LS153。5.显示模块:编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示,本设计选用LCD1602。
(2)测频基本设计原理
所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T(右图3-1所示)。其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率fx。利用单片机的定时/计数T0、T1的定时、计数功能产生周期为1s的时间脉冲信号,则门控电路的输出信号持 图3-1 续时间亦准确地等于1s。闸门电路由标准的秒脉冲信号进行控制,当秒脉冲信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。秒脉冲信号结束时闸门关闭,计数器停止计数。由于计数器计得的脉冲数N是在1秒时间内的累计数,所以被测频率fx=NHz。
(2)系统框图
本智能数字频率计系统框图如图3-2所示
图3-2智能数字频率计系统框图
(3)单片机部分
P0口经上拉后做LCD数据接口 P2.1~P2.3作为LCD控制端口 P2.4~P2.5作为分频选择端口 P3.5作为被测信号输入端口
P3.2~P3.4作为开关控制端口(对应电路图中K1,K2,SET)
图3-3 89D52单片机部分电路
(4)分频部分
74HC161与74ls161功能兼容,是常用的四位二进制可预置的同步加法计数器,他可以灵活的运用在各种数字电路,以及单片机系统中实现分频器等很多重要的功能。
其管脚图如图3-4所示:
图3-4 74HC161 图3-5 74HC153管脚图
74HC153是一个双4选1数据选择器,其管脚图如图3-5所示:
74LS161对整形后的防波信号进行分频,Q1为四分频输出,Q3为16分频输出。未经分频、经过四分频和经过16分频的三路信号作为74LS153的一个4选1数据选择器低三位输入,由单片机控制选择分频数,然后再送单片机内部计数器T1(如图3-6)。
图3-6 分频、选择分频档位电路图
(5)LCD显示部分
LCD显示,1602的八位数据I/O口与单片机的P0口相连,读写控制端接P2.0-P2.2口。三个按键中,设置键接P3.2单片机按外部中断0接口,当按键按下后,置P3.2口低电平,单片机中断。S1、S2为频率/周期、闸门时间加/减选择按键(如图3-7)。
图3-7 LCD显示部分电路图
4、软件设计
(1)主程序流程图设计
本次程序设计采用的是C语言程序设计,其设计流程图4-1所示:
图4-1主程序流程图
(2)子程序流程图设计
<1>显示程序:
LCD显示程序设计流程如图4-2所示:
图4-2显示程序流程图 <2>频率测量程序框图:
频率测量程序的整体架构如图4-3所示:
图4-3频率测量框架图
(3)中断服务流程图
INT0中断流程图如图4-4所示:
图4-4INT0中断流程图
(4)程序代码
#include #include
//频率 float p;
//周期 float sj;
//闸门时间 char idata buff[20];char flag=0;
//频率、周期选择标志位
char xs=0;//设置闸门时间结束后是否显示结果的标志位
unsigned char m=0,n=0,yichu=0,fenpin;
//m定时中断次数 n计数中断次数 yichu判断是定时
//器还是计数器溢出
#define Key_Set P3 #define K1 0xf7
//11110111
P33 #define K2 0xef
//11101111
P34 #define NO_Set 0xff #define Freq 0 #define Peri 1
sbit B153=P2^4;sbit A153=P2^3;sbit P17=P3^4;sbit P16=P3^3;sbit P35=P3^5;sbit Set=P3^2;unsigned char LCD_Wait(void);void LCD_Write(bit style, unsigned char input);void LCD_SetDisplay(unsigned char DisplayMode);void LCD_SetInput(unsigned char InputMode);void LCD_Initial();void GotoXY(unsigned char x, unsigned char y);void Print(unsigned char *str);void C52_Initial();void Delay(unsigned int t);void display(float f);void cepin();void panduan();void timedisplay(float sj);void Time_Set1();void Time_Set2();void t0();void t1();
/*****模块名称 LCD1602显示程序******/
/***********************端口定义 ***********************************/
sbit LcdRs= P2^0;sbit LcdRw= P2^1;sbit LcdEn= P2^2;sfr DBPort= 0x80;
//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口 /************************内部等待函数********************************/
unsigned char LCD_Wait(void){
LcdRs=0;
//寄存器选择输入端 1:数据 0:指令
LcdRw=1;
_nop_();//RW:为0:写状态;为1:读状态;
LcdEn=1;
_nop_();
//使能输入端,读状态,高电平有效;写状态,下降沿有效
LcdEn=0;
return DBPort;
} /**********************向LCD写入命令或数据***************************/
#define LCD_COMMAND 0
// Command #define LCD_DATA 1
// Data #define LCD_CLEAR_SCREEN
0x01
// 清屏 #define LCD_HOMING
0x02
// 光标返回原点 void LCD_Write(bit style, unsigned char input){
LcdEn=0;
LcdRs=style;
LcdRw=0;
_nop_();
DBPort=input;
_nop_();//注意顺序
LcdEn=1;
_nop_();//注意顺序
LcdEn=0;
_nop_();
LCD_Wait();} /********************设置显示模式*********************************/
#define LCD_SHOW
0x04
//显示开 #define LCD_HIDE
0x00
//显示关
#define LCD_CURSOR
0x02
//显示光标
#define LCD_NO_CURSOR
0x00
//无光标
#define LCD_FLASH
0x01
//光标闪动 #define LCD_NO_FLASH
0x00
//光标不闪动 void LCD_SetDisplay(unsigned char DisplayMode){
LCD_Write(LCD_COMMAND, 0x08|DisplayMode);
} /*********************设置输入模式***********************************/ #define LCD_AC_UP 0x02 #define LCD_AC_DOWN 0x00
// default #define LCD_MOVE 0x01
// 画面可平移 #define LCD_NO_MOVE 0x00
//default void LCD_SetInput(unsigned char InputMode){
LCD_Write(LCD_COMMAND, 0x04|InputMode);} /******************初始化LCD**************************************/
void LCD_Initial(){
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38);
//8位数据端口,2行显示,5*7点阵
LCD_Write(LCD_COMMAND,0x38);
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);
//开启显示, 无光标
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);
//清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);
//AC递增, 画面不动 }
/************************************************************************/ void GotoXY(unsigned char x, unsigned char y){ if(y==0)
LCD_Write(LCD_COMMAND,0x80|x);if(y==1)
LCD_Write(LCD_COMMAND,0x80|(x-0x40));} void Print(unsigned char *str){
while(*str!=')
{
LCD_Write(LCD_DATA,*str);
str++;
} }
/*************************************************************************** *
模块名称:
频率测量程序
* *
测量范围:0.1Hz~4MHz,闸门时间:0.05s~10s可调。
* ***************************************************************************/ /***************************89c52初始化************************************/ void C52_Initial(){ sj=1000000.00;Key_Set=0xff;TMOD=0x51;
// 01010001 T1为计数器,T0为定时器
EA=1;ET0=1;ET1=1;EX0=1;
PX0=1;
//外部中断0设置为高优先级
IT0=0;
//电平触发方式 } /**************************延时子程序**************************************/ void Delay(unsigned int t)
//t随着数值越大,误差趋于平衡.{
unsigned char i;
while(t--)
{
for(i=0;i<123;i++){;}
} } /*************************计数中*********************************/ void t1(void)interrupt 3
//计数器1溢出,yichu=1 { n++;yichu=1;TH1=0;TL1=0;} /***********************定时中断****************************/ void t0(void)interrupt 1
{ m++;yichu=2;
//定时器0溢出,yichu=2 TH0=0x3c;
//定时50ms TL0=0xb0;} /***********************频率显示*****************************/ void Fdisplay(float f){
if(f>999400.00)
{
if(f<4000400.00)
{sprintf(buff,“ F=%2.4fmHz ”,(f/1000000.00));}
}
else
{
if(f>1040.00)
{sprintf(buff,“ F=%4.2fkHz ”,(f/1000.00));}
else
{
if(f>0.06)
{sprintf(buff,“ F=%3.2fHz
”,f);}
}
}
GotoXY(0,1);
Print(buff);} /***********************周期显示**********************************/ void Pdisplay(float p){
if(p>999400.00)
{
if(p<10004000.00)
{sprintf(buff,“ Cycle:%2.4fs ”,(p/1000000.00));}
else
{sprintf(buff,“error(Time or F)”,p);}
}
else
{
if(p>9950.00)
{sprintf(buff,“ Cycle:%4.2fms ”,(p/1000.00));}
else
{
if(p>0.248)
{sprintf(buff,“ Cycle:%3.3fus ”,p);}
else
{sprintf(buff,“error(Time or F)”,p);}
}
}
GotoXY(0,1);
Print(buff);}
/*********************测试频率**************************/ void cepin(){ unsigned char a;unsigned long js;m=0;n=0;TMOD=0x51;TH0=0x3c;
//定时50ms TL0=0xb0;TH1=0;TL1=0;a=sj/50000.00;TCON=0x50;
//启动定时器和计数器 while(m!=a);TCON=0;js=TH1*256+n*65536+TL1;f=(js/(sj/1000000.00))*fenpin;p=sj/(js*fenpin);if(xs==0)
//设置结束后第一次不显示结果 { if(flag==Freq)Fdisplay(f);else Pdisplay(p);} }
/*********************判断频率******************************/ void panduan(){ xs=0;
//设置结束后第二次循环显示结果 B153=1;
//选择16分频 A153=0;yichu=0;TMOD=0x51;
TH0=0xff;
TL0=0x38;TH1=0xff;
TL1=0x9c;TR0=1;
TR1=1;while(yichu==0);
TR0=0;
TR1=0;
if(yichu==1)
(f>500khz)
{fenpin=16;
cepin();} else
频数
{
yichu=0;
B153=0;
A153=1;
TH0=0xfc;
TL0=0x18;
TH1=0xff;
TL1=0x9c;
TR0=1;
TR1=1;
while(yichu==0);
TR0=0;
TR1=0;
if(yichu==1)
(1khz {fenpin=4; //定时器0 200us //计数器1 100脉冲 //启动定时器0和计数器1 //如果没有溢出一直循环 //已经溢出关闭定时器0和计数器1 //计数器先溢出:在200ms内测得的脉冲过多,说明频率较高 //转为测16分频后的频率 //定时器先溢出:100个脉冲的时间比较短,即频率较低,可以减少分 //定时器0 1ms //计数器1 100个脉冲 //启动定时器0和计数器1 //如果没溢出一直循环 //已经溢出关闭定时器0和计数器1 //计数器先溢出:在1ms内测得的脉冲过多,说明频率较高 //转为测4分频后测频率 cepin();} else //定时器先溢出:100个脉冲的时间比较短,即频率较低 { fenpin=1; B153=0; A153=0; cepin();} } } /*************************显示闸门时间***********************************/ void timedisplay(float GTime){ sprintf(buff,“GTime=%7.0fus ”,GTime);GotoXY(0,1);Print(buff);Delay(50);} /***************************减按键*******************************/ void Time_Set2(){ Delay(1000);if(P17==1) { sj=sj-50000.00; if(sj>50000.00)timedisplay(sj); else {sj=50000.00; timedisplay(sj);} } else {while(P17==0) { Delay(500); sj=sj-500000.00; if(sj>50000.00)timedisplay(sj); else {sj=50000.00; timedisplay(sj);} } } } /***************************加按键**********************************/ void Time_Set1(){ Delay(1000)if(P16==1) { sj=sj+50000.00; if(sj<10000000.00)timedisplay(sj); else {sj=10000000.00; timedisplay(sj);} } else {while(P16==0) { Delay(500); sj=sj+500000.00; if(sj<10000000.00)timedisplay(sj); else {sj=10000000.00; timedisplay(sj);} //按住1s快加0.5s } } } /************************闸门时间设置***********************************/ void Time_Set()interrupt 0 { EA=0; //防止无限中断 Delay(100);if(Set==0) { Delay(1000); //判断处于哪种设置状态 if(Set==1) { GotoXY(0,1); Print(“ Press Button ”); GotoXY(0,0); Print(“ T Settings ”); while(Set==1) { switch(Key_Set) { case K1: Time_Set1();break; case K2: Time_Set2();break; default: break; } } } else //选择测试频率或周期 { GotoXY(0,1); Print(“ 1.Freq 2.Cycle”); GotoXY(0,0); Print(“ Select ”); while(Set==0); //等待设置按键松开 while(Set==1) { switch(Key_Set) { case K1: flag=Freq;GotoXY(0,1);Print(“ ---Freq--- case K2: flag=Peri;GotoXY(0,1);Print(” ---Cycle--- default: break; } } } } GotoXY(0,0);Print(“---Cymometer---”); GotoXY(0,1);Print(“ Waiting...”);while(Set==0); //防止再次进入中断 EA=1;xs=1; //不显示此次结果.} /**************************主程序****************************/ void main(){ LCD_Initial(); //LCD初始化 GotoXY(0,0);Print(“---Cymometer---”);GotoXY(0,1);Print(“ Huixi && Xia”);Delay(1000);GotoXY(0,1);Print(“ Waiting...”); “);break;”);break; C52_Initial(); //89c52初始化 while(1) { panduan(); } } 5、调试过程 程序的设计及调试过程中离不开89C52的开发系统板电路图,起初忽视了开发板上的K3键用到的P35引脚也是定时器T1的信号输入引脚。后来在其他管脚的分配也曾出现错误,不过通过调试、修改都一一改正。仿真的时候默认晶振是12MHz,故程序编写的时候按12MHz设计的定时,以至于在实体时候测量不是很准确,后通过重新计算、修改程序达到了较高的准确率。但最终在实体系统演示中犯了一个极其幼稚的错误,未拿掉短接帽,以至于起初LCD未任何显示,浪费了不少时间去找程序的问题,还是自己不够认真细心。 6、实验结果 (1)最终实物图 最终实体电路系统如图6-1。 图6-1最终实物图 该课程设计验收时结果符合设计要求,可测量矩形波,方波,三角波,锯齿波等信号的频率;测量范围为0.1Hz~4MHz;闸门时间为0.05s~10s可调。 (2)电路仿真分析 由于实物演示不方便,这里用仿真图进行说明: 如下图,开关K1、K2、SET分别代表实物单片机最小系统上的开关K5、K4、K6。SET为确认键,K1可以选择频率输出,K2可以选择周期输出。K1、K2配合还可以调节阀门时间。 下图为开关仿真图和结果显示图: 开关K1,K2选择测周、测频及闸门时间的增减,SET键用于功能切换及确认 初始显示 选择测频率或测周期 频率显示 周期显示 改变阀门时间 7、总结与感悟 本设计通过运用单片机AT89S52,Proteus 仿真软件以及Kell 仿真软件的相关知识,成功地实现了数字频率计的设计。综合调试结果表明,本文提出的设计与传统测频系统相比,具有体积小、成本低、低功耗、精度高等优点,适用于各种测量电路。 本次设计的低频测量部分及高频测量部分分别采用测频、测周的测量方法,并通过计算精确计数,故测量误差很小,再加上智能分频使单片机的测量带宽提高了一千倍以上,仅用几个芯片搭成的低成本简单电路,使该频率计拥有了不错的性价比,且完全可以满足一般的测量需求。本次课程设计由前期自己查资料、想设计思路、写代码及画电路图,然后在实验室多半天基本完成。总体来说还算顺利,所以前期做足准备工作很重要。通过本次课设,我们复习了老师所讲的C51知识,通过将所学的课本知识用于实践,即体会到了知识运用所得成果的快乐,又加深了我对知识的理解,印象更加深刻。通过参加竞赛及此次课设,我深刻体会到无论设计什么,首先要分析需求,根据所学设计构思,只要思路出来了编程的大致方向确定,问题就解决一半。另外,很多东西都是有前人经验的,并不是要我们只会盲目埋头自己苦干,要学会搜集资料,总结前人经验教训用于自己的设计,达到事半功倍的效果。在电路设计及编程、仿真以及最后的搭建实体电路系统中,任何一个环节中细节都不容忽视,比如焊接前外围电路板的排版布局,拿到新的洞洞板要先看构造,综合考虑电路需要,想好布局再焊,尽量避免错误焊接,吸掉重焊。这样既影响美观,又可能损坏电路板。另外,仿真只是初步的检验设计构思是否满足设计需要,仿真效果完美在实体系统调试运行中还是会遇到各种各样的问题亟待解决。总的来说,做任何设计要有清楚的头脑,做好准备工作,还要有耐心、细心,以及团队合作意识。每次的动手设计都能让我学到很多,有知识有心态,实践中的学习总会印象深刻! 文中设计的高频信号频率计,除数据处理和显示交由单片机负责外,测频核心电路用经检测的模拟电路完成,该高频频率计电路简洁,软件编写简单,降低了调试难度的同时增强了其操作性。 1 系统总体设计方案 系统以STC80C51为核心,设计了一款测试范围在1 Hz~10 MHz的频率计。该系统主要设计思想是通过峰值有效电路和有效值电路将正弦波、方波、三角波转化为直流信号,送入单片机,通过编写相应的程序计算出其有效值和峰峰值比,实现自动检测的目的,最后通过显示电路显示测量结果。 系统分为:缓冲器、峰值检测电路、有效值检测电路、分频电路、模式转换、最小系统和显示电路。总体设计方案如图1所示。 输入信号i经过缓冲器处理分为3路输出,依次作为峰值检测电路、有效值检测电路和分频器电路的输入信号。经峰值检测电路和有效值电路处理后,输出直流信号O1、O2,经分频器分频后输出方波信号O3。O1和O2经过A/D模数转换后输入单片机,在单片机中进行处理比较峰值和有效值的关系从而达到自动确定信号类型的功能。O3经计数器输入单片机以计算出信号频率。处理完成后通过显示模块LCD1602显示出信号的频率、峰峰值及波形。 1.1系统电路 1.1.1缓冲器 缓冲由4个电压跟随器构成,如图2所示。电压跟随器如图3所示,它的作用是使输出电压与输入电压值相等,即电压跟随器的电压放大倍数恒小于且接近1。电压跟随器由运放构成。对于10 MHz及其以上频率的信号需要考虑运放压摆率对信号的影响。压摆率反映了运算放大器输出电压的转换速率,它是运算放大器在速度方面的指标。 压摆率的数学定义 式中,f为最大频率,一般认为是带宽;Vpk是放大输出信号的最大峰值。可见压摆率越高运放输出电压的转换速率快。对于10 MHz的信号来说,必须要选择压摆率高的运放。常用的Op07压摆率为3.5,压摆率过低,当信号频率超过100 Hz信号即发生严重失真。故系统选用LM7171,一种高压摆率运放,压摆率为4 100 V/μs,足够满足10 MHz的信号转换速度。 如图2所示,2、3、4号电压跟随器以1号电压跟随器的输出信号为输入信号。即由LM7171构成的高频缓冲器,信号通过1号电压跟随器输出信号与输入信号的比为1∶1,即1号电压跟随器的输出信号等于输入信号。同理O1、O2、O3与输入信号i相等,保证了峰值检测电路、有效值电路及分频电路的输入信号的可靠性。 1.1.2峰值检测电路与有效值检测电路 通过峰值检测和有效值检测电路分别测出信号的有效值和峰峰值。经过峰值检测电路和有效值检测电路处理信号变为直流信号,从而解决了51单片机无法处理10 MHz高频率信号的问题。 峰值检测器(Peak Detector)要对信号的峰值进行采集并保持。峰值检测器分成几个模块:(1)模拟峰值存储器,即电容器。(2)单向电流开关,即二极管。(3)输入输出缓冲隔离,即运算放大器。(4)电容放电复位开关。 系统峰值检测电路使用的运放是TI公司的Difet静电计级运算放大器OPA128。采用OPA128中Datasheet提供的峰值检测电路。 由图4可知,输入为理想二极管接法,输出为电压跟随器。首先特别采用场效应管或晶体管代替二极管,减小方向漏电流,因为场效应管的方向漏电流都在pA级,而二极管方向漏电流是n A级。其次电容的选择也尤为重要,低漏电流需首要考虑。最后输出的运放最好选用偏置电流小的运放,FET输入型的是首选。 综合分析该电路有如下特点:(1)采用FET运放提高直流特性,减小偏置电流OPA128的偏置电流低至75 f A。(2)将场效应管当二极管用,可以有效减小反向电流同时增加第一个运放的输出驱动力。(3)小电容应该是防止自激的。 有效值检测电路中选用AD637,它是一款完整的高精度、单芯片均方根直流转换器,可计算任何复杂波形的真均方根值,电路如图5所示。 输入缓冲和输出偏移接到内部的模拟公共端,一起接地;d B输出端悬空;输出缓冲悬空;CS通过一个外部的上拉电阻接Vs,降低系统在静态时的工作电流;外部的输入信号如果是交流信号,需要在输入端串接一个无极性的耦合电容;电容Cav作用是调整输出的直流信号纹波大小。经测量发现,有效值为0.7~7 V,在此范围内能保证测量误差≤±0.2%+0.5 m V。 1.1.3分频电路 89C51单片机内部计数器,在使用12 MHz时钟时,最大计数速率为500 kHz,因此需要外部分频。分频电路用于扩展单片机频率测量范围,并实现单片机频率测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。 设计选用芯片74LS191,其为可预置的4位二进制加减法计数器,其功能表如表1所示,电路如图6所示。74LS191由JK触发器和门电路组成,按图6所示链接后芯片相当于4个JK触发器串联,而每个触发器在相应有效脉冲翻转一次。所以当第16个脉冲到来时C将产生进位输出。由于C输出低有效,所以在C处接74LS04反相器得到正脉冲,经16位分频处理后10 MHz信号变为62 500 Hz。 2 系统软件设计 信号经过缓冲器变为三路,分别送入峰值检测电路、有效值检测电路和分频电路。从峰值检测电路和有效值检测电路输出的极为直流信号,通过数模转换器送入51单片机的OO口,则可得到信号的峰峰值。通过峰值与有效值的比即可自动检测出信号的类型,三角波峰值是有效值的1.732倍;正弦波有效值是峰值的0.707倍;方波峰值是有效值的2倍。最后一路信号通过分频后直接送入单片机的计数器即P3.2口。所有检测的结果通过1602液晶显示器通过中断显示方法显示出来。 3 结束语 以上电路经实际测试检验,性能稳定可靠,精度符合预期要求。随着电子技术的进步,运算放大器的集成化和处理能力也在不断地提高,可进一步提高其频率带宽和测量精度。 摘要:基于51单片机设计了一款测试范围在1 Hz10 MHz的频率计。系统通过峰值有效电路和有效值电路将正弦波、方波和三角波转化为直流信号送入单片机,通过编写相应的程序计算出其有效值和峰峰值的比,实现自动检测的目的,并由显示电路显示测量结果。该系统电路简洁、软件编写简单、调试难度低。 关键词:高频,51单片机,频率计 参考文献 [1]沈亚钧.基于单片机的数字频率计设计[J].山西电子技术,2012(5):14-16. [2]阎石,王红.数字电子技术基础习题解答[M].5版.北京:高等教育出版社,2006. [3]黄虎,奚大顺.电子系统设计-专题篇[M].北京:北京航空航天大学出版社,2009. [4]余小平,奚大顺.电子系统设计-基础篇[M].北京:北京航空航天大学出版社,2007. [5]李瀚荪.电路分析基础上册[M].4版.北京:高等教育出版社,2006. [6]周良权,傅恩锡,李世馨.模拟电子技术基础[M].3版.北京:高等教育出版社,2008. [7]郭天祥.新概念51单片机C语言教程:入门、提高、开发、拓展全攻略[M].北京:电子工业出版社,2009. 关键字:单片机;数字秒表;仿真 当今,计算机技术带来了科研和生产重大飞跃,微型计算机的应用已渗透到生产、生活的各个方面。单片微型计算机具有体积小、价格低、功能强的特点,随着性能不断提高,其适用范围愈来愈宽,在计算机应用领域占有重要的地位。秒表应用于我们生活、工作、运动等需要计时的方面。秒表的数字化给人们生产生活带来了极大的方便,而且大大的扩展了秒表原先的功能。它由刚开始的机械式秒表发展到今天所常用的数字式秒表。秒表的计时精度越来越高,功能越来越多,构造也日益复杂。本文结合单片计算机,实现了一种基于AT89C52单片机的数字秒表的设计,并且利用Proteus和Keil软件实现了仿真。 1 系统设计方案 1.1 系统设计要求 (1)秒表计时最大值为59分59.99秒。 (2)秒表由六位七段LED数码管显示,其中高两位显示“分”,中间两位显示“秒”,低两位显示“0.01”秒。 (3)秒表拥有计时、暂停、清零功能。 (4)设置三个功能键:键1开始计时,键2暂停计时,键3清零计时。 1.2 总体方案设计 数字秒表系统主要完成对计时实时的显示,精度达到0.01s,以及通过功能键可以使当前计时暂停或清零。系统主要包括时钟电路、复位电路、按键电路以及数码管显示电路。 系统采用六个共阳极数码管,其中八位数据口与单片机的P0口通过74LS245双向总线收发器相接,以增加P0的驱动能力。6个片选信号连接单片机P2口的低六位。该电路可满足对计时时间的显示,最小显示单位为0.01s,溢出则向前进位,显示时间的范围为0到59分59.99秒。3个功能键连接到P3口的低三位,控制系统的计时、暂停和清零。系统的整体组成框图如图1所示。 2 硬件电路设计 2.1 单片机的选型 由于本系统只需要单片机完成对计时的显示以及处理定时/计数的中断,对于I/O资源以及处理速度无特殊要求,所以选择Atmel公司生产的AT89C52单片机。AT89C52增加了在线调试功能,程序可以通过JTAG接口下载、调试和固化,可实现实时仿真和在线编程或在系统编程,具有通过网络进行升级、维护的功能。 采用MSC-51系列的单片机相比有两大优势:(1)片内程序存储器采用快闪存储器,使程序的写入方便,还可任意的擦写1000次,使开发更为方便。(2)提供了更小的芯片,使整个硬件电路的体积更小。本设计采用了MSC-51系列89C52单片机,具有程序加密功能且物美价廉,经济实用。 2.2 时钟电路 单片机工作的时间基准是由时钟电路提供的。在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。时钟电路如图2所示。电路中,电容器C1和C2对振荡频率有微调作用,通常取(30±10)pF,本设计选用30pF。电路中的晶振采用石英晶体震荡器,晶振频率选择12MHz。石英晶体震荡器具有非常好的频率稳定性和抗外界干扰的能力。通过基准频率来控制电路中的频率的准确性。 2.3 复位电路 单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。89系列单片机的复位信号是从RST引脚输人到芯片的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚有一个高电平并维持2个机器周期(24个振荡周期),则CPU就可响应并且将系统复位。复位分为手动复位和上电复位。系统复位电路如图3所示。 2.4 数码管显示电路 本系统使用了6个共阳极数码管。设计LED显示驱动是一个非常重要的问题,显示电路由LED显示器、段驱动电路和位驱动电路组成。由于单片机的并行口驱动电流太小,不能直接驱动LED显示器,段驱动电路通过74LS245双向总线收发器使P0口与数码管的八段相连,,可增加P0的驱动能力。位驱动电路通过六只NPN三极管驱动使P2口的低六位作为位选信号,使之产生足够大的电流,来驱动LED达到足够的亮度,显示器才能正常工作。如果驱动电路能力差,即驱动电流过小,数码管显示亮度不够,而驱动电路驱动电流太大容易损坏数码管。 LED显示器显示控制方式有两种:静态和动态。本设计方案选择的是动态控制方式。由于一位数据的显示是由段码和位码信号共同配合完成的,因此,要同时考虑段和位的驱动能力,而且段的驱动能力决定位的驱动能力。 2.5 按键电路 本系统设置3个功能按键分别为KEY1、KEY2和KEY3,其中KEY1是开始按键,与P3.0相连,按下时数码管开始计时;KEY2是停止按键,与P3.1相连,按下时数码管停止计时;KEY3是清零按键,与P3.2相连,按下时数码管全部清零。当数码管计时时,不能直接按清零按键,只能按停止按键才能停止,再按清零按键全部显示初始化0。 3 系统软件设计 系统软件由主程序模块、延时模块、键盘扫描程序模块以及数码管驱动程序模块组成。 本设计中,计时采用定时器T0中断完成,其余状态循环调用显示子程序,当功能按键按下时,转入相应功能程序。其主程序流程图如图4所示。 4 仿真结果 程序在Keil uVision3环境下编写,编译通過后生成.hex文件加载到Proteus下可正常运行。程序刚运行前数码管显示初值为0000.00,按下键KEY1系统开始计时,程序中每0.01s进入一次定时中断。在程序运行过程中若按下键KEY2系统暂停计时,数码管显示计时截至状态;若按下键KEY3,数码管清零。图5为键KEY1抬起、键KEY2按下的状态。 5 结束语 本文利用AT89C52单片机设计了具有计时开始、暂停及清零功能的数字秒表,计时最大值为59分59.99秒,计时精度为0.01秒。利用Proteus和Keil软件进行了仿真,达到了预期的效果。整体电路的计时精度高,电路结构简单,抗干扰能力强,具有广泛的应用前景。 参考文献 [1] 郭文川主编. 单片机原理与接口技术[M]. 北京:中国农业出版社,2007. [2] 郭天祥主编. 51单片机C语言教程[M]. 北京:电子工业出版社,2009. [3] 彭伟主编.单片机C语言教程设计实例[M]. 北京:电子工业出版社,2009. [4] 张俊谟.单片机中级教程原理与应用[M].北京:航空航天大学出版社,2002. [5] 赵家贵.电子电路设计[M].北京:中国计量出版社,2005. [6] 余锡存 曹国华.单片机原理及接口技术[M].西安:西安电子科技大学出版社,2000. [7] 蒋辉平,周国雄.基于Proteus的单片机系统设计与仿真实例[M].北京:机械工业出版社,2009.4. [8] 孙凌燕,黄允千.Proteus与Keil软件的整合在单片机实验开发中的应用[J].实验室研究与探索,2008.4. 作者简介 郭海丽(1980-),女,河北秦皇岛人,硕士,讲师,主要从事单片机、嵌入式方面的教学与科研。 收稿日期:2011-08-07 引言 频率合成器的功能就是给收发机中的变频电路提供频率可编程的本地载波信号,是无线收发机的核心模块之一,其性能对通信系统的通信质量具有重大影响。目前频率合成器主要有直接模拟频率合成技术(DS)、锁相环频率合成技术(PLL)、直接数字频率合成技术(DDS)、混合频率合成技术四种实现方式,其中锁相环频率合成器是射频电路中最常使用的一种结构,相比于其他几种结构,PLL结构能够在有限的功耗限制下合成高性能的载波信号。本文基于锁相环芯片ADF4106设计了一种数字锁相环频率合成器,具有超宽的带宽、较好的噪声特性、快速锁定时间,以及功耗低和体积小等特点,从而被广泛应用于无线通信系统中。 一、锁相环频率合成器的基本工作原理 锁相环(PLL)是一个相位误差控制系统,通过将输入信号与压控振荡器(VCO)输出信号之间的相位进行比较,产生相位误差电压经处理后去调整压控振荡器的相位。当环路锁定时,输入信号与压控振荡器输出信号频差为零,相位差不再随时间变化,此时误差控制电压为一固定值,压控振荡器输出频率与输入信号频率相等,即fout=(N/R)*fin。锁相环基本原理框图如图1所示。 锁相环主要结构由VCO、鉴相器(PFD)、分频器和环路滤波器(LPF)组成。其中,PFD主要功能是进行相位比较的,它把VCO输出信号N分频后与输入频率R分频后进行比较,产生误差控制电压。LPF的作用是滤除误差电压中的高频成分和噪声,以保证环路所要求的性能,提高系统的稳定性。VCO受控制电压的控制,使其输出频率向参考信号的频率靠近,两者频率之差越来越小,直至消除频差而相位同步实现锁定。在实际设计中,可以通过程序改变分频比R、N,从而获得需要的稳定输出频率。 二、方案设计与实现 2.1 锁相环芯片ADF4106结构功能介绍 ADF4106是ADI公司生产的集成锁相环频率合成器芯片,利用该芯片可以实现无线收发机上变频和下变频部分的本地振荡。ADF4106由一个低噪声数字PFD、一个精确的电荷泵、一个可编程基准分频器R(14位)、可编程A(6位)、B(13位)计数器和一个双模前置分频器P/P+l组成。A、B计数器和双模前置分频器相连接实现一个分频器N,且N=PB+A。该芯片具有6GHz的频率带宽,2.7V~3.3V的供电电压,独立的电荷泵供电电压,可编程的双模前置分频器P/P+l,其值可取8/9、16117、32/33和64/65,同时还具有三线串行接口、模拟数字锁定检测、硬件软件低功耗模式等特性。ADF4106同外部LPF和VCO可以组成一个完整的PLL电路。由于ADF4106的宽带特性消除了许多高频系统中倍频器的使用,从而简化了系统结构和降低了成本。 在本文设计中,设计实现2GHz的频率合成器,且要求2GHz频率信号分两路输出,并保证其中一路输出信号功率达到13dBm。该电路主要由ADF4106、LPF、VCO和射频信号输出部分组成。根据图1,选取输入信号频率fin=10MHz,该信号在进入ADF4106的Refin引脚前通过一个T型匹配网络来实现阻抗匹配。为了保证PFD输入信号频率为1MHz,需要通过编程设定基准分频器R的值为10,分频器N的值为。 ADF4106具有一个简单的SPI兼容串行接口向器件引脚CLK、DATA、LE写数据,当LE为上升沿时,将CLK每个时钟上升沿存储到寄存器中的24位数据送入合适的锁存器中。串行输入时序图如图2所示。 2.2 LPF设计 LPF在频率合成器设计过程中直接影响到频率合成器的相位噪声和转换频率,由于PFD的输出不但包含直流控制信号,还有一些高频谐波成分,LPF通过对电阻电容进行适当的参数设置,可以滤除高频成分,避免这些谐波对下一级VCO电路产生影响。LPF可以分为有源滤波器和无源滤波器,本文设计的无源LPF将电荷泵输出电流转换成控制电压,同时抑制鉴相频率的输出纹波。在电路设计过程中,由于二阶LPF很难抑制环路带宽频率十倍以上的纹波,所以采用三阶LPF,提高对杂散频率的抑制程度。三阶LPF的电路图如图3所示,对于LPF中电容和电阻的数值,可以通过Analog器件公司(ADI)提供的LPF仿真软件ADIsimPLL和安捷伦公司(注:现更名为是德科技公司)的ADS仿真软件进行仿真得到,通过设定相关参数,并经过不断的优化和调试得出LPF各器件参数值为:Cl=lOOpF,C2=1.5nF, C3=20pF, R1=4.3kΩ,R2=6.2kΩ。 2.3 VCO功能介绍 VCO作为一个电压频率转换器,由于其能够产生最终输出信号频率,所以在PLL中占有重要地位。VCO是一种具有线性控制特性的`调频振荡器,其输出频率随控制电压的改变而改变,使输出信号频率向参考信号的频率接近,直至消除频差实现锁定。 VCO具有相位噪声、频率稳定度、频率范围、谐波抑制等器件特性。本文从设计指标要求考虑,选取Z-Communications公司的CR02000作为压控振荡器,由于该器件具有较低的相位噪声、很好的谐波抑制、较好的线性度以及容易焊接的器件封装,故选取该器件作为PLL的VCO,并在实际应用中取得良好的性能。 2.4 射频通路设计 由于vco输出负载阻抗为50Ω,故要求2GHz输出信号射频走线阻抗同样为50Q,本文印制板使用叠层的方式,其中第一层介质材料为Rogers4350B,板厚为20mil,介电常数为3.48,通过仿真软件Polar S19000计算得到射频走线宽度为40mil。射频通路设计框图如图4所不。 本文要求2GHz频率信号通过Y型电阻式功分器分两路输出,并保证其中一路输出信号功率达到13dBm。由于VCO输出信号功率较小,需要在通路中加入放大器ERA-5SM,保证输出功率值,同时为了抑制2GHz信号之外的谐波和非谐波等干扰,需要在两个通路输出端加上低通滤波器LFCN-2000。 2.5 锁相环频率器电路原理图及测试结果 基于上述锁相环频率器各模块的介绍和设计,最终电路设计如图5所示。根据图5所示原理图,画出相应的PCB外协加工,将加工的印制板安装到提前设计好的屏蔽盒中进行测试,安捷伦N9020A测试结果如图6、图7所示。其中图6为输出信号功率测试结果,图7为相位噪声测试结果。 由图6可知,在输出信号2GHz处功率为14.22dBm,满足信号功率达到13dBm的要求。同时由图7可知,输出信号单边带相噪为处,同样满足设计指标。 三、总结 1.1逆变电源数字化控制技术的发展 随着网络技术的发展,对逆变电源提出了更高的要求,高性能的逆变电源必须满足:高输入功率因数,低输出阻抗;暂态响应快速,稳态精度高;稳定性高,效率高,可靠性高;电磁干扰低等。要实现这些功能,离不开数字化控制技术。1.2传统逆变电源控制技术 1.2.1传统逆变电源控制技术的缺点 传统的逆变电源多为模拟控制系统。虽然模拟控制技术已经非常成熟,但其存在很多固有的缺点:控制电路的元器件比较多,电路复杂,所占的体积较大;灵活性不够,硬件电路设计好了,控制策略就无法改变;调试不方便,由于所采用器件特性的差异,致使电源一致性差,且模拟器件的工作点的漂移,导致系统参数的漂移。模拟方式很难实现逆变电源的并联,所以逆变电源数字化控制是发展的趋势,是现代逆变电源研究的一个热点。1.2.2传统逆变电源控制技术的改进 为了改善系统的控制性能,通过模拟、数字(A/D)转换器,将微处理器与系统相连,在微处理器中实现数字控制算法,然后通过输入、输出口或脉宽调制口(pulse width modulation, PWM)发出开关控制信号。微处理器还能将采集的功率变换装置工作数据,显示或传送至计算机保存。一些控制中所用到的参考值可以存储在微处理器的存储器中,并对电路进行实时监控。微处理器的使用在很大程度上提高了电路系统的性能,但由于微处理器运算速度的限制,在许多情况下,这种微处理器辅助的电路控制系统仍旧要用到运算放大器等模拟控制元件。近年来随着大规模集成电路技术的发展,一些专用心片的产生,使逆变电源的全数字控制成为现实。实时地读取逆变电源的输出,并实时地处理,使得一些先进的控制策略应用于逆变电源控制成为可能,从而可对非线性负载动态变化时产生的谐波进行动态补偿,将输出谐波达到可以接受的水平。 1.3逆变电源数字化控制技术的现状 1.3.1逆变电源控制技术数字化、智能化、网络化 随着电机控制专用芯片的出现和控制理论的普遍发展,逆变电源技术朝着全数化智能化及网络化的方向发展,逆变电源的数字控制技术发生了一次大飞跃。逆变电源数字化控制的优点在于各种控制策略硬件电路基本是一致的,要实现各种控制策略,无需变动硬件电路,只需修改软件即可,大大缩短了开发周期,而且可以应用一些新型的复杂控制策略,各电源之间的一致性很好,这样为逆变电源的进一步发展提供了基础,而且易组成可靠性高的大规模逆变电源并联运行系统。 1.3.2逆变电源数字化需要解决的一些难题 数字化是逆变电源发展的主要方向,但还是需要解决以下一些难题: a)逆变电源输出要跟踪的是一个按正弦规律变化的给定信号,它不同于一般开关电源的常值控制。在闭环控制下,给定信号与反馈信号的时间差就体现为明显的相位差,这种相位差与负载是相关的,这就给控制器的设计带来了困难。 b)逆变电源输出滤波器对系统的模型影响很大,输入电压的波动幅值和负载的性质,大小的变化范围往往比较大,这些都增加了控制对象的复杂性,使得控制对象模型的高阶性、不确定性、非线性显著增加。 c)对于数字式PWM,都存在一个开关周期的失控区间,一般是在每个开关周期的开始或上个周期之末来确定本次脉冲的宽度,即使这时系统发生了变化,也只能在下一个开关周期对脉冲宽度做出调整,所以现在逆变电源的数字化控制引起了广泛的关注。1.4逆变电源数字化的各种控制策略 逆变电源数字控制方法成为当今电源研究领域的一个热点,与数字化相对应,各种各样的离散控制方法也纷纷涌现,包括数字比例-积分-微分(PI)调节器控制、无差拍控制、数字滑变结构控制、模糊控制以及各种神经网络控制等,从而有力地推动逆变电源控制技术的发展。 1.4.1数字PI控制 数字PI控制以参数简单、易整定等特点得到了广泛应用。逆变器采用模拟数字PI控制时,如果只是输出电压的瞬时值反馈,其动态性能和非线性负载时的性能不会令人满意;如果是输出滤波电感或输出滤波电容的电流瞬时值引入反馈,其性能将得到较大改进,然而,庞大的模拟控制电路使控制系统的可靠性下降,调试复杂,不易于整定。数字信号处理芯片的出现使这个问题得以迅速解决,如今各种补偿措施及控制方式可以很方便地应用于逆变电源的数字PI控制中,控制器参数修改方便,调试简单。 但是,数字PI控制算法应用到逆变电源的控制中,不可避免地产生了一些局限性:一方面是系统的采样量化误差,降低了算法的分辨率,使得PI调节器的精度变差;另一方面,采样和计算延时使被控系统成为一个具有纯时间滞后的系统,造成PI控制器设计困难,稳定性减小,随着高速专用芯片及高速A/D的发展,数字PI控制技术在逆变电源的控制中会有进一步的应用。 1.4.2滑模变结构控制 滑模变结构控制(sliding mode variable structure control,SVSC)最显著的特点是对参数变化和外部扰动不敏感,即鲁棒性强,加上其固有的开关特性,因此非常适用于闭环反馈控制的电能变换器。 基于微处理器的离散滑模控制使逆变器输出波形有较好的暂态响应,但系统的稳态性能不是很理想。具有前馈控制的离散滑模控制系统[1],暂态性能和稳态精度得到提高,但如果系统过载时,滑模控制器的负担将变得非常重。自矫正离散滑模控制可以解决这个问题。 逆变器的控制器由参数自适应的线性前馈控制器和非线性滑模控制器组成,滑模控制器仅在负载导致输出电压变化时产生控制力,稳态的控制力主要由前馈控制器提供,滑模控制器的切换面(超平面)是根据优化准则进行设计的。1.4.3无差拍控制 无差拍控制(deadbeat control)是一种基于电路方程的控制方式,其控制的基本思想是将输出正弦参考波等间隔地划分为若干个取样周期,根据电路在每一取样周期的起始值,用电路理论算出关于取样周期中心对称的方波脉冲作用时,负载输出在取样周期末尾时的值。这个输出值的大小,与方波脉冲的极性与宽度有关,适当控制方波脉冲的极性与宽度,就能使负载上的输出在取样周期的末后与输出参考波形相重合[2]。不断调整每一取样周期内方波脉冲的极性与宽度,就能在负载上获得谐波失真小的输出。因此,即使在很低的开关频率下,无差拍控制也能够保证输出波形的质量,这是其它控制方法所不能做到的,但是,其也有局限性:由于采样和计算时间的延迟,输出脉冲的占空比受到很大限制;对于系统参数的变化反应灵敏,如电源电压波动、负载变动,系统的鲁棒性差。 对于采样和计算延时的影响,一种方法是通过修改输出脉冲方式的方法来减小计算延时造成的占空比局限;另一种方法是通过状态观测器对系统状态提前进行预测,用观测值替代实际值进行控制,从而避免采样和计算延时对系统的影响。为了提高系统的鲁棒性,一种方法是采用负载电流预测方法来减小负载变动对电源输出的影响,但实际改善的程度有限;另一种可行的方法是对系统参数进行在线辨识,从而实时确定控制器参数,以达到良好的控制效果。但是,在线系统辨识的计算复杂度和存储量都非常大,一般的微处理器很难在很短的时间内完成,因此实现的可能性不大,所以还没有一种比较好的方法来解决无差拍控制鲁棒性差的问题。正是由于无差拍控制在电源控制中的不足及局限性到目前还难以解决,使得无差拍控制在工业界的应用还有待不断的深入研究。1.4.4重复控制 逆变器采用重复控制(repetitive control)是为了克服整流型非线性负载引起的输出波形周期性的畸变,它通常与其他PWM控制方式相结合。重复控制的思想是假定前一周期出现的基波波形将在下一基波周期的同一时间重复出现,控制器根据给定信号和反馈信号的误差来确定所需的校正信号,然后在下一个基波周期的同一时间将此信号叠加到原控制信号上,以消除后面各周期中将出现的重复畸变[3]。 虽然重复控制使系统获得了很好的静态性能,且易于实现,但该技术却不能够获得好的动态性能。自适应重复控制方案成功地应用于逆变器的控制中。 模糊控制(fuzzy control)能够在准确性和简洁性之间取得平衡,有效地对复杂的电力电子系统做出判断和处理。将模糊控制应用于逆变器,具有如下优点:模糊控制器的设计不需被控对象的精确数学模型,并且有较强的鲁棒性和自适应性;查找模糊控制表只需占有处理器很少的时间,可采用较高采样率来补偿模糊规则和实际经验的偏差。 将输出电压和滤波电感电流反馈,即电压误差和电感电流作为输入模糊变量,可以实现逆变器的模糊控制,整流性负载时,其输出电压总谐波失真(total harmonic distortion,TH)小于5%,将模糊控制与无差拍控制相结合,可用来补偿由于非线性负载导致的电压降落,[5-6]。模糊控制从模仿人的思维外特性入手,模仿人的模糊信息处理能力。它对系统的控制是以人的经验为依据的,而人的经验正是反映人在思维过程中的判断、推理、归纳。理论上已经证明,模糊控制可以任意精度逼近任何线性函数,但受到当前技术水平的限制,模糊变量的分档和模糊规则都受到一定的限制,隶属函数的确定还没有统一的理论指导,带有一定的人为因素,因此,模糊控制的精度有待于进一步提高。 此外神经网络控制是一种使用人工神经网络的控制方法。因为人工神经网络是建立在强有力的数学基础上,所以它有很大的潜力,这个数学基础包括各种各样的已被充分理解的数学工具。在无模型自适应控制器中,人工神经网络也是一个重要组成部分。但由于神经网络的实现技术没有突破,还没有成功地应用于逆变电源的控制中。 第二章 推挽型逆变器的基础知识 2.1 开关型逆变器 广义地说,凡用半导体功率器件作为开关,将一种电源形态转变为另一种形态的主电路都叫做开关变换电路,这种变换可以是交流电和直流电之间的变换,也可以是电压或电流幅值的变换,或者是交流电的频率、相数等的变换。按电力电子的习惯称谓,基本的电力电子电路可以分为四大类型,即AC——DC电路、DC——AC电路、AC——AC电路、DC——DC电路。本文中的逆变电路就属DC——AC电路。开关逆变器中的开关都是在某一固定频率下工作,这种保持开关频率恒定,但改变接通时间长短(即脉冲宽度),使负载变化时,负载上电压变化不大的方法,称脉宽调制法(Pluse Width Modulation,简称为PWM)[4]。由于电子开关按外加控制脉冲而通断,控制与本身流过的电流、二端所加的电压无关,因此电子开关称为“硬开关”。凡用脉宽调制方式控制电子开关的开关逆变器,称为PWM开关型逆变器。本文是用SPWM专用产生芯片控制电子开关的通断,属硬开关技术。相对应有另一类控制技术“软开关”,它是一种使电子开关在其两端电压为零时导通电流,或使流过电子开关电流为零时关断的控制技术。软开关的开通、关断损耗理想值为零,损耗很小,开关频率可以做到很高。2.2 推挽型电路 各种变换电路按其是否具备电能回馈能力分为非回馈型和回馈型,非回馈型电路按其输出端与输入端是否电气个力分为非隔离型和隔离型。隔离型电路又分为正激型、反激型、半桥型、全桥型和推挽型。带中心抽头变压器原边两组线圈轮流工作的线路一般称为推挽线路,它不太适合离线变换器的应用。推挽型电路的一个突出优点是变压器双边励磁,在输入回路中仅有1个开关的通态压降,而半桥型电路和全桥型电路都有2个,因此在同样的条件下,产生的通态损耗较小,而且不需驱动隔离,驱动电路简单,这对很多输入电压较低的电源十分有利,因此低电压输入类电源应用推挽型电路比较合适。但是功率开关所承受的电压应大于2。 2.2.1 线路结构 图1-1 推挽型电路原理图 推挽型电路的原理图如图1-1所示。主变压器 原边绕组 接成推挽形式,副变绕组 接成全波整流形式。 2.2.2 工作原理 由于驱动电路作用,两个功率开关管、交替导通。当 导通时,加到 上,所有带“.” 端为正。功率开关管 通过变压器耦合作用承受 的电压。副边绕组 “.” 为正,电流流经、L到负载上。原边电流是负载折算至原边的电流及原边电感所定的磁化电流之和。导通期间,原边电流随时间而增加,导通时间由驱动电路决定。关断时,由于原边能量的储存和漏电感的原因,的漏极电压将升高.2.2.2推挽型逆变器的变压器设计 推挽型逆变器设计在整个电源的设计过程中具有最为重要的地位,一旦完成设计,不宜轻易改变,因此设计时对各方面问题考虑周全,避免返工,造成时间和经费的浪费。下面介绍具体设计。变压器是开关电源中的核心元件,许多其他主电路元器件的参数设计都依赖于变压器的参数,因此应该首先进行变压器的设计。高频变压器工作时的电压、电流都不是正弦波,因此其工作状况同工频变压器是很不一样的,设计公式也有所不同。需要设计的参数是电压比、铁心的形式和尺寸、各绕组匝数、导体截面积和绕组结构等,所依据的参数是工作电压、工作电流和工作频率等[5]。另外,变压器兼有储能,限流,隔离的作用.在磁心大小,原边电感,气隙大小,原,副边线圈匝数的选择,以及在磁心内直流成分和交流成分之间的相互影响都应在设计中细致考虑.第三章 基于单片机的控制系统设计 按照设计的要求,基于单片机AT89C52的设计主要实现以下功能:SA828的初始化及控制、ADC0809采样的数据的处理和输出显示电压频率。选用单片机作为主控器件,控制部分的原理框图如下: 图3-1 控制系统原理框图 3.1 系统硬件电路的设计 图3-2为控制部分的电路原理图。电路主要由AT89C52单片机、四位显示及驱动电路、AD采样电路、复位电路等组成。 图3-2 3.1.1 AT89C52单片机 AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8为单片机,片内含8k bytes 的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052善拼引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。[6] 主要性能参数: 与MCS-51产品指令和引脚完全兼容 8k字节可充擦写Flash闪速存储器 1000次擦写周期 全静态操作:0Hz—24MHz 三级加密程序存储器 256×8字节内部RAM 32个可变成I/O口线 3个16位定时计数器 8个中断源 可编程串行UART通道 低功耗空闲和掉电模式 功能特性概述: AT89C52提供以下标准功能:8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两极中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时器/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。引脚功能: Vcc:电源电压 GND:地 P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1口:P1是一个带有内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P1写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。 与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部技术输入(P1.0/T2)和输入(P1.1/T2EX)。 Flash编程和程序校验期间,P1接收低8位地址。 P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。 在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX @DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX @RI指令)时,P2口输出P2锁存器的内容。 Flash编程或校验时,P2亦接收高位地址和一些控制信号。 P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,他们被内部上拉电阻拉高可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流。 P3口出了作为一般的I/O线外,更重要的用途是它的第二功能,如下表: 端口引脚 第二功能 P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2(外中断0)P3.3(外中断1) P3.4 T0(定时/计数器0)P3.5 T1(定时/计数器1) P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通) 此外,P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。 RST:复位输入。当振荡器工作时,RST引脚出现两个周期以上高电平将使单片机复位。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。对于本次设计的引脚使用情况如下: P1口:控制LED数码管8位段码;P3.0,P3.1,P3.4,P3.5:数码管位选通口;XTAL:接晶振;RST:接复位电路;P0: ADC0809的结果输入;SA828的控制字口;P2.0:SA828的片选;P2.7:ADC0809的片选;P3.2:外部中断0.AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8KB的可反复擦写的Flash只读程序存储器和256×8位的随机存取数据存储器(RAM),3个16位定时/计数器、6个中断源、低功耗空闲和掉电方式等特点。器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,可以满足系统要求。系统采用5V电源电压,外接12M晶振。3.1.2显示电路 显示的方法分为动态显示和静态显示。所谓静态显示就是在同一时刻只显示一种字符,其显示方法简单,只需将显示段码送至段码口,并把位控字送至位控口即可。动态显示是利用人眼对视觉的残留效应,采用动态扫描显示的方法。[7]本设计采用动态显示,显示电路采用四位一体共阳极LED数码管,从P1口输出段码,位选控制端接于P3.0,P3.1,P3.4,P3.5。段驱动采用74LS245,位选驱动采用74LS244。硬件连接图如下: 图3-3 显示部分硬件连接图 3.1.3 A/D转换电路 A/D转换器采用集成电路0809完成,0809是8位MOS型A/D转换器。[] 1).主要特性 ① 8路8位A/D转换器,即分辨率8位;② 具有转换起停控制端; ③ 转换时间为100μs; ④ 单个+5V电源供电; ⑤ 模拟输入电压范围0~+5V,不需零点和满刻度校准; ⑥ 工作温度范围为-40~+85摄氏度; ⑦ 低功耗,约15mW。 2).内部结构 ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近寄存器、三态输出锁存器等其它一些电路组成。因此,ADC0809可处理8路模拟量输入,且有三态输出能力,既可与各种微处理器相连,也可单独工作。输入输出与TTL兼容。 图3-4ADC0809内部结构框图 3).外部特性(引脚功能) ADC0809芯片有28条引脚,采用双列直插式封装,如图3-5 所示。下面说明各引脚功能。 IN0~IN7:8路模拟量输入端。 2-1~2-8:8位数字量输出端。 ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。如表所示。 ALE:地址锁存允许信号,输入,高电平有效。图 3-5 ADC0809引脚图 START: A/D转换启动信号,输入,高电平有效。 EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。REF(+)、REF(-):基准电压。Vcc:电源,单一+5V。GND:地。 表3-6 ADDA、ADDB、ADDC真值表 ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。4).AD0809与控制电路的连接如下图: 图 3-7 AD0809的连接电路 3.1.4 SPWM波形电路 由于逆变开关管的开关时间要由载波与调制波的交点来决定。在调制波的频率、幅值和载波的频率这3项参数中.不论哪一项发生变化时,都使得载波与调制波的交点发生变化。因此,在每一次调整时,都要重新计算交点的坐标。显然,单片机的计算能力和速度不足以胜任这项任务。过去通常的作法是:对计算作一些简化,并事先计算出交点坐标.将其制成表格,使用时进行查表调用。但即使这样,单片机的负担也很重。 为了减轻单片机的负担,一些厂商推出了专用于生成三相或单相SPWM波控制信号的大规模集成电路芯片,如HEF4752、SLE4520、SA828、SA838等等。采用这样的集成电路芯片,可以大大地减轻单片机的负担,使单片机可以空出大量的机时用于检测和监控。这里详细介绍SA828三相SPWM波控制芯片的主要特点、原理和编程。3.1.5 SA828主要特点 ⑴.适用于英特尔和摩托罗拉两种总线格式,接口通用性好, 编程,操作简单,方便,快捷。⑵.应用常用的对称的双边采样法产生PWM波形, 波形产生数字化,无时漂,无温漂稳定性好。 ⑶.在外接时钟频率为12.5MHZ时载波频率可高达24KHZ,可实现静音运行。最小脉宽和死区时间通过软件设置完成,既节约了硬件成本,又使修改灵活方便。 调制频率范围宽,精度高(12位),输出正弦波频率可达4KHZ,可实现高频率高精度控制及光滑的变频.。 ⑷.在电路不变的情况下, 通过修改控制暂存器参数,就可改变逆变器性能指标,驱动不同负载或工作于不同工况。 ⑸.可通过改变输出SPWM脉冲的相序实现电机的正反转。 ⑹.独立封锁端可瞬时封锁输出PWM脉冲亦使微处理器防止突然事件的发生。3.1.6 SA828工作原理 SA828是MITEL公司推出的一种专用于三相SPWM信号发生和控制的集成芯片。它既可以单独使用,也可以与大多数型号的单片机接口。该芯片的主要特点为:全数字控制;兼容Intel系列和MOTOROLA系列单片机;输出调制波频率范围0—4kHz;12位调速分辨率;载波频率最高可达24kHz;内部ROM固化波形:可选最小脉宽和延迟时间(死区);可单独调整各相输出以适应不平衡负载。[8] SA828采用28脚的DIP和SOIC封装。其引脚如图3-8所示。各引脚的功能如下:(1)输入类引脚说明 AD0——AD7:地址或数据输入通道。 SET TRIP:通过该引脚,可以快速关断全部SPWM信号输出,高电平有效。 :硬件复位引脚,低电平有效。复位后,寄存器的、、WTE和RST各位为0。CLK:时钟输入端,SA828既可以单独外接时钟,也可以与单片机共用时钟。:片选引脚。 、、ALE:用于“ / ”模式,分别接收写、读、地址锁存指令。INTEL模式下ALE的下降沿传送地址,的上升沿给SA828写数据。在此模式下不用。 R/、AS、DS:用于“R/ ”模式,分别接收读/写、地址、数据指令。MOTOROLA模式下,AS的下降沿传送地址,当R/ 为低电平时,DS的下降沿给SA828写数据(接底电平) (2)输出类引脚说明 图3-8 RPHB、YPHB、BPHB:这些引脚通过驱动电路控制逆变桥的R、Y、B相的下臂开关管。RPHT、YPHT、BPHT:这些引脚通过驱动电路控制逆变桥的R、Y、B相的上臂开关管。 它们都是标准TTL输出.每个输出都有12mA的驱动能力,可直接驱动光偶。 :该引脚输出—个封锁状态。当SETTRIP有效时,为低电平、表示输出已被封锁。它也有12mA的驱动能力,可直接驱动一个LED指示灯。ZPPR、ZPPY、ZPPB:这些引脚输出调制波频率。WSS:该引脚输出采样波形。3.1.7内部结构及工作原理 SA828内部结构如图3-9所示。来自单片机的数据通过总线控制和译码进入初始化寄存器或控制寄存器,它们对相控逻辑电路进行控制。外部时钟输入经分频器分成设定的频率,并生成三角形载波,三角载被与片内ROM中的调制波形进行比较,自动生成SPWM输出脉冲。通过脉冲删除电路,删去比较窄的脉冲(如图3-10所示),因为这样的脉冲不起任何作用,只会增加开关管的损耗。通过脉冲延迟电路生成死区,保证任何桥臂上的两个开关管不会在状态转换期间短路。 图3-9 SA828的内部结构 片内ROM存有正弦波形。寄存器列阵包含3个8位寄存器和2个虚拟寄存器。他的虚拟寄存器R3的写操作结果是R0,R1,R2中的数据写入控制寄存器。虚拟寄存器R4的写操作结果是R0,R1,R2中的数据写入初始化寄存器。各寄存器地址如表3-11所列。 图 3-10 脉冲序列中的窄脉冲 AD2 AD1 AD0 寄存器 功能 0 0 0 R0 暂存数据 0 0 1 R1 暂存数据 0 1 0 R2 暂存数据 0 1 1 R3 传控制数据 1 0 0 R4 传初始化数据 表 3-11 其工作过程可简析如下:由于调制波形关于90度,180度,270度对称,故波形ROM中仅有0∽90度的波形瞬时幅值,采样间隔0.23度, 90度内共384组8位采样值存入ROM中,每个采样值线性的表达正弦波的瞬时值, 通过相位控制逻辑,将它组成0∽360度的完整波形.该调制波与载波比较产生三相六路双极性PWM调制波形.其经脉冲宽度取消电路,将脉冲宽度小于取消时间的脉冲去掉,再经脉冲延时电路引入死区时间,从而保证了在转换瞬间高,低端功率开关不会出现共同导通现象。图3-9中24位初始化暂存寄存器,可用来设置输出波形参数,例如载波频率,最小脉宽,脉冲取消时间计数器置”0” 图3-12 Intel总线时序 等。一经设置好,运行中不允许改变。24位控制寄存器,用来调整改变调制波频率,幅值,输出关闭,过调制选择,开机关机等.上述设置和调整均通过微处理器或微控制器发出指令,数据先存入三个8位暂存寄存器R0,R1,R2中,然后通过R3和R4分别传送给24位初始化寄存器和24位控制寄存器。初始化或调整时,端要置0。SA828由外配的微处理器通过复用MOTEL总线控制,并与外配的微处理器接口,该接口总线有自动适应英特尔和摩托罗拉两种总线格式及工作时序的能力(两种总线的工作时序如图3-12和3-13),在电路启动运行后,当AS/ALE端从低电平变为高电时,内部检测电路锁存DS/ 的状态,若检测结果为高电平则自动进入英特尔模式,若检测结果为低电平,则选择摩托罗拉模式工作,总线连接和定时信息相对所用微处理器而言,这个过程在每次AS/ALE变为高电平时要进行,实际中模式选择由系统自动设定。 图3-13 Motorola总线时序 3.1.8 SA828 初始化寄存器编程 初始化是用来设定与电机和逆变器有关的基本参数。它包括载波频率设定、调制波频率范围设定、脉冲延迟时间设定、最小删除脉宽设定、幅值控制。 初始化编程时,即设定各寄存器内容。下面分别介绍这些内容的设定。[9](1)载波频率设定 载波频率(即三角波频率)越高越好,但频率越高损耗会越大,另外,还受开关管最高频率限制,因此要合理设定。设定字由CFS0--CFS2这3位组成。载波频率 通过下式(3—1)求出。式中K为时钟频率,n值的二进制数即为载波频率设定字,可以取1,2,4,8,16或32。由于K=12MHz,当n=1时,反算得 =23.4375KHz,考虑到(max)=24KHz , <(max)当n=2时,=11.71725KHz ,故n取1,实际 =23.4375KHz。(2)调制波频率范围设定 根据调制频率范围.确定设定字。设定调制波频率范围的目的是在此范围内进行l2位分辨率的细分,这样可以提高控制精度,也就是范围越小.控制精度越高。调制被频率范围设定字是由FRS0—FRS2这3位组成。调制波频率 通过下式(3—2)求得。m值的二进制数即为调制波频率范围设定字。上面已得 =23.4375KHz,若取 =500Hz则m=8.192 ,考虑到调制波的频率为400Hz,则m=8 ,反算得 =488.28Hz。(3)脉冲延迟时间设定 该设定字是由PDY0—PDY5这6位组成。脉冲延迟时间 通过下式(3—3)求得。设脉冲延迟时间 则 =60(4)最小删除脉宽设定 最小删除脉宽设定字是由PDT0—PDT6这7位组成。最小删除脉宽 由下式(3—4)图3-14 延迟前后脉宽关系 求得。考虑到延迟(死区)的因素,在延迟时.通常的做法是在保持原频率不变的基础上,使开关管延迟开通.如图3-7所示.实际输出的脉宽=延迟前的脉宽--延迟时间。由结构图 可知.SA828的工作顺序是先删除最窄脉冲,然后再延迟.所以式(3—4)给出的 应是延迟前的最小删除脉宽。它等于实际输出的最小脉宽加上延迟时间,即 =实际输出的最小脉宽十 ,假设实际输出的最小脉宽=10 那么 =15 则 =180> =128 , =10.67 s 最小脉宽为5.67 s。(5)幅值控制 AC是幅值控制位。当AC=0时,控制寄存器中的R相的幅值就是其他两相的幅值。当AC=l时,控制寄存器中的R、Y、B相分别可以调整各自的幅值,以适应不平衡负载。 初始化寄存器通常在程序初始化时定义。这些参数专用于逆变电路中.因此,在操作期间不应该改变它们。如果一定要修改,可先用控制寄存器中的 来关断SPWM输出,然后再进行修改。 3.1.9 SA828控制寄存器编程 控制寄存器的作用包括调制波频率选择(调速)、调制波幅值选择(调压)、正反转选择、输出禁止位控制、计数器复位控制、软复位控制。控制数据仍然是通过Ro—R2寄存器输入并暂存,当向R3虚拟寄存器写操作时.将这些数据送入控制寄存器。(1)调制波频率选择 调制波频率选择字由PFS0—PFS7这8位组成。通过下式 (3-5)求得 值,它的二进制数即是调制波频率选择字。取 =400Hz , =488.28Hz ,得 =3355.45179(2)调制波幅值选择 通过改变调制波幅值来改变输出电压有效值,达到变频同时变压的目的。输出电压的改变要根据U/f曲线,随频率变化进行相应的变化。调制波幅值是借助于8位幅值选择字(RAMP、YAMP、BAMP)来实现的。每一相都可以通过计算下式 %(3-6)求出A值,它的二进制数即为幅值选择字(即RAMP或YAMP或BAMP)。式中的 就是调压比,注意,初始化寄存器的AC位决定了R相幅值是否代表另二相幅值。= =91.8=92(3)输出禁止位控制 输出禁止位。当 =0时,关断所有SPWM信号输出。(4)计数器复位控制 计数器复位位,当 =0,使内部的相计数器置为0(R相)。(5)软复位控制 RST是软复位位。它与硬复位 有相同的功能。高电平有效。 SPWM波形的产生,选择专用的芯片SA828,如前面所讲,这里不再论述。它和单片机的接口如下图所示: 3.2 系统软件的设计 3.2.1 初始化程序 系统上电时,初始化程序将数据存储区清零。3.2.2 主程序 完成定时器的初始化,开各种中断,循环调用各个子程序。包括电压显示子程序、AD转换子程序、828初始化子程序。主程序流程图见图 程序清单如下: START: SETB IT1;选择INT1为边沿触发方式 SETB EX1;开外中断1 SETB EA;开总控制中断 CLR PX1;外中断1为低优先级 SETB IT0;脉冲下降沿触发外中断0 SETB EX0;开外中断0 MOV TMOD,#01H;T0工作在定时,方式1 SETB PX0;外中断0为高优先级 MOV TH0,#00H MOV TL0,#00H ACALL KAISHI ACALL INCADC AJMP START 3.2.3 SA838初始化及控制子程序 按照单片机与SA828的接线图,P2.0作为SA828的片选控制口,因此SA828的起始地址为FE00H。系统上电复位之后首先对SA828写初始化字和控制字。具体计算如前面所述。流程图如下: 程序清单如下: CLR P2.1;禁止PWM输出 MOV A,#80H;SA828初始化寄存器 MOV DPTR,#0FE00H;SA828地址 MOVX @DPTR,A;给R0写数据 INC DPTR MOV A,#60H MOVX @DPTR,A;给R1写数据 INC DPTR MOV A,#04H MOVX @DPTR,A;给R2写数据 INC DPTR INC DPTR MOVX @DPTR,A;给初始化寄存器R4写数据 MOV A,#1BH;SA828控制寄存器 MOV DPTR,#0FE00H;SA828地址 MOVX @DPTR,A;给R0写数据 INC DPTR MOV A,#2DH MOVX @DPTR,A;给R1写数据 INC DPTR MOV A,#05CH MOVX @DPTR,A;给R2写数据 INC DPTR MOVX @DPTR,A;给控制寄存器R3写数据 SETB P2.1;允许PWM输 单片机对采样到的输出如做PI调节计算转换为电压幅值控制字后,需要重新写入控制字,其方法是相同的。 3.2.4 ADC0809的控制及数据处理子程序 单片机与ADC0809的接线图所示,P2.7作为ADC0809的片选控制口,因此ADC0809的起始地址为7F00H。如图所示,ADC0809的地址选择线接地,固定8路模拟数据输入端重IN-0为电压采样输入端。ADC0809的CLK信号是从AT89C52的ALE端经四分频器74LS74分频后得到的,工作频率为500HZ,转换时间为128us左右,据此设计一个延时时间,延时时间一到,采用查询方式进行数据传送。即用软件测试EOC(P3.1)的状态,若测试结果为1,则转换结束接着进行数据传送,否则等待,直到测试结果为1。因为ADC0809的最大输入电压为5V,其转换结果FFH对应5V。所以FFH对应的输入应大于等于5V,表示输入超过量程。本设计中FFH对应36V,其转换公式为,X=,因此程序中有二进制转换及乘14子程序,除以100处理为小数点固定显示在次低位。另外,考虑到系统存在电磁干扰,采用了中值滤波子程序进行软件抗干扰。中值滤波对于去掉由于偶然因素引起的波动或采样器不稳定而造成的误差所引起的脉动干扰比较有效。中值滤波之后将最优值存于6AH中再进行转换处理。流程图如图下面是程序清单: INCADC: MOV R0,#2CH MOV R2,#03H SAMP: MOV DPTR,#7F00H;AD0809端口地址送DPTR MOV A,#00H;输入通道0选择 MOVX @DPTR,A;启动A/D转换 MOV R7,#0FFH;延时查询方式 DELAY:DJNZ R7,DELAY LOOP1:JB P3.1,T1;查询p3.1是否为1 JNB P3.1,LOOP1 T1:MOVX A,@DPTR;读取从IN0输入的转换结果 MOV @R0,A INC R0 DJNZ R2,SAMP 以下是数字滤波程序流程图及程序清单: FILTER:MOV A,6CH CJNE A,6DH,CMP1 AJMP CMP2 CMP1:JNC CMP2 XCH A,6DH XCH A,6CH CMP2:MOV A6DH CJNE A,6EH,CMP3 MOV 6AH,A CMP3:JC CMP4 MOV 6AH,A CMP4:MOV A,6EH CJNE A,6CH,CMP5 MOV 6AH,A CMP5:JC CMP6 XCH A,6CH CMP6:MOV 6AH,A;滤波结果存于6AH RET 3.2.5 数据处理及电压显示子程序 DISPLAY: MOV A,6AH ACALL L1;十进制转换 ACALL PLAY RET PLAY:;显示程序 MOV A,R5;分离D1 ANL A,#0FH MOV 50H,A MOV A,R5;分离D2 ANL A,#0F0H SWAP A MOV 51H,A MOV A,R4;分离D3 ANL A,#0FH MOV 52H,A MOV A,R4;分离D4 ANL A,#0F0H SWAP A MOV 53H,A PLAY1: CLR P2.6 CLR P2.5 CLR P2.4 CLR P2.3 MOV R1,#50H;显示数据首地址 MOV P1,#0FFH;清除原来的数据 SETB P2.3;显示最低位 MOV A,@R1 MOV DPTR ,#TAB MOVC A,@A+DPTR MOV P1,A LCALL DL1MS;数据显示1ms CLR P2.3 MOV P1,#0FFH INC R1 SETB P2.4;显示次低位 MOV A,@R1 MOV DPTR ,#TAB MOVC A,@A+DPTR ANL A,#7FH;小数固定显示 MOV P1,A LCALL DL1MS CLR P2.4 MOV P1,#0FFH INC R1 SETB P2.5;显示次高位 MOV A,@R1 MOV DPTR ,#TAB MOVC A,@A+DPTR MOV P1,A LCALL DL1MS CLR P2.5 MOV P1,#0FFH INC R1 SETB P2.6;显示最高位 MOV A,@R1 JZ NODISPLAY;若A=0,则不显示 MOV DPTR ,#TAB MOVC A,@A+DPTR MOV P1,A LCALL DL1MS CLR P2.6 MOV P1,#0FFH NODISPLAY: MOV P1,#0FFH AJMP PLAY1 RET L1:CLR C;十进制转换 MOV R5,#00H MOV R4,#00H MOV R3,#08H NEXT1:RLC A MOV R2,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R2 DJNZ R3,NEXT1 RET TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH DL1MS: MOV R6,#14H DL1:MOV R7,#19H DL2:DJNZ R7,DL2 DJNZ R6,DL1 RET 3.2.6 输出频率测试计算及显示子程序部分 ⑴.频率测试计算子程序部分 SA828带有频率输出端口,将其与单片机的中断INT0口相接,如原理图所示。本例中所使用的中断源有2个:T0中断和 中断。中断的功能是计算ZPPR输出的调制波频率。由于调制波频率可能比较低,因此用T0溢出中断来记录一个ZPPR周期中T0溢出的次数,这个溢出次数保存到70H中。这样,在一个 中断间隔里,所用的时间(即ZPPR周期)是3个字节的数(1个字节的T0溢出次数,2个字节的T0值)。因为AT89C52使用12MHZ的时钟频率,一个机器周期是,所以调制波频率的计算公式为: =0F4240H,也是一个3字节的数,因此 是一个3字节除法运算。如果对精度要求不高,的分子分母可以舍掉最低字节来简化运算,这样就成为双字节除法运算。所以,当 中断时,只取TH0,将其存放到71H中除法运算的整数商存放到72H、73H中,小数商存放到75H中,以便频率显示程序中调用。 中断子程序及流程图如下: SUANPIN: CLR EA;关中断 CLR TR0 PUSH ACC;保存现场 PUSH B PUSH DPL PUSH DPH PUSH PSW PUSH 50H PUSH 51H PUSH 52H PUSH 53H PUSH 60H PUSH 61H PUSH 62H PUSH 63H PUSH 6AH SETB PSW.3 MOV 70H,#00H;MOV TL0,#00H;TL0清0 MOV 71H,TH0;取TH0值 MOV TH0,#00H;TH0清0 MOV A,71H;检查除数是否为0 ORL A,70H;不会溢出,高位永远为零 JZ ABC;除数为0则退出 MOV R2,#00H;输入被除数 MOV R3,#00H MOV R4,#0FH MOV R5,#42H MOV R6,70H;输入除数 MOV R7,71H LCALL NDIV;调用双字节除法子程序原来的程序,NDIV:MOV B,#16;双字节无符号数除法子程序;当条件(R2R3)〈(R6R7)满足时,;(R2R3R4R5)/(R6R7)=(R4R5),余数在(R2R3)NDVL1: CLR C MOV A,R5 RLC A MOV R5,A MOV A,R4 RLC A MOV R4,A MOV A,R3 RLC A MOV R3,A XCH A,R2 RLC A XCH A,R2 MOV F0,C CLR C SUBB A,R7 MOV R1,A MOV A,R2 SUBB A,R6 JB F0,NDVM1 JC NDVD1 NDVM1: MOV R2,A MOV A,R1 MOV R3,A INC R5 NDVD1:DJNZ B ,NDVL1 CLR F0 MOV 72H,R4;频率整数部分存于7273H中 MOV 73H,R5;调制波频率整数部分存72H MOV 75H,R2;将调制波频率小数部分(小于100)存75H MOV 70H,#00H;70H清0 ABC:POP 6AH POP 63H POP 62H POP 61H POP 60H POP 53H POP 52H POP 51H POP 50H POP PSW;恢复现场 POP DPH POP DPL POP B POP ACC SETB EA;开中断 SETB TR0 RETI ⑵.频率显示部分 本系统用一个四位一体的LED数码管显示数据,系统初始化后显示的为电压,按频率显示按钮显示频率。利用中断源 显示,它将72H、73H中的频率整数(二进制数)部分先进行二--十转换存于R3R4R5中,根据经验,转换过来的十进制数只有百位,即R3中的值为00,R4中的值为0X。因此将R4R5中的数分离分别在最高位、次高位、次低位显示,并且次低位带有小数点。将75H中的小数部分在最低位显示。至此,频率显示部分完成。 中断程序及流程图如下: DISPLAYF:PUSH ACC;保存现场 PUSH B PUSH DPL PUSH DPH PUSH PSW PUSH 50H PUSH 51H PUSH 52H PUSH 53H PUSH 60H PUSH 61H PUSH 62H PUSH 63H PUSH 6AH SETB PSW.4;使用第二工作寄存区 MOV R6,72H;频率整数部分存欲R6R7中调用双字节十进制转换程序 MOV R7,73H;;ACALL HB2;调用双字节十进制转换程序 HB2:CLR A;BCD码初始化;双字节十进制转换 MOV R3,A MOV R4,A MOV R5,A MOV R2,#10H;转换双字节二进制整数 HB3:MOV A,R7;从高端移出待转换数的一位到CY中 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R5;BCD码带进位自身相加,相当于乘2 ADDC A,R5 DA A;十进制调整 MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R3 ADDC A,R3 MOV R3,A DJNZ R2,HB3 MOV A,75H;频率小数部分在最低位显示 ANL A,#0F0H SWAP A MOV 50H,A MOV A,R5;频率整数部分个位数在次低位显示 ANL A,#0FH CLR CY SUBB A,#07H MOV 51H,A MOV A,R5;频率整数部分十位数在次高位显示 ANL A,#0F0H SWAP A CLR CY SUBB A,#05H MOV 52H,A MOV A,R4;频率整数部分百位数在最高位显示 ANL A,#0FH DEC A MOV 53H,A ACALL PLAY;显示频率 POP 6AH POP 63H POP 62H POP 61H POP 60H POP 53H POP 52H POP 51H POP 50H POP PSW;恢复现场 POP DPH POP DPL POP B POP ACC AJMP DISPLAYF RETI 第四章 联机调试及结果分析 4.1 联机调试情况 系统的调试分为硬件调试和软件调试两个部分。硬件调试包括控制电路的调试和主电路的调试。调试时,应该先调控制部分。首先检查电路的焊接是否正确,然后用万用表测试或通电检测。主电路部分硬件的检测方法同控制部分。硬件检查无误后,软件调试。软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、AD转换子程序、电压显示子程序、频率显示子程序、数字滤波子程序等子程序的编程及调试。 在联机调试前,先用伟福模拟仿真,然后利用爱思G3000在线联机调试。联机调试时出现了下面一些问题: 1).四位一体LED显示管不显示; 2).P1口没有数据输出; 3).AD转换器不工作; 4).SA828的输出波形不正确。解决的办法及处理结果: 1).检查各个数码管的位控端及代码段是否连接完好,给它加的驱动是否正确,以及各个数码管本身是否完好。经检测是我们的驱动连接有问题,重新连接后,显示正常。 2).P1口没有数据输出的原因也是我们的显示驱动出错导致,当驱动错误排除后,P1口数据输出正常。 3).和AD转换器的各个连线都联结正确,我们的焊接技术不好,出现了个别引脚虚焊,虚焊处理后,问题解决。 4).SA828的输出波形下桥臂出现一段脉宽为1us的不正常波形,按照电路设计原理,小于5.67us的波形在脉冲删除电路中是该删除掉的,由于三相下桥臂均输出这种不正常的波形,我们用到了SA828的输出禁止端SETTRIP,把此端接上高电平即可使输出禁止而不影响内部电路的正常工作,但是实验结果还能看到此不正常的波形,若其是内部电路产生,即使不能删除,在输出禁止时理论上应该是能禁止的。又考虑到可能是干扰所至,消除掉可能存在的干扰后依然存在此波形。初次使用这系列的芯片,对其资料也不完全掌握,实验最后,仍留此问题,亟待日后解决。另外,在绞尽脑汁之后,发现一个问题,原来认为不用的芯片端口可以按其功能相应的接高电平或接地,在这样做之后,芯片发烫,断开连接即恢复正常 4.2 实验验证及结果分析 1).1).从SA828的RPHT、PRHB输出的驱动脉冲信号如下图4-1所示 图4-1 PWM输出的上、下桥臂的驱动信号 2).经过TTL驱动电路,加在栅极的驱动电压信号如图4-2所示。图4-2 MOSFET栅极的驱动信号 3).仿真交流输出信号如图4-3所示 图4-3 仿真交流输出信号 4).结果分析 实验室搭建主电路进行实验和调试,获得了较好的实验效果。该系统输出正弦波的频率为400HZ。试验证明整个系统方案结构紧凑,实时性较好。4.3结论 在前面的系统硬件软件设计下,我们在实验室组成实际的线路进行了实验和调试,获得了较为良好的实验效果。该系统输出正弦波合成的频率为400HZ,试验证明整个系统结构紧凑,实时性较以完全单片机软件编程产生SPWM波的方法要好得多,而他的功能又比用HEF4752等纯硬件方法生成的SPWM波的方法完善。综上分析及实验验证,可以得到下面几点结论: 1).SA828时一个高性能的SPWM专用IC,在合适的外围条件的支持下,它可以输出较好的SPWM脉冲信号。 2).以单片机最小系统来完成SA828的外围硬件支持,可以使系统的硬件结构简化,提高可靠性,减小系统成本和体积。 3).文中介绍的以AT89C52最小系统与SA828相结合构成的全数字化SPWM脉冲形成系统,即可解决全软件编程产生SPWM脉冲波的缺陷,又可以弥补纯硬件系统完成SPWM脉冲生成方案的不足,是一种较好的方案。4).文中介绍的SPWM脉冲形成方案,不仅在开关电源的数字化制作方面是一个尝试和创新,而且在直流调速、交流调速、变频电源、电力回收领域,也具有通用性,它应用前景广阔。 电气工程及自动化 基于单片机的风扇速度控制设计 一、综述本课题国内外研究动态,说明选题的依据和意义 单片机因其体积小,抗干扰能力强、而且使用灵活方便,成本低等特点,它的应用范围非常广泛,尤其是他强大的面向控制能力,已深入工业控制、军事装置、家用电器等各个领域,应用前景十分广阔。单片机按照应用的系统结构不同,可分为总线方式和非总线方式。采用总线方式的应用系统多属于较复杂的系统,比如智能仪表、工控系统、检测系统等。非总线方式的应用系统多属于小型控制。按照应用范围的不同,可分为通用型和专用型。 目前我国普遍采用4位、8位或16位,对于单片机还处于低档的应用,而对于那些宏单片机、DSP等高档的应用还是空白。而国外很多公司都推出了自己的单片机系列,如Intel公司推出的MCS-96/196系列,Rockwell公司的6501、6502,日立公司的H8/3048系列等。目前单片机的应用领域有以下四大领域:一是家用电器业。单片机个传统的机械产品结合,构成新型的机、电、仪一体化产品,如洗衣机、电脑空调机等。二是通讯行业。最有代表性的就是手机。三是智能仪表应用。单片机的体积小、成本低、控制力强等特点,使仪器仪表重量大大减轻,又有很高的性价比,如数字式RLC测量仪。四的在计算机外设中的应用。如在接口中采用单片机进行控制管理、数据采集、多路分配管理等。 我国在将来很长的一段时间里,8位单片机还将是主流产品,因为8位单片机很好用,有丰富的功能,现在无论是国内还是国外,都还是以8位为主。4位单片机由于功耗较低,在国内也有一定的市场比例。目前世界各国的单片机发展各有不同。美国单片机的发展趋势主要是从8位到16位和DSP过度,欧洲等国家单片机主要应用于工业,因此仍以8位为主,主要以功能和运行速度的发展为主。我国对于单片机的需要目前主要是家电类等消费品为主,8位单片机有很大的市场分额和发展空间。国内也急需这方面的人才。 尽管单片机的发展迅速,其发展方向不外忽以下几点:一是微型单片化。现在的产品普遍向小型化、轻型化发展,就需要单片机在在原有的多功能、低功耗的前提下,集成更多的元件,如看门狗(Watchdog)、LCD控制器等。随着半导体技术的发展,片上系统(SOC)的发展前景很好。二是低功耗CMOS化。现在单片机的功耗普遍在100mW左右,许多生产厂家采用CMOS工艺,使单片机更适合在电池供电场合,今后也是单片机发展的主要趋势之一。三是大容量、高性能化。随着CPU的发展,单片机的处理数据能力大大提高,内部时序也加以改善,ROM的存储容量也大大提高,又加入了低噪声技术,加强了中断、定时控制。四是在接口方向的发展。现在许多新型单片机的接口,从类型和数量上有了很大的发展,如有些可以直接驱动液晶显示管LCD、有些可以直接输出大电流和高电压等。 21世纪是“数字化”的时代,单片机的发展有着翻天覆地的变化,各种型号、功能的单片机应用于人们生产和生活中的各个领域。单片机的发展逐渐取代了由传统模拟电路作为电机的控制器,因此单片机在家电方面的应用已经十分普遍,比如电风扇、洗衣机、空调等。+电动机是将电能转换成机械能的机电装置。1821年英国科学家法拉第首先提出电动机原理。1834年,德国的雅可比第一个发明了直流电动机。1879年,西门子公司用直流电动机驱动电车。1888年发明家特斯拉发明了交流电动机。1902年瑞典的工程师丹尼尔森首先提出同步电动机构想。至今为止,电动机发展迅速,电机理论、设计及制造工艺得到逐步的完善和提高,广泛应用与现代的各种机械生产领域。如在机械制造工业、轻重型制造工业、运输行业、农业生产等各个领域,电动机以不同的种类和功能发挥着重要的作用。可以这么说,电动机的出现使社会生产力大大提高,促进了社会的发展。 随着时代的进步和科技的发展,电机调速系统在工农业生产、交通运输以及日常生活中起着越来越重要的作用,因此,对电机调速的研究有着积极的意义.长期以来,直流电机被广泛应用于调速系统中,而且一直在调速领域占居主导地位,这主要是因为直流电机不仅调速方便,而且在磁场一定的条件下,转速和电枢电压成正比,转矩容易被控制;同时具有良好的起动性能,能较平滑和经济地调节速度。因此采用直流电机调速可以得到良好的动态特性。由于直流电动机具有优良的起、制动性能,宜与在广泛范围内平滑调速。在轧钢机、矿井卷机、挖掘机、金属切削机床、造纸机、高层电梯等领域中得到广泛应用。近年来交流调速系统发展很快,然而直流控制系统毕竟在理论上和在时间上都比较成熟,而且从反馈闭环控制的角度来看,它又是交流系统的基础,长期以来,由于直流调速系统的性能指标优于交流调速系统。因此,直流调速系统一直在调速系统领域内占重要位置。 选取本课题的意义在于单片机的发展极为迅速,以其独特的结构和性能,渗透到各个领域,产生了极大的影响。研究单片机、学习单片机,是社会发展的必然趋势,单片机有着其广阔的发展空间和社会价值。通过研究用单片机远程发射红外线来控制电动机的转速,从而达到控制风扇速度控制,能使使用者操作起来更加方便。 二、研究的基本内容,拟解决的主要问题: 1、单片机主芯片的选择; 2、电机控制系统设计; 3、遥控器的设计; 4、用数码管显示档位; 5、PWM的产生; 6、按键开关的设计。 三、研究步骤、方法及措施: 1、学校提供硬件材料、有关工具器件和实验制作场所; 2、查阅大量的相关资料和书籍; 3、与同类的论章进行对比,完善自己的设计思路; 4、系统的总体方案设计:发射部分和接收部分; 5、系统硬件电路的设计; 6、系统的软件设计 7、论文的修改及润色。 四、参考文献 [1] 张俊.单片机的发展与应用[J].北京:电子制作,1997:40-50.[2] 於丹.春风化雨芽将萌——谈我国单片机的发展[J].北京:微电脑世界,1998:9-13.[3] 张俊漠.单片机的发展及应用现状[J].北京:电子世界,2001:3-5.[4] 杨靖.用单片机控制的直流电机调速系统[J].广西:机床电器,2008.11: 45-47.[5] 楼然苗.胡佳文.李光飞,等.51系列单片机原理及设计实例[M].北京:高等教育出版社,2004.[6] 频率合成单元作为通信继转站故障诊断系统最关键的部件之一,其重要性可想而知,而传统的通信继转站故障测试仪器中的频率合成系统大都采取DDS+PLL 的频率合成方案[1,2],此类方案由于有 PLL (Phase-Locked Loop,锁相环)换频时间限制,不能适用于高速转换,同时,该方案又没有解决分频器噪声及鉴相噪声在输出端按分频比M呈现20lg M(单位:dB)的附加等[3,4]。为满足对通信继转站故障测试时频率转换、相位噪声性能好的要求,本文拟介绍一种直接数字式频率合成法(Direct Digital Synthesis,DDS)结合C8051F020单片机来实现高速频率合成的方法,其要达到的技术指标为:频率范围为40~100 MHz;频率准确度为±4 Hz,受斜坡FSK(鉴相键控平移)控制等。 1 频率合成器组成与设计确定 1.1 系统硬件组成 由于该故障诊断设备可共用通信继转站中的带通滤波,因此在研发DDS时可略去该部分的设计。故频率合成的组成框图如图1所示。该单元主要由中央处理模块、MAX232通信模块和DDS直接频率合成模块等组成。 用AD9852来实现快速频率转换,由于其内部带有AM(调幅)功能,所以用它来实现信号的换频与射频脉冲的波形成型,以获得小的步进。频率合成系统的控制是由单片机C8051F020来完成的,C8051F020将接收的频率字存入内部存贮器中,通过程序控制定时地从存贮器中取出相应的频率控制字写入AD9852中,从而实现换频。在每一个换频过程中,MCU不断从存贮器中取出幅度控制字,通过若干次送入AD9852中来完成波形成形。DDS输出的换频信号经过继转站的带通滤波器来滤除不需要的频谱分量,再经过大中小功率放大就可发射出来。 1.2 各模块实现 1.2.1 DDS电路设计 本文主要介绍AD9852的一些主要外围电路设计。 (1) 采样时钟电路设计 AD9852的采样时钟要求质量高且相位噪声低,如果时钟信号抖动较大,信噪比容易恶化,很难保证精度。为优化性能,AD9852的采样时钟信号采用差分形式。差分输出可直接耦合到AD9852的REFCLK(69脚)和REFCLKB(68脚)引脚,这两个引脚在片内被偏置,无需外加偏置电路。为了提高时钟信号的差分输入质量,本设计采用了Motorola公司的低压差分接收芯片MC100LVEL16。整个AD9852的采样电路如图2所示。 (2) AD9852的一些引脚电路设计 ① 56脚外电路设计 56脚为两个DAC共用的设置满刻度输出电流的连接端。 DDS的余弦输出驱动余弦DAC(最大为300 MSPS),它的最大输出振幅就是由该引脚上的DAC RSET设定的,RSET的计算公式为: 式中IOUT的单位为A。 DAC的输出满刻度电流为20 mA,因此无论怎样,一个额定10 mA的输出电流总可以提供最好的无失真的动态范围SFDR(Spurious-Free-Dynamic-Range)性能,这样便可确定RSET的大小: 因此,应在56脚接上一个大小约为4 kΩ的电阻。 ② 余弦DAC电流输出对应脚的设计 余弦DAC电流输出有两路,它们分别对应于48(IOUT1)、49(IOUT1B)脚和52(IOUT2)、51(IOUT2B)。为了防止DAC的电压输出超出DAC的最大电压输出(-0.5~+1 V)而导致过多的DAC失真或可能永久性损坏,以获得到最好的SFDR,本文在设计DAC的两路输出时采用了相同的配置:给52和48脚各配置了一个50 Ω的负载电阻,给51和49脚也各配置了一个25 Ω的负载电阻,以限制DAC输出电压,使其在-0.5~1 V的范围内摆动。 (3) 电源部分 由于AD9852在正常工作时, 电流消耗可达500 mA,为此需考虑用独立的电源给该器件供电。电源如图3所示。由于电源的高频分量容易产生辐射,所以在靠近AD9852的电源输出端,放置0.1 μF和10 μF的去耦电容。 在使用中,为了减少DDS的功耗,可以关闭其内部的一些不用功能模块,例如AD9852中的高速比较器和控制D/A转换器等。 1.2.2 MCU模块设计 频率合成系统的控制是由C8051F020来完成的,主要由串口通信、复位、电源及电平匹配电路构成[5],限于篇幅,在这里不再具体讨论,只就C8051F020和AD9852之间的控制线及数据线的设置和工作原理做说明如下。 C8051F020的低8位数据线、低6位地址线分别连接到AD9852的数据线D7~D0与地址线A5~A0上,并通过其读写信号控制对AD9852的读写操作。C8051F020的一个AL1M引脚P2.2产生复位信号来复位AD9852。AD9852的I/O数据更新由C8051F020的FDATA引脚提供,便于控制时序。另外,在AD9852与MCU之间还联接了双向I/O更新时钟UD_CLK、串/并编程选择PMODE、余弦DAC输出DRAMP等,受单片机控制。 2 软件设计 由于AD9852的各种频率输出均受MCU的控制,因此DDS的频率合成程序主要包括:串口通信程序、MCU进行初始化、AD9852初始化、斜坡速率时钟、dds_fsk、单一频点(发射机测试用)、产生主复位时钟、电源睡眠、产生写时钟脉冲、串口接收中断、过滤非包头数字等。其主流程图如图4所示。 在系统接到上电复位信号后,可依次向CFR(控制寄存器)、FTW等写控制字,然后等待脉冲展宽信号的到来。脉冲展宽信号为外部激励信号,上升沿有效。当检测到一个上升沿之后,系统将发出一个UD CLK信号(UD CLK信号的作用是将写入寄存器的数据导入DDS内核,同时使DDS按照新的配置开始工作),同时计数器开始计数并输出宽度为20 μs的线性调频信号,同时对地址为0x04的寄存器进行操作,以将Bit4置为高电平,并使相位累加器的清零位有效。计数器计满后会发出一个UD CLK信号,由于此时相位累加器清零位有效,此时相位累加器被清零,与此同时停止输出线性调频信号,然后继续对地址为0x04的寄存器进行操作,同时也将Bit4置为低电平,并使相位累加器清零位无效,此时如果接收到UD CLK信号,则线性调频信号重新输出。至此,系统将进入等待状态,以等待脉冲展宽信号的到来,这样依次往复,即可实现脉冲线性调频信号的输出。 由于C8051F020内部含有四个定时器[6],可以很方便地使用它来更新AD9852的频率控制字。定时器的操作将采用查询定时器中断标志位的方式。 对DDS程序本设计采用Keil C语言进行编写。 3 性能测试 本测试的目的是检查AD9852在MCU控制下的频率合成情况及对MCU编程的正确性。方法是将泰克(Tek)的正负电极分别挂在测试脚上,以此来观察实验结果。在串口调试助手上从40~100 MHz间随机改变所要合成的工作频点,频率间隔以25 kHz的整数倍递增或递减。 AD9852可实现扫描和单音工作方式(扫描方式没有使用上的速度限制;单音工作方式器件产生一个单一的输出频率)。因此,对这两种方式分别进行测试。 3.1 扫描工作方式 为便于观察,下面以5 MHz为扫描半径,随机对49.975 MHz,70 MHz,87.975 MHz这三个频点进行合成,它们的合成频谱图分别如图5~图7所示。其合成结果应是以主频点为中心轴,以5 MHz为最大半径,在主频点左右来回扫描。从频谱图可看出,频率合成的精度十分理想,但杂波较多、幅值小,这是由器件本身的缺陷造成的。 3.2 单音工作方式 对单音工作方式频率合成的检测,主要是检测器件的合成精度。根据设计要求,其合成频率的误差δ应满足-4 Hz≤δ≤4 Hz。为使检测具有代表性,以随机方式设置频点,频点间的间隔为25 kHz的整数倍。下面随机以5个频点的测量数据来分析器件的合成误差,如表1所示。 从表1可看出,单频点测量各频点的实测值误差均在-4 Hz≤δ≤4 Hz内,满足设计要求。 4 结 语 通过以上测试结果可以看出,该合成器的频率范围、频率步进、输出幅度、频谱纯度等基本指标均能满足设计通信继转站故障诊断系统的要求。其采用的单片机(C8051F020)与DDS(AD9852)器件相结合的方法来实现频率合成,整个系统外围元件较少,调试方便,软件工作量不是很大,为移动测控技术的发展探索了一条新的技术途径。 参考文献 [1]梅文华.跳频通信[M].北京:国防工业出版社,2005. [2]SHANNON C E.A mathematical theory of communication[J].Bell System Technical Journal,1948(27):379-423,623-656. [3]MORTEZAPOUR S,LEE EDWARD K F.A low powerquadrature direct digital frequency synthesizer using non-lin-ear resistor string DACs[C]//Proc.of the 24th Solid-StateCircuits Conference.Netherlands:ESSCIRC,1998:78-92. [4]NICHOLAS H T,Li H Samue.A 150MHz direct digitalfrequency synthesizer in 1.25um CMOS with-90dBc spuri-ous response[J].IEEE Solid-State Circuits,1991(26):1959-1969. [5]桂玲,向诚.一种高速测频系统的开发[J].中南林业科技大学学报,2007,27(3):91-94. 关键词:温度测量DS18820AT89C51单片机LM016L液晶模块 中图分类号:TP2文献标识码:A文章编号:1007-3973(2010)012-084-02 近年来单片机发展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃兴起,单片机的应用已经渗透到电力、冶金、化工、建材、机械、食品、石油等各个行业。温度控制系统在国内各行各业的应用虽然已经十分广泛,传统的温度控制方式,主要缺点是温度波动范围大,不能满足高精度,高速度的控制要求。本文将介绍一种基于单片机控制的数字温度计,具有体积小、可靠性高、抗干扰能力强和使用方便等独特优点,在数字、智能化方面有广泛的用途。 1系统硬件构成 本次设计主要由单片机、测温模块、显示模块、报警模块、按键模块、复位电路和晶振电路构成。利用单片机控制温度传感器进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。该系统扩展性非常强,它可以在设计中加入时钟芯片以获取时间数据,在数据处理同时显示时间,并且可以对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过串口与计算机进行串口通信,方便的采集和整理时间温度数据。 2关键硬件设计 2.1单片机的选择 单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。 80C51有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定nO/计数器。80C51的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(mm)组成。 2.2温度传感器 DALLAS最新单线数字温度传感器DS18820是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。温度测量范围为-55~+125摄氏度,可编程为9位~12位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18820可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18820通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。 DS18820可以采用两种方式供电,一种是采用电源供电方式,此时DS18820的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图2所示单片机端口接单线总线,为保证在有效的DS18820时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18820处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。 2.3LCD液晶显示 显示器是人与机器沟通的重要界面,本文采用LM016L做为显示屏。LM016L液晶模块采用HD44780控制器,HD44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,HD44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数mm(DDmm),字符发生器ROMA(cGOROM)字符发生器mm(CGmm),地址计数器mm(Ac)。IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDmm和CGmm,或者暂存从DDmm和CGmm读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种。 如图3所示,用89C51的P2口作为数据线,用P3.2、P3.1、P3.0分别作为LCD的E、R/W、RS。其中E是下降沿触发的片选信号,R/W是读写信号,RS是寄存器选择信号本模块设计要点如下:显示模块初始化:首先清屏,再设置接口数据位为8位,显示行数为1行,字型为5~7点阵,然后设置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位。向LCD的显示缓冲区中送字符,程序中采用2个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示,首先取一个要显示的字符或数据送到LCD的显示缓冲区,程序延时2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。 2.4串口通讯模块 80C51内部已集成通信接口URT,只需扩展一片MAX232芯片将输出信号转换成RS-232协议规定的电平标准,MAX232是一种双组驱动器,接收器,每个接收器将EIA/TIA-232-E电平输入转换为5V TTL/CMOS电平。·每个驱动器将TTL/CMOS输入电平转换为EIA/TIA-232-E电平。即EIA接口,就是把5V转换为-8V到*15V电位0V转换为8V到15V再经RXD输出,接收时由RXD输入,把-8V到-15V电位转换为5V,8V到15V转换为OV。MAX232的工作电压只需5V,内部有振荡电路产生正负9V电位。 3软件程序设计 从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。主程序流程见图4。 4结论 【基于单片机的频率计设计】推荐阅读: 基于单片机的毕业设计06-25 基于51单片机的智能小车设计08-31 基于51单片机恒压供水系统设计06-27 基于单片机的数字PID控制直流电机PWM调压调速器系统09-12 单片机课程设计实验06-23 51单片机课程设计作业08-11 《单片机与外围电路设计》课程设计大纲10-27 单片机设计实训报告08-08 基于solidworks的设计11-182.基于单片机的频率计设计 篇二
3.基于单片机的数字秒表设计 篇三
4.基于单片机的频率计设计 篇四
5.基于单片机的逆变电源系统设计 篇五
6.基于单片机的频率计设计 篇六
7.基于单片机的频率计设计 篇七
8.基于单片机的数字温度计设计 篇八