基于单片机的函数信号发生器设计_第1页
基于单片机的函数信号发生器设计_第2页
基于单片机的函数信号发生器设计_第3页
基于单片机的函数信号发生器设计_第4页
基于单片机的函数信号发生器设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.基于单片机的函数信号发生器设计所用元器件:元器件数量(个)电阻3电容9stc89c52芯片1dac0832芯片1max232芯片1按键7op07运算放大器1led发光二极管1lcd1602液晶屏幕1晶振1电位器1芯片底座4排阻1电解电容2排针若干跳线若干基于单片机的函数信号发生器1.设计目的1学习使用 keil 编程,使用 altium designer 绘制原理图;.2使用单片机产生正弦波、方波、三角波、锯齿波并可通过按键对波形切换、幅值和频率的调整;3学习使用示波器显示波形;2.设计原理基于单片机的函数发生器原理以 stc89c51 为整个函数发生器的核心部分,通过编写程序和执行程序,

2、运用示波器显示出四种波形, 分别是正弦波、三角波、方波和锯齿波。 本设计拥有五个按键, 分别实现波形的切换, 改变波形的频率和幅值的大小。芯片 dac0832 将数字信号转换成模拟信号输出并通过外接运算放大器 op07 实现电流向电压的转换,最后通过示波器显示出波形。3.设计内容3.1 基本设计内容本次设计的主要内容是设计一个基于单片的函数信号发生器实现正弦波、三角波、方波和锯齿波。 利用单片机设计程序, 使其能够通过按键有效切换四种波形,并且实现波形幅值和频率的调整满足本设计的要求,进行硬件系统和软件系统的设计,最后调试完成本次设计。lcd1602 液晶显示波形种类、幅值以及频率。频率的可调

3、范围在110hz,幅值可调范围在 1 5v。显示屏上显示参数,第一行显示波形。第二行左边显示波形频率,右边显示波形幅值。本设计由五个功能按键,分别进行波形切换,加减幅值和加减频率。电压在示波器上显示,硬件原理示意图,如图1.1 所示。显示电路按键单d/a 转换电路放大电路片机复位电路波形输出图 1.1 硬件原理设计图3.2 模块设计3.2.1 单片机最小系统模块本设计 stc89c51 为整个函数发生器的核心部分,单片机、时钟电路和复位电路构成单片机的最小系统,如图2.1 所示。.图 2.1 单片机最小系统模块原理图晶体谐振器是时钟电路的重要组成部分, 将晶体谐振器放入电路, 上电后它会产生机

4、械振荡, 单片机凭借晶体谐振器的频率运行所设计出来的频率, 所以说晶体谐振器的频率是单片机操作时间规律, 保证单片机平稳的工作。 晶体谐振器是控制 cpu 的时钟频率的。频率控制运行速度。晶体谐振器虽然是振荡电路的一部分,但是它自身不会产生震荡, 它会有一个固定的频率, 然后与外围电路发生谐振。谐振的产生需要晶体谐振器固定频率和外围电路的频率一致, 如果差距大,或者根本对不上则会使电路不在振荡。 单片机会根据实际所能承受的晶体谐振器频率来选择自己的运行频率,不会因为晶体谐振器频率快单片机运行就快,频率慢单片机运行速度就会降低。复位电路包含一个电容、 两个电阻包括一个接地电阻和一个复位按键, 电

5、容和电阻采用值为 10f和 10k。复位电路让单片机回到原始工作状态, rst 复位引脚高电平有效,高电平有效的持续时间应为 24 个时钟周期以上,才能有效复位。根据公式电容的充电时间为 t=r*c ,则电容的充电时间为 100ms,充满使得单片机复位。电容充满,与地相接的的电阻电压、电流都降为零,在开机上电的0.1s 钟内,单片机系统会自动复位,在单片机工作期间,按下复位按键,电容放电,接地电阻出现电压,单片机复位松开按键,电容充电,几个毫秒之后单片机开始工作。3.2.2 显示模块lcd1602 能同时显示 32 个字符。 lcd1602 采用的是数据并行接法, 特点主要是使用方便,需要很多

