您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 单片机MC51函数信号发生器
目录1.系统总体方案选择与说明..........................12.系统结构框图与工作原理...........................13.各单元硬件设计说明及计法.........................14.软件设计与说明(包括流程图).....................85.调试结果与必要的调试说明........................146.使用说明.......................................187.程序清单......................................188.总结..........................................349.参考文献.......................................36附录.............................................36附录A系统原理图2一、系统总体方案选择与说明为了实现低频信号的产生和频率以及移相角度的显示我们采用的用D/A数模转换电路进行波形的输出。并通过数码管进行显示。通过按键进行波形的选择以及频率和移相的调整。二、系统结构框图与工作原理系统选用AT89S52作为CPU;波性选择及频率和移相角调整:通过按键来选择来产生中断0,以实现波形的选择,通过按键来产生中断1,实现频率和移相角度的选择,通过另外两键的是实现加减;数模转换及波形输出:通过DAC0832来实现模数转换,并通过两级运放实现双极性输出。系统结构框图如图1所示图1系统结构框图三、各单元硬件设计说明及计算方法31)主电路如图2所示P1.0(T2)1P1.1(T2EX)2P1.23P1.34P1.45P1.56P1.67P1.78REST9P0.039P0.336P0.435P0.534P0.633P0.732P0.138P0.237P3.0(RXD)10P3.1(TXD)11P3.4(T0)14P3.5(T1)15P3.6(WR)16P3.7(RD)17P3.2(INT0)12P3.3(INT1)13VCC40XTAL218XTAL119GND20P2.021P2.122P2.425P2.526P2.627P2.728P2.223P2.324EA/VPP31ALE/PROG30PSEN29AT89S52U5AT89S52Y112MHzC1130pFC930pFVCCVCCRESTDI0DI1DI2DI3DI4DI5DI6DI7CSWRINT0INT1DOWNUPCLKLOADDINBUZZ图2主电路2)功能键电路通过建S1来产生外部中断1(INT1),由中断1的中断程序来记录按键的次数(CNT_EX1(0-2))。不同键数代表的功能不一样。相应的处理程序根据CNT_EX1,实现调频和移相。通过S2键来产生外部中断0(INT0),由中断0的中断程序来记录按键的次数(CNT_EX0(0-5))。不同键数代表的波形不一样。相应的处理程序根据CNT_EX0,产生相应的波形;S3、S4分别用于实现调频和移相的增加和减少;R6―R9是上拉电阻。功能键电路如图2所示4R610KR710KR810KR910KS4UPS3DOWNS2INT1S1INT0INT0INT1UPDOWNVCC图3功能键电路3)单片机的复位电路如图3所示+C1022uFR41KR5200S2SW-PBVCCREST图3复位电路4)数码管显示电路该电路选择MAX7219芯片,它是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示。1DIN串行数据输入端口。在时钟上升沿时数据被载入内部的16位寄存器。2,3,5-8,10,11DIG0–DIG7八个数据驱动线路置显示器共阴极为低电平。关闭时7219此管脚输12LOAD(MAX7219)载入数据。连续数据的后16位在LOAD端的上升沿时被锁定。5CS(MAX7221)片选端。该端为低电平时串行数据被载入移位寄存器。连续数据的后13CLK时钟序列输入端。最大速率为10MHz.在时钟的上升沿,数据移入内部移位寄存器。下降沿时,数据从DOUT端输出。对MAX7221来16位在cs端的上升沿时被锁定。14-17,20-23SEG7段和小数点驱动,为显示器提供电流。当一个段SEGA–SEGG,动关闭时,7219的此端呈低电平,7221呈现高阻抗。18SET通过一个电阻连接到VDD来提高段电流。19V+正极电压输入,+5V24DOUT串行数据输出端口,从DIN输入的数据在16.5个时钟周期后在此端有效。当使用多个MAX7219/MAX7221时用此端方便扩展。图4MAX7219的时序图根据时序图,连接电路图,P1.0接CLK,P1.1接LOAD,P1.2接DINSET通过一个电阻连接到VDD来提高段电流V+正极电压输入,+5V,DOUT不用空着不接,A-DP分别接到共阴数码管的A-DP,DIG0-DIG3接到数码管的P1-P4以实现位选。数码管用以显示实时频率。数码管显示电路如图5所示。6A11B7C4D2E1F10G5DP3P112P29P38P468.8.8.8.LED1DPY_7_SEGDIN1DIG02DIG43GND4DIG65DIG26DIG37DIG78GND9DIG510DOG111LOAD/CS12CLK13SEGA14SEGF15SEGB16ISET17V+18SEGC19SEGF20SEGE21SEGDP22SEGD23DOUT24U6MAX7219SEGASEGBSEGFSEGCSEGFSEGFSEGESEGESEGDPSEGDPSEGDSEGDSEGASEGBSEGCSEGGDIG0DIG1DIG2DIG3DIG0DIG1DIG2DIG3CLKLOADDINR210KVCCVCCDIG4DIG5DIG6DIG7图5数码管显示电路5)数模转换电路波形产生电路(1)DAC0832的功能特性DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。DAC0832引脚分布如图6图6DAC0832引脚分布图7(2)DAC0832的引脚特性*D0~D7:8位数据输入线,TTL电平,有效时间应大于90ns*ILE:数据锁存允许控制信号输入线,高电平有效;*CS:片选信号输入线(选通数据锁存器),低电平有效;*WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;*XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;*WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR2、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。*IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化;*IOUT2:电流输出端2,其值与IOUT1值之和为一常数;*Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;*Vcc:电源输入端,Vcc的范围为+5V~+15V;*VREF:基准电压输入线,VREF的范围为-10V~+10V;*D/AGND:数/模拟信号地(3)DAC0832的工作方式DAC0832有如下3种工作方式:⑴单缓冲方式。单缓冲方式是控制输入寄存器和DAC寄存器同时接收资料,或者只用输入寄存器而把DAC寄存器接成直通方式。此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。⑵双缓冲方式。双缓冲方式是先使输入寄存器接收资料,再控制输入寄存器的输出资料到DAC寄存器,即分两次锁存输入资料。此方式适用于多个D/A转换同步输出的情节。⑶直通方式。直通方式是资料不经两级锁存器锁存,即CS*,XFER*,WR1*,WR2*均接地,ILE接高电平。此方式适用于连续反馈控制线路和不带微机的控制系统,不过在使用时,必须通过另加I/O8接口与CPU连接,以匹配CPU与D/A转换。我们的选择的是DAC0832工作在单缓冲方式下,将DAC0832的WR1和WR2引脚接到单片机的WR(P3.6),把CS引脚接到单片机的P2.0从而产生了端口地址为FEFFH,参考电压VREF接VCC,XFER直接接GND。接线方式如图7所示。CS1WR12GND3DI34DI25DI16DI07VREF8Rfb9GND10IOUT111IOUT212DI713DI614DI515DI416XFER17WR218ILE19VCC20U7DAC0832OUT11IN1-2IN2+3VCC4IN2+5IN2-6OUT27OUT38IN3-9IN3+10GND11IN4+12IN4-13OUT414U8LM224DI0DI1DI2DI3DI4DI5DI6DI7WRWRCSVCC1J2CON1R1010KVCCR1120KR1220K+12-12图7DAC0832接线图(4)单极性与双极性输出再实际应用中,有时仅要求输出是单方向的,即单极性输出,其电压通常是0-5V或0-10V;有时则要求输出是双方向的,即双极性输出,如电压为正负5V、10V。单极性(图8所示)和双极性输出电路(如图9所示)图8单极性输出9图9双极性输出1)中用反相比例放大器实现电流到电压的转换,因为输出的模拟量电压的极性与参考电压的极性相反,若要获得与VREF同相的输出电压可用同相放大器或采用两级反相放大。2)通过运算放大器A2将单极性输出转变为双极性输出。由VREF为A2提供一个偏移电流,该电流方向应与A1输出电流的方向相反,且选择R3=R2=2R1,使得由VREF引入的偏移电流恰为A1输出电流的1/2,因而A2的输出将在A1输出的基础上产生偏移。双极性输出电压与VREF及A1输出VOUT1的关系是VOUT2=-(2VOUT1+VREF)四、软件设计与说明1)主程序流程图:如图10所示10图10主程序流程图2)外部0中断服务程序:中断/显示7219初始化开始判断信号类型并产生及输出开始输出?调频程序移相程序赋频率值Start_flag=1Start_flag=0Start_flag=1??YESNOCNT_EX1=?=1=2=3置位Start_flag11外部0中断服务程序是为了实现:开机后,连续按S2键两下,就产生正弦波,若继续按则相继产生方波,锯齿波,三角波。然后又回到正弦波。由按键触发。这其中就是通过设置标志位来改变输出波形如图11所示3)外部1中断服务程序:单片机的P3.3接的S1键,通过按键对当前输出波形进行移相和频率调整。也是通过设定标志位以实现频率和和移相的调整。因为在调整的过程中要响应中断1的服务程序,所以暂时没有波形输出。等到调整结束后再次按S1键才有波形输出。如图12所示置位Start_flag外部0中断服务程序改变信号类型返回图11外部0中断服务程序流程图CNT_EX05?YESCNT_EX0=1NO12图12外部中断1服务程序流程图4)定时/计数器0中断服务程序:定时器是用于改变当前输出波形的频率的。当给DAC0832一个输入值之后开启定时器,通过不同的定时时间长度以实现不同频率的输出。频率的大小是可以改变的因为当选定波形之后,可以同过中断1的服务程序改变频率的大小,当确定之后以新的频率继续输出。如图13所示CNT_EX0=1YES返回NO清除Start_flag外部1中断服务程序CNT_EX1加1CNT_EX13?135)频率调节、相位调节程序:频率和移相角度是通过中断1来实现的。当确定当前调节状态时,就判断当前是出于调频还是
本文标题:单片机MC51函数信号发生器
链接地址:https://www.777doc.com/doc-6076518 .html