基于单片机的函数发生器课程设计原创

上传人:r****d 文档编号:87776812 上传时间:2022-05-10 格式:DOC 页数:24 大小:1.04MB
收藏 版权申诉 举报 下载
基于单片机的函数发生器课程设计原创_第1页
第1页 / 共24页
基于单片机的函数发生器课程设计原创_第2页
第2页 / 共24页
基于单片机的函数发生器课程设计原创_第3页
第3页 / 共24页
资源描述:

《基于单片机的函数发生器课程设计原创》由会员分享,可在线阅读,更多相关《基于单片机的函数发生器课程设计原创(24页珍藏版)》请在装配图网上搜索。

1、概述波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。本函数发生器采用STC89C52 单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)、运放电路(uA741)、按键和LCD显示电路等。电路采用STC89C52单片机和一片DAC0832数模转换器组成数字式低频信号发生器。函数信号发生器,它具有价格低、性能高和在低频范围内稳定性好、操作方便、体积小、耗电少等特点。由于采用了uA741运算放大器和滤波电路,使其电路更加具有较高的稳定性能,性能比高。此电路清晰,出现故障容易查找错误,操作简单、方便。通过按键控制可产生方波、三角波、正弦波,同时用LCD1

2、602显示幅值和频率。所产生的波形VP-P范围为05 V,。本系统设计简单、性能优良,具有一定的实用性。1.系统方案题目对于功能的要求:利用D/A转换器,系统能输出三角波、梯形波、锯齿波信号,使用键盘或电位器来调整输出频率,并能在显示器显示设定值。使用按键切换上述三种输出波形。对于硬件要求:使用D/A、LED显示器、按键或电位器等。LED显示器、按键数目尽量少,但要说明显示方式和操作步骤。根据要求对下面方案进行论证。1.1 信号发生部分采用单片机和数模/转换DAC0832实现波形的产生。波形的产生是通过STC89C52执行方波波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/

3、A转换电路的输出端得到相应的电压波形。在89C52的P1口接8个按扭,通过软件编程来选择各种波形、幅值电压和频率,每种波形对应一个按钮。此方案的优点是电路原理比较简单,实现起来比较容易。此方案地实现题目要求,三种波形的产生可由程序控制,并通过按键选择波形输出,在示波器上显示波形。波形的周期与频率步进也可以用程序改变。在本设计的基础上,加上LCD显示器,则可通过按钮设定所需要的波形频率,并在LCD上显示频率、幅值电压。输出波形稳定,精度高,滤波好,抗干扰效果好,连接简单,性价比高。1.2显示部分LCD液晶显示,LCD液晶不但能显示字符和数字,而且显示效果较好,容易编程实现。2.系统设计2.1总体

4、设计思路根据题目要求,经过仔细考虑,充分考虑各种因素,制定了整体设计方案:以STC89C52单片机为控制核心,P0口接DAC0832信号输入并数模转换,程序控制产生三种波形,通过P1口接8个按键,控制频率、幅值和占空比,由按键选择三种波形的输出。由uA741运放实现DAC0832输出电流到电压的转换,。在LCD1602上实时显示频率与幅值,波形在示波器上显示。2.2总体框图本系统总体框图如图2.1所示。图 2.1 系统框图3.硬件电路本系统由单片机、波形转换(D/A)电路、显示接口电路、键盘接口电路等部分构成。3.1单片机电路3.1.1 功能与基本原理功能:形成扫描码,键值识别、键处理、参数设

5、置;形成显示段码;产生定时中断;形成波形的数字编码,并输出到D/A接口电路和显示驱动电路。 AT89S51外接12M晶振作为时钟频率,并采用电源复位设计。复位电路采用上电复位,它的工作原理是,通电时,电容两端相当于短路,于是RST引脚上为高电平,然后电源通过对电容充电。RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始工作。产生方波程序思路:根据定时器溢出的时间,将频率值换算为定时器溢出的次数(T1_over_num)。使用变量(T1_cnt)暂存定时器T1的溢出次数,当达到规定的次数(T1_over_num)时,将输出管脚的状态取反达到方波的产生。另外,采用查询的方式实现按键的扫描和

