低成本双路正弦波发生器

上传人:陈** 文档编号:97448834 上传时间:2022-05-27 格式:DOCX 页数:46 大小:568.93KB
返回 下载 相关 举报
低成本双路正弦波发生器_第1页
第1页 / 共46页
低成本双路正弦波发生器_第2页
第2页 / 共46页
低成本双路正弦波发生器_第3页
第3页 / 共46页
点击查看更多>>
资源描述
编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第46页 共46页低成本双路正弦波发生器(D题)摘 要本作品基于DDS工作原理,利用CPLD编程实现NCO功能,进而实现题目中要求产生正弦波,每路信号的频率、幅度及两路信号的相位差均可程控设置。以P89V51RD2芯片为本设计的控制核心,通过单片机与CPLD的连接实现对波形的频率、幅度及相位差的程控可调,并且可实现取消微处理器单元,控制逻辑单元也能实现独立设置特定参数信号功能。参数设定与相关信息通过液晶屏显示。关键字:DDS原理,微处理器,可编程逻辑,CPLD 任务:设计、制作一个低成本双路正弦波发生器,每路信号的频率、幅度及两路信号的相位差均可程控设置。除工作电源外,正弦波发生器由微处理器单元(含键盘显示)、控制逻辑单元和模拟电路单元三部分组成。要求控制逻辑单元不使用任何存储器资源,模拟电路单元不使用集成DAC且无可调阻容件。正弦波发生器结构框图如下所示,微处理器单元以串行方式向控制逻辑单元发送参数控制字,控制逻辑单元产生若几个频率稳定的逻辑脉冲输出给模拟电路单元,模拟电路单元经过信号变换后得到预定参数的双路正弦波。系统框图如下:主要由键盘显示,微处理单元,控制逻辑单元,模拟电路单元构成。本任务中推荐采用的信号变换原理有:PWM信号经低通滤波后可变换为直流电压,窄带范围内的方波经低通滤波后可变换为相应频率的正弦波,两路不同频率的正弦波经差频与低通滤波后可变换为另一低频正弦波。要求基本要求(1)两路正弦波的频率范围1Hz1kHz,步进值不大于1Hz,频率准确度不低于0.1%;(2) 两路正弦波输出最大幅度不低于3V,幅度设置,设置分辨率不低于12bit;(3)正弦波信号在整个频率设置范围内,波形失真度不大于2%;(4)两路信号的相位差可以在0359度内可调,设置分辨力不大于1度;(5)所有参数均可程控设置;(6)微处理器单元与控制逻辑单元信号连线应不超过3条。发挥部分(1)控制逻辑单元输出给模拟电路单元的信号线应不超过5条; (2)当两路信号频率为1到10间的倍频关系时能同步,示波器观测两路波形稳定; (3)设定的输出信号电压值在整个频段内,变换量小于5%;(4)两路正弦信号幅度设置为零时,输出噪声小于5mV; (5)取消微处理器单元,控制逻辑单元也能实现独立设置特定参数信号的输出;(6)其他,主要考核硬件成本、技术指标提升和工艺水平。目 录摘 要2任务:2要求3目 录4一、方案论证与比较51.1 键盘显示比较与选择51.2 微处理器比较与选择51.3 控制逻辑单元选择与比较51.4 模拟单元中放大器的方案比较:61.5电源方案比较:6二、系统方案描述与论证:72.1 总体设计:72.2 单元电路设计:72.2.1 CPLD部分:72.2.2模拟部分:102.2.3理论计算和分析:12三、软件设计:13四、系统测试:14结 论15参考文献15附 录16附录1 程序设计16附录2 CPLD内部逻辑电路图43附录3 模拟电路原理图44一、方案论证与比较1.1 键盘显示比较与选择方案一:选用独立键盘按键和数码管显示,独立键盘的特点是程序编制简单,但是每个按键占用一条I/0口,当按键较多时,I/O口的利用率不高,适用于所需按键较少的场合。采用数码管显示时一般采用动态显示,需要用I/O口发送段选与位选数据,若同时用独立键盘,则会造成I/O口的数量不够的问题,又因动态显示利用人眼余晖来实现八位数的动态显示,而且还具有可靠性不高,易烧毁的问题。方案二:该方案选用4*4矩阵式键盘和12864液晶。采用矩阵式键盘可大大提高了I/O口的利用率,而采用液晶显示则可以通过控制单元对液晶提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能,显示内容丰富,并且具有微功耗、体积小,超薄轻巧的特点。综上所述,由于本设计要用到16个按键,经过两种方案的比较,最终采用4*4矩阵式键盘和液晶屏显示的组合完成键盘显示单元。1.2 微处理器比较与选择方案一:选用MSP430系列单片机,拥有强大的处理能力MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7种源操作数寻址、4种目的操作数寻址)、简洁的27条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令;有较高的处理速度,在8MHz晶体驱动下指令周期为125 ns。这些特点保证了可编制出高效率的源程序。方案二:选用P89V51RD2单片机,P89V51RD2单片机的典型特性是它的X2方式选项。利用该特性可使应用程序以传统的80C51时钟频率(每个机器周期包含12个时钟)或X2方式(每个机器周期包含6个时钟)的时钟频率运行,选择X2方式可在相同时钟频率下获得2倍的吞吐量。从该特性获益的另一种方法是将时钟频率减半而保持特性不变,这样可以极大地降低电磁干扰(EMI)。Flash程序存储器支持并行和串行在系统编程(ISP)。并行编程方式提供了高速的分组编程(页编程)方式,可节省编程成本和上市时间。综上所述:根据两个方案不同的特点,综合比较选用方案二中的P89V51RD2单片机作为微处理器单元。1.3 控制逻辑单元选择与比较方案一:逻辑控制单元选用CPLD,CPLD属于大规模集成电路范围,是一种用户根据各自需要而自行构造逻辑功能的数字集成电路,它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点。方案二:FPGA它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。CPLD和FPGA的主要区别是他们的系统结构。CPLD是一个有点限制性的结构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。而FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。因此一个有关的重别是很多新的FPGA支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新配置而改变。一些FPGA可以让设备的一部分重新编辑而其他部分继续正常运行综上所述:方案一结合了方案二的优点而且也节约了实验成本,所以选择方案一来完成控制逻辑单元。1.4 模拟单元中放大器的方案比较: 方案一:TL084,双列14脚封装,高阻输入结型场效应输入,电压反馈性运算放大器,工作电压等于正负18V静态电流等于1.4mA,输入偏置电流等于30pA,转换速率等于16V/s功耗等于680mW,增益带宽等于3MHz,输入失调电压等于25mV。方案二:TL082是一个双运算放大器,通过小电压信号的变化控制大电压信号。方案三:LM324具有电源电压范围宽,静态功耗小,可单电源使用价格低廉等优点。综上所述:方案二继承了其他方案的许多的特点,也满足实验要求,因此选择方案二最合适。1.5电源方案比较:方案一:使用自己设计的线性电源,设计时比较麻烦达到预期的目的很是不易,而且产生供电不稳定。方案二:使用AC/DC模块。此模块有良好的隔离、保护作用。而且也能进行电压变换,也有很强的降低噪生的功能,但是成本较高。综上所述,为了达到实验目的且考虑节约实验成本和实验资源有限,则选用实验室内的微机电源,虽然需要持续充电但是仍然能达到实验效果。二、系统方案描述与论证:2.1 总体设计:系统工作流程为:用P89V51RD2单片机作为微处理器,通过键盘输入需要输出的双相信号参数(频率、幅值、相位差、占空比),将相应参数通过液晶屏显示,同时数据输入到CPLD中,CPLD完成了NCO及其他所需功能,根据设计要求生成相应的频率与相位可调的数据,通过比较器与占空比控制字进行比较,产生频率、相位及占空比可调的脉冲信号f(t)。通过比较器进产生一路占空比可调的矩形波,然后通过低通滤波器生成直流常量用于调节幅值,并通过电子开关改变脉冲信号f(t)的幅值,若想输出正弦波形,则再通过滤波器与运放即可得到。由单片机P89V51RD2控制输出所需的波形参数,改变CPLD中的相关数据,波形信号可方便、快捷、精确输出。此方案符合设计题目要求,具有易操作,稳定性强等优点。方案系统框图如图1-3所示。图1-3方案系统框图2.2 单元电路设计:2.2.1 CPLD部分:12位移位寄存器的SCK、SOI端口和13位译码器的LOAD端口接到单片机上,寄存器的高4位做译码器的地址,低8位做锁存器输出的数据,6位锁存器的输出作为NCO内24位锁存器的信号端,当DLTA23,0信号输入到NCO内部时,开始进行循环相加,每计数到224时则输出最高位进入下一位进行计数,而下一位则为每212来记一次数直到最高位输出,此信号为FRQA。Fsys为连接CPLD内部的晶振,此信号连接在14位计数器上,由SET5,0来控制信号的脉冲,根据公式Fout=40M /212得到Fout的频率为9.7KHZ,此频率为基频。FBASE10KHZ。通过锁存器输出的信号一部分进入了NCO系统内部,另一部分则进入了鉴频器,VA13,0和Fout13,0进行鉴频比较,从而实现调节占空比即可调节幅度的作用,即输出信号PWMA,同理另一路输出PWMB则也是如此。FX11,0为第二路NCO内部的输出与预置的正弦波的相位差PH11,0进行相加进行混频,从而得到信号FRQB。将PWMA、PWMB、FBASE、FRQA、FRQB五个信号接入到模拟电路中去。2.2.2模拟部分:将矩形波输入到一个低通滤波器中,分别得到正弦波和余弦波,通过开关,将得到基频信号,再一次经过两个低通滤波器,得到频率不同的正弦和余弦信号,而信号再次通过开关得到混频,经过积分电路和低通滤波器,得到想要的正弦波。其流程图如下:图1由于电源产生的电压为-12V-+12V大于电路中所用的电压,因此需要改进。将电流通过由R1和R2并联的电阻经过电压跟随器得到+5V的电压,在经过一阶放大和反向电压跟随器得到-5V的电压。图2将得到的电源接和幅值为5的PWMA信号接到芯片4053上,在VA0输出幅度为2.44KHZ的信号。这是一个占空比可调的信号,经过三阶滤波得到占空比为50%的DCA+,经过跟随得到占空比为25%的DCA-,再次使用多路开关得到幅度可调的方波信号。此过程为第一级。将第一级的信号经过三阶低通滤波器进行两次滤波得到相对稳定的正弦波,经过跟随放大得到SA+和SA-两种信号,该信号由频率为9.7KHZ基频信号控制,再次经过控制开关得到方波信号。此过程为第二级。将第二级得到的信号送入第三级,仍然经过两次三阶低通滤波得到正弦波,而这一级由差频控制其信号。根据和差化积公式可得,sinA*sinB=-1/2(cos(A+B)-cos(A-B) 得到由方波和正弦波的混频,而经过低通滤波器和积分电路,最终得到想要的相位差可调的正弦波。其两路的频率分别为1011KHZ和9.710.7KHZ。2.2.3理论计算和分析:我们的频率设计:采用36bitNCO,40MHz有源晶振,准确度等于晶振准确度,频率设置采用24bit长,频率上限约为9.7KHz,因滤波器幅频特性限定,选1.2KHz。根据公式: 40M/236=Fx /f得到Fxmin=40M/236=0.000582Hz0.5mHz,频率分辨率高于1mHz,实际测量时可以验证我们的幅度设计:设置PWM脉宽为14bit可调,模拟部分采用正负12V电源,设定最大输出为5V ,根据公式: 5/214=Vx /v得到Vxmin=5/214=0.0003052V0.3mV,保证了有效分辨率优于12bit,且分辨率为1mV,实际测量时可以验证我们的相位设计:根据控制逻辑单元相位偏移采用12bit,根据公式:x/=360/212得到xmin=360/2120.08789 ,相位分辨率优于0.1度,实际测量时可以验证。三、软件设计:主控制芯片为P89V51RD实现,由于处理器速度较快,所以采用c语言编程方便简单.软件流程图如下:四、系统测试:测试所用仪器:数字多用表34401A,示波器TDS1012,失真度仪GAD2019幅频特性测试频率通道1 峰-峰值(V)通道2 峰-峰值(V)5010.010.210010.110.215010.110.220010.110.330010.110.235010.010.240010.010.245010.010.250010.010.255010.010.160010.010.165010.010.170010.010.175010.010.180010.010.185010.210.290010.210.295010.210.2100010.210.2经过测试得到两路正弦波的频率范围1Hz1KHz,步进值不大于1Hz,频率的准确度不低于0.1%,两路正弦波输出最大幅度不低于3V,分辨率不低于12bit,设定的输出信号电压值在整个频段内,变换量小于5%相位测试:两路信号的相位差可在0359度内可调,设置分辨力可达到0.1度零点测试:F=50HzAC(mV)DC(mV)通道一1.50.8通道二2.30.8经过测试,两路正弦信号幅度设置为零时,输出噪声未达到5mV.通过测试使得相位,幅度,频率,零点的指标都得到了提升,2个4053单个成本为2.5,2个082单个成本为1.5,8个免费OPA2227,晶振成本为5,CPLD成本为20结 论结论:由于系统架构设计合理,功能电路实现较好,系统性能优良、稳定,较好地达到了题目要求的各项指标。(1)两路正弦波的频率范围1Hz1.2kHz,步进值0.001Hz,频率准确度0.1%;(3) 两路正弦波输出最大幅度5V,幅度设置,设置分辨力0.001V;(3)正弦波信号在整个频率设置范围内,波形失真度小于2%;(4)两路信号的相位差可以在0359度内可调,设置分辨力0.1度;(5)所有参数均可程控设置;(6)微处理器单元与控制逻辑单元信号连线3条。(7)控制逻辑单元输出给模拟电路单元的信号线5条; (8)当两路信号频率为1到10间的倍频关系时同步,示波器观测两路波形稳定; (9)输出信号电压值在整个频段内变换量小于5%;(10)两路正弦信号幅度设置为零时输出噪声小于5mV; (11)取消微处理器单元,控制逻辑单元也能实现独立设置特定参数信号的输出;参考文献信号与系统,ALAN V.OPPENHEIM著,西安:西安交通大学出版社,1997年;数字图像处理学,元秋奇著,北京:电子工业出版社,2000年;模拟电子线路基础,吴运昌著,广州:华南理工大学出版社,2004年;数字电子技术基础,阎石著,北京:高等教育出版社,1997年;数据结构与算法,张晓丽等著,北京:机械工业出版社,2002年;单片机原理及应用,李建忠著,西安:西安电子科技大学,2002年;附 录附录1 程序设计#include/#include/#include /#include #include #includewanmei12864.h#define suanfa_f(m) (m*1717.9869184)/#define suanfa_v(m,s) (8192+1638.4*m)*s)#define suanfa_v0(m) (2396.95*m)#define suanfa_v1(m) (2205.78*m)#define suanfa_p0(m) (m*4096/360.0)#define suanfa_p1(m) (m*4096/360.0)#define KEYBUS P2sbit sda=P00;sbit scl=P01;sbit load2=P02;static long double m,comd1,comd2,f2=1000.0,1000.0;static long int ch_f2=suanfa_f(1000.0),suanfa_f(1000.0),ch_v2=suanfa_v0(2.5),suanfa_v1(2.5),ch_p2=suanfa_p0(0.0),suanfa_p1(0.0),comi1,comi2,s; /*9个静态参数*/unsigned char time=0; unsigned char N=20;static unsigned char flag_s=0; unsigned char flag_ForVorP3=0; unsigned char str_1chpf1= 0 Hz ; unsigned char str_1chpf2= 1000 Hz ; unsigned char str_1chpv1= 0 V ; unsigned char str_1chpv2= 2.5 V ; unsigned char str_1chp1= 0 ; unsigned char str_1chp2= 0 ; unsigned char str_2chpf1= 0 Hz ; unsigned char str_2chpf2= 1000 Hz ; unsigned char str_2chpv1= 0 V ; unsigned char str_2chpv2= 2.5 V ; unsigned char str_2chp1= 0 ; unsigned char str_2chp2= 0 ; unsigned char code str_errf=频率:0-1200.00Hz; /第一行汉字内容unsigned char code str_errv=幅度: 0-5.000V ; /第二行汉字内容unsigned char code str_errp=相位: 0-359.9 ; /第三行汉字内容unsigned char str_td1= 设置通道1: ;unsigned char str_td2= 设置通道2: ;unsigned char str_td3= 设置通道3: ;unsigned char str_td= ;unsigned char str_title= 双路信号发生 ;unsigned char str_ch1= 通 道 1 ;unsigned char str_ch2= 通 道 2 ;unsigned char str_t = (按键选择通道) ;void delayx() ; void write_byte(unsigned int adr,unsigned int date)unsigned int i,temp; adr=adr8;temp=adr|date;load2=0;scl=1;sda=1;for(i=0;i16;i+)temp=temp1;scl=0; delayx();sda=CY;delayx();scl=1;delayx();scl=0; delayx();load2=1; delayx();delayx();load2=0;delayx();scl=0;delayx();sda=1;delayx();void Key_scan(unsigned int *key) /键盘扫描程序 unsigned char H4=0,L4=0,KeyCode=0; /定义变量 / unsigned char b10; KEYBUS=0xF0; delay_ms(10); if(KEYBUS!=0xF0) /判断是否有键按下 / delay_ms(10); /去除抖动 if(KEYBUS!=0xF0) /再次判断是否有键按下 H4=KEYBUS; /将第一次检测值放入寄存器a KEYBUS=0x0F;/ delay_ms(10); /第二次检测 L4=KEYBUS; /将第二次检测值放入寄存器c while(KEYBUS!=0x0f); KeyCode=H4|L4; / if(KeyCode!=0x7e) /如果“执行”键未按下,则继续扫描 switch(KeyCode) /对比数据值 case /*0x77*/0xee:*key=1;break; /键入“1”键 case /*0xb7*/0xed:*key=2;break; /键入“2”键 case /*0xd7*/0xe7:*key=3;break; /键入“3”键 case /*0xe7*/0xeb:*key=4;break; /键入“4”键 case /*0x7b*/0xde:*key=5;break; /键入“5”键 case /*0xbb*/0xdd:*key=6;break; /键入“6”键 case /*0xdb*/0xd7:*key=7;break; /键入“7”键 case /*0xeb*/0xdb:*key=8;break; /键入“8”键 case /*0x7d*/0xbe:*key=9;break; /键入“9”键 case 0xbd:*key=0;break; /键入“0”键 case /*0xdd*/0xb7:*key=b;break; /键入“退格/小数点”键 case /*0xed*/0xbb:*key=u;break; /键入“向上”键 case 0x7e:*key=e;break; /键入“执行”键 case /*0xbe*/0x7d:*key=m;break; /键入“菜单”键 case /*0xde*/0x77:*key=c;break; /键入“取消”键 case /*0xee*/0x7b:*key=d;break; /键入“向下”键 default: *key=n; void chuanwei(unsigned char *p) unsigned char y; for(y=3;y2;y-) py=py-1;double jisuan(unsigned int n,unsigned char i) double x1=0,x2=0; unsigned char j; for(j=0;ji;j-) x2=(x2+nj)*0.1; return x1+x2;void sendvalue()write_byte(0,ch_v0%256);write_byte(1,ch_v0/256); write_byte(2,ch_v1%256);write_byte(3,ch_v1/256);write_byte(4,ch_f0%256);write_byte(5,ch_f0/256%256);write_byte(6,ch_f0/256/256);write_byte(7,ch_f1%256);write_byte(8,ch_f1/256%256);write_byte(9,ch_f1/256/256);write_byte(10,ch_p0%256); write_byte(11,ch_p0/256);write_byte(12,ch_p1%256); write_byte(13,ch_p1/256);write_byte(14,6); write_byte(14,0); void settongdao(unsigned char *str_chpf1,unsigned char *str_chpf2,unsigned char *str_chpv1,unsigned char *str_chpv2,unsigned char *str_chp1,unsigned char *str_chp2)unsigned char str_chpf= 0 Hz ;unsigned char str_chpv= 0 V ;unsigned char str_chp= 0 ;unsigned char flag_d=1;unsigned char flag_anjian=1;unsigned char i=0;unsigned char k;unsigned int n18=0;unsigned int a=n;switch(flag_s) case 0:strcpy(str_td,str_td1);break; case 1:strcpy(str_td,str_td2);break; while(1) txt_disp(str_td,0x80); i=0; n10=n11=n12=n13=n14=n15=n16=n17=0;flag_anjian=1; flag_d=1; strcpy(str_chpf1,str_chpf2);strcpy(str_chpv1,str_chpv2);strcpy(str_chp1,str_chp2);switch (flag_ForVorPflag_s) case 0: str_chpf11=0x1a;str_chpv11= ;str_chp11= ;break; case 1: str_chpf11= ;str_chpv11=0x1a;str_chp11= ;break; case 2: str_chpf11= ;str_chpv11= ;str_chp11=0x1a;break;txt_disp(str_td,0x80);txt_disp(str_chpf1,0x90);txt_disp(str_chpv1,0x88);txt_disp(str_chp1,0x98); Key_scan(&a);switch (flag_ForVorPflag_s) case 0: while(i=0&a=9&i3) continue;if(i!=0) chuanwei(str_chpf1); str_chpf110=a+48;n1i+=a;txt_disp(str_chpf1,0x90);else if(a=b&flag_d) if(i=0) strcpy(str_chpf1,str_chpf); switch (flag_ForVorPflag_s) case 0: str_chpf11=0x1a;str_chpv11= ;str_chp11= ;break; case 1: str_chpf11= ;str_chpv11=0x1a;str_chp11= ;break; case 2: str_chpf11= ;str_chpv11= ;str_chp11=0x1a;break; str_chpf110=0;i+;chuanwei(str_chpf1);str_chpf110=.;txt_disp(str_chpf1,0x90);k=i+;flag_d=0;else if(a=c)if(i!=0) strcpy(str_chpf1,str_chpf);break; else lcd_gra_clr();lcd_txt_clr();return;else if(a=e) while(str_chpf110=.|str_chpf110=0&flag_d=0) fanchuan(str_chpf1); if(str_chpf110=.) fanchuan(str_chpf1); break; if(flag_d) k=i;if(i=0&flag_anjian) break;m=jisuan(n1,k);if(m1200)/*频率大于1200提示出错*/ ET0=1; TR0=1; EA=1;N=80;strcpy(str_td,str_errf);a=n;break;EA=1;TR0=1;ET0=1;str_td14=0xa1;str_td15=0xcc;N=20;/ fflag_s=m; ch_f0=suanfa_f(f0); ch_f1=suanfa_f(f1); comd1=f0/f1; comd2=f1/f0; if(comd11) comi1=comd1; if(comd1-comi1)=0) ch_f0=comi1*ch_f1; if(comd21) comi2=comd2; if(comd2-comi2)=0) ch_f1=comi2*ch_f0; sendvalue();/*(将频率送给当前操作的通道伪代码) 送频率函数(chfflag_s) 通道 =flag_s; 频率值= ch_fflag_s; */strcpy(str_chpf2,str_chpf1);break;break; case 1: while(i=0&a=9&i3) continue;else if(i!=0) chuanwei(str_chpv1); str_chpv110=a+48;n1i+=a;txt_disp(str_chpv1,0x88);else if(a=b&flag_d) if(i=0) strcpy(str_chpv1,str_chpv); switch (flag_ForVorPflag_s) case 0: str_chpf11=0x1a;str_chpv11= ;str_chp11= ;break; case 1: str_chpf11= ;str_chpv11=0x1a;str_chp11= ;break; case 2: str_chpf11= ;str_chpv11= ;str_chp11=0x1a;break; str_chpv110=0;i+;chuanwei(str_chpv1);str_chpv110=.;txt_disp(str_chpv1,0x88);k=i+;flag_d=0;else if(a=c)if(i!=0) strcpy(str_chpv1,str_chpv);break; else lcd_gra_clr();lcd_txt_clr();return;else if(a=e) while(str_chpv110=.|str_chpv110=0&flag_d=0) fanchuan(str_chpv1); if(str_chpv110=.) fanchuan(str_chpv1); break; if(flag_d) k=i; if(i=0&flag_anjian) break;m=jisuan(n1,k);if(m5)/*幅度大于5V提示错误*/ ET0=1; TR0=1; EA=1;N=80; strcpy(str_td,str_errv);a=n;break;EA=1;TR0=1;ET0=1;str_td14=0xa1;str_td15=0xcc;N=20;switch (flag_s) case 0:ch_v0=suanfa_v0(m);break; case 1:ch_v1=suanfa_v1(m);break;sendvalue();/*
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


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

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


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