EDA课程设计报告简易逻辑分析仪的设计.doc
课程报告设计课题: 简易逻辑分析仪 姓 名: 专 业: 电子信息工程 学 号: 日 期 2011年 月 日20 年 月 日 指导教师: 国立华侨大学信息科学与工程学院目 录1设计的任务与要求2.方案论证与选择3.简易逻辑分析仪方案实现(1)结构组成(2)数据采集和存储部分(3)逻辑状态与波形显示部分(4)简易逻辑分析仪的软件流程:5)实时波形存储与上下翻页4. 测试及结果分析5.附录简易逻辑分析仪的设计1. 设计的任务与要求设计并制作一个 8 路数字信号发生器与简易逻辑分析仪,其结构框图如图 1 所示:图12.1. 简易逻辑分析仪系统结构框图 1.1设计基本要求 基本要求 :(1)制作数字信号发生器能产生8路可预置的循环移位逻辑信号序列,输出信号为TTL 电平,序列时钟频率为100Hz,并能够重复输出。逻辑信号序列示例如图2所示。 (2)制作简易逻辑分析仪 a具有采集8路逻辑信号的功能,并可设置单级触发字。信号采集的触发条件为各路被测信号电平与触发字所设定的逻辑状态相同。在满足触发条件时,能对被测信号进行一次采集、存储。b 能利用模拟示波器清晰稳定地显示所采集到的8路信号波形,并显示触发点位置。 c8位输入电路的输入阻抗大于50k ,其逻辑信号门限电压可在0.254V范围内按16级变化,以适应各种输入信号的逻辑电平。 d每通道的存储深度为20bit。 图12.2 重复输出循环移位逻辑序列000001011.2 设计发挥部分(1)能在示波器上显示可移动的时间标志线,并采用LED或其它方式显示时间标志线所对应时刻的8路输入信号逻辑状态。 (2)简易逻辑分析仪应具备3级逻辑状态分析触发功能,即当连续依次捕捉到设定的3 个触发字时,开始对被测信号进行一次采集、存储与显示,并显示触发点位置。3级触发字可任意设定(例如:在8路信号中指定连续依次捕捉到两路信号11、01、00作为三级触发状态字)。 (3)触发位置可调(即可选择显示触发前、后所保存的逻辑状态字数)。 (4)其它(如增加存储深度后分页显示等)。2. 方案论证与选择2.1 数字信号发生器方案§ 利用单片机内的定时器,产生计数溢出中断,从而实现信号频率要达到100Hz的要求。§ 当改变拨段开关的预设值后,按下数字开关,单片机会重新读入8位数据,并对改变后的数据进行读取和输出。§ 在中断程序中对信号实现循环右移和输出,每次中断到来的时候,单片机便对输出端口输送一组信号。图1 数字信号发生器2.2 逻辑分析仪的设计方案一:采用高性能单CPU系统实现,比如32位的ARM芯片作为控制系统核心。如果采用此方案,可以很好的解决同时采样和控制显示的功能,但是ARM系统设计调试复杂,在短时间内难以很好的完成设计,所以不宜采用此方案。方案二:针对分析中提出的问题,我们也可以采用两片普通51单片机来实现系统设计,一片51实现数据采集,存储;另一片51实现控制示波器实时显示功能,两片51之间采用串行通信来解决数据通信问题,这样的方案可以满足题目提出的设计要求。方案三:采用大规模FPGA来实现系统, 采用FPGA来实现相应功能,一般是使用状态机方式来实现,即所解决的问题都是规则的有限状态转换问题。分析本题目的要求,可以看出,其中的逻辑控制灵活多变,适合于采用程序控制的cpu执行方式,如使用FPGA来实现,大部分的资源会消耗用来控制键盘和显示等辅助功能,用在主逻辑控制方面的资源相对比较少。另外,考虑到逻辑复杂程度和实现规模,可采用芯片大概要到Alter EPF11C50、Alter EP1C6等级别的芯片来实现,但此种规模PLD系统受实验室条件限制,无法顺利开发,而且其所需元器件和EPC配置芯片在本地无法买到,因而综合比较后我们淘汰掉本方案。综合分析上述各方案,比较其优缺点,包括灵活性、可靠性、可扩展性和易操作性,所以选用方案二。3. 简易逻辑分析仪方案实现(1)结构组成:本分析仪由数据采集存储和控制显示两部分构成:数据采集存储模块由信号输入电路、89C52单片机、小键盘和液晶显示模块组成;逻辑状态与波形显示模块由D/A变换器(TLC7226)和89C52构成。两模块之间采用串行通信方式。结构框图如下:(2)数据采集和存储部分此部分对应框图中的MCU1、电压比较器、键盘和LCD液晶显示1、 输入电路:八路输入信号通过电压比较器LM339和D/A转换器TLC7226提供的基准电压作比较后,作为存储单片的输入,8路信号接入LM339同相输入端,可以获得较大阻抗。2、 触发和存储原理:本部分功能主要依靠51单片机来实现。根据题目要求,对逻辑信号的采集是要依靠触发字来触发的。触发字又分单级触发字和三级触发字两种,单级触发字的预置依靠小键盘输入实现。当单片机采集到的状态字和用户所提供的触发字8位逻辑状态完全一致时,开始一次数据采集,连续采集24位,然后存储到显示缓冲区中,这样每个显示通道的存储深度为 24bit;对于三级触发字方式,设定从外部采两位的状态,连续取三次,都和我们设定的两位逻辑状态一样的情况下,将进入3级触发采集状态,开始采集。采集完24位数据后,存储起来。为了同时显示8路信号,所以数据送去显示前要把采集到的数据进行拼装处理,把采集到的24个字节排列成适合显示的8通道数据组合,每一通道存放从同一输入端口采集到的24BIT信息即组合形成8个存储深度为24BIT的数据显示通道,这样就可以把数据依次送到示波器上按行扫描显示。(3)逻辑状态与波形显示部分此部分对应框图中的MCU2、D/A转换器和示波器。本部分的主要难点集中在示波器显示控制上,我们先对示波器的显示方法进行分析讨论:1、显示方法分析:要能同时在示波器上看到8路信号波形,模拟示波器需要用外接扫描信号方式工作示波器上显示数字信号发生器的8路信号和1路触发点位置标识,共需9个通道。同时显示这9个通道的信号,需要采用动态扫描的方法:借助9个不同的基准电压,使显示的9路波形分别处在不同的位置上,即把要在示波器上显示的信号电平Qi+Vi偏置电平(i=07)加与示波器Y轴输入端。X轴输入则是由TLC7226提供的线性锯齿波。显示的信号电平Qi+Vi其叠加效果如下图的Y+所示:具体扫描方式有三种方案可供选择:(1)、按行扫描方式,X用外触发方式,扫描10次扫完一屏。要外接线性的锯齿波信号,和上述说明中没有变化。按行扫描送的数据是把数据采集存储24BIT深度后,把Q0-Q7的数据串行送到示波器,即先送Q0的24BIT,再依次送Q1-Q7的24BIT,扫完一屏要送9次(还有时标数据)。时标的扫描方法:扫描光标是单独进行的一行扫描。我们在扫描光标亮点的时候,给提供一个小平台电压,这样扫描光点在平台电压的持续时间内水平方向不移动,而与此同一时间,方向上快速扫描,形成一竖直的时标线。这样X轴的电压是带一个小平台的锯齿波。(2)、按行扫描方式,X用外触发方式,扫描9次扫完一屏,X、Y接法和方案一一样。此扫描方法没有单独去实现时标的显示扫描,时标的扫描显示通过将时标分成9次显示分别在各频道的扫描显示中打点显示,由于一屏的扫描时间为(1/25)S,眼睛是觉察不到时标的分段显示过程的。这样也可减少一次扫描时间,提高显示质量,且同样可以实现方案二中的竖直时标线,也不至于造成产生小平台锯齿波的问题。此方法较简单,且效果也不错。(3)、按列扫描方式,X采用外触发方式,故X、Y接法同方案2。具体扫描过程是:按列扫描时送数据的顺序是8位为一组,即单片机采集一次的Q0-Q7共8BIT数据,扫完一屏需送24次。扫描第一个通道的10点(即1BIT)结束后,X输入的电平立刻变为此BIT的起始处的电平值,Y方向同时变化一台阶,再扫描第二个频道的10点,重复第一频道的操作,一直扫描到存储深度24(第0页),则扫完一屏。此方案中X端的不规则锯齿输入的提供也是一个问题,这种方案情况下的时标输入也是先计算好位置,在单BIT扫描中打点实现的。综合以上几种方案的分析比较,我们选用方案2,此方案灵活简单,实现起来相对方便,而且可以达到较好的效果。2、具体硬件实现:(1)、D/A转换器:TLC7226提供的基准电压变化范围大(05V),可适应各种输入信号的逻辑电平,提高了测量范围和测量精度。此输入电路在本设计中,由于信号发生器输出TTL电平,没有将这一优点体现出来。数据显示模块用一片162A液晶显示,用高四位传输数据,接法与信号发生器中一样。TLC7266加示波器显示模块产生周期相同的X和Y信号,便于波形显示的同步,且可以显示较复杂的波形。但单片机通过D/A转换器产生波形产生信号波形时,输出频率会受到单片机本身工作速度的限制(12MHZ晶振主频时,机器周期为1us);其次,要有一定的显示质量,在信号的一个周期内取样点不能太少,这进一步限制了信号的频率。TLC7226是高性能D/A转换器,片内包含四路8位电压输出数/模转换器(DAC),每个DAC都有分离的片内锁存器,数据通过一个公共的8位TTL/CMOS兼容(5V)输入口送入这些数据寄存器之一。由A0和A1决定/WR变低时哪个DAC被加载。在/WR的上升沿,数据被锁存在被寻址的输入寄存器,只有保存在DAC寄存器中的数据决定转换器的模拟输出。由D/A转换器TLC7226和示波器组成,采用一片TLC7226产生三路模拟信号,OUT C提供基准电压,使逻辑信号门限电压在05V范围内按32级变化;OUT B提供线性锯齿波作为示波器X方向输入,用这个线性增长的电压作为扫描电压控制电子束移动,以产生示波器上光点的水平移动;OUT A提供Y轴偏置电平以区分各频段显示位置,一共需要9个电平以区分9个频段的输出显示。此9个偏置电平和T0输出的信号相迭加,实现T0信号在示波器上的的分频段显示。(2)、产生和使用门限单片机通过对D/A设置不同输出电压,得到门限电平从D/A转换器输出到LM339反相输入端。(3)、产生Y轴偏置信号针对分通道显示时,我们注意到并不是简单的叠加偏置电平就可以的,因为叠加到偏置电平上的信号电压本身可能就很高,超过相邻偏置电平的变化值,这样就会发生相邻频道信号甚至多频道信号波形的叠加,这样我们的分频道实现多路显示也就已经没有了任何意义。考虑到这种情况,我们就需要对信号叠加偏置电压前进行限幅处理,以使各路频道信号均匀的分布于示波器的屏幕上得以清晰显示。并且要保证各信号之间要有一定的空白间隔,以区分显示9个频段。针对此方案,我们设计了如下电路图2.2所示作为示波器的输入电路来实现在示波器上清晰显示,此电路不仅解决了上面我们注意到的存在问题即输入电平的幅度问题,同时简单的实现了时标的扫描显示。这是一个同相求和的运算电路,运放接成电压跟随器形式: Vdot、Vdat、Vbase分别通过R1、R2、R3接运算放大器的同相输入端V2,并通过电阻R4接地,运算放大器的输出端接入反相输入端,接成电压跟随器。由电压跟随器的特点可列写:Vo=V1 ,V1=V2V2R4 + (V2dot)R1(V2dat)R2+(V2base)R3=0所以 V0=K1*dot +K2*dat+ K3*bas其中: K1=KR1 ; K=KR;K=KR ;R1 R RR ;Vbas是在05v范围内变化的模拟电压则在V0处的变化范围是02.68V即V0=2.68;要在示波器上实现9频道的输出,则每一频道所占的变化电压是:V=V0 / 9=0.29;要使各频段的波形由空白间隔的显示,则让显示波形占频道的4/5,而留下1/5的空白区分各频道的波形使之不会发生相邻波形的重影现象,这样由于加法器的输入端接法,使得本来应该是05V的大幅度变化变为02.68V小幅度输出,再被9个频段平分,这时可计算得到每频道内显示的波形电压幅值为:V2=V* 4 / 5=0.232V;使dat的值从低电压0V变到5V时,调节R2合适数值,使V2恰好为0.232V;若要显示光标,则需在空白的中间显示,这样叠加在V2上显示 时标亮点的V1=(V/5)/ 2=0.029V;此时使dot的值从低电压0V变到高电压5V时,调节R1数值使 V1恰好为0.029V;实际电路调节合适后可以得到电路的各参数:R1=2M欧 ,R2= 470K欧,R3= 36K欧,R4= 47K欧Vdot=0时,为正常的扫描模式:Vdot=1时,为打点扫描模式:在屏幕上显示的效果为:第一行为触发点显示行,在没有触发点的时候触发点显示行显示一条低电平的亮线,有触发点时则在触发字处显示持续一个周期的高电平,然后降下来显示低电平亮线,所以出现1BIT的高电平时,则表明有触发点且触发点就在这一位上,并且此触发点的位置是可以人工调节的。第二行第九行依次显示采集到的Q0Q7信号逻辑状态。时标的扫描是通过Vdot和输入显示的Vdat相叠加,因而会在显示的数据电平上叠加一个V1,连续扫描4个点;若原来的Vdat是高电平,则接着将原来光标的显示电平减去V2,这样光标相当于叠加在此频道的输入低电平上,反之,若原来的Vdat是低电平,则在原来光标的显示电平加上V2,这样光标相当于叠加在此频道的输入高电平上,再连续扫描4点后,这样就在这一频道上出现两条有高度差的小光标,由于一个持续电平时间时间较短,两段光标有倾斜度,仔细观察是会发现每个频道的时标段都有一定的小弧度,但对显示效果的影响不明显,可以忽略。同样的方法扫描完一屏后,每个频段都在此位上有两段亮点,竖向看起来就是一条接近竖直线的亮线显示于屏幕上,这就是我们想要显示的时标。时标可以左右移动,也可以实现显示消隐。不显示时标时,使Vdot=0即可。(4)简易逻辑分析仪的软件流程:简易逻辑分析仪的开机状态:阈值为2.5V,开机初始为未触发状态,为示波器工作模式,LCD显示第0页信息,时间标志线在屏幕最左端。数据采集流程:START初始化MCULCD扫描键盘有键?显示:welcome to lg-1local analsy菜单no进入功能设置完成?YESNOINT0中断进入中断,读取数据 中断返回进入中断,发送数据INT1中断中断返回数据显示流程:(5)实时波形存储与上下翻页在没有触发字的状态下,简易逻辑分析仪做示波器使用,将采集到的信号即时发送到MCU2上实现对信号的实时显示,如果想保存波形可以通过STORE功能键完成,将显示器上的波形信息保存下来,恒定显示在示波器上,也可以以后回放观看。实时波形存储,既方便有快捷,.我们称之为实时波形存储. 通过STORE键操作,我们可以随时存储实时的波形.在正常的数据传递、波形显示的情况下,按下STORE保存下当前的波形,以备以后回放之用。此时,正常的数据传递被打断,简易逻辑分析仪将波形恒定的显示在示波器上,直到通过按键操作被释放为止。由于我们的简易逻辑分析仪采用双页式存储结构,可以存储两显示屏的数据,所以我们通过UP/DOWN 键来翻看波形情况。在实时波形存储情况下,可以存储两显示屏的波形信息。查看这些波形信息,我们只需要通过UP/DOWN键就可以上下翻看两屏波形信息。我们称此为实时波形存储与上下翻页。实时波形存储与上下翻页功能的开发是基于示波器的显示存储思想而来的。通过软件编程,我们可以方便的分析数字逻辑信号的逻辑功能,直观的显示出来,还可以方便地存储我们想要的波形信息并回放。这是我们这个简易逻辑分析仪的特色功能之一。第四部分、测试及结果分析:一、信号发生器测试我们将数字信号发生器的组成部分封装到盒子中,外接出控制按键和用户依靠液晶显示的提示进行操作,实现人机交换操作,需要监测的引脚和输出引脚通过插孔引出,外接检测和提供输出时,只需用插线插进插孔和外部电路连接即可,这是一种可灵活改变的跳线结构,简单易操作。1、测试仪器:数字存储示波器TDS210TDS210技术参数: 60MHz带宽,lGS/s采样率,双通道数字示波器,2.5K记录长度,3垂直精度,2mV垂直灵敏度,可选三种扩充模块,高亮液晶显示。2、测试步骤:(1)、观察上电起始显示情况。用插线连接好电源,接好地,把CLK输出和P0各口的用插线接到示波器TDS210上,液晶屏幕上将显示欢迎信息和当前P0口循环输出的默认序列0000 0101,8位序列结束处有闪烁标志,仅接其后显示的是输出CLK信号的频率100HZ。用示波器TDS210监视P0口的输出波形Q0Q7,观察它的输出规律是0000 0101序列在循环移位显示;同时可从屏幕上可观察P0口波形的电压值(高电平和低电平的峰峰值):用示波器TDS210监视CLK输出口波形;同时可从屏幕上读出CLK信号的频率: (2)、预置8位循环信号序列,并检测输出信号电平。按下SET键1号,进入设置状态后,闪烁标志停,等待2号和3号键的输入进行0/1设置,按动输入8位后,输入中若输错了值,则按动4号撤销键,光标前移。按ENTER后,则设置结束,新设的序列在液晶上显示出来,用示波器检测P0口输出脉冲循环情况确为新设脉冲的重复循环移位显示。用TDS210检测输出P0信号的峰峰值电平差,并记录下来。(3)、测试序列的时钟频率用示波器TDS210监视CLK输出口波形;同时可从屏幕上读出CLK信号的频率稳定显示,且输出波形稳定清晰。拔出电源插线,结束检测,整理测试结果,分析实验过程。 3、测试结果:基准电压为0v,测量数据如下:波形显示:4、结果分析:由测试频率表可看出所测结果符合要求:CLK的频率基本为100HZ,与液晶显示0.1K的频率值相符合。由所测电平的峰峰值记录可知,输出电平变化范围大,接近5V,输出信号必定满足TTL电平要求。由步骤2的操作过程可知,可以实现8路逻辑信号的预置入功能,并且顺利的实现了置入逻辑信号序列的重复循环移位输出,所画波形图即为循环显示的默认逻辑序列情况。总之,数字信号发生器已经实现了所有的基本要求,并且加了一片液晶实时显示P0口的循环序列,一边置数另一边会在液晶上显示出输入的数字,为使用用户提供了友好的界面提示,且允许用户回退光标。由于时间限制,频率选择键的选择功能还未扩展写入。此数字信号发生器经测试已验证其精度相对较高,其效果较为理想。二、简易逻辑分析仪的测试过程和结果分析简易逻辑分析仪电路系统被封装起来,外接可插拔的电路接口1、测试仪器: 万用电表、模拟示波器 2、测试步骤:(1)、首先接上电源观察简易逻辑分析仪的开机状态:第一行没有高电平触发标志,处于未触发状态;时间标志线可以清晰的看到显示于屏幕的最左端。(2)、按下设置键进入设置状态,再按动一下进入单极触发字设置状态,依次按0/1键进行单极触发初始字的设置,同时对信号发生器也设置一个和出发字相同的脉冲序列,然后在示波器屏幕上就会看到我们所设信号发生器的信号在示波器上清晰稳定的显示,并且在Q0Q7即第二通道向下到最后一通道的所显示的状态字与单级触发字恰好相同处的一条垂直方向处有高电平升起,这便是触发处。这证明单极触发字被顺利写入,且在各路被测信号电平与触发字所设定的逻辑状态相同时,即在满足触发条件下进行了一次采集、存储。在步骤1和步骤2中,我们在模拟示波器上看到了清晰稳定的波形显示,并且在步骤2中看到了触发高电平,证明其可以清晰的显示出发点位置。我们观察屏幕上的波形,数一下,会发现恰好是我们的存储深度24bit. 其电压,测得V2.3、测试结果:测试点V1V2第1次4924第2次4826第3次48254、结果分析:从上面可以看出三次的测量关系:v1接近于v2的两倍。故而,输入电阻就和所接如电阻数值相当。即大约为100k即得到结论8位输入电阻的阻抗大于50千欧。附录简易逻辑分析仪的数字信号采集、处理、串行发送的部分程序./ LOGICAL ANALIST/ main.c 12MHz#include <89C51C.H>#include <stdio.h>#include <math.h>#define lint unsigned long#define uint unsigned int#define uchar unsigned charidata struct series uchar Series48; /signal series 24 bits&2 pages uchar Time_flag_line; /0-23 uchar Trigger_Position; /single trigger position -3-19 uchar Gate_Voltage;/2.5V default Series;uchar temp13;uchar Series_Number=0;/signal seriesuchar DispArray8,DispArrayTemp8; /disp series arrayuchar Trigger_Word=0x03,Trigger_Word_Temp; /single trigger word tempuchar Trigger_Level=0,Trigger_Level_Temp; /trigger level (0)NoTriggerint Trigger_Position_Temp=0,j=0;uchar key; /keyValueuchar i,temp;uchar idata PageFull; /Page being displayed. (_NO)bit enter=0;bit sent=0; /send donebit send_ok=0; /send_okbit flag0=0,flag1=0,flag2=0,flag3=0,flag4=0,flag5=0;bit start_flag=0; /single trigger is triggerred.uchar setmode=0; /setmode:0 no_set; 1:Trigger_Level=1(set Trigger_Word); /2:Multiple_Level_Set; 3:Set Gate_Voltagesbit WDI=P37;extern uchar readkey();/ NOKEY FF;set 00; 0/1 01;updown 02;read 03;store 04;left 05;right 06;ENTER 07./extern void delay250us(void);/extern void delay500us(void);/extern void delay1ms(void);/extern void delay5ms(void);/extern void delay10ms(void);extern void delay50ms(void);/extern void delay20ms(void);extern void Disp_Init();extern void Disp_LocateCursor(const uchar );extern void Disp_HideCursor(void);extern void Disp_ClearInfoLine(void);extern void Disp_ClearFuncLine(void);extern void Disp_InfoLinePos(uchar, const char *);extern void Disp_InfoLine(const char *);extern void Disp_FuncLine(const char * );extern void Disp_InfoLineSlideFromRight(const char *);extern void Disp_FuncPos(uchar, const char *);extern void Disp_Notice(const char *);extern void Transfer(void);/Disp Functionvoid sys_init(void);void intt0P(void);void SeriesDisp(char); /Series to DispArray;void TriggerWordTempDisp(void);void TriggerWordDisp(void);void start_hello(void);void DispTrigger_Position_Temp(void);/Trans Functionvoid DispArraytoTriggerWord(void);void DispArraytoSeries(void); /DispArray to Series;void DispPosition(char);void GateVoltageDisp(char);void Read_data(void);extern void Send_Data(void);void StoreWaves(void);void frequency_count(void);void exit(void);void delay1s(void);/LOGICAL ANALISTvoid main (void)/*INITIALIZE 89C52 */sys_init();/lcd welcome informationstart_hello();delay1s();delay1s();delay50ms();delay50ms();WDI=0;WDI=1;for(i=0;i<8;i+) DispArrayTempi=DispArrayi;Trigger_Word_Temp=Trigger_Word;/Disp_InfoLineSlideFromRight("SET:TRG CUR TIM");/Disp_FuncLine(" SET <-> SET");while(1)if(j=30000)j=0; Disp_InfoLineSlideFromRight("SET: TRG CUR TIM"); Disp_FuncLine("KEY: SET <-> SET");j+;flag1=0;/key operationkey=readkey();switch(key)case 0x00: while(flag1=0) setmode=1; /set Disp_InfoLine("TRL TRW TRP GVO"); Disp_FuncLine(" 0 1 RD ST"); flag0=0; key=readkey(); switch(key) /0/1/read /trigger level case 0x01: while(flag0=0) Disp_InfoLine(" TRIGGER LEVEL "); Disp_FuncLine(" <- 0L | ->1L"); key=readkey(); if(key=0x05) Trigger_Level_Temp=0; if(key=0x06) Trigger_Level_Temp=1; if(key=0x07) flag0=1; if(Trigger_Level_Temp=0) Disp_FuncLine(" ZERO LEVEL "); if(Trigger_Level_Temp=1) Disp_FuncLine(" ONE LEVEL "); delay1s(); break; /Trigger_position case 0x03: flag2=0; Trigger_Position_Temp=Series.Trigger_Position; DispPosition(Trigger_Position_Temp); while(flag2=0) Disp_InfoLine("TRIGGER POSITION"); DispPosition(Trigger_Position_Temp); key=readkey(); if(key=0x05)&&(Trigger_Position_Temp>-3) Trigger_Position_Temp-; if(key=0x06)&&(Trigger_Position_Temp<19) Trigger_Position_Temp+; if(key=0x07) flag2=1; Series.Trigger_Position=Trigger_Position_Temp+3; Trigger_Position_Temp=0; /DispPosition(Series.Trigger_Position); break; /trigger_word case 0x02:j=0;flag3=0; /flag Disp_InfoLine("TRIGGER WORD"); TriggerWordDisp(); while(flag3=0) TriggerWordDisp();delay1s(); for(j=0;j<8;j+) DispArrayj=' ' flag4=0; j=0; while(flag4=0) key=readkey(); if(key=0x01)&&(j>=0)&&(j<=7) DispArrayj='0'j+; if(key=0x02)&&(j>=0)&&(j<=7) DispArrayj='1'j+; if(key=0x05)&&(j>=0)&&(j<=8) DispArrayj-1=' 'j-=1; if(key=0x07) flag3=1;flag4=1;DispArraytoTriggerWord(); Disp_FuncLine("WORD:"); Disp_FuncPos(6,DispArray); Disp_FuncPos(14," "); TriggerWordDisp();delay1s();