基于51单片机函数信号发生器设计论文论文.docx
- 文档编号:3556865
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:20
- 大小:592.93KB
基于51单片机函数信号发生器设计论文论文.docx
《基于51单片机函数信号发生器设计论文论文.docx》由会员分享,可在线阅读,更多相关《基于51单片机函数信号发生器设计论文论文.docx(20页珍藏版)》请在冰豆网上搜索。
基于51单片机函数信号发生器设计论文论文
摘要:
本系统利用单片机STC89C51RC采用程序设计方法产生正弦波、三角波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产0Hz—535Hz的波形。
通过按键来控制三种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。
关键词:
单片机STC89C51RC、DAC0832、液晶1602
Abstract:
thissystemcapitalizeonSTC89C52RC,itmakesuseofcentralprocessortogeneratethreekindsofwaves,theyaretrianglewave,anduseD/Aconversionmodule,wavegeneratemoduleandliquidcrystaldisplayof1602,itcanhavethe0Hz-535Hzprofile.Inthissystemitcancontrolwaveformchoosing,frequency,range,canhavethesinewave,thesquare-wave,thetriangularwave.Simultaneouslymayalsotakethefrequencymeasurementfrequency,anddisplaysthemthroughliquidcrystaldisplayof1602.thisdesignincludesthreemodules.TheyareD/Aconversionmodule,wavegeneratemoduleandliquidcrystaldisplayofLEDmodule.Inthisdesign,thewavegeneratorintowaveformmoduleandD/Aconversionmodulearediscussedindetail.
keyword:
STC89C51RC,DAC0832,liquidcrystal1602.
目录
1.系统设计2
1.1、设计要求2
1.2方案设计与论证2
1.2.1信号发生电路方案论证2
1.2.2单片机的选择论证….3
1.2.3显示方案论证3
1.2.4键盘方案论证3
1.3总体系统设计4
1.4硬件实现及单元电路设计4
1.4.1单片机最小系统的设计4
1.4.2波形产生模块设计5
1.4.3显示模块的设计6
1.4.4键盘显示模块的设计7
2、输出波形的种类与频率的测试15
2.1、测量仪器及测试说明15
2.2测试过程15
2.3、测试结果17
3、设计心得及体会19
4、附录19
4.2附图20
1.系统设计
经过考虑,我们确定方案如下:
利用STC89C51RC单片机采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过按键来控制四种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。
1.1、设计要求
1)、利用单片机采用软件设计方法产生三种波形
2)、三种波形可通过按键选择输
3)、波形频率可调
4)、需显示波形的频率
1.2方案设计与论证
1.2.1信号发生电路方案论证
方案一:
通过单片机控制D/A,输出三种波形。
此方案输出的波形不够稳定,抗干扰能力弱,不易调节。
但此方案电路简单、成本低。
方案二:
使用传统的锁相频率合成方法。
通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。
此方案,电路复杂,干扰因素多,不易实现。
方案三:
利用MAX038芯片组成的电路输出波形。
MAX038是精密高频波形产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形。
但此方案成本高,程序复杂度高。
以上三种方案综合考虑,选择方案一。
1.2.2单片机的选择论证
方案一:
STC89C51RC单片机是一种高性能8位单片微型计算机。
它把构成计算机的中央处理器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而构成较为完整的计算机、而且其价格便宜。
方案二:
C8051F005单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。
除了具有标准8052的数字外设部件,片内还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,而且执行速度快。
但其价格较贵
以上两种方案综合考虑,选择方案一
1.2.3显示方案论证
方案一:
采用LED数码管。
LED数码管由8个发光二极管组成,每只数码管轮流显示各自的字符。
由于人眼具有视觉暂留特性,当每只数码管显示的时间间隔小于1/16s时人眼感觉不到闪动,看到的是每只数码管常亮。
使用数码管显示编程较易,但要显示内容多,而且数码管不能显示字母。
方案二:
采用LCD液晶显示器1602。
其功率小,效果明显,显示编程容易控制,可以显示字母。
以上两种方案综合考虑,选择方案二。
1.2.4键盘方案论证
方案一:
矩阵式键盘。
矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处。
当键盘上没有键闭合时,所有的行和列线都断开,行线都呈高电平。
当某一个键闭合时,该键所对应的行线和列线被短路。
方案二:
独立点触按键。
点触按键体积小,安装方便,成本低。
以上两种方案综合考虑,选择方案二。
1.3总体系统设计
该系统采用单片机作为数据处理及控制核心,由单片机完成人机界面、系统控制、信号的采集分析以及信号的处理和变换,采用按键输入,利用液晶显示电路输出数字显示的方案。
将设计任务分解为按键电路、液晶显示电路等模块。
图
(1)为系统的总体框图
图
(1)总体方框图
1.4硬件实现及单元电路设计
1.4.1单片机最小系统的设计
89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。
用80C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图
(2)89C51单片机最小系统所示。
由于集成度的限制,最小应用系统只能用作一些小型的控制单元。
其应用特点:
(1)有可供用户使用的大量I/O口线。
(2)内部存储器容量有限。
(3)应用系统开发具有特殊性。
图
(2)89C51单片机最小系统
1.4.2波形产生模块设计
由单片机采用编程方法产生四种波形、通过DA转换模块DAC0832在进过滤波放大之后输出。
其电路图如下:
图(3)波形产生电路
如上图所示,单片机的P0口连接DAC0832的八位数据输入端,DAC0832的输出端接放大器,经过放大后输出所要的波形。
DAC0832的为八位数据并行输入的,其结构图如下:
图(4)DAC0832的内部结构
1.4.3显示模块的设计
通过液晶1602显示输出的波形、频率,其电路图如下:
图(5)液晶显示
如上图所示,1602的八位数据端接单片机的P0口,其使能端RS、E分别接单片机的P3.5、P3.0。
通过软件控制液晶屏可以显示波形的种类以及波形的频率。
1.4.4键盘显示模块的设计
其连接电路图如下:
图(6)键盘
图中键盘引出的5跟线分别接单片机的P1口,其中P1.0连接按键1用于切换波形,P1.1、P1.2连接按键2、3用于调节波形的频率的增减,
1.5软件设计流程
本系统采用STC89C51RC单片机,用编程的方法来产生三种波形,并通过编程
来切换三种波形以及波形频率的改变。
具体功能有:
(1)各个波形的切换;
(2)各种参数的设定;(3)频率增减等。
软件调通后,通过编程器下载到STC89C51RC芯片中,然后插到系统中即可独立完成所有的控制。
软件的流程图如下:
图(7)程序流程图
1.6源程序
#include
unsignedchari,sqar_num=128;//最大值100,默认值50
unsignedcharcho=0;//0:
正弦波。
1:
方波。
2:
三角波。
unsignedcharnum=0;
unsignedcharTIME0_H=0xff,TIME0_L=0xd9;//定时器0的初值设置;全局变量.对应正弦波
sbitchg=P1^0;//三角波100Hz.
sbitfreq_u=P1^1;
sbitfreq_d=P1^2;
sbitduty_u=P1^3;
sbitduty_d=P1^4;
sbitcs=P3^7;
bitflag=0;
unsignedintFREQ=50;//初始化频率,50HZ
sbitrs=P3^5;
sbitlcdcs=P3^0;
unsignedcharTempBuffer[7];
unsignedcharvalue1[]={"Frequency:
"};
voiddelay(unsignedintms)
{
unsignedinti,j;
for(j=0;j for(i=0;i<120;i++); } unsignedcharcodesin_num[]={ 0,0,0,0,0,0,0,0,1,1,1,1,1,2,2,2, 2,3,3,4,4,4,5,5,6,6,7,7,8,8,9,9, 10,10,11,12,12,13,14,15,15,16,17,18,18,19,20,21, 22,23,24,25,25,26,27,28,29,30,31,32,34,35,36,37, 38,39,40,41,42,44,45,46,47,49,50,51,52,54,55,56, 57,59,60,61,63,64,66,67,68,70,71,73,74,75,77,78, 80,81,83,84,86,87,89,90,92,93,95,96,98,99,101,102, 104,106,107,109,110,112,113,115,116,118,120,121,123,124,126,128, 129,131,132,134,135,137,139,140,142,143,145,146,148,149,151,153, 154,156,157,159,160,162,163,165,166,168,169,171,172,174,175,177, 178,180,181,182,184,185,187,188,189,191,192,194,195,196,198,199, 200,201,203,204,205,206,208,209,210,211,213,214,215,216,217,218, 219,220,221,223,224,225,226,227,228,229,230,230,231,232,233,234, 235,236,237,237,238,239,240,240,241,242,243,243,244,245,245,246, 246,247,247,248,248,249,249,250,250,251,251,251,252,252,253,253, 253,253,254,254,254,254,254,255,255,255,255,255,255,255,255,255 }; //调节部分--频率 voidfreq_ud(void) { unsignedinttemp; if(freq_d==0) {FREQ--;} elseif(freq_u==0) {FREQ++;} if(cho==1|cho==3)//三角波256次中断一周期,特殊处理下。 否则他的频率是100(+\-)n*2Hz. { temp=0xffff-3906/FREQ;//方波,三角波默认为100hz,切换后频率也为50HZ65336-10^6/(256*FREQ) TIME0_H=temp/256; TIME0_L=temp%256; } elseif(cho==0|cho==3)//正弦波三角波默认周期50hz65536-10^6//(512*FREQ) { temp=0xffff-1953/FREQ; TIME0_H=temp/256; TIME0_L=temp%256; } } //调节部分--方波的占空比 voidduty_ud(void)//方波也采用512次中断构成一个周期。 { if(duty_d==0&sqar_num>0) sqar_num--; elseif(duty_u==0&sqar_num<255) sqar_num++; } //波形发生函数 voidsint(void) { if(! flag) { cs=0;P2=sin_num[num++];cs=1; if(num==0){num=255;flag=1;} } elseif(flag) { cs=0;P2=sin_num[num--];cs=1; if(num==255){num=0;flag=0;} } } voidsquare(void) { if(i++ else{cs=0;P2=0X00;cs=1;} }/* voidtriangle(void) { cs=0;P2=num++;cs=1; }*/ voidtriangle(void) { if(~flag) { cs=0;P2=num++;cs=1; if(num==0){num=255;flag=1;} } elseif(flag) { cs=0;P2=num--;cs=1; if(num==255){num=1;flag=0;} } } //1602显示开始 voidwrite_command(unsignedcharcommand) { rs=0; P0=command; lcdcs=1; lcdcs=0; } voidwrite_data(unsignedchardata0) { rs=1; P0=data0; lcdcs=1; lcdcs=0; } voidinit_1602() { delay(15); write_command(0x38); delay(5); write_command(0x0c); delay(5); write_command(0x06); delay(5); } //1602显示结束 /*******************频率值转换为字符串**********************/ voidtemp_to_str() { TempBuffer[0]=FREQ/1000+'0';//千位 TempBuffer[1]=FREQ%1000/100+'0';//百位 TempBuffer[2]=FREQ%1000%100/10+'0';//十位 TempBuffer[3]=FREQ%1000%100%10+'0';//个位 TempBuffer[4]='H'; TempBuffer[5]='Z'; TempBuffer[6]='\0'; } /*******************频率显示*****************/ voidshow_frequency() { unsignedchari; //init_1602();//初始化lcd write_command(0x8a);//液晶显示位置 temp_to_str(); /*for(i=0;i { write_data(value1[i]); delay(5); }*/ for(i=0;i { write_data(TempBuffer[i]); delay(5); } } voidmain() { TMOD=0X01; TH0=0xff; TL0=0xd9; IT0=1;//设置中断触发方式,下降沿 EA=1; EX0=1; ET0=1; IP=0X01;//键盘中断级别高 init_1602();//初始化lcd write_command(0x80);//液晶显示位置 delay(5); for(i=0;i { write_data(value1[i]); delay(5); } TR0=1; while (1) { show_frequency(); } } //按键中断处理程序。 voidit0()interrupt0 { if(chg==0){FREQ=50;if(++cho==3){cho=0;num=0;}}//num=0;所有数据从新开始,保证波形的完整性 elseif(freq_u==0|freq_d==0) {freq_ud();} elseif(cho==1&(duty_d==0|duty_u==0)) {duty_ud();} else; } //定时器中断处理程序。 voidintt0()interrupt1 { //TH0=0x00;TL0=0x00;sinx(); switch(cho) { case0: {TH0=TIME0_H;TL0=TIME0_L;sint();break;}//正弦波//每半周期256取样。 case1: {TH0=TIME0_H;TL0=TIME0_L;square();break;}//方波//为了提高方波的最高频率,只有牺牲占空比的最小可调值。 分100份每次1%。 case2: {TH0=TIME0_H;TL0=TIME0_L;triangle();break;}//三角波 default: ; } } 2、输出波形的种类与频率的测试 2.1、测量仪器及测试说明 测量仪器: 稳压电源、示波器、数字万用表。 测量说明: 正弦波、矩形波、三角波信号的输出,通过键盘来实现其的不同波形的输出以及其频率的改变。 2.2测试过程 当程序下进去时经过初始化,液晶屏的上只显示“Frequency: ”和“0050Hz”,默认状态输出波形为正弦波,按一下按键1时输出为方波,按按键1两下时输出为正弦波,按按键1三下时输出三角波。 按键2、3可以调节频率,三种波形的频率可调范围,分别如下: 正弦波: 0—535Hz 方波: 0——535Hz 三角波: 0——535Hz 根据示波器的波形频率的显示计算出三种波形的频率计算公式如下: 正弦波: f=65536-10^6/(512*FREQ) 方波: f=65336-10^6/(256*FREQ) 三角波: f=65336-10^6/(256*FREQ) 锯齿波: f=100(+\-)n*2Hz. 三种波形的仿真波形图如下: 图(8)正弦波图形 图(9)方波图形 图(10)三角波图形 2.3、测试结果 各项指标均达到要求。 测试数据如下: 1)、产生正弦波、方波、三角波基本实现。 2)、三种波形的频率都可调,还能能步进的调节,步进调节幅度为1Hz的增减。 3)、液晶显示频率部分基本实现 4)、用按键设置参数实现步进调节波形频率。 3、设计心得及体会 通过这次单片机设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学两年的学习成果,进一步加深了我对专业知识的了解和认识以及动手的能力。 虽然在这次设计中对于所学知识的运用和衔接还不够熟练,作品完成的还不是很出色。 但是我将在以后的工作和学习中继续努力、不断完善。 这个设计是对我们过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。 4、附录 4.1参考文献 [1]戴仙金主编51单片机及其C语言汇编程序开发实例清华大学出版社,2008 [2]高吉祥主编全国大学生电子设计竞赛培训系列教程电子工业出版社,2007 [3]杨素行主编模拟电子技术基础简明教程高等教育出版社,2007 [4]蒋辉平主编单片机原理与应用设计北京航空航天大学出版社2007 4.2附图 图(11)总体原理设计图 图(12)总原理图设计 图(13)总PCB图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 函数 信号发生器 设计 论文