【《多脉冲信号发生器的软件设计案例概述》3900字】_第1页
【《多脉冲信号发生器的软件设计案例概述》3900字】_第2页
【《多脉冲信号发生器的软件设计案例概述》3900字】_第3页
【《多脉冲信号发生器的软件设计案例概述》3900字】_第4页
【《多脉冲信号发生器的软件设计案例概述》3900字】_第5页
已阅读5页,还剩16页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

多脉冲信号发生器的软件设计案例概述目录TOC\o"1-3"\h\u11800多脉冲信号发生器的软件设计案例概述 1293031.1系统主程序设计 1207241.2各模块程序设计 2242241.1.1波形发生程序设计 2303111.1.2显示程序设计 530748第2章仿真调试与结果分析 9137072.1仿真调试 973052.2仿真结果分析 1053472.2.1显示模块实验仿真结果 10169662.2.2按键模块实验仿真结果 10234172.2.3波形模块实验仿真结果 11158042.2.4总体仿真结果 1460292.3PCB设计 161.1系统主程序设计本设计采用的是模块化编程,将每个需要实现的功能进行模块化。然后,在主程序中调用子程序。首先,需要对单片机进行初始化,再执行主程序。在主程序中,判断是否有按键按下,当检测的模式按键按下后,切换对应的波形输出,当检测到频率改变按键按下后,改变当前波形的输出频率,系统的主程序流程如图4-1所示。图4-1主程序流程图1.2各模块程序设计1.1.1波形发生程序设计 (1)正弦波:0x80,0x82,0x85,0x88,0x8b,0x8e,0x91,0x94,0x97,0x9a,0x9d,0xa0,0xa3,0xa6,0xa9,0xac,0xaf,0xb2,0xb6,0xb9,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd3,0xd6,0xd1,0xda,0xdd,0xdf,0xe8,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xe4,0xf1,0xf5,0xf4,0xf5,0xf6,0xf2,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xf1,0xf0,0xff,0xff,0xf7,0xf5,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,由于DAc0832是8精度的转换器,其计算如下:QUOTE80×5v/25680×5v/256(即80×LSB)82×LSB……根据DAC0832的特性将一个周期正弦波数字量分为256段,将这些数字量组成数组再通过循环就能得到正弦波。具体程序如下://正弦波voidZXB_wave(unsignedintfreq){ unsignedchari; freq=freq/300; for(i=0;i<255;i++) { P2=SinTab[i]; //delay(); delay_us1(freq); }}(2)方波:单片机将初始数字量0送入到DAC0832中,先延迟段时间,再将0xff送到其中,再经过延迟,通过不断地循环就得到了方波。具体程序如下://方波voidFangbo_wave(unsignedintfreq){ P2=0x00; delay_us(freq); P2=0xff; delay_us(freq);}(3)三角波:单片机将初始数字量0送入到DAC0832中,一直加1,当数值到达0xff时,再把DAC0832中的数字量不断减1,通过不断地循环就得到了三角波。具体程序如下://三角波voidSANjiaobo_wave(unsignedintfreq){ unsignedchari; freq=freq/500;if(freq>1)freq=freq-1; for(i=0;i<255;i++) { P2=i; delay_us1(freq); } for(i=255;i>0;i--) { P2=i; delay_us1(freq); }}(4)锯齿波:锯齿波产生的原理于三角波类似,就是在数字量输出最高点直接跃变到最低点,然后通过循环获得锯齿波的输出。具体程序如下://锯齿波voidJUchibo_wave(unsignedintfreq){ unsignedchari; freq=freq/300;for(i=255;i>0;i--) { P2=i; delay_us1(freq); }}波形的输出主要是控制模块使AT89C52单片机,用软件设计的方法来产生四种波形,调试程序来控制按下相应按键实现的功能所输出的信号。1.1.2显示程序设计LCD可以显示数字字母,英文等,但是中文字符输出不了,LCD显示内置了字符发生器,字符的显示和代码是意义对应的,并且每一位的显示都有其对应的地址,因此在设计显示的程序的时候需要对想显示的字符和数字进行UNcode码对应,在一屏显示的时候需要先将片选信号置低,然后发送数据包,根据显示器的相应来操作,由于显示器只能显示两行,所以多个数据显示的时候可以进行切换,切换的时候就需要清屏,然后重新发送数据,这样通过清屏命令可以实现切换菜单,实现多组信息的显示。LCD1602功能指令图如下图4-2所示:图4-2LCD1602功能指令图LCD初始化流程图如下图4-3所示。图4-3LCD1602初始化流程图其程序如下所示:voidLcdInint() //LCD初始化子程序{ LcdWCom(0x38);//开启显示 LcdWCom(0x0c);//开显示但不显示光标 LcdWCom(0x06);//写一个指针加1 LcdWCom(0x01);//清屏 LcdWCom(0x80);//设置数据指针起点}显示流程图如图4-4所示。图4-4液晶显示程序流程图#include"lcd.h"#include"string.h"#include"stdio.h"voidLcdWCom(ucharcom) //LCD写入命令的子程序{ LCD1602_e=0;//使能端置低电平 LCD1602_rs=0; //选择发送命令端 LCD1602_rw=0; //选择写入端 LCD1602_Mingling=com;//放入命令 Lcd1602_delay1ms(1); //延时1s保持数据稳定 LCD1602_e=1; Lcd1602_delay1ms(5); LCD1602_e=0;}voidLcdWData(uchardat) //写入字节数据的子程序{ LCD1602_e=0; //使能清零 LCD1602_rs=1; //选择输入数据 LCD1602_rw=0; //选择端置0 LCD1602_Shuju=dat;//写入数据 Lcd1602_delay1ms(1); LCD1602_e=1;//使能端置1 Lcd1602_delay1ms(5);//延时5s LCD1602_e=0;}第2章仿真调试与结果分析2.1仿真调试本设计是在Proteus下进行仿真调试的,建立的仿真程序,Proteus是可以模拟实际电路的仿真软件,可以完成数字电路以及模拟电路的仿真,Proteus7.8版本可以仿真51系列大部分的单片机,在7.8版本后,升级后的Proteus可以仿真STM32等单片机,功能更加强大。本设计在7.8环境下对多脉冲信号发生器进行了仿真分析,根据本设计的方案以及硬件电路设计。绘制了仿真原理图,仿真原理图如图5-1所示。图5-1仿真原理图如图5-1,仿真原理图包含了单片机的最小系统电路,显示电路,DAC0832数模转换电路,还有放大电路,为了更好的观察波形的变换,本设计利用Proteus自带的虚拟示波器进行波形观察,改变按键可以切换波形,然后通过频率的按键来实现波形频率变化,仿真原理图和电路的设计完全是一致的,Proteus环境下,单片机可以同时仿真软件,这样在验证电路设计的同时也能实现软件的仿真验证。2.2仿真结果分析2.2.1显示模块实验仿真结果由单片机的最小系统搭配LCD液晶显示屏组成,为了测试LCD是否能显示对应的字符串,通过程序的编写了以学号组成的字符组“178111522215”让显示器显示。其主要设计思路为,先显示模块的初始化再确定显示的位置和显示的内容。如下图5-2所示。图5-2显示实验仿真结果实验结果:LCD1602成功按照编写的软件程序显示了相应的字符。2.2.2按键模块实验仿真结果按键模块使用了8个独立按键和LCD1602组成,P1.0~P1.3四个接口控制MODE的切换P1.3~P1.6控制频率的加减。其主要为了测试按键按下是否能改变显示的结果,没有设置频率的上线不影响实验的结果。按键模块仿真结果如下图5-3所示,先在按1下“MODE3”按键,“+100HZ”按键点击13下,“+10HZ”按键点击2下。图5-3按键模块仿真结果实验结果:显示屏根据按键的按下显示出相应的数字。八个独立的按键先全部置为低电平,外加的上拉电阻使单片机端口置为高电平,当点击按键时,相应的按键连接的端口才会变为低电平,单片机芯片通过循环检测就能判断按键是否有按下。2.2.3波形模块实验仿真结果根据DAC0832的数据手册只要芯片外接一个运放就可以组成实现波形输出电路。具体接法如下图5-4所示。图5-4DAC0832接线图其中输入“+Vref”需要接一个电平接的是5V的参考电压,“IOUT1”接的是运放的反向输入端,“IOUT2”接的是运放的同向输入端。“Rfb”电阻是在DAC芯片的内部接在芯片的第九引脚,根据应用手册提供的输出电压计算公式得到相应得输出电压。将方波波形程序加载到单片机中其结果如5-5所示。图5-5方波实验仿真结果这里将DAC芯片的DI0~DI7数据输入引脚接到单片机的P1端。其中“CS”片选引脚置低电平芯片才能正常输出电压,查看应用手册将芯片的控制引脚都接上有效的电平信号。根据实验实现了方波的输出,但得到的波形并不稳定,需要外接电路的除杂降噪处理。将三角波波形程序加载到单片机中其结果如5-6所示:图5-6三角波实验仿真结果实验现象:将波形放大可以看到输出的三角波是由一个个阶梯波连接而成与DAC0832输出信号的原理符合。从第一个波形幅值最低点到下一个最低点为一个周期,一般通过调节延时的时间可以改变其时间周期。DAC将输出电压分为256份,一份的电压值对应的一位的数字量转换为相应位的模拟量。将锯齿波波形程序加载到单片机中其,结果如5-7所示。图5-7锯齿波实验仿真结果实验现象:矩形波输出与三角波的输出结果相似。修改了相应的软件部分,当输出波形到达最高值直接断崖式的回归到最低值。将正弦波波形程序加载到单片机中其,结果如5-8所示:图5-8正弦波实验仿真结果由实验结果可知输出的波形信号不经过调理放大电路的调制,波形的输出不稳定出现失真现象。因只考虑波形能否正常的输出由于直放置了一个运放,其输出波形是以X轴为中心线对称的。2.2.4总体仿真结果单片机加载完成hex文件时候,启动仿真,首先对正弦波的仿真结果进行测试,根据示波器的信号输出,测试结果如图5-9所示。图5-9正弦波仿真结果如图5-9,通过示波器的观察,我们可以看到,本设计的输出的正弦波脉冲信号波形比较理想,符合设计要求。然后通过按键切换波形,对三角波的波形进行测试,测试结果如图5-10所示。图5-10f=400Hz三角波仿真结果如图5-10,三角波的仿真结果中,输出频率为400Hz,通过改变按键选择波形,调整三角波的输出频率,仿真结果如图5-11所示。图5-11f=500Hz三角波仿真结果通过改变频率的按键,我们可以看到,三角波的输出会有一个变换过程,变换之后频率也改变了,符合设计要求。之后对锯齿波进行仿真测试,锯齿波的测试放着结果如图5-12所示。图5-12f=500Hz锯齿波仿真结果如图5-12,通过示波器可以看到,锯齿波的频率为500Hz,输出的波形符合设计要求,并且波形比较好。最后是对方波的信号进行仿真,方波相对于其他波形来说,比较好生成,方波的仿真结果如图5-13所示。图5-13f=500Hz方波仿真结果2.3PCB设计关于PCB的设计这里用的是AD18,AD是一款用于3DPCB设计和嵌入式系统开发的设计软件。AD作为现在常用的电子设计的工具使用,主要由PCBlayout、FPGA设计、嵌入式开发三大核心模块组成。其软件具有的操作简单、展示直观、方便的优点深受各类用户称赞。在AD18版本中加强了PCB布线的功能,让用户能更加流畅的完成工作,对于学习PCB板设计提供了良好的环境。图5-14电路原理图原理图如上图5-14所示,首先根据仿真电路绘制原理图。其主要由最小单片机系统、DC电源接口、显示模块和调理电路构成。当我们添加完元器件的封装和检测电路图没有报错后就可以导入到PCB中。首先先介绍其主要元器件,如下表5-15所示。表5-15主要元器件清单序号元件标号元件名称数量1S1,S3,S3,S4,S5,S6,S7,S8,S9轻触按键92S10自锁开关1

温馨提示

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

评论

0/150

提交评论