6、的 i/o 口,函数发生器设计中 i/o 口是够用的,所以可以使用这种数据传输方式。八位的数据赋给 i/o 口。读取数据时也只要读取整个 i/o 口。 lcd1602 显示模块,如图 2.2 所示。.图 2.2 显示模块原理图3.2.3 d/a 转换电路da 转换模块由 dac0832 、op07 运算放大电路组成, dac0832 作为函数发生器数模转换模块的核心芯片,转换时间为 1us,工作电压为 +5v+15v,基准电压为正负 10v。它主要由两个 8 为寄存器和一个8 位 d/a 转换器组成,片内有输入数据寄存器,所以芯片可以直接与单片机相接。dac0832 以电流的形式输出信号,所以

7、需要在 iout 后接一个 op07 运算放大器, 把输出电流信号转换成电压的形式,供示波器显示,在信号输出之前op07 输出口接一个电阻和一个电容组成一个简单的滤波电路,用来抑制其他杂波,得到正常信号。d/a 转换模块,如图 2.3 所示。图 2.3 d/a 转换模块原理图3.2.4 提供运放电源电路.dac0832 输出的是电流信号, 要将电流转换成电压, op07 运算放大器需要提供正负 10v 的电压,在单片机与计算机通信时需要加电平转换芯片, max232 可以完成电平转换功能,因此 max232 芯片上可以找到正、负电压。根据测量,max232 芯片的 2、6 引脚分别输出 +10

8、v 和 -10v 左右的电压,所以可以作为运算放大器 op07 的电源电压,分别接在运放两端, max232 芯片,如图 2.4 所示。图 2.4 max232原理图4.硬件设计调试4.1 测试仪器为确保硬件和软件的正确性及完善性,需要一些测试仪器进行调试,硬件调试所需仪器如表 3.1 所示:表 3.1 测试仪器表硬件调试所需仪器数量电脑1 台万用表1 个usb 线1 条示波器1 台连接板子和示波器的探头线1 条4.2 硬件调试过程硬件调试是设计是否能成功的关键, 通过调试可以检查板子是否能正确运行以及检测设计功能是否按要求实现。画原理图很多细节需要注意, 原理图的正确性很重要,这关系到板子的

9、焊接和实现,原理图布局划线最好规整, 本设计需要焊接的元器件不多, 但焊接时还是需要认真检查特别注意的,比如短距离焊点的.焊接方法,或是线与线之间很近,线与焊盘之间距离太小,线细易断等。在线密集的地方避免焊接在一起,同时还要避免虚焊、短路、断路等现象。按照原理图有顺序的焊接器件, 从低到高焊接,芯片的焊接需要注意, 不可将芯片直接焊上。在焊接的时候看见虚断的线路, 需要用焊锡补, 在拉焊锡时为了避免影响其他的线路,在拉完焊锡的路径上进行检测,检查相关电路的连通和无关电路的隔断,找出问题电路线,并及时改正。在焊完电路以后检查电路的可实际操作性是一定需要的, 因为在焊接的时候芯片很容易出现问题,

10、板子上有些元件接口还加有跳线, 需要检查是否有正确连接,有无短路、断路、线的连通性,跳线有没有松动等,对照电路图按照顺序逐一对照检查。板子实物图,如图 3.1 所示。图 3.1 板子实物图上电后,板子上的最小系统的复位按键,按下是否能复位,led 灯点亮。检测完毕后在进行下一步的调试工作。板子通电时不要急于把重要的芯片插上,更不能将芯片或电源插反, 若电路出现问题很有可能将芯片烧坏。通电后查看显示屏能否正常显示。 若板子出现异常现象, 例如异常气味、 出现烟雾和器件发烫等现象,立即切断电源。如果测试没有任何问题,硬件也确定是好的,结束硬件调试下载正确程序,并连接示波器。( 1)板子上电后,通过

11、示波器显示频率为1hz,幅值为 5v 的正弦波。.图 3.2 正弦波实现图( 2)通过按键,实现频率和幅值的调整,示波器上显示调整后的正弦波波形,频率为 5hz,幅值为 2v 。图 3.3 正弦波实现图( 3)通过波形切换按键,将正弦波波形切换到三角波波形,并通过示波器上显示频率为 5hz,幅值为 2v 三角波波形。图 3.4 三角波实现图( 4)通过波形切换按键,将三角波波形切换到方弦波波形,并通过示波器上显示频率为 5hz,幅值为 2v 方波波形。.图 3.5 方波实现图( 5)通过波形切换按键,将方弦波波形切换到锯齿波波形,并通过示波器上显示频率为 5hz,幅值为 2v 方波波形。图 3

