完整版基于单片机的函数信号发生器汇编语言__键盘显示..
- 格式:doc
- 大小:342.50 KB
- 文档页数:25
沈阳工程学院┊┊课程设计设计题目:多功能信号发生器程序设计系别自控系班级学生姓名学号2009308103指导教师职称教授起止日期:2012 年1月2日起——至2013 年1月13日止沈阳工程学院课程设计任务书课程设计题目:多功能信号发生器程序设计系别自控系班级学生姓名学号2009308103指导教师职称教授课程设计进行地点:F422任务下达时间:2012 年 1 月 2 日起止日期:2012年1月2日起——至2012年1月13日止教研室主任2012 年1月13日批准多功能信号发生器的设计1.设计主要内容及要求编写多功能信号发生器程序。
要求:1)能够产生正弦信号、方波信号和三角波信号。
2)输出三种波形能够转换。
2.对设计论文撰写内容、格式、字数的要求(1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。
(2).学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。
课程设计论文的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
(3).论文要求打印,打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。
(4). 课程设计论文装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。
3.时间进度安排沈阳工程学院C8051F020单片机原理及应用课程设计成绩评定表中文摘要随着电子技术的飞快发展,单片机也应用得越来越广泛,基于单片机的智能仪器的设计技术不断成熟。
单片机构成的仪器具有高可靠性,高性价比。
单片机技术在智能仪表和自动化等诸多领域有了极为广泛的应用,并用到各种家庭电器,单片机技术的广泛应用推动了社会的进步。
利用单片机采用程序设计方法来产生波形,线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强等优点,而且还能对波形进行细微的调整,改良波形,易于程序控制。
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊目录第一章绪论 (1)第二章方案设计与论证 (4)2.1方案一: (4)2.2方案二: (4)2.3方案比较 (4)第三章专用器件说明 (6)3.1 SPCE061单片机介绍 (6)3.1.1性能: (6)3.1.2 应用领域 (6)3.1.3 结构概览 (7)3.1.4通用I/O口的使用: (7)3.1.5 D/A转换 (8)3.1.6 IDE开发平台的使用 (9)3.1.7 PWM输出 (10)3.1.8 SPCE061A的时钟和定时器/计数器 (10)3.2 DM-1602显示器 (14)3.3 运算放大电路 (16)3.3.1 集成运放的电路结构和特点 (16)3.3.2 集成运放电路的组成及各部分的作用 (16)3.3.3 运算放大器电压传输特性 (17)3.3.4集成运放的主要性能指标 (18)第四章系统的硬件电路设计 (19)4.1系统框图 (19)4.2 SPCE061A基本工作电路设计 (19)4.3键盘电路设计 (20)4.4显示电路设计 (21)4.4信号输出电路设计 (22)第五章软件设计 (22)5.1主程序流程图 (22)5.2正弦波信号形成方法 (25)5.3三角波、锯齿波的形成 (26)5.4方波的形成和实现 (26)总结 (27)致谢 (28)参考文献 (29)附录1 程序 (29)第一章绪论测量仪器从宏观上可分为两大类,即激励和检测,激励仪器主要是各类信号发生器。
信号发生器按工作原理可分为:调谐信号发生器、锁相和合成信号发生器。
(1) 调谐信号发生器是由调谐振荡器构成。
传统调谐信号发生器都是由调谐振荡器和统调的调幅放大器(输出放大器)加上一些指示电路构成。
这种信号发生器结构复杂、频率范围窄,而且可靠性、稳定性较差,但其价格低廉。
随着半导体器件的发展,其性能有所改善。
(2) 锁相信号发生器是由调谐振荡器通过锁相的方法获得输出信号频率的信号发┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊生器。
基于单片机的函数信号发生器的设计与实现一、引言函数信号发生器是一种用于产生不同形式的函数信号的仪器。
在电子领域中,经常需要使用函数信号进行信号调试、测试和仿真。
传统的函数信号发生器通常较为昂贵,而基于单片机的函数信号发生器则能够以较低的成本实现,并且具有良好的可调节性和稳定性。
本文将介绍基于单片机的函数信号发生器的设计与实现。
二、设计原理基于单片机的函数信号发生器主要由以下几部分组成:单片机控制模块、波形发生模块、幅度控制模块、频率控制模块和显示模块。
其中,单片机控制模块采用单片机进行控制和信号生成,波形发生模块用于产生不同形式的函数信号,幅度控制模块用于调节信号的幅度,频率控制模块用于调节信号的频率,显示模块用于显示当前的信号参数。
三、基本功能和设计过程1.单片机控制模块的设计:选择合适的单片机,搭建合适的电路,并进行相应的编程。
具体的控制程序需根据单片机型号和要求进行设计和实现。
2.波形发生模块的设计:选择合适的波形发生电路,包括正弦波、方波、三角波等。
这些波形的发生可以采用基于单片机的数字方法生成。
3.幅度控制模块的设计:通过调节电路中的阻值来实现对信号幅度的调节。
可以使用模拟方法或者数字方法实现。
4.频率控制模块的设计:通过调节电路中的电容或者电阻来实现对信号频率的调节。
可以使用模拟方法或者数字方法实现。
5.显示模块的设计:选择合适的显示设备,如LCD液晶显示屏,将信号的参数通过单片机发送到显示设备上进行显示。
四、设计实例以基于PIC16F877A单片机的函数信号发生器为例,简要介绍其设计与实现步骤。
1.单片机控制模块的设计:选择PIC16F877A单片机,并搭建相应的电路。
使用C语言编写程序,根据用户的输入和要求,通过PWM或DAC控制输出信号的幅度和频率。
2.波形发生模块的设计:根据需要,选择合适的波形发生电路进行设计。
可使用PIC16F877A的PWM输出产生正弦波,方波和三角波等。
/**************************************//* 信号发生器(正弦波,方波,三角波)*//*************************************/#include<reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit 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};void delay(uchar z) //延时函数{uchar x,y;for(x=0;x<110;x++)for(y=z;y>0;y--);}void prepare() //tlc5615的初始化{cs=1;din=1;clk=0;cs=0; //cs的上升沿和下降沿必须在clk 为低时进?}/* 用中断来产生方波void Squtranslator(){TR1=1; //启动定时器1 控制高低电平的持续时间占空比do{do{_wave=0;}while((!flagsqu) && flag==1);//如果一旦终止信号的//产生可以立马退出循环flagsqu=0;do{_wave=1;}while((!flagsqu) && flag==1);flagsqu=0;}while(flag);flag=1;TR1=0;}*/void Squtranslator() //方波函数{uchar j;uchar dat1=0x7f;while(flag){do{prepare();dat=dat1;for(j=0;j<12;j++){din=(bit)(dat>>7); //将数据的最高位赋给dinclk=1;dat=dat<<1; //一位位的传输clk=0;}cs=1; //cs的上升沿和下降沿必须在clk 为低时进行delay(200); //使高低电平持续一段时间if(dat1==0)dat1=0x7f; //完成了0和0x7f之间的替换elsedat1=0;}while(flag);}}void Tratranslator() //锯齿波的发生函数{uchar j;uchar dat1=0x7f;while(flag){do{prepare();dat=dat1;for(j=0;j<12;j++){din=(bit)(dat>>7); //将数据的最高位赋给dinclk=1;dat=dat<<1; //一位位的传输clk=0;}cs=1; //cs的上升沿和下降沿必须在clk 为低时进行delay(2); //稍加延时dat1--;}while(flag && dat1); //一旦有终止信号就可以停止do{prepare();dat=dat1;for(j=0;j<12;j++){din=(bit)(dat>>7); //将数据的最高位赋给dinclk=1;dat=dat<<1; //一位位的传输clk=0;}cs=1; //cs的上升沿和下降沿必须在clk 为低时进行delay(2); //稍加延时dat1++;}while(flag && (!(dat1==0x7f)));}}void Sintranslator(uchar wave[],uchar num )//正弦波的转换函数{uchar i,j;uchar dat1;do{for(i=0;i<num;i++){prepare();dat1=wave[i]; //打开片选开始工作for(j=0;j<12;j++){din=(bit)(dat1>>7); //将数据的最高位赋给dinclk=1;dat1=dat1<<1; //一位位的传输clk=0;if(flag==0)break;}cs=1; //cs的上升沿和下降沿必须在clk为低时进行delay(1); //稍加延时if(flag==0)break;}}while(flag); //等待控制键的暂停}void keyscan() //切换功能按键返回键值函数{uchar i;for(i=0;i<4;i++){if(key1==0){delay(10);if(key1==0){keydat++;do{}while(!key1); //松手检测if(keydat==4)keydat=1;//加满回零处理}}}}void keycountrl() //切断输出控制函数{if(key2==0){delay(10);if(key2==0){flag=0;do{}while(!key2); //松手检测}}}void main (){uchar temp;TMOD=0x01; //确定定时器的工作方式TH0=(65536-50000)/256; //给定时器0赋予初值TL0=(65536-50000)%256;EA=1; //开总中断ET0=1; //开启定时器0中断TR0=1;while(1){do{switch(keydat){case 1:flag=1;do{Sintranslator(tosin,141);}while(flag);break;case 2: flag=1;do{Tratranslator();}while(flag);break;case 3: flag=1;do{Squtranslator();}while(flag);break;default:break;}}while(flag);temp=keydat; //装载键值while(keydat==temp); //在这里等待键值的改变}}void Time0() interrupt 1{TH0=(65536-50000)/256; //定时器0用来扫描按键不断地扫描dTL0=(65536-50000)%256;num++;if(num==4){keyscan();keycountrl();num=0;}}。
基于单片机的函数信号发生器Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】基于51单片机的函数信号发生器设计方案利用单片机AT89C52采用程序设计方法产生锯齿波、三角波、正弦波、方波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产生10Hz—10kHz的波形。
通过键盘来控制四种波形的类型选择、拨码开关控制频率的变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。
设计要求1)、利用单片机采用软件设计方法产生四种波形2)、四种波形可通过键盘选择3)、波形频率可调4)、需显示波形的种类及其频率方案设计1 信号发生电路方案通过单片机控制D/A,输出四种波形。
此方案虽输出的波形不够稳定,抗干扰能力弱,不易调节,但此方案电路简单、成本低。
因此选用此方案。
2 单片机的选择AT89C52单片机是一种高性能8位单片微型计算机。
它把构成计算机的中央处理器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而构成较为完整的计算机、而且其价格便宜。
3 显示方案采用LCD液晶显示器1602。
其功率小,效果明显,显示编程容易控制,可以显示字母。
4 键盘方案论证采用独立式键盘。
独立式键盘具有硬件与软件相对简单的特点,其缺点是按键数量较多时,要占用大量口线。
总体系统设计该系统采用单片机作为数据处理及控制核心,由单片机完成人机界面、系统控制、信号的采集分析以及信号的处理和变换,采用按键输入,利用液晶显示电路输出数字显示的方案。
将设计任务分解为按键电路、液晶显示电路等模块。
下图为系统的总体框图:总体方框图硬件实现及单元电路设计1单片机最小系统的设计AT89C52是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。
智能应用1 智能任意信号发生器的设计背景在电子产品调试和测量领域,常常需要有信号种类多、精度高且频率、幅度等信号参数方便可调的信号源。
尤其随着电子、通信、网络行业的发展,频段的分布日趋密集,更要求有高精度、高可靠性的信号源。
信号发生器则是一种常用的信号源,广泛地应用于电子电路调试、通信测试、控制系统仿真和教学实验测试等领域。
但是目前的产品体积大、电路复杂、价格高,无法满足用户对成本和便携性要求高的波形发生器的需求。
本设计是以多种函数信号产生为目的,用单片机作为中央处理控制器,函数信号经数学运算解析成程序算法,直接由软件程序产生波形信号数据送给数摸转换输出,可以用来给测试电路及设备提供波形,实现智能化波形发生器的作用。
2 智能任意信号发生器的总体设计本设计是将目前信号发生器产品多而复杂的外围功能部件整合到具有模数混合功能设计的的单片机内部电路中,提高该仪器仪表的集成度和可靠性,同时降低了系统的成本,利用单片机片丰富的内部资源和功能部件增强仪器的性能,因此,该方案在提高仪器仪表可靠性、实用性及性价比方面取得非常好的效果。
利用单片机作为波形存储及控制元件,运用软件函数运算法产生多种波形,通过键盘电路控制波形,实现高精度、任意波形、便携式、智能化信号发生器。
■2.1 总体硬件设计方案及分框图介绍2.1.1 智能任意信号发生器设计方案该信号发生器的主要技术指标如下:频率范围:50Hz~10MHz;输出波形:正弦波、三角波,脉冲(占空比可调),梯形波,DC信号等;占空比调节范围:各输出波形均可在25%~75%范围内调节;输出信号幅度:10V(p-p);输出信号参考电平:-5V~+5V;输出阻抗:50Ω~100Ω。
2.1.2 分框图的简介电源:将采用AS1117等电源芯片提供单片机和外围电路的工作电压。
单片机:选用C8051F020用来将编写的程序存储在芯片中。
存储器: 单片机中的读写存储单元。
D/A:将数字信号转换成模拟信号。
基于单片机的函数信号发生器设计所用元器件:基于单片机的函数信号发生器1.设计目的1.学习使用keil编程,使用Altium Designer绘制原理图;2.使用单片机产生正弦波、方波、三角波、锯齿波并可通过按键对波形切换、幅值和频率的调整;3.学习使用示波器显示波形;2.设计原理基于单片机的函数发生器原理以STC89C51为整个函数发生器的核心部分,通过编写程序和执行程序,运用示波器显示出四种波形,分别是正弦波、三角波、方波和锯齿波。
本设计拥有五个按键,分别实现波形的切换,改变波形的频率和幅值的大小。
芯片DAC0832将数字信号转换成模拟信号输出并通过外接运算放大器OP07实现电流向电压的转换,最后通过示波器显示出波形。
3.设计内容基本设计内容本次设计的主要内容是设计一个基于单片的函数信号发生器实现正弦波、三角波、方波和锯齿波。
利用单片机设计程序,使其能够通过按键有效切换四种波形,并且实现波形幅值和频率的调整满足本设计的要求,进行硬件系统和软件系统的设计,最后调试完成本次设计。
LCD1602液晶显示波形种类、幅值以及频率。
频率的可调范围在1—10HZ,幅值可调范围在1—5V。
显示屏上显示参数,第一行显示波形。
第二行左边显示波形频率,右边显示波形幅值。
本设计由五个功能按键,分别进行波形切换,加减幅值和加减频率。
电压在示波器上显示,硬件原理示意图,如图1.1所示。
图1.1 硬件原理设计图模块设计单片机最小系统模块本设计STC89C51为整个函数发生器的核心部分,单片机、时钟电路和复位电路构成单片机的最小系统,如图2.1所示。
图单片机最小系统模块原理图晶体谐振器是时钟电路的重要组成部分,将晶体谐振器放入电路,上电后它会产生机械振荡,单片机凭借晶体谐振器的频率运行所设计出来的频率,所以说晶体谐振器的频率是单片机操作时间规律,保证单片机平稳的工作。
晶体谐振器是控制CPU的时钟频率的。
频率控制运行速度。
晶体谐振器虽然是振荡电路的一部分,但是它自身不会产生震荡,它会有一个固定的频率,然后与外围电路发生谐振。
课程设计任务书课程名称集成电路原理及应用课程设计课程代码设计题目函数信号发生器设计设计时间2012年12月17日——2012 年12月22 日院(系)电子信息学院专业电子信息工程班级BX0904 一、课程设计任务(条件)、具体技术参数(指标)任务:设计一个函数信号发生器功能要求:⑴设计并制作能产生正弦波、矩形波(方波)和三角波(锯齿波)的函数发生器,本信号发生器可以考虑用专用集成芯片为核心实现。
⑵信号频率范围: 1Hz-100kHz;⑶频率控制方式:①手控通过改变RC参数实现;②键控通过改变控制电压实现;③为能方便地实现频率调节,建议将频率分档;⑷输出波形要求①方波上升沿和下降沿时间不得超过200nS,占空比在48%-50%之间;②非线性误差≤2%;③正弦波谐波失真度≤2%;⑸输出信号幅度范围:0-20V;⑹信号源输出阻抗:≤1Ω;⑺应具有输出过载保护功能;⑻具有数字显示输出信号频率和电压幅值功能。
二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)1.课程设计基本要求课题分析、查阅资料、方案论证、方案实现、系统联调、撰写课程设计报告2.成果要求(1)系统方案(2)硬件电路原理图或软件源程序(3)设计说明书(课程设计报告)三、课程设计工作进度计划:时间安排内容星期一(12月17日)第7-8小节下达任务、选择方案星期二(12月18日)软硬件设计星期三(12月19日)第1-4小节软硬件设计、调试星期四(12月20日)第1-4小节调试、撰写报告星期五(12月21日)第1-4小节考核答辩四、主要参考资料参考资料:《集成电路原理及应用》谭博学主编,电子工业出版社指导教师:2012 年12 月17 日目录目录 (2)1.系统设计 (5)1.1设计要求 (5)1.2方案设计与论证 (5)1.2.1 信号发生电路方案论证 (5)1.2.3 显示方案论证 (6)1.2.4键盘方案论证 (6)1.3总体系统设计 (6)1.4硬件实现及单元电路设计 (6)1.4.1单片机最小系统的设计 (7)1.4.2 波形产生模块设计 (7)1.4.3 显示模块的设计 (8)1.4.4 键盘显示模块的设计 (8)1.5 软件设计流程 (9)2.输出波形的种类与频率的测试 (10)2.1、测量仪器及测试说明 (10)2.2测试过程 (10)2.3、测试结果 (11)3.设计心得及体会 (11)参考文献 (11)1.系统设计经过考虑,我们确定方案如下:利用AT89S52单片机采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制三种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。
基于单片机的函数信号发生器完整版汇编__键盘显示摘要本文介绍一种用AT89C51单片机构成的波形发生器,可产生方波、三角波、正弦波、锯齿波等多种波形,波形的周期可用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、性能优越等特点。
文章给出了源代码,通过仿真测试,其性能指标达到了设计要求。
关键词:单片机;DAC;信号发生器目录摘要............................................................... 目录............................................................... 第一章绪论..........................................................1.1单片机概述......................................................1.2信号发生器的分类................................................1.3研究内容........................................................ 第二章方案的设计与选择..............................................2.1方案的比较......................................................2.2设计原理........................................................2.3设计思想........................................................2.4设计功能........................................................ 第三章硬件设计......................................................3.1硬件原理框图....................................................3.2主控电路........................................................3.3数、模转换电路..................................................3.4按键接口电路....................................................3.5时钟电路........................................................3.6显示电路........................................................ 第四章软件设计......................................................4.1程序流程图...................................................... 第五章总结与展望.................................................... 致谢............................................................... 参考文献............................................................. 附录1电路原理图..................................................... 附录2 源程序......................................................... 附录 3 器件清单......................................................第一章绪论1.1单片机概述随着大规模集成电路技术的发展,中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、(I/O)接口、定时器/计数器和串行通信接口,以及其他一些计算机外围电路等均可集成在一块芯片上构成单片微型计算机,简称为单片机。
单片机具有体积小、成本低,性能稳定、使用寿命长等特点。
其最明显的优势就是可以嵌入到各种仪器、设备中,这是其他计算机和网络都无法做到1.2信号发生器的分类信号发生器应用广泛,种类繁多,性能各异,分类也不尽一致。
按照频率范围分类可以分为:超低频信号发生器、低频信号发生器、视频信号发生器、高频波形发生器、甚高频波形发生器和超高频信号发生器。
按照输出波形分类可以分为:正弦信号发生器和非正弦信号发生器,非正弦信号发生器又包括:脉冲信号发生器,函数信号发生器、扫频信号发生器、数字序列波形发生器、图形信号发生器、噪声信号发生器等。
按照信号发生器性能指标可以分为一般信号发生器和标准信号发生器。
前者指对输出信号的频率、幅度的准确度和稳定度以及波形失真等要求不高的一类信号发生器。
后者是指其输出信号的频率、幅度、调制系数等在一定范围内连续可调,并且读数准确、稳定、屏蔽良好的中、高档信号发生器。
1.3 研究内容本文是做基于单片机的信号发生器的设计,将采用编程的方法来实现三角波、锯齿波、矩形波、正弦波的发生。
根据设计的要求,对各种波形的频率和幅度进行程序的编写,并将所写程序装入单片机的程序存储器中。
在程序运行中,当接收到来自外界的命令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。
第二章方案的设计与选择2.1 方案的比较方案一:采用单片函数发生器(如8038),8038可同时产生正弦波、方波等,而且方法简单易行,用D/A转换器的输出来改变调制电压,也可以实现数控调整频率,但产生信号的频率稳定度不高。
方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。
方案三:采用单片机编程的方法来实现。
该方法可以通过编程的方法来控制信号波形的频率和幅度,而且在硬件电路不变的情况下,通过改变程序来实现频率的变换。
此外,由于通过编程方法产生的是数字信号,所以信号的精度可以做的很高。
鉴于方案一的信号频率不够稳定和方案二的电路复杂,频率覆盖系数难以达标等缺点,所以决定采用方案三的设计方法。
它不仅采用软硬件结合,软件控制硬件的方法来实现,使得信号频率的稳定性和精度的准确性得以保证,而且它使用的几种元器件都是常用的元器件,容易得到,且价格便宜,使得硬件的开销达到最省。
2.2 设计原理数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。
89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及其接口、显示器及其接口、数模转换及波形输出、指示灯及其接口等四部分,即可构成所需的波形发生器,其信号发生器构成原理框图如图2.1所示。
图2.1信号发生器原理框图89C51是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号幅度的调节。
当数字信号经过接口电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。
2.3 设计思想(1)利用单片机产生方波、正弦波、三角波和锯齿波等信号波形,信号的频率和幅度可变。
(2)将一个周期的信号分离成256个点(按X 轴等分),每两点之间的时间间隔为∆T ,用单片机的定时器产生,其表示式为:∆T=T/256。
如果单片机的晶振为12MHz ,采用定时器方式0,则定时器的初值为:X=213—∆T/T mec (2.1)定时时间常数为:TL =(8192—∆T )/MOD256(2.2)TH=(8192∆T)/256(2.3)MOD32表示除32取余数(3)正弦波的模拟信号是D/A 转换器的模拟量输出,其计算公式为:Y=(A/2sin ∆t )+A/2 (其中A=VREF)(2.4) ∆t=N ∆T (N=1~256) (2.5)那么对应着存放在计算机里的这一点的数据为:(2.6) (4)一个周期被分离成256个点,对应的四种波形的256个数据存放在以TA2.4 设计功能(1)本方案利用8155扩展8个独立式按键,6个LED 显示器。
其中“S 0”号键代表方波输出,“S 1”号键代表正弦波输出,“S 2”号键代表三角波输出,“S3” 号键代表锯齿波输出。
(2)“S 4”号键为10Hz 的频率信号,“S 5”号键为100Hz 的频率信号,“S 6”号键为500Hz 的频率信号,“S 7”号键为1KHz 的频率信号,6个LED 显示器输出信号的频率值,选用共阳极LED 。
(3)利用两片DAC0832实现幅度可调的信号源,(其中一片用来调节幅度,(sin 1)255(255)/2t Di Y A ∆+⨯=⨯=另外一片用来实现信号源的输出)。
(4)频率范围:10~1000Hz。
(5)输出波形幅度为0~5V第三章硬件设计3.1 硬件原理框图硬件原理方框图如图3.1所示。
图3.1硬件原理框.2 主控电路AT89C51单处机内部设置两个16位可编程的定时器/计数器T0和T1,它们具有计数器方式和定时器方式两种工作方式及4种工作模式。
在波形发生器中,将其作定时器使用,用它来精确地确定波形的两个采样点输出之间的延迟时间。
模式1采用的是16位计数器,当T0或T1被允许计数后,从初值开始加计数,最高位产生溢出时向CPU请求中断。
中断系统是使处理器具有对外界异步事件的处理能力而设置的。
当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这个紧急事件。
在波形发生器中,只用到片内定时器/计数器溢出时产生的中断请求,即是在AT89C51输出一个波形采样点信号后,接着启动定时器,在定时器未产生中断之前,AT89C51等待,直到定时器计时结束,产生中断请求,AT89C51响应中断,接着输出下一个采样点信号,如此循环产生所需要的信号波形[6]。