当前位置:文档之家› 基于某单片机正弦波有效值地测量

基于某单片机正弦波有效值地测量

基于某单片机正弦波有效值地测量
基于某单片机正弦波有效值地测量

基于单片机正弦波有效值的测量

一.简介

本作品以单片机STC12C5A60S2为主控芯片并以此为基础,通过二极管1N5819实现半波整流,使用单片机内部自带10位AD对整流后的输入信号进行采样,从而实现对峰值的检测;同时通过运放LM837对输入信号进行放大,之后通过施密特触发器,将原始信号整形成可被单片机识别的标准脉冲波形,之后配合内部计数器(定时器)达到测量其频率的目的;这样,整流和AD采样实现对输入信号峰值的检测;通过放大、整形实现对输入信号频率的检测。

二.基本功能与技术指标要求

(1)输入交流电压:1mV~50V,分五档:

①1mV~20mV,②20mV~200mV,③200mV~2V,④2V~20V,⑤20v~50V。

(2)正弦频率;1Hz~100kHz;

(3)检测误差:≤2%;

(4)具有检测启动按钮和停止按钮,按下启动按钮开始检测,按下停止按钮停止检测;

(5)显示方式:数字显示当前检测的有效是,在停止检测状态下,显示最后一次检测到的有效值;

(6)显示:LCD,显示分辨率:每档满量程的0.1%;

三.理论分析

本文要求输入交流信号,通过电路测量其峰值,频率,有效值以

及平均值,因为输入的交流信号为模拟信号,而一般处理数据使用的主控芯片单片机处理的是数字信号,所以我们选择使用数模转换器AD(Analog to Digital Converter)将输入的模拟信号转换为数字信号,并进行采样;由于要求输入交流信号电压峰峰值Vpp为

50mV~10V,所以如果我们采用AD为8位,则最小采样精度为

,因此会产生78.4%的误差,并且题目要求输入交流信号的频率范围为40Hz~50kHz,所以为了保证对高频率信号的单周期内采样个数,我们需要选择尽量高速度的AD;

因此我们选用使用单片机STC12C5A60S2,其内部自带AD为8路10位最高速度可达到250KHz,所以我们可以将最小采样精度缩小到

,并且在输入交流信号频率最大时(50KHz)在单个周期内可采集5个点,因此可保证测量精度。

由于该AD只能接受0~5V的模拟信号输入,所以当我们直接输入一个双极性信号时可能损坏AD,因此当信号进入AD之前我们要进行半波整流,为此我们设计了整流电路,在交流信号通过整流电路输入AD 后,由AD实时输出对应模拟信号大小的二进制数,并存入变量MAX中,随着信号的不断输入MAX中只保存AD输出过的最大值,这样既可测出

输入信号的峰值;由交流信号有效值表达式可知检波器应当首先把输入的瞬时电压平方, 然后在一定平均时间内取平

均值再开方。即可得到交流信号的有效值,然后通过比较峰值和有效

值的关系即可知道该交流信号的波形;由于要检测交流信号的频率,所以我们使用单片机内部定时器和计数器,而计数器只能由上升沿或是下降沿触发,所以我们想通过施密特触发器将输入交流信号变为高低电平,以便检测其频率,而施密特触发器CD40106在常温5V供电下门限电压=1.4V,而输入交流信号的峰值最小时为25mV,所以不能保证输入信号为正的时候施密特触发器就能发生跳变,因此我们要对输入交流信号进行放大,为此我们设计了放大电路。四.电路设计

1.电源电路的设计

本次实验我们采用+5V,—5V,+12V,—12V的电源,故采用了7805,7905,7812,7912这四块芯片组成电源电路对作品进行供电。如图一所示:

图一

经过测量实际输出电压为:+5.12V -5.06V +12.67V -12.02V

2.分档设计

由于直接对信号测量时,对小信号的测量产生很大的误差,为了更有效的利用单片机的资源,故要对待测信号进行分档处理,但在实际运行中,由于进入放大器之前存在大量电阻产生了很多的噪声干扰,使输出波形严重失真,不能有效的利用,故我们舍弃了该部分的电路。

3.整流电路的设计

我们使用整流二极管5819实现半波整流,但通过此电路输出波形会出现一个负电压,因此在此基础上,我们在二极管后加了一个上拉电阻,实现最大程度的消除输入波形的负电压,使其在单片机STC12C5A60S2内部AD的可接收信号范围内(0-5V)。输入信号经过整流后进入AD,由AD输出10位数字信号,再有单片机进行处理,得出信号的有效值。电路如图二所示:

图二

在实际的测试中,证明该方案可行,能够实现对信号的半波整流处理。

4.正弦波转方波电路设计

在该电路的设计中,我们一开始采用555芯片把正弦波转换为方波,但在实际的测试中发现555只能对高于6V的信号才能使正弦波转换为放波,与我们实习要求不符合,故舍弃了该方案。在老师的指导下,我们采用了滞回比较器来产生方波。本方案检测输入信号频率的核心电路,信号通过由三个运放LM324组成的运放电路后放大100倍,然后输入施密特触发器使其波形变为高低电平,将此波形输入到单片机主控芯片,利用单片机内部的计数器和定时器完成对频率的测量。大部分采用运放LM324构成放大100倍电路,位于图下方由5V电源供电的运放可以产生一个2.5V的直流电压,将此2.5V的直流电压输入到第一级运放后,会使输入的交流信号上偏2.5V,变为0-5V,再经过100000pF的电容C3滤掉被放大的噪声以及2.5V直流后,变为-2.5—+2.5的交流信号,之后进入二级放大;

如图所示第二级运放在加入+2.5V直流电压后输出为0—5V的交流信号,至此外加交流信号已被放大100倍;在外加交流信号被放大100倍之后进入施密特触发器CD40106,该触发器在常温5V供电下门限电压 =1.4V ,输出高电平,低电平,此部分电路输出即为这个高低电平。电路如图三所示:

图三

在实际的检测中发现放大器并不能将信号放大100倍,故幅值较小的信号不能正常显示频率,只要当信号的峰峰值大于1.5V时才能使单片机正常显示信号的频率。

5.单片机电路

采用STC12C5A60S2单片机,作为整个系统的控制器,控制各个模块协调工作。运用其内部集成的一个AD作为数模转换器。如图四所示

图四

6.系统整体电路图如图五所示

图五

四.软件设计

AD流程图如图六图七所示

图六

图七

1.正弦波有效值的测量方法