6、LCD液晶的显示,中断服务程序实现方波的产生和连续按键的计时功能。 3.1.2 资源分配 软、硬件设计是设计中不可缺少的,为了满足功能和指标的要求,资源分配为:单片机用12M晶振,P0口与DAC0832相连;P1口接六个按键,实现频率、幅度、占空比的调节,以及波形选择;P2口接LCD1602液晶显示器,实时显示频率与幅值。3.2波形转换(D/A)电路功能:将波形样值的编码转换成模拟值,完成的波形输出。 由一片0832和uA741运放组成。DAC0832是一个具有两个输入数据寄存器的8位DAC。目前生产的DAC芯片分为两类,一类芯片内部设置有数据寄存器,不需要外加电路就可以直接与微型计算机接口。

7、另一类芯片内部没有数据寄存器,输出信号随数据输入线的状态变化而变化,因此不能直接与微型计算机接口,必须通过并行接口与微型计算机接口。DAC0832是具有20条引线的双列直插式CMOS器件,它内部具有两级数据寄存器,完成8位电流D/A转换,故不需要外加电路。0832是电流输出型,示波器上显示波形,通常需要电压信号,电流信号到电压信号的转换可以由运算放大器uA741实现。 单片机向0832发送数字编码,产生不同的输出。先利用采样定理对各波形进行抽样,然后把各采样值进行编码,收到的数字量存入各个波形表,执行程序时通过查表方法依次取出,经过D/A转换后输出就可以得到波形。假如N个点构成波形的一个周期,

8、则0832输出N个样值点后,样值点形成运动轨迹,即一个周期。重复输出N个点,成为第二个周期。利用单片机的晶振控制输出周期的速度,也就是控制了输出的波形的频率。这样就控制了输出的波形及其幅值和频率。具体连接如图3.1所示。图3.1 D/A转换电路3.3显示接口电路功能:驱动LCD1602液晶显示,扫描按钮。 由LCD1602液晶显示器和7个按钮组成。当某一按钮按下时,扫描程序扫描到之后,通过P2口将数字信号发送到LCD1602。LCD1602种专门用于显示字母、数字、符号等点阵式LCD,它的外接电压也是+5V。扫描利用软件程序实现,当某一按键按下时,扫描程序立即检测到,随后调用子程序,执行相应的

9、功能。其与单片机的连接如图3.2所示。图3.2 显示接口电路3.4 键盘接口电路本题中的八个按键,分别实现波形的选择,以及幅值频率的加减。其中预留三个按键作为扩展,可在输出其他波形,如方波时,可增加两个按键用于改变占空比的大小。其与单片机的连接如图3.3所示。3.5电源电路系统中需要5V电源,采用一个电源管理芯片,将9V的电池电源转换为5V. 其与单片机的连接如图3.4所示。4.软件设计及流程主程序和子程序都放在89S52单片机中。主程序的功能是:开机以后负责查键,即做键盘扫描及显示工作,然后根据用户所按的键转到相应的子程序进行处理。子程序的功能有:延时子程序程序、中断子程序、调幅子程序、调频

10、子程序、显示等。主程序流程图幅值频率设定子程序流程图显示子程序流程图本题中的显示部分可以显示两行信息,分别为电压和频率,电压可显示两位,频率可显示四位数。中断子程序流程图从入口进入子程序后,根据choice变量值选择输出波的类型,之后根据按键设定幅值频率。5.设计的改进基于DDS查表法产生函数波形:直接数字频率合成是一种先进的频率合成原理,他是从相位概念出发直接合成所需要波形的一种新的频率合成技术。DDS原理依据奈奎斯特采样定理,以采样时钟f 对固化在ROM或FLASH中的N点正弦离散表进行采样。该正弦表对应单位正弦波形在0-2的离散值,每个存储单元的地址即是相应相位的寻址偏移量。对于一般正弦