12、.6 锯齿波实现图4.3 调试所遇问题及解决办法将元器件根据原理图焊接在板子上后, 给板子上电,单片机最小系统没有异常,液晶显示屏正常, max232 芯片在上电几分钟后芯片发烫,立刻切断电源,并检查原理图各个引脚是否焊接正确, 地和电源是否焊接错误, 检查有无短路现象,发现无误,再次上电,其他模块正常运作, max232 芯片仍然发烫,断电后将芯片取下,给板子供电,用万用表测量 dac0832 输出引脚,万用表显示有电流输出,可以确定 dac0832 芯片正常运作。这时将 max232 换下,换成一个升压模块电路,对 op07 运放提供正负电压,将模块接入后,上电,发现几分钟后升压模块也迅速

13、发烫,切断电源将模块取下,这时通过查找资料后发现 op07 正负 10v 引脚接反,这时将 op07 运放的正负电源输入端口引脚反过来, 将 max232 芯片的 6 引脚与运放 op07 的 4 引脚相接,之后再将 max232 芯片的 2 引脚与运放 op07 的 7 引脚相接。4.4 调试结果通过对软件和硬件的检查, 反复的修改和调试, 上电后,电源指示灯正常亮, lcd1602 液晶显示屏可以正常显示波形种类、幅值和频率大小,按下按键后,.相应的显示屏显示的内容会有所改变, 示波器显示正确的波形, 本设计可以手动复位。5.软件调试基于单片机函数信号发生器是由硬件和软件来相互结合实现的,

14、 任一部分存在问题都会影响总体功能, 达不到预期效果。 在本设计确定硬件电路没有问题以后,就开始对软件的调试了。 由于软硬件相互结合, 根据题目要求设计硬件电路,查看相关资料以及整合相关电路功能及性能, 将硬件电路设计出来, 确定好硬件电路后,根据要实现的硬件功能, 软件设计也会逐步确定下来。 根据函数发生器所要实现的具体功能设计出合理的程序结构。单片机的软件设计调试主要有两种,一是使用软件仿真进行调试, 运用计算机软件区模拟单片机环境的指令执行,并虚拟单片机内部资源从而实现功能演示。 另外一种就是通过软硬件结合来进行程序的调试,使用 keil 软件编译好程序下载到单片机中,然后在系统中观察软

15、件功能是否实现。在本次设计中我们先使用 proteus 对本设计进行仿真,之后再运用软硬结合下载进单片机的方式完成本次设计。6.心得体会为期两周的单片机实训结束了,我们小组学到了很多东西。 随着电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,我们学习了单片机这门课程,感觉是有点难, 不过在学习中, 我才发现学习单片机不仅仅需要软件的知识, 还需要硬件的知识。 单片机是一门很好的学问,需要我们去钻研它。 说起本次设计, 我认为最重要的就是做好设计的预习,认真的研究老师给的题目, 选一个小组成员都感兴趣的题目。其次,老师在实验课上的讲解要认真的去听去想, 因为只有都

16、明白了, 做起设计就会事半功倍, 如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。最后,要重视程序的规范,便于修改,也要注重程序的调试,掌握其方法。在全组人竭尽全力,程序编写成功, 这是我们共同努力的结果, 在享受我们成果之时, 不得不感慨单片机的重要性,所以为期两周的单片机课程设计没有浪费我们学到了很多知识, 本次设计和课堂上老师所讲的内容有所相似, 需要我们在结合所学只是上进一步升华。也让我们对单片机有了更深一步的了解, 虽然最后结果是出来了, 可这与老师的精心指导是分不开的她引导我们的思路, 所以老师是功不可没的。 总而言之,单片机课程设计对于我们有很大的帮助,我们从中受