工频正弦电压信号

)2sin(2)2sin()(?π?π+=+=ft U ft U t u m

t

频率f 和初相位角ψ已知,且ψ=0,现以t=0时可作为基准时间,并在t=0时刻开始进行等间隔采样,共得到正弦波u(t)的N 个测量值(采样数据)u(0),u(1),……,u(N-1),希望利用这N 个测量值来计算正弦波的幅值Um (有效值U )。

设采样周期为T S ,如果不存在噪音,且测量无偏差,则有

0)0sin()0(==m U u )2sin()0(S m T f U u ??=π

……

)2sin()(S m T K f U k u ???=π

……

))1(2sin()1(S m T N f U N u ?-??=-π

我们可以设法利用测量值求解出正弦波参数。

实际上,我们的测量存在误差,同时信号存在噪音,因此,对每一个测量信号u(k),它与对应时刻t=k ·T S 的正弦波)2sin()(ft U t u m π=的值)2sin()(s m T k f U t u ???=π存在一个误差)(k e ,其中k=0,1,…,N-1。定义

)()2sin()(k u T k f U k e S m -???=π

为了利用N 个测量值来尽可能准确的计算正弦波幅值Um ,我们定义指标函数为:

∑∑-=-=-????==1

2102

)]()2sin([)(21)(N k s m N k m k u T k f U k e U πε

它是频率f ,幅值Um ,初相位角ψ的函数。我们的目的就是求频率f ,幅值Um ,初相位角ψ使得目标函数ε最小。为此,令

)

1(0

)2sin()()2(sin )}2sin()]()2sin({[)(1

1

2

1

0-------------------------------------------------=????-????=????-????=??∑∑∑-=-=-=N k s N k s m N k s S m m m T k f k u T k f U T k f k u T k f U U U ππππε可以得到正弦波的幅值

∑∑-=-=???????=

1

2

1

0)

2(sin

)

2sin()(N k s N k s

m T k f T k f k u U ππ

为了与正弦波的真正幅值Um 表示上的区别,用U mC 表示利用N 个采样数据获得的正弦波幅值计算值,既

)2()

2(sin

)

2sin()(1

2

1

∑∑-=-=???????=

N k s N k s

mC T k f T k f k u U ππ

对于f ≈50Hz(以前面的测量值为准,这里仅为举例),选择采样周期T S ≈20/200=0.1ms=100us ,既每个周期采样200点(每半个周波100次采样),

199

,...,1,0)

10sin()2sin(=?=???k k T k f S ππ

是确定的(可以预先求出,存于sin 表中),sin 2(2π·f ·k ·T S )同样作为常数表,而且

C T k f N k s =???∑-=1

2

)2(sin

π

本身是一个常数,因此公式(2)变为

)3()

2sin()(1

C

T k f k u U N k s

mC ∑-=????=

π

当采样周期很小时,数值积分系数C 可以用

)4()

()(sin 1

20

2t d t T C S ωωπ

??=

来替代(可以认为C 是一个周期类的数值积分,当采样周期很小时,就用积分项来表示)。

就可利用N 个等间隔测量值计算出正弦信号的峰值Um 。

正弦波的有效值与峰值的关系

)5(2

mC

C U U

半波绝对值电路:

在待测交流信号的正半波,输出待测信号送AD 变换电路,在待测信号的负半波,输出0.

正半波时,Px.y=0,单片机利用该信号识别是正半波信号,进行AD 转换,获得N 个采样值。在Px.y=1时,单片机暂停AD 变换,利用正半波获得的N 个检测信号计算正弦波的有效值U ,频率f 。 2.数据测量 幅值的测量

表1 频率的测量

表2

3.数据分析

由上图可知在输入信号vpp在0.7v到5v的区域内,实验作品的误差较小能够实现有效值的测量,当频率在100Hz到40KHz时,在误差允许范围内,作品基本能完成对该信号的准确测量。

4.软件部分代码:

#include

#include

#define FOSC 12000000L

#define BAUD 9600

typedef unsigned char BYTE;

typedef unsigned int WORD;

sbit LCM_E=P2^5;//定义接口

sbit LCM_RW=P2^6;

sbit LCM_RS=P2^7;

sfr ADC_CONTR = 0xBC;

sfr ADC_RES = 0xBD;

sfr ADC_LOW2 = 0xBE;

sfr P1ASF = 0x9D;

sfr AUXR = 0x8e;

#define ADC_POWER 0x80

#define ADC_FLAG 0x10

#define ADC_START 0x08

#define ADC_SPEEDLL 0x00

#define ADC_SPEEDL 0x20

#define ADC_SPEEDH 0x40

#define ADC_SPEEDHH 0x60

#define LCM_Data P0//数据接口

void InitUart();

void SendData(BYTE dat);

void Delay(unsigned int n);

void IO_ADinit() ;

void ADC_Power_On() ;

void get_ad_result() ;

void ADCONVERT() ;

void WriteDataLCM(BYTE WDLCM);

void WriteCommandLCM(BYTE WCLCM,BuysC);

BYTE ReadDataLCM(void);

BYTE ReadStatusLCM(void);

unsigned int GetADCResult(BYTE ch);

void LCMInit(void);

void DisplayOneChar(BYTE X, BYTE Y, BYTE DData);

void DisplayListChar(BYTE X, BYTE Y, BYTE code *DData); void Delay5Ms(void);

void Delay400Ms(void);

void Disp_number(unsigned int num,BYTE n);

void ShowResult(BYTE ch);

unsigned int GetADCResult(BYTE a);

unsigned int data_max = 0;

unsigned long data_max1,count =0;

unsigned int data_change = 150;//0.7V

unsigned char code VP[4]={"Amp:"},Freq[5]={"Freq:"};

unsigned int Counter = 0;

unsigned int data_last = 0;BYTE ch = 0;

unsigned int Frequency = 0;

unsigned int nn =0,flag = 0,flag1 = 0,nn1=0;

unsigned int PrintFre[5] ;

unsigned int Print[4];

unsigned int number[4];

unsigned int D;

void main()

{

unsigned int n=0;

Delay400Ms();//启动等待,等LCM讲入工作状态

LCMInit();//LCM初始化

Delay5Ms();//延时片刻(可不要)

ET1 = 1;

EA=1;

InitUart();

TMOD = 0x15;//均为16位计数器

TH0 = 0x00;

TL0 = 0x00;

TH1 = 0x3C;

TL1 = 0xAF;

TCON = 0x50;//T1,T0均工作,t1做定时器,t0做计数器;

while(1)

{

ADCONVERT();

n++;

if(n>10000){data_max=0;n=0;}

}

}

void To_interrupt(void)interrupt 3 using 1

{

int i ,j;

unsigned int Change1,Print[4];

unsigned long int Change2;

TH1 = 0x3C;

TL1 = 0xAF;

Counter = Counter++;

if(Counter == 20)

{

Frequency = (TH0<<8)+TL0;//读取此时计数器0的读数

if(Frequency>=2000)Change1 = (Frequency/100)*92;

else if (Frequency>=200)Change1 = ((Frequency/10)*92)/10;

else Change1 = (Frequency*97)/100;

for( i=0;i<5;i++)

{

PrintFre[i] = Change1 % 10;

Change1 = Change1 / 10;

}

for(i=4;i>=0;i--)

{

if(i>0)DisplayOneChar(4-i,0,PrintFre[i]+48);

else{DisplayOneChar(4-i,0,PrintFre[i]+48);

DisplayListChar(5-i,0,"Hz");

}

}

Change2 = data_max*50;

Change2 = Change2/10/1.414;

for(j=0;j<=3;j++)

{

Print[j] = Change2 % 10;

Change2 = Change2 / 10;

}

for(j=3;j>=0;j--)

{

if(j>0) DisplayOneChar(10-j,0,Print[j]+48);

else { DisplayOneChar(10-j,0,Print[j]+48);

DisplayListChar(11-j,0,"mV");

}

}

TH1 = 0x3C;

TL1 = 0xAF;

TH0 = 0xFF;

TL0 = 0xFC;

Counter = 0;

}

}

void IO_ADinit()

{

ADC_CONTR=0xe0; //设置P1.0为输入AD转换口

_nop_(); //ADC_CONTR需要四个指令延时

_nop_();

_nop_();

_nop_();

}

void ADC_Power_On()

{

ADC_CONTR|=0x80;

_nop_();

_nop_();

_nop_();

_nop_();

}

void get_ad_result()

{

unsigned int q=0,ad_average_result;

ADC_RES=0;

ADC_LOW2=0;

ADC_CONTR|=0x08;

while(!(ADC_FLAG&ADC_CONTR)) ;

ADC_CONTR&=0xE7;

ad_average_result=(ADC_RES<<2)+ADC_LOW2;

if(data_max

void ADCONVERT()

{

ADC_Power_On();

IO_ADinit();

get_ad_result();

}

void InitUART()

{

SCON = 0x5a;

PCON|= 0x80;

}

void SendData(BYTE dat)

{

while(!TI);

TI = 0; SBUF = dat;

}

void Delay(unsigned int i)

{

unsigned char j;

for(i; i > 0; i--)

for(j = 200; j > 0; j--) ;

}

void WriteDataLCM(BYTE WDLCM)

{

ReadStatusLCM(); //检测忙

LCM_Data = WDLCM;

LCM_E = 0;

LCM_RS = 1;

LCM_RW = 0;

LCM_E = 0; //若晶振速度太高可以在这后加小的延时

LCM_E = 1;

LCM_E = 0;

}

void WriteCommandLCM(BYTE WCLCM,BuysC) //BuysC为0时忽略忙检测{

if (BuysC) ReadStatusLCM(); //根据需要检测忙

LCM_Data = WCLCM;

LCM_E = 0;

LCM_RS = 0;

LCM_RW = 0;

LCM_E = 1;

LCM_E = 0;

}

BYTE ReadDataLCM(void)

{

LCM_E = 0;

LCM_RS = 1;

LCM_RW = 1;

LCM_E = 1;

LCM_E = 0;

return(LCM_Data);

}

BYTE ReadStatusLCM(void)

{

LCM_Data = 0xFF;

LCM_E = 0;

LCM_RS = 0;

LCM_RW = 1;

LCM_E = 1;

LCM_E = 0;

while (LCM_Data & 0x80) //检测忙信号

{ LCM_E=0;

LCM_E=1;

}

return(LCM_Data);

}

void LCMInit(void) //LCM初始化

{

LCM_Data = 0;

WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号

Delay5Ms();

WriteCommandLCM(0x38,0);

Delay5Ms();

WriteCommandLCM(0x38,0);

Delay5Ms();

WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号WriteCommandLCM(0x08,1); //关闭显示

WriteCommandLCM(0x01,1); //显示清屏

WriteCommandLCM(0x06,1); // 显示光标移动设置WriteCommandLCM(0x0C,1); // 显示开及光标设置

}

void DisplayOneChar(BYTE X, BYTE Y, BYTE DData)

{

Y &= 0x1;

X &= 0xF; //限制X不能大于15,Y不能大于1

if (Y) X |= 0x40; //当要显示第二行时地址码 0x40;

X += 0x80; // 算出指令码

WriteCommandLCM(X, 0); //这里不检测忙信号,发送地址码WriteDataLCM(DData);

}

单片机课程设计产生三角波、正弦波、方波

STC89C51单片机产生正弦波、方波、三角波LED显示频率源程序 #include #include #define uchar unsigned char #define uint unsignedint sbit LATCH1=P2^6;//定义锁存使能端口段锁存 sbit LATCH2=P2^7;// 位锁存 unsigned char TempData[8]; //存储显示值的全局变量 unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9 unsigned char code DuanMa2[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};// 显示段码值0~9 unsigned char code DuanMa1[3]={0x77,0x7c,0x39}; unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码 #define DataPort P0 sbitkeyA=P3^3; sbitkeyB=P3^4; sbitkeyC=P3^5; sbitwc=P1^0; sbitscl=P1^1; sbitsda=P1^2; sbit scl1=P1^3; sbit sda1=P1^4; sbit p5=P1^5; sbit p6=P1^6; sbit p7=P1^7; uintsign,ad; uchar temp[10], temp1[3];//定义显示区域临时存储数组

基于单片机正弦信发生器












专业班级:
学生姓名:
指导教师(签名):
一、课程设计(论文)题目
正弦波信号发生器设计
二、本次课程设计(论文)应达到的目的
本次课程设计是自动化专业学生在学习了《单片机原理及应用》课程 及《模拟电子线路》、《数字电子线路》等专业基础课程之后进行的一次综 合训练,其主要目的是加深学生对单片机软硬件技术和相关理论知识的理 解,进一步熟悉 51 单片机系统设计的基本理论、方法和技能;掌握工程 应用的基本内容和要求,力争做到理论与实际的统一;同时培养学生分析 问题、解决问题的能力和独立完成系统设计的能力,并按要求编写相关的 技术文档和设计报告等。
三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技 术参数、设计要求等)
1.设计内容
(1)选择 51 单片机,晶振采用 12MHz。
(2)设计一个能产生 0 至 50HZ 正弦波信号。通过 0832D/A 芯片完成 数模转换。

(3)频率值由键盘输入。 (4)将频率值由 LED 数码管上显示(两位)。 2.设计要求 (1)按照任务书的要求完成系统分析及方案设计。 (2)完成硬件原理图的设计,并选择相关元器件。 (3)完成控制软件流程图的设计,编写相应的单片机控制程序。 (4)撰写设计报告。 四、应收集的资料及主要参考文献: 1.李建忠.单片机原理及应用.西安电子科技大学出版社,2008 2.杨居义.单片机课程设计指导.清华大学出版社,2009 3.李海滨等.单片机技术课程设计与项目实例.中国电力出版社,2009 以及与 51 系列单片机相关的文献及教材。 五、审核批准意见
教研室主任(签字) 正弦信号发生器设计方案框图

正弦交流电的有效值

非正弦交流电有效值的计算 交变电流的大小和方向随时间作周期性变化。为方便研究交变电流的特性,根据电流的热效应引入了有效值这一物理量。 定义:若某一交流电与另一直流电在相同时间内通过同一电阻产生相等的热量,则这一直流电的电压、电流的数值分别是该交流电的电压、电流的有效值。 教材中给出了正弦交流电的有效值I与最大值的关系,那么非正 弦交流电的有效值又该如何求解呢?其方法是从定义出发,根据热效应求解。 例1. 如图1所示的交变电流,周期为T,试计算其有效值I。 图1 分析:由图1可知,该交变电流在每个周期T内都可看作两个阶段的直流电 流:前中,,后中,。在一个周期中,该交变电流在电阻R上产生的热量为: ① 设该交变电流的有效值为I,则上述热量 ② 联立①、②两式,可得有效值为 例2. 如图2所示表示一交变电流随时间变化的图象,其中,从t=0开始的每个时间内的图象均为半个周期的正弦曲线。求此交变电流的有效值。 图2 分析:此题所给交变电流虽然正负半周的最大值不同,但在任意一个周期内,前半周期和后半周期的有效值是可以求的,分别为

设所求交变电流的有效值为I,根据有效值的定义,选择一个周期的时间,利用在相同时间内通过相同的电阻所产生的热量相等,由焦耳定律得 即 解得 例3. 求如图3所示的交变电流的有效值,其中每个周期的后半周期的图象为半个周期的正弦曲线。 图3 分析:从t=0开始的任意一个周期内,前半周期是大小不变的直流电,为 ,后半周期是有效值为的交变电流。 设所求交变电流的有效值为I,根据有效值的定义,选择一个周期的时间,利用在相同时间内通过相同的电阻所产生的热量相等,由焦耳定律得 即 解得 例4. 如图4实线所示的交变电流,最大值为,周期为T,则下列有关该交变电流的有效值I,判断正确的是() 图4

基于51单片机的波形发生器的设计讲解

目录 1 引言 (1) 1.1 题目要求及分析 (1) 1.1.1 示意图 (1) 1.2 设计要求 (1) 2 波形发生器系统设计方案 (2) 2.1 方案的设计思路 (2) 2.2 设计框图及系统介绍 (2) 2.3 选择合适的设计方案 (2) 3 主要硬件电路及器件介绍 (4) 3.1 80C51单片机 (4) 3.2 DAC0832 (5) 3.3 数码显示管 (6) 4 系统的硬件设计 (8) 4.1 硬件原理框图 (8) 4.2 89C51系统设计 (8) 4.3 时钟电路 (9) 4.4 复位电路 (9) 4.5 键盘接口电路 (10) 4.7 数模转换器 (11) 5 系统软件设计 (12) 5.1 流程图: (12) 5.2 产生波形图 (12) 5.2.1 正弦波 (12) 5.2.2 三角波 (13) 5.2.3 方波 (14) 6 结论 (16) 主要参考文献 (17) 致谢...................................................... 错误!未定义书签。

1引言 1.1题目要求及分析 题目:基于51单片机的波形发生器设计,即由51单片机控制产生正弦波、方波、三角波等的多种波形。 1.1.1示意图 图1:系统流程示意图 1.2设计要求 (1) 系统具有产生正弦波、三角波、方波三种周期性波形的功能。 (2) 用键盘控制上述三种波形(同周期)的生成,以及由基波和它的谐波(5次以下)线性组合的波形。 (3) 系统具有存储波形功能。 (4) 系统输出波形的频率范围为1Hz~1MHz,重复频率可调,频率步进间隔≤100Hz,非正弦波的频率按照10次谐波来计算。 (5) 系统输出波形幅度范围0~5V。 (6) 系统具有显示输出波形的类型、重复频率和幅度的功能。

单片机相位差测试仪研究报告

_____________________ 个人资料整翌_仅限学习使用_ 基于单片机的相位差测试仪的研究 摘要 提出了一种基于8051单片机开发的低频数字相位差测量仪的设计。系统以单片机8051 及计数器,显示管为核心,构成完备的测量系统。可以对1Hz?1000Hz频率范围的信号进行 频率、相位等参数的精确测量,测相绝对误差不大于1°采用数码管显示被测信号的频率、相位差。硬 件结构简单,程序简单可读写性强,软件采用汇编语言实现,效率高。与传统的电路系统相比,其有处理速度快、稳定性高、性价比高的优点。 关键词:相位差;单片机;计数器;数码显示管 Designsof Low frequency Digital PhaseMeasurement Based on Single Chip Abstract A new ki nd of low - freque ncy digital phase measureme nt in strume nt is reside nted which is based on 8051.This is a complete system whose core is based on sin gle chip 8051 and arithmometer

and charactr on .It may measure the freque ncy and phase of the sig nal which beg in from 1 Hz to _____________________ 个人资料整翌_仅限学习使用_ 1000Hz, absolute error is not more than 1 The data are displayed on numeral displayer. Hardware structure is simple and software is realized by compiling Ianguage. Compared with traditional circuit, it has many adva ntages of faster process ing speed, good stability and high ratio betwee n property and price. Keyword: phase difference single-chip compute; . Arithmometer;charactron tube 目录

基于单片机的信号发生器(完整电路_程序)资料

电子与信息工程学院综合实验课程报告 实验名称:基于单片机的信号发生器的设计与实现班级:10电工2班 学号:20101851046 姓名:李俊 指导教师: 时间:

摘要 本文以STC89C51单片机为核心设计了一个低频函数信号发生器。信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如 正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。介绍了波形的生成原理、硬件电路和软件部分的设计原理。本系统可以产生最高频率798.6HZ的波形。该信号发生器具有体积小、价格低、性能稳定、功能齐全的优点。 关键词:低频信号发生器;单片机;D /A转换; 1设计选题及任务 设计题目:基于单片机的信号发生器的设计与实现 任务与要求: 设计一个由单片机控制的信号发生器。运用单片机系统控制产生多种波形,这些波形包括方波、三角波、锯齿波、正弦波等。信号发生器所产生的波形的频率、幅度均可调节。并可通过软件任意改变信号的波形。 基本要求: 1. 产生三种以上波形。如正弦波、三角波、矩形波等。 2.最大频率不低于500Hz。并且频率可按一定规律调节,如周期按1T,2T,3T,4T 或1T,2T,4T,8T变化。 3.幅度可调,峰峰值在0——5V之间变化。 扩展要求:产生更多的频率和波形。 2系统概述 2.1方案论证和比较 2.1.1总体方案: 方案一:采用模拟电路搭建函数信号发生器,它可以同时产生方波、三角波、正弦波。但是这种模块产生的不能产生任意的波形(例如梯形波),并且频率调节很不方便。 方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。

单片机数字相位差计的设计

XXXXXX项目式教学 设计报告 课程名称:电路综合设计 项目名称:单片机数字相位差计的设计专业班级: 学生姓名: 指导教师: 开课时间: 报告成绩:

数字相位差计的设计与实现 摘要 随着数字电子技术的发展,由数字逻辑电路组成的控制系统逐渐成为现代检测技术中的主流,数字测量系统也在工业中越来越受到人们的重视。 在实际工作中,常常需要测量两列频率相同的信号之间的相位差,来解决实践中出现的种种问题。例如,电力系统中电网合闸时,要求两电网的电信号之间的相位相同,这时需要精确测量两列工频信号之间的相位差。如果两列信号之间的相位差达不到相同,会出现很大的电网冲激电流,对供电系统产生巨大的破坏力,所以必须精确地测量出两列信号之间的相位差。本设计由STC89C51构成的最小系统,通过外围扩展,精确测量工频电压的相位差,采用LCD1602显示相位差,功耗小,精确度高,稳定性能好,读数方便且不需要经常调试。 关键词:单片机、低频、相位差、LCD

一、绪论 1.1课题的意义 众所周知,相位是交变信号的三要素之一,而相位差则是研究两个相同频率交流信号之间关系的重要参数。相位差的测量是电气测量的一项基本内容,其含义为测量两个同频率周期信号的相位差值。 例如某一电路系统输入信号与输出信号之间的相位差,三相交流电两个相电压或两个线电压之间的相位差,相电压与相电流之间的相位差等。 又如,在自动控制理论中,系统的相频特性为在不同频率正弦信号作用下,系统的输出信号与输入信号之间的相位和频率的函数关系。 此外,同频率正弦信号的相位差测量在工业自动化、智能控制及通讯电子等许多领域都有着广泛的应用。如电工领域中的电机功角测试,等等。 因此相位差的测量是研究网络相频特性中不可缺少的重要方面。 1.2课题要求 本设计研究了一种可测20Hz-20kHz 内波形(正弦波、三角波、矩形波)数字相位差测量仪的设计方法。主要内容是以STC89C51为控制核心,实现对音频范围内的正弦交流信号的相位的测量,可测的信号相位差在0~360? 度范围内,测量精度可达0.1? 。两路信号(同频、不同相)通过过零比较器电路整形成矩形波信号,再通过鉴相器,D 触发器二分频得到相位差信号。这样就构成了相位测量系统的测量电路。再将该相位差信号送入单片机的外部中断端口,通过单片机对数据的处理,最后方可得到所要测量的相位差,并在液晶上显示出测量结果。 二、相位测量方案论证与选择 2.1设计方案论证 方案1:相位——电压转换法 相位--电压转换式数字相位计的原理框图如图2-1

单片机产生正弦波

单片机产生正弦波 一要求 采用单片机map430g2553和运算放大器lmv358产生正弦波,周期1秒。 二思路 可通过单片机产生PWM,调节参数寄存器的值,产生不同占空比的PWM信号。若占空比的变化规律是正弦的,则滤波后可得到所需正弦波形。 其中,PWM(Pulse Width Modulation)控制——脉冲宽度调制技术是通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。图1为用PWM波代替正弦半波的例子。(单片机输出图1b,滤波后得到图1a) 图1 用PWM波代替正弦半波

三实践 1 PWM周期计算 正弦波周期1秒,需要采用多少个周期的PWM信号去表示?数目过少,则波形不完整(极端状况只有1个周期的PWM);数目过多,则增加了单片机的计算量,并对速度有要求。这里取N=200个。 则PWM信号的周期为T=1/200秒=5毫秒。 2 PWM参数计算 PWM由定时器TimerA产生,参数主要包括:定时器时钟,周期计数,高电平计数三个。 ●定时器时钟:定时器时钟来源有4个,两个内部的(辅助时钟ACLK、子系统主时钟 SMCLK),两个外部的。这里采用内部时钟。没有外部晶体时,ACLK由内部时钟源VLOCLK(低频时钟源,12K赫兹)产生,SMCLK由内部数字时钟DCOCLK(默认1M赫兹)产生。这里建议采用较高频率的。部分代码如下: BCSCTL1 |= DIVA_0; // ACLK = VLO BCSCTL2 |= SELM_0 + DIVM_0 + DIVS_0; // MCLK = DCO, SMCLK = DCO // Configure TimerA TACTL = TASSEL1 +MC_1; // Source: SMCLK, UP mode 其中,ACLK可配置成VLOCLK的1,2,4,8分频,这里设置为1分频,即ACLK = VLO;第二行中,SELM_0的作用是选择MCLK的时钟源为DCOCLK,DIVM_0设置为MCLK = DCO,DIVS_0设置为SMCLK = DCO(默认时钟源)。 TASSEL1将定时器时钟设置为SMCLK(若为TASSEL0则选择ACLK),且未分频。模式选择MC_1为上升模式。采用上述方法设置 定时器时钟= SMCLK = DCO = 1M赫兹。 ●周期计数:上升模式表明定时器由0递增到一个上限值CCR0。CCR0需设置。 因为周期T=1/200秒,而定时器时钟= SMCLK = DCO = 1M赫兹,定时器周期t=1微秒,所以CCR0=T/t=5000,即5毫秒。 ●高电平计数:定时器由0递增到一个上限值CCR0过程中,需设置脉宽CCR1。 并且K= CCR1/ CCR0的数值每个周期(5毫秒)都变化一次,变化趋势满足正弦变化,200个5毫秒构成一个正弦变化周期。 为获得CCR1值,在matlab中输入: t=0:pi/100:2*pi; k=(sin(t)+1)/2; CCR1=round(4999*k); 可获得201个CCR1值。上式中,第一行设置了201个数,均匀分布在0-2pi 之间,第一个和最后一个分别对应0弧度和2pi弧度;第二行计算201个正弦值,偏置为0.5,全幅度为1的正弦波幅度,如图2所示:

单片机制作简易正弦波信号发生器(DAC0832)

调试时,电源的质量需要较高,不然的话,波形不易观察看清楚。 //河北工程大学信电学院自动化系 //设计调试成功 ***************将DA输出的 0V ~ -5V范围扩展成 -5V ~ +5V范围,电路如下图:*************** 如若VO2输出更平滑一些,可以在VO2处接一个小电容,滤掉高频。 (一)过程分析计算如下: ?第一级运放出来的V o1=-N*V ref/256。当V ref为+5V时,V o1=0~ -5V。 其中,V ref为参考电压,N为8位数字量输出到DAC0832 ?并结合第二级运放,是否可以推出来如下式子: V o2=-(2*V o1+V ref)=-(2*-N*V ref/256+V ref) =-(-2N*V ref/256+V ref) =2N*V ref/256-V ref 当参考电压V ref=5V时,V o2=10N/256-5。 由于要求输出的是正弦波xsinθ,幅值x不定,下面考虑幅值x分别取5和1的情况: ●当输出波形为5 sinθ时:5 sinθ=V o2 =2N*V ref/256-V ref =10N/256-5 //此时V ref=+5V 得sinθ=2N/256-1

●当输出波形为sinθ时:sinθ=V o2 =2N*V ref/256-V ref =10N/256-5 //此时V ref=+5V 得sinθ=10N/256-5 最后可以考虑输出波形的频率问题。例如要求输出特定频率的正弦波。 (二)针对输出的不同幅值波形 ?当输出波形为5 sinθ时:得sinθ=2N/256-1 这里我们要求进步为一度。具体到进步大小,和内存RAM或者ROM有关,即和你存放数据表的空间有关。放到哪个空间都可以。(这里周期采样最多256个点,步数可以为1、2、5等,自己视情况而定,这里由于是360度,256个采样点,故步的大小360/256=1.4=△θ,由此算的前三个 θ=0,1.4,2.8……,对应N为0x80,0x83,0x86……) 通过sinθ的特征和计算部分数据发现规律: 0~90度与90~180度大小是对称的;181~270度与270~359度是对称的。 故,不是所有数据都是计算的。

相位差检测

目录 一、题目要求 ........................................................ 错误!未定义书签。 二、方案设计与论证 ............................................ 错误!未定义书签。 移相电路 ......................... 错误!未定义书签。 检测电路 ......................... 错误!未定义书签。 显示电路 ......................... 错误!未定义书签。 三、结构框图等设计步骤................. 错误!未定义书签。 设计流程图........................ 错误!未定义书签。 电路图 ........................... 错误!未定义书签。 移相电路图................... 错误!未定义书签。 检测电路图................... 错误!未定义书签。 显示电路图................... 错误!未定义书签。 四、仿真结果及相关分析................. 错误!未定义书签。 移相效果 ......................... 错误!未定义书签。 相位差波形........................ 错误!未定义书签。 相位差度数........................ 错误!未定义书签。 五、误差分析........................... 错误!未定义书签。 误差分析 ......................... 错误!未定义书签。 六、总结与体会......................... 错误!未定义书签。 七、参考文献........................... 错误!未定义书签。 八、附录............................... 错误!未定义书签。 元器件清单........................ 错误!未定义书签。

单片机定时1器控制产生10Hz正弦波信号

#include #define uchar unsigned char #define uint unsigned int sbit cs=P3^5; sbit wr=P3^6; uchar j; uchar code tosin[256]={ 0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2, 0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5, 0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1, 0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5, 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd, 0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1, 0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda, 0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc, 0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99, 0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76, 0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51, 0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30, 0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16, 0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06, 0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05, 0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15, 0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e, 0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e, 0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72, 0x76,0x79,0x7c,0x80 };/*正弦波码 */

基于51单片机函数信号发生器设计

摘要:本系统利用单片机AT89S52采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz—3kHz的波形。通过键盘来控制三种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。 关键词:单片机AT89S52、DAC0832、液晶1602 Abstract: this system capitalize on AT89s52,it makes use of central processor to generate three kinds of waves, they are triangle wave, and use D/A conversion module, wave generate module and liquid crystal display of 1602, it can have the 1Hz-3KHz profile. In this system it can control wave form choosing, frequency, range,can have the sine wave, the square-wave, the triangular wave. Simultaneously may also take the frequency measurement frequency,and displays them through liquid crystal display of 1602.this design includes three modules. They are D/A conversion module, wave generate module and liquid crystal display of LED module. In this design, the wave generator into wave form module and D/A conversion module are discussed in detail. key word: AT89S52, DAC0832, liquid crystal 1602.

单片机测量频率,占空比,相位差

单片机测量频率,占空比,相位差 1、 频率及占空比的测量 如上图所示,当脉冲的上升沿来临时,将定时器打开;紧接着的下降沿来临时,读取定时器的值,假设定时时间为t1;下一个上升沿来临时关闭定时器,读取定时器的值,假设定时时间为t2。t1即为1个周期内高电平的时间,t2即为脉冲的周期。t1/t2即为占空比,1/t2即为频率。 C 语言程序如下: TH0=0; //定时器高位,初值设为0 TL0=0; //定时器低位,初值设为0 T0_num=0; //定时器溢出次数,初值设为0 while(pulse); //pulse 为脉冲的输入引脚 while(!pulse); //等待上升沿来临 TR0=1; //打开定时器 while(pusl1); //等待下降沿来临 th1=TH0;tl1=TL0;num1=T0_num; //保存定时器值 while(!pusl1); //等待上升沿来临 TR0=0; //关闭定时器 th2=TH0;tl2=TL0;num2=T0_num; //保存定时器值 2、 相位差的测量 上升沿打开定时器 下降沿读取定时器值并保存 下一个上升沿关 闭定时器,读取 定时器值并保存

测量相位差的电路如上所示,待测量的两路脉冲分别作为两个D触发器的时钟输入,两个D触发器的输入端D及S端都接高电平,第一个D触发器的输出接第二个D触发器的R端,第二个D触发器的互补输出端接第一个D触发器的R端。从下面的波形图可以看出,第一个D触发器输出的脉冲信号的占空比乘以2π即为相位差。这样就将测量两路方波信号的相位差转化为测量一路方波 信号的占空比,就可以按照前面介绍的测量占空比的方法来测量了。

信号发生器 (正弦波,方波,三角波)51单片机 C语言代码

/**************************************/ /* 信号发生器(正弦波,方波,三角波) */ /*************************************/ #include #include #define uchar unsigned char #define uint unsigned int sbit cs=P2^0; //tlc5615片选端口 sbit clk=P2^1; //tlc5615时钟线 sbit din=P2^2; //tlc5615传输端口 sbit key1=P1^0; sbit key2=P1^1; //按键的单片机接口 uchar keydat; uchar flag; //波形发生终止信号的标志位一旦被置零立马停止发信号

uchar flagsqu; //方波高低电平控制为(运用定时器1中断控制) uchar m,num; uchar dat=0xff; uchar code tosin[141]={ //正弦波的编码 0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16, 0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b, 0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45, 0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63, 0x66,0x69,0x6c,0x6f,0x70,0x71,0x72,0x73,0x74,0x75, 0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7e, 0x7f,0x80,0x7f,0x7e,0x7e,0x7d,0x7c,0x7b,0x7a,0x79, 0x78,0x77,0x76,0x75,0x74,0x73,0x72,0x6f,0x6c,0x69, 0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c, 0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30, 0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a, 0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a, 0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01, 0x00};

数字相位差测量仪的设计

目录 1.设计任务书。 2.设计方案概述。 3.V/f变换测量相位差角的工作原理。 4.电路的组成及参数选择。 4.1整形电路及信号C的形成。 4.2滤波电路的参任务计划书。 4.3V/f变换电路的设计。 4.4 89C52内部资源的利用。 5.应用实例。 6.结论。 7.总结。 一、设计任务书 (一)任务 设计仿真一数字相位计 (二)主要技术指标与要求: (1)输入信号频率为0HZ~250HZ可调 (2)输入信号的幅度为0.5V (3)采用数码管显示结果,相位精确到0.1° (4)采用外部5V直流电源供电 (三)对课程设计的成果的要求(包括图表) 设计电路,安装调试或仿真,分析实验结果,并写出设计说明书。要求图纸布局合理,符合工程要求,所有的器件的选择要有计算依据。 二、设计方案概述 根椐设计任务书的要求,我们参考了一些相关资料书,经过小组的讨论分析,提出了一种用v/f变换测量交流电的相位差的新方法:首先产生出其幅度正比与相位差大小的直流电,再有v/f变换器转换成反映相位差大小的频率信号,在单片机的配合下,最终得到相位差。这种方法具有分辨率高,适应与大范围的各种输入频率等优点。 正弦交流电电信号相位差的测量可以用多种方法实现。比较直接的数字式测量方法是在已知信号周期的前提下用定时的方法测得相位差角对应的时间,然后根据已知的周期将其换算成相位差角度。但

是,这种方法的测量精度依赖于定时器的精度和分辨率。在信号频率较高或频率虽不高但相位差较小时,都可以出现较大的误差。另外,由于直接测量得到的是时间,相位差角要由这一中间结果与信号的周期运算后才能得到,所以周期的测量不可缺少,其测量的精度也将影响相位差的精度。 在此用一种新的思路进行相位差的测量,用v/f变换器把相位差转换成一个其频率与之成正比的脉冲列,通过计算在一定时间内的脉冲个数测量相位差角。这种测量方法与信号的周期无关,可以得到较高的精度。题达到了0.1的测量精度,与此同时工业运行控制中现场操作,修改和设置等问题也得到了很好的解决,以上这些都在工业运行中得到了厂方的认可。存在的问题主要是本仪器通用性很不强,很难在更大的范围应用和推广,只能运用与某些特定的企业。今后的工作主要硬件和软件的改进上,列入增加一些通用行很强的功能模块。 3.V/f变换测量相位差角的工作原理 首先将输入的两个同频率但存在着相位差的信号进行整形,使之变成方波。如图1示A和B 再对A,B进行异或处理, 异或输出信号C 的脉冲宽度则反映相位差角.C 的脉宽T1对应的电角度是相位差角,C 的周期T2 是信号周期T 的1/2.如果信号角频率为w 则T1= /w. C为幅值为U 的方波其平均值Ud=UT1/T2=U 由此可见,C 的平均值( 亦即直流分量)仅与相位差角和脉冲幅 度有关与信号周期无关

基于单片机正弦波有效值的测量

基于单片机正弦波有效值的测量 一.简介 本作品以单片机STC12C5A60S2为主控芯片并以此为基础,通过二极管1N5819实现半波整流,使用单片机内部自带10位AD对整流后的输入信号进行采样,从而实现对峰值的检测;同时通过运放LM837对输入信号进行放大,之后通过施密特触发器,将原始信号整形成可被单片机识别的标准脉冲波形,之后配合内部计数器(定时器)达到测量其频率的目的;这样,整流和AD采样实现对输入信号峰值的检测;通过放大、整形实现对输入信号频率的检测。 二.基本功能与技术指标要求 (1)输入交流电压:1mV~50V,分五档: ①1mV~20mV,②20mV~200mV,③200mV~2V,④2V~20V,⑤20v~50V。 (2)正弦频率;1Hz~100kHz; (3)检测误差:≤2%; (4)具有检测启动按钮和停止按钮,按下启动按钮开始检测,按下停止按钮停止检测; (5)显示方式:数字显示当前检测的有效是,在停止检测状态下,显示最后一次检测到的有效值; (6)显示:LCD,显示分辨率:每档满量程的0.1%; 三.理论分析 本文要求输入交流信号,通过电路测量其峰值,频率,有效值以

及平均值,因为输入的交流信号为模拟信号,而一般处理数据使用的主控芯片单片机处理的是数字信号,所以我们选择使用数模转换器AD(Analog to Digital Converter)将输入的模拟信号转换为数字信号,并进行采样;由于要求输入交流信号电压峰峰值Vpp为 50mV~10V,所以如果我们采用AD为8位,则最小采样精度为 ,因此会产生78.4%的误差,并且题目要求输入交流信号的频率范围为40Hz~50kHz,所以为了保证对高频率信号的单周期内采样个数,我们需要选择尽量高速度的AD; 因此我们选用使用单片机STC12C5A60S2,其内部自带AD为8路10位最高速度可达到250KHz,所以我们可以将最小采样精度缩小到 ,并且在输入交流信号频率最大时(50KHz)在单个周期内可采集5个点,因此可保证测量精度。 由于该AD只能接受0~5V的模拟信号输入,所以当我们直接输入一个双极性信号时可能损坏AD,因此当信号进入AD之前我们要进行半波整流,为此我们设计了整流电路,在交流信号通过整流电路输入AD 后,由AD实时输出对应模拟信号大小的二进制数,并存入变量MAX 中,随着信号的不断输入MAX中只保存AD输出过的最大值,这样既 可测出输入信号的峰值;由交流信号有效值表达式 可知检波器应当首先把输入的瞬时电压平方, 然后在一定平均时间内取平均值再开方。即可得到交流信号的有效值,然后通过比较峰值

设计并实现频率可控的正弦波信号发生器 单片机课设

1Proteus软件简介 Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、A VR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。 特点:支持ARM7,PIC ,A VR,HC11以及8051系列的微处理器CPU模型,更多模型正在开发中; 交互外设模型有LCD显示、RS232终端、通用键盘、开关、按钮、LED等; 强大的调试功能,如访问寄存器与内存,设置断点和单步运行模式; 支持如IAR、Keil和Hitech等开发工具的源码C和汇编的调试; 一键“make”特性:一个键完成编译与仿真操作; 内置超过6000标准SPICE模型,完全兼容制造商提供的SPICE模型; DLL界面为应用提供特定的模式; 14种虚拟仪器:示波器、逻辑分析仪、信号发生器、规程分析仪等; 高级仿真包含强大的基于图形的分析功能:模拟、数字和混合瞬时图形;频率;转换;噪声;失真;付立叶;交流、直流和音频曲线; 模拟信号发生器包括直流、正旋、脉冲、分段线性、音频、指数、单频FM;数字信号发生器包括尖脉冲、脉冲、时钟和码流; 集成PROTEUS PCB设计形成完整的电子设计系统。 Protues软件与Keil uVision的结合 对于初次使用Protues软件的人可能还不知道如何设置,现在把设置步骤简介如下,仅供参考(本文章只讨论在单机上结合,在两个联网机器使用由于篇幅限制不在此讨论):设置

单片机控制12864产生正弦波的程序(原创)

电子科技大学吴鉴鹰 #include // SFR declarations #include #include #include #define uchar unsigned char #define uint unsigned int uchar i,j,colour=1,T=0; #define Lcd_Bus P5 /*char code seg[360] = { 0x80,0x82,0x84,0x86,0x88,0x8b,0x8d,0x8f,0x91,0x94, 0x96,0x98,0x9a,0x9c,0x9e,0xa1,0xa3,0xa5,0xa7,0xa9, 0xab,0xad,0xaf,0xb1,0xb4,0xb6,0xb8,0xba,0xbc,0xbe, 0xbf,0xc1,0xc3,0xc5,0xc7,0xc9,0xcb,0xcc,0xce,0xd0, 0xd2,0xd3,0xd5,0xd7,0xd8,0xda,0xdc,0xdd,0xdf,0xe0, 0xe2,0xe3,0xe4,0xe6,0xe7,0xe8,0xea,0xeb,0xec,0xed, 0xee,0xef,0xf0,0xf2,0xf3,0xf3,0xf4,0xf5,0xf6,0xf7, 0xf8,0xf9,0xf9,0xfa,0xfb,0xfb,0xfc,0xfc,0xfd,0xfd, 0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe, 0xfe,0xfd,0xfd,0xfc,0xfc,0xfb,0xfb,0xfa,0xf9,0xf9, /*0xf8,0xf7,0xf6,0xf5,0xf4,0xf4,0xf3,0xf2,0xf1,0xf0, 0xee,0xed,0xec,0xeb,0xea,0xe8,0xe7,0xe6,0xe4,0xe3, 0xe2,0xe0,0xdf,0xdd,0xdc,0xda,0xd9,0xd7,0xd5,0xd4, 0xd2,0xd0,0xce,0xcd,0xcb,0xc9,0xc7,0xc5,0xc3,0xc2, 0xc0,0xbe,0xbc,0xba,0xb8,0xb6,0xb4,0xb2,0xb0,0xae, 0xab,0xa9,0xa7,0xa5,0xa3,0xa1,0x9f,0x9c,0x9a,0x98, 0x96,0x94,0x92,0x8f,0x8d,0x8b,0x89,0x86,0x84,0x82, 0x80,0x7d,0x7b,0x79,0x77,0x75,0x72,0x70,0x6e,0x6c, 0x69,0x67,0x65,0x63,0x61,0x5f,0x5c,0x5a,0x58,0x56, 0x54,0x52,0x50,0x4e,0x4c,0x4a,0x48,0x46,0x44,0x42, 0x40,0x3e,0x3c,0x3a,0x38,0x36,0x34,0x33,0x31,0x2f, 0x2d,0x2c,0x2a,0x28,0x27,0x25,0x24,0x22,0x21,0x1f, 0x1e,0x1c,0x1b,0x19,0x18,0x17,0x16,0x14,0x13,0x12, 0x11,0x10,0xf, 0xe, 0xd, 0xc, 0xb, 0xa, 0x9, 0x8, 0x7, 0x7, 0x6, 0x5, 0x5, 0x4, 0x3, 0x3, 0x2, 0x2, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x2, 0x2, 0x3, 0x3, 0x4, 0x4, 0x5, 0x6, 0x6, 0x7, 0x8, 0x9, 0xa, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10,0x12,0x13,0x14,0x15,0x16,0x18,0x19,0x1a,0x1c, 0x1d,0x1f,0x20,0x22,0x23,0x25,0x26,0x28,0x2a,0x2b, 0x2d,0x2f,0x30,0x32,0x34,0x36,0x38,0x39,0x3b,0x3d, 0x3f,0x41,0x43,0x45,0x47,0x49,0x4b,0x4d,0x4f,0x51,

相关主题
文本预览
相关文档 最新文档