11、信号,在任意时刻的相位为对应的离散正弦表的寻址偏移量offset。DDS主要由标准采样时钟源、相位累加器、离散正弦表、数模转换器、低通滤波器构成。DDS查表法可用于正弦波形的输出,而在本题中,锯齿波、三角波、梯形波的输出,采用的是算法计算,这样做,幅值以及相位错误都较少。6.结束语经过近这个月的锻炼和学习,我们学到了许多书本上没有的知识,从方案的论证、课题的选择、电路原理,到程序的编写,一步步,我们收获很大。在设计中,我们力求硬件电路简单,充分发挥软件灵活方面的特点,满足系统设计要求。这中间,我们也遇到了许多困难,在老师的帮助下,一个个也都战胜了。由于我们这个团队接触单片机时间还不长,有很多东

12、西我们还没有学好,学精,所以,设计的方案可能不是最好的,但我们已经尽到我们最大努力来完成此次作品,希望取得好的结果,能学到更加多得知识。所以,在以后的学习中,我们要更加努力,才能处于不败之地。在此,要感谢我们的指导老师,给我们进行了很多的辅导,不仅在技术上给了我很大帮助,也在系统需求和设计方面给予了我很大帮助。老师的谆谆教导,使我们受益匪浅。参考文献1 李勋、刘源主编.单片机实用教程.北京:北京航空航天大学出版社,20002 李珍付、植桐主编.单片机原理与应用技术.北京:清华大学出版社,20033 李朝清主编.单片机原理及接口技术.北京:北京航空航天大学出版社,19994 胡汉才主编.单片机原

13、理及系统设计.北京:清华大学出版社,20025 万福君主编.单片机微机原理系统设计与应用.合肥:中国科学技术大学出版社,20016 陈明英主编.8051单片机课程设计实训教材.北京:清华大学出版社,20027 张洪润主编.单片机应用技术教程(第二版).北京:清华大学出版社,20038 张淑清主编.片微型计算机接口技术及应用.北京:国防工业出版社,2001 9 .北京:清华大学出版社,2007附录附录1元件清单DesignatorPart Type78057805C1C2C3C4104C6C+C7104C8C+R1SSOP16R9S1SPST-2S2SPST-2S3SPST-2S4SPST-2S

14、5SPST-2S6SPST-2S7SPST-2S8SPST-2S9SPST-2U1J20AU2SO8_NU31602U4SOT129-1Y1R38附录2电路原理图附图电路原理图附录3程序清单#include #define uchar unsigned charsbit rs=P30;sbit rw=P31;sbit eg=P32;uchar code table=Volt;uchar code table2=0,1,2,3,4,5,6,7,8,9;uchar b=0,c=0,d=0,i,tl,th;uint k=0int ww=0,qw=0,bw=9,sw=3,gw=3,n=20,chh=5

15、0;/ww为万位数字,qw为千位数字,bw为百位数字, /sw为十位数字,gw为个位数字.int t,f,m,choice=1; /t为时间变量,f为频率变量,choice为波形类型选择变量, *void delay(unsigned int x)int i,j;for(i=0;ix;i+)for(j=0;j120;j+);/写指令函数*void writezl(unsigned char zl)rs=0;rw=0;/满足写指令的条件;P2=zl;delay(5);eg=1;delay(5);eg=0;/写数据函数*void writesj(unsigned char sj)rs=1;rw=0

16、;/满足写数据的条件;P2=sj;delay(5);eg=1;delay(5);eg=0;/初始化程序*void initial()eg=0;writezl(0x38);/显示模式设置;writezl(0x0c);/开显示,不开光标,光标不闪烁;writezl(0x06);/写数据时,每写一个数据,指针后移动一位,但是整屏不动;writezl(0x80+0x00);/在显示器的第一行第一位开始写数据;/显示函数*void display()int i;for(i=0;i3;i+)writesj(tablei);writezl(0x80+0x04) ;writesj(table2chh/10);