17、益匪浅。.附录 1原理图protues仿真图.附录 2源程序#includereg52.h#define uchar unsigned char#define uint unsigned intsbit key1=p10;sbit key2=p11;sbit key3=p12;sbit key4=p13;sbit key5=p14;sbit lcden=p34;sbit lcdrs=p35;sbit dacwr=p36;uchar flag,freq,size; / 分别用来标记波的种类、频率 hz 、幅值 v uchar num,key; /定义数组元素、以及是否有按键按下uint valu

18、e;/定时器装初值uchar lcd_table=wave:;uchar lcd_table1=fre:;uchar lcd_table2=amp:;uchar lcd_table3=sin;/lcd 波形种类数组uchar code sin_table64=0x00,0x03,0x06,0x0a,0x10,0x17,0x1e,0x27,0x30,0x3b,0x46,0x51,0x5d,0x69,0x76,0x83,0x8f,0x9c,0xa8,0xb3,0xbf,0xc9,0xd3,0xdc,0xe4,0xec,0xf2,0xf7,0xfb,0xfe,0xff,0xff,0xff,0xfc,

19、0xf9,0xf5,0xef,0xe8,0xe1,0xd8,0xce,0xc4,0xb9,0xae,0xa2,0x96,0x89,0x7d,0x70,0x64,0x58,0x4c,0x41,0x36,0x2c,0x23,0x1b,0x14,0x0d,0x08,0x04,0x01,0x00,0x00;/ 正弦波uchar code tri_table64=0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,0x80,0x.88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0

20、xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xfe,0xf6,0xee,0xe6,0xde,0xd6,0xce,0xc6,0xbe,0xb6,0xae,0xa6,0x9e,0x96,0x8e,0x86,0x7e,0x76,0x6e,0x66,0x5e,0x56,0x4e,0x46,0x3e,0x36,0x2e,0x26,0x1e,0x16,0x0e,0x06;/ 三角波uchar code zig_table64=0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c,0x20,0x24,0x28,0x2c,0x30,0x34,0x3

21、8,0x3c,0x40,0x44,0x48,0x4c,0x50,0x54,0x58,0x5c,0x60,0x64,0x68,0x6c,0x70,0x74,0x78,0x7c,0x80,0x84,0x88,0x8c,0x90,0x94,0x98,0x9c,0xa0,0xa4,0xa8,0xac,0xb0,0xb4,0xb8,0xbc,0xc0,0xc4,0xc8,0xcc,0xd0,0xd4,0xd8,0xdc,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc;/锯齿波uchar code squ_table64=0x00,0x00,0x00,0x00,0x00,0

22、x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff;/方波voi

23、d delayms(uchar xms)uchar i,j;for(i=xms;i0;i-)for(j=110;j0;j-);void write_com(uchar com)/ 液晶写指令lcdrs=0;p0=com;delayms(2);lcden=1;delayms(2);lcden=0;void write_data(uchar date)/ 液晶写数据lcdrs=1;p0=date;delayms(2);lcden=1;delayms(2);lcden=0;void lcd_init()/液晶初始化.lcden=0;write_com(0x38);write_com(0x0c);wr

24、ite_com(0x06);write_com(0x01);void init()key=1;value=15625;/ 按键标志位、定时初值(1450 微秒为人工减小误差值) 初始化flag=1;freq=1;size=5;/ 变量初始化,初始产生正弦波,频率为1hz ,幅值为 5vdacwr=0;/0832 初始化tmod=0x01;/定时器 t0 初始化th0=(65536-value+1400)/256;/ 频率为 1hz 时,每点之间隔15625 微秒tl0=(65536-value+1400)%256;ea=1;et0=1;tr0=1;void keyscan()if(key1=0

25、)/key1 选择波形delayms(5);if(key1=0)while(!key1);key=1;flag+;/flag 为 1、 2、 3、 4 时,分别对应正弦方波、三角方波、锯齿方波、方波if(flag=5)flag=1;if(key2=0)/ 频率增大delayms(5);if(key2=0)while(!key2);key=1;freq+;if(freq10)freq=1;value=1000000/(freq*64);if(key3=0)/ 频率减小.delayms(5);if(key3=0)while(!key3);key=1;freq-;if(freq5)size=1;if(key5=0)/ 幅值减小delayms(10);if(key5=0)while(

温馨提示

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

评论

0/150

提交评论