17、writezl(0x80+0x05);writesj(.);writezl(0x80+0x06);writesj(table2chh%10);writezl(0x80+0x07);writesj(V);writezl(0x02);/清除指针,但是不清楚显示内容;writezl(0x80+0x40);/跳转到下行的第一位开始置显示;writesj(F);writezl(0x80+0x41);writesj(r);writezl(0x80+0x42);writesj(e);writezl(0x80+0x43);writesj(table2ww);writezl(0x80+0x44);writesj

18、(table2qw);writezl(0x80+0x45);writesj(table2bw);writezl(0x80+0x46);writesj(table2sw);writezl(0x80+0x47);writesj(table2gw);writezl(0x80+0x48);writesj(H);writezl(0x80+0x49);writesj(z);writezl(0x80+0x50);writesj( );/*键选择发波类型,1为正弦波,2为三角波,3为方波*/void key1(void) if(choice4)choice=choice+1; elsechoice=1;/幅度

19、加*/void key2(void)if(chh!=50)chh+;else chh=chh;/幅度减*/void key3(void)if(chh!=0)chh-;/预留按键,无用*/void key4(void)/频率加*/void key5(void)if(n=3000)n=n+100;/频率减*/void key6(void)if(n!=20)n=n-100;/预留按键,无用*/void key7(void)/预留按键,无用*/void key8(void)/*计算显示数字 */void jisuan(void)TR0=0;/关闭定时器f=n;t=1000000/f;th=(65536

20、-t)/256;tl=(65536-t)%256;ww=f/10000;f=f%10000;qw=f/1000;f=f%1000;bw=f/100;f=f%100;sw=f/10;gw=f%10;TR0=1;/*键盘扫描*/void judge(void)uchar temp;P1=0xfe;/第一行扫描11111110;temp=P1;temp=temp&0xf0;/消除低四位;if(temp!=0xf0)/判断是否有键按下;delay(5);/消抖动程序;if(temp!=0xf0)temp=P1;switch(temp)case 0x7e:key1();break;case 0xbe:k

21、ey2();break;case 0xde:key3();break;case 0xee:key4();break;P1=0xfd;/第二行扫描11111101;temp=P1;temp=temp&0xf0;if(temp!=0xf0)delay(5);/消抖延时if(temp!=0xf0)temp=P1;switch(temp)case 0x7d:key5();break;case 0xbd:key6();break;void main(void)initial();TMOD=0X01;TR0=1;th=-t/256;tl=-t%156;TH0=th;TL0=tl;ET0=1;EA=1;wh

22、ile(1) jisuan(); display(); judge(); void time0_int(void) interrupt 1 /中断服务程序TR0=0;if(choice=1) if(b=128)P0=b*chh/50; /锯齿波 b+; else if(choice=2) /三角波 if(c=128)P0=c*chh/50; else P0=(255-c)*chh/50; c+; else if(choice=3) / 梯形波 if(k255) P0=d*chh/50; k+; d+; if(255=k355)P0=255*chh/50;k+; if(355=k610) P0=(255-d)*chh/50 k+; d+; else k=0;TH0=th;TL0=tl;TR0=1;目录概述11.系统方案11.1 信号发生部分2显示部分22.系统设计3总体设计思路3总体框图33.硬件电路4单片机电路43.1.1 功能与基本原理43.1.2 资源分配5波形转换(D/A)电路5显示接口电路63.4 键盘接口电路7电源电路84.软件设计及流程8主程序流程图9幅值频率设定子程序流程图10显示子程序流程图11中断子程序流程图125.设计的改进136.结束语14参考文献15附录16附录1元件清单16附录2电路原理图17附录3程序清单18目录23

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!