基于51单片机的简易逻辑分析仪设计
简易逻辑分析仪设计
2008年10月第10期电子测试EL ECTRONIC TEST Oct.2008No.10简易逻辑分析仪设计贾 奕,黄劲松,沈鹏程,田开坤(1湖北师范学院物理与电子科学学院 黄石 4350022湖北师范学院电工电子实验教学示范中心 黄石 435002) 摘 要:本系统是以STC89C52单片机和复杂可编程逻辑器件CPLD 的组合电路为核心,利用锁存器在时钟上升沿将输入端的数据锁存的原理,构建了一个基于实时采样和直接数据存储器存储(DMA )的简易逻辑分析仪。
系统由五部分组成:按键模块、CPLD 模块、DDS 采样时钟发生模块、L CD 显示模块、DMA 数据采集模块。
相比于市场上的逻辑分析仪,本系统结构简单,易制作,成本低,可同时测量8路T TL 信号。
本系统可以用来分析数字逻辑电路中的时序逻辑关系,本文还用该逻辑分析仪研究了51单片机对外部地址读写操作的时序,得到与单片机数据手册一致的波形时序图。
关键词:逻辑分析仪;DMA ;CPLD ;DDS 中图分类号:TP399 文献标识码:BDesign of simple logic analyzerJia Y i ,Huang Jinsong ,Shen Pengcheng ,Tian Kaikun(1College of Physics and Electronic Science ,Hubei Normal University ,Huangshi 435002,China ;2Electricaland Electronic experimental teaching centres of excellence ,Hubei Normal University ,Huangshi 4350020,China )Abstract :A simple logic analyzer based on a real 2time sampling and DMA has been designed by using STC89C52SCM and CPLD circuit as t he p rimary component s.It operates by a latch which can latch t he data coming from t he inp ut port o n t he outp ut port by means of latching t he rising edge of a clock p ulse.The system includes five basic component s :a button control mod 2ule ,t he CPLD module ,a DDS sampling clock p ulse generation module ,an L CD module ,and t he DMA pared to t he existing logic analyzer ,t he system can measure synchro 2nously 8T TL signals ,and t he circuit is simple and can be constructed easily wit h low cost s.The system can be used as a tool t hat measures t he logic relations of t he digital circuit.An ex 2ample has been given t hat shows how t he time is measured when a 51SCM reads or writes so me data to t he o ut side address ,SCM manual data are consistent wit h t he wave timing map.K eyw ords :logic analyzer ;DMA ;CPLD ;DDS测试工具与解决方案2008.100 引 言在数字电路的研究中,往往要对电路的时序进行分析,在这种情况下,很多学生或工程师通常会选择示波器,而忽略了逻辑分析仪。
简易逻辑分析仪的设计与应用
华 坚 周 杏 鹏
( 南 大 学 自动 化 学 院 江 苏 南京 东
20 9 ) 1 0 6
[ 要] 文章 详细介 绍基 于 C I 摘 P D+微 控 制 器的 简 易逻 辑 分析 仪 设 计 方 法 , 助 通 用 P 借 C机 及 其 强 大
的 人 机 交 互 设 备 , 现 了基 于 VC+ + 6 0W i3 I 数 据 分 析 显 示 界 面 , 成 了 简 易 逻 辑 分 析 仪 。 它 不 实 . n 2AP 的 构
8路采 样通 道 , 储 深 度 为 5 2K, 样 精 度 为 0 1 存 1 采 .
数 据 采 集 模 块 主要 由 MC C L 和 S U、 P D RAM 构 成 , 最 为核心 的功 能 由 C L 而 P D完成 。 C I 采 用 的 是 E M7 5 A TC 0 P D P 2 6 E 1 0— 1 , 0 内 核 和 IO供 电 电压 为 3 3V, IO可 以兼 容 5V. / . 但 / 故该 系统 可适 用 于 5V、 . 混 合 电压 数 字 系统 。 3 3V C I 内部 主要 包 括 采 样 时 钟 生 成模 块 、 址 计 数 P D 地
仅 具有 8 并行信 号 时序 分析 显 示功能 , 路 而且 还 具有 串行 通信数 据 帧信 息的 实时检 测与 智能识 别功 能 ; 对检
测 和调试 各种 数 字逻 辑 电路和 信 息化 系统十 分有 用且 应 用 非 常方便 。 经过 大量 的测试 , 系统 对 串行 通信 该
数 据 帧 信 息 的 识 别 出错 率 约 为 1 。
给P C机 ; C分 析 显 示 数 据 模 块 负 责 分 析 处 理 数 P
图 2 数 据 采 集 模 块 框 图
简易逻辑分析仪报告
简易逻辑分析仪摘要本系统是由单片机作为主控制器、可编程器件作为辅助控制单元来实现数字信号产生、逻辑信号采集和示波器显示。
由单片机为核心的信号发生器,实现了大范围可控频率、预设码型的信号输出;数据采集模块的输入电路中的程控迟滞比较器,提高了输入信道的抗干扰能力。
可编程器件高密度特点在本系统中的应用,大大减少了外围器件,增强了系统的可靠性。
带有LCD显示模块为用户控制提供友好的人机界面,实现了设置掉电保护功能,并支持鼠标操作和图形打印。
关键词逻辑分析仪单片机可编程器件程控迟滞比较器一、方案论证及选择方案一:利用普通的74系列移位计数器构成数字信号发生器,纯单片机方式实现逻辑分析仪。
图 1-1 方案一结构框图如图1-1所示,数字信号发生器部分,利用74系列的移位计数器的基本功能,通过拨码开关向置数端预置循环序列,通过TTL 驱动输出数字信号。
逻辑分析仪部分的门限电压由电位器控制。
这种方法单片机除了完成基本的数据分析外,还需要完成对逻辑数据的采集、存储、显示等大量控制工作。
方案二:由单片机产生数字信号序列,由另外两片单片机构成逻辑分析仪。
射随器门限 比较器电位器 调压电路单 片 机ZYX D/AD/A预 置拨码开关序列 输出数字信号发生器 简易逻辑分析100Hz 时钟键盘级联74 移位计数器 数码管图 1-2 方案二结构框图如图1-2所示,相比方案一在信号产生上方案二采用了单片机方案,数码管显示循环序列码状态,本方案用软件可以实现不同频率、更加复杂数字信号的输出。
在逻辑分析仪部分,部分的特点是双单片机结构,二者通过串口通信,下位机单片机3只负责显示,上位机单片机2通过D/A 输出程控的门限电平。
本方案解决了显示与数据采集处理不能同时工作的矛盾, 方案三利用FPGA/CPLD 的高速特点,实现系统并行工作,这是本方案相比于方案二的特色之一。
用可编程器件可以高速完成单一功能模块。
FPGA/CPLD 的使用弥补了单片机在高速采集和实时显示的弱点,使整个系统的处理能力远超过当前微控制器的水平,这使设计十分具有发挥的空间。
基于FPGA的简易逻辑分析仪的设计与仿真完整设计
目录摘要 (1)Abstract (2)前言 (3)第一章概述 (4)1.1 选题背景 (4)1.2 FPGA简介 (4)第二章设计方案 (6)2.1 设计任务和要求 (6)2.2 总体设计方案 (6)第三章系统子模块实现与仿真分析 (9)3.1 数字信号发生器实现与仿真 (9)3.1.1 数字信号发生器的软件流程图和组成框图 (9)3.1.2 带异步置位/复位的通用八位寄存器 (10)3.1.3 任意分频器 (11)3.1.4 循环移位寄存器 (12)3.1.5 数字信号发生器仿真 (13)3.2 触发电路实现与仿真 (14)3.3 存储器REGN的实现与仿真 (15)3.4 640分频器FREQ的实现与仿真 (16)3.5 存储器RAM的实现与仿真 (17)第四章系统顶层的实现与仿真 (20)4.1 系统顶层原理图 (20)4.2 系统顶层仿真图 (20)结论 (22)参考文献 (23)致谢 (24)附录 (25)逻辑分析仪是一种类似于示波器,用来分析测量数字系统的逻辑波形和逻辑关系的仪器设备。
在每个时钟到来,并且与预置的触发字逻辑状态相同时,将触发之后的数据进行储存、处理并输出显示到屏幕上。
本文采用FPGA开发器件设计一个8通道的简易逻辑分析仪,实现对输入的8路逻辑信号进行数据判断、数据存储、采集和处理,然后输出显示的功能。
其功能参数分别是采样率为100KHz,每通道存储深度为32bit。
本次设计使用FPGA(现场可编程逻辑门阵列)芯片和VHDL硬件描述语言作为主要设计方法实现8路简易逻辑分析仪。
本系统根据逻辑分析仪所要实现的各项功能分别编程设计了对应的功能模块,分别是触发模块,数据缓存模块,分频模块以及存储器模块,并分别进行了仿真验证,在此基础上,完成了系统电路的设计与仿真。
仿真结果表明,本次设计各模块都达到了所需要求,实现了各自的功能。
系统总体方案也得到了较理想的结果,本次设计方案是可行的,达到了设计要求。
基于51的简易逻辑分析仪
第33卷增刊2008年6月广西大学学报(自然科学版)JournalofGuangxiUniversity(NatSciEd)V01.33,Sup.June,2008文章编号:1001—7445(2008)增.0128—03基于51单片机的简易逻辑分析仪江波,叶丽(广西大学电气工程学院,广西南宁530004)摘要:介绍采用STC89LE54单片机控制8路逻辑信号电平采集的简易逻辑分析仪设计.采用EPM7128SLC84—15控制系统实现一个数字信号发生器可预置8路信号工作,单片机和EPM7128SLC84--15间采用中断方式交换数据.采集电路以5kbit每秒的速率同时对8路逻辑信号进行采样.逻辑信号门限电压通过键盘任意设定信号采集的触发等级、触发条件、触发位置由键盘设定.采集存储的8路信号可以同时清晰稳定地在示波器再现.关键词:STC89LE54EPM7128SLC84;逻辑分析;数字信号发生器中图分类号:TN702文献标识码:ASimplelogicanalyserbasedon51singlechipJIANGBo,YELi(CollegeofElectricalEngineering,GuangxiUniversity,Nanning530004,China)Abstract:Thepaperintroducesthedesignofthesimplelogicanalyserwhichacquisitionof8routessignalleveliscontroledthroughSTC89LE54singlechip.ThecontrolsystemthroughEPM7128SLC84-15torealizesadigitalwaveformgeneratorsscheduled8routessignal,itisthroughthesuspendedmeanstoexchangedatabetweensinglechipandEPM7128SLC84-15.5kbit/sreal—timesamplerateoftheacquisitioncircuitiSfacedtothe8routeslogicsignalinthemeantime.Thresholdvoltageoflogicsignalissetarbitrarilybykeybord;triggerrank,triggerconditionandtriggerlocationaresetbykeybord.8routessignalsampledandregisteredcanbereshowedclearlyontheoscilloscopesinthemeantime.Keywords:STC89LE54;EPM7128SLC84;logicanalyse;digitalwaveformgenerators逻辑分析仪(LogicAnalyzer)是以逻辑信号为分析对象的测量仪器.是一种数据域仪器,其作用相当于时域测量中的示波器.正如在模拟电路错误分析中需要示波器一样,在数字电路故障分析中也需要一种仪器,它适应了数字化技术的要求,是数字逻辑电路的设计、分析及故障诊断工作中不可缺少的工具,在数字电路的研制测试、电子计算机维修、微处理器以及各种集成化数字仪表和装置中均有广泛的用途.逻辑分析仪作为硬件设计中必不可少的检测工具,还可将其引人实验教学中,建立直观感性的印象,提升学生的硬件设计能力,可以全面提高教学质量.在数字电路的调试中,往往要测试多路信号波形,分析其逻辑关系,采用普通示波器时,最多只能测试2路信号波形,若采用市面上的逻辑分析仪,由于其核心部件设计昂贵,投资较高.本文着重讨论基于单片机技术的逻辑分析仪的实现方法.・收稿日期:2008—01—21;修订日期:2008—03一17作者简介:江波(1981一),男,广西兴安人,广西大学电气工程学院2005级硕士研究生增刊江波等:基于51单片机的简易逻辑分析仪1291系统总体结构本系统采用单片机和可编程器件作为数据处理及控制核心,整个系统由一个信号发生器和一个简易逻辑分析仪构成.将设计任务分解为数字信号发生、信号采集存储、信号融合处理、显示、掉电保护等功能模块.图1即为该系统的总体框图.考虑到硬件电路的紧凑性,故将上述模块合理分配连接成以下3个模块:数字信号发生器、单片机控制器、键盘/显示j图1系统总体框图Fig.1Totalsystemframe-structuredgraph2系统主要硬件电路设计2.1单片机控制器单片机控制器是整个硬件电路的核心,采用STC89LE54单片机为主控制核心的双CPU工作模式.STC89LE54单片机内部含有可重复编程的FLASHROM,可通过串口进行在线编程,在设计调试过程中可十分容易进行程序的在线修改.利用AT24C64存储器(EEPROM)实现掉电存储功能.从CPU系统即以AT89S52为主的显示键盘模块的控制.数字信号处理主要是D/A转换器件的选择,我们选用性能优良的DAC0832作为D/A变换芯片.该方案的特点是硬件简单,软件实现方便,大大提高了系统的设计性能.由单片AT89S52控制8个共阳数码管、8个按键构成动态显示模块.由于具有RS一232接口,易于与计算机相连,可以直接利用计算机来作为显示器显示波形.本设计的采样对象是逻辑信号,一般的逻辑电平为5V,所以在设计中,我们约定被采样信号的电平在0"5V之间.而STC89LE54内部的A/D转换模块所能判别的电平信号为0~3.3V,我们可以利用其内部的参考电平进行A/D的测试,参考电平选为VCC(3.3V).所以,必须要对输入信号进行压缩处理,压缩比为5s3.3.通过预处理的8路信号都是0--一3.3V电平信号,刚好适合STC89LE54内部A/D转换模块采样.由于要对8路信号进行采集,对每路信号的采样速率是总速率的1/8,STC89LE54内部A/D转换最快可实现200kHz的采样速率.理论可实现最高采样速率为200kHz/8=25kHz的采样速率.但是由于软件延时等因素.可实现最大采样速率为5kHz.为了提高采样速率,对每BIT信号,采样一次.为了实现对8路逻辑电路的同步采样,我们采用序列通道单次采样的方式,采样由输入时钟信号进行同步.Clock采样fI.fIff图2同步采样图Fig.2Phys.samplinggraph每个上升沿到来触发采样,依次对8路信号采样各采样一次.2.2数字信号发生器模块的电路设计与实现采用CPLD实现,使用可编程逻辑器件EPM7128sLC84完成数字信号发生器的功能.ALTERA的EPM7128S系列CPLD是基于第二代MAX结构体系地高性能EEPROM结构的CPLD.使用Maxplus软件可方便的编制一个十分频器件,得到100Hz频率.加上循环移位器,很容易就能实现循环移位序列.这种方案精准、稳定,便于控制,且可编程逻辑器件应用日益广泛,是高新电子技术发展的必备元器件.采用可编程器件提高了设计效率,并使系统更稳定,调试更方便.其电路框图如图3所示:图中的时钟产生电路由有源晶振提供,控制和预置电路和指示电路由拨码开关和发光二极管电路实现,信号序列产生电路由CPLD器件EPM7128SLC84来实现。
简易逻辑分析仪的设计与实现
.
Th e u to si g a d a ay i g i y t m e fr n e s o h tt e a ay e a ip a l a n e r s l ft tn n n l zn t s se p ro ma c h wst a h n lz rc n d s ly ce ra d e s
行 采集存储 , 制 D A转换进 行波 形输 出与显示 。 控 / ( ) 字信 号发生 器模 块 2数
该模块 由 5 5定 时器 和 移 位 寄存 器 7 L 9 5 4 S 5组 成 。将 5 5定时器 接成 多谐 振荡器产 生矩 形波作 为 5
选通各个通道 , 通过软件控制对 8 路信号实现采集 。 信号采集之前 , L 34接成 电压跟随器, 将 M2 提高输 入 阻 抗 , 输 入 阻 抗 大 于 5k 简 化 了 硬 件 的 使 0O,
sa l v fII . tb e wa eoT S 1
K e r s: AT 9S sn l h p; sm p e lgc a ay e ;e g tsg a h n e s y wo d 8 51 i ge c i i l o i n l z r ih in lc a n l
移位寄 存器 的时钟 信 号 , 过移 位 产生 符 合 实 际要 通 求 的逻 辑 序 列 信 号 。8位 拨 码 开 关 可 以 预 置 初 始
状态。
号逻辑 分析 的功能 。系统整体 主要分 数字 信号 发生
器、 采集 与存 储 、 / D A转 换 、 波 器 X— 示 Y通 道 的控 制、 晶 显 示 等 模 块。其 系 统 整 体 框 图 如 图 1 液
ae e t fc , h n o gU i rt , ia 2 4 0 , hn ) gm n Of e S a d n nv sy We i 6 2 9 C i i ei h a
简易逻辑分析仪
简易逻辑分析仪一、方案论证及选择1、系统总体框图如下:整个系统由信号发生器部分、信号调理部分、ARM软件控制部分以及输出显示部分组成。
2、数字信号发生器模块方案一:采用555定时器和可预置移位寄存器。
用两片74LS194A接成8位可预置循环移位寄存器,方波发生器提供一时钟信号给移位寄存器,预置数用8个按键接入(即循环序列),此方案简单可靠。
方案二:用PC 通过软件编程可以从并行口输出信号波形,不需要硬件电路,且设计灵活,但是不适合电子设计竞赛,并且PC体积大,携带不方便。
方案三:采用中规模FPGA,使用VHDL语言设计移位寄存器。
此方案可以实现精确定时产生信号,且信号频率可调,体积小, 但其显示电路占用资源多,这样设计出来的电路系统将大且复杂。
方案四:采用一片AT89C2051单片产生波形序列。
用单片机产生数字信号,设计简单,设置灵活,频率调节方便。
综合分析上述各方案,比较其优缺点,本系统有其固定的频率要求,故选用最简单的方案一。
3、门限电压分级部分方案一、采用单片机软件控制分级输出不同的电压值,给到比较器的反相端。
该方案简单、且输出电压精确。
方案二、用单片机产生一路PWM波,再经过两级RC低通滤波可得到直流电压,通过控制PWM波的占空比来改变电压值,达到分级效果。
该方案RC滤波得到的电压不稳定,且有纹波。
方案三、直流电源供5V电压,采用电阻、电位器进行一级一级的分压,以实现分级效果。
该方案电路复杂,且电位器调节比较难。
方案四、采用数字式电位器,由单片机结合相应的外围电路进行控制,以实现分压。
采用程控方式,得到的电压精确且稳定。
鉴于本系统软件程序较多,ARM内部仅两个DA,故选择方案四以避免使用单片机内部DA。
二、硬件部分单元电路1、数字信号发生器电路该部分采用了555定时器产生一定频率的时钟信号,通过改变滑动变阻器阻值可实现频率在一定范围内可变,定时器后接一个非门以增强后级驱动能力。
定时器产生的方波信号作为双向移位寄存器74LS194的输入时钟,利用74LS194的两个控制端(S0,S1)来产生八路可预置的循环移位逻辑信号序列。
基于C51单片机的智能仪器综合设计实验
基于单片机的智能仪器综合设计实验一、实验目的在实验一~实验三的基础上,完成综合设计实验,学会信号采集、数据处理、键盘控制、LCD或LED显示等功能的智能仪器设计。
二、复习与参考实验一~实验三三、设计指标利用K分度号热电偶进行温度检测,测温范围为500-1200ºC,室温为20ºC,用LCD或LED显示室温和测量温度。
具有4路温度信号循环检测功能,通道切换时间可调;具有任意指定通道显示功能。
四、实验要求1.选择传感器,设计硬件电路,包括检测电路、信号调理电路、AD转换电路、单片机最小系统、LED显示(单号)、LCD显示(双号)、独立式按键,画出电路原理图。
2.画出软件流程图。
3.用Keil C51编写程序。
3.实验结果在LCD或LED上显示出来。
4.实验前完成第1、2项备查。
五、实验仪器设备和材料清单PC机;单片机实验板、连接导线、ST7920图形液晶模块Keil c51软件六、实验成绩评定方法实验成绩包括预习、实验完成质量、实验报告质量3部分组成,各部分所占比例分别为30%、40%、30%。
八、实验报告要求实验报告格式:●实验名称●实验目的●实验内容●硬件设计●软件设计●调试过程●参考文献●附1:电路原理图●附2:程序清单附录:实验程序源代码如下:(陈寅)#include "reg51.h"#define THC0 0xee //5ms时间常数设置#define TLC0 0x00sbit ADWR=P3^6; /***WR*****/sbit ADRD=P3^7; /***RD*****/sbit ADCS=P2^7; /***CS*****/sbit EOC=P3^3; /***EOC****/sbit ADA=P1^3; //通道选择引脚sbit ADB=P1^4;sbit ADC=P1^5;sbit CS =P1^0; /****************/sbit SID=P1^1; /**液晶引脚定义**/sbit SCLK=P1^2; /****************/sbit MODE=P2^0; /*************************/sbit UP=P2^1; /*四个按键接口,0表示按下*/sbit DOWN=P2^2; /*************************/sbit LED1=P2^3; /**4个LED灯引脚定义**/sbit LED2=P2^4; /********************/sbit LED3=P2^5; /********************/sbit LED4=P2^6; /********************//***************500~1200°C范围的K分度表,间隔10*******************/ unsigned int code K_TABLE[71]={20644,21066,21493,21919,22346,22772,23198,23624,24050,24476,24902,25327,25751,26176,26599,27022,27445,27867,28288,28709,29128,29547,29965,30383,30799,31214,31629,32042,32455,32866,33277,33686,34095,34502,34909,35314,35718,36121,36524,36925,37325,37725,38122,38519,38915,39310,39703,40096,40488,40897,41296,41657,42045,42432,42817,43202,43585,43968,44349,44729,45108,45486,45863,46238,46612,46985,47356,47726,48095,48462,48828}; unsigned char GetAdData[10]={0}; //存放获得AD值的数组变量unsigned char ViewTemperature[4]={"0000"}; //显示温度缓冲数组变量unsigned MODESelect=1;int ChangeTime=2; //通道切换时间,单位Sint TongDao=1;void delay(unsigned int j){unsigned char i;do{for(i=0;i<100;i++);}while(j--);}void send_command(unsigned char command_data) //发送命令{unsigned char i;unsigned char i_data;i_data=0xf8; //操作命令,可以查看资料delay(10);CS=1;SCLK=0;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}i_data=command_data;i_data&=0xf0;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}i_data=command_data;i_data=i_data&0x0f;i_data<<=4;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}CS=0;}void send_data(unsigned char command_data) //发送数据{unsigned char i;unsigned char i_data;i_data=0xfa; //操作命令,可以查看资料delay(10);CS=1;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}i_data=command_data;i_data&=0xf0;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}i_data=command_data;i_data=i_data&0x0f; //取低四位i_data<<=4; //左移四位,从而变成高四位for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}CS=0;}void InitLCD() //液晶初始化{send_command(0x30); //功能设置:一次送8位数据,基本指令集send_command(0x06); //点设定:显示字符/光标从左到右移位,DDRAM地址加1send_command(0x0c); //显示设定:开显示,显示光标,当前显示位反白闪动send_command(0x04); //显示设定:开显示,显示光标,当前显示位反白闪动send_command(0x01); //清DDRAMsend_command(0x02); //DDRAM地址归位send_command(0x80); //把显示地址设为0X80,即为第一行的首位}/* x,y为起始座标x(0<=x<=3),y(0<=y<=7),x为行座标,y为列座标;how为要显示汉字的个数;style为显示字符的类型,0表汉字,1表字母;str是要显示汉字的地址*/void Display(unsigned char x,unsigned char y,unsigned char how,bit style,unsigned char *stri) //液晶显示{unsigned char hi=0;if(x==0) send_command(0x80+y);else if(x==1) send_command(0x90+y);else if(x==2) send_command(0x88+y);else if(x==3) send_command(0x98+y);if(style==0){for(hi=0;hi<how;hi++){send_data(*(stri+hi*2));send_data(*(stri+hi*2+1));}}elsefor(hi=0;hi<how;hi++) send_data(*(stri+hi));}float LvBo(void)//复合滤波{unsigned char max,min,i;unsigned int sum=0;float U1;max=GetAdData[0];min=GetAdData[0];for(i=0;i<10;i++){sum=sum+GetAdData[i];if(max<GetAdData[i]) max=GetAdData[i];if(min>GetAdData[i]) min=GetAdData[i];}sum=sum-max-min;U1=(float)sum/8;U1=10.0*((U1*5.0)/255); //换成mvreturn U1;}void search (void)//查表子函数{unsigned int da=0,max,min,mid,j;unsigned int var;da=LvBo()*1000; //u1扩大1000倍da=da+798; //20度max=71;min=0;var=0;while(1){mid=(max+min)/2; //中心元素位置if(K_TABLE[mid]==da) {var=mid*10;break;} //中心元素等于查表元素,计算相应温度else if(K_TABLE[mid]>da) max=mid-1;else min=mid+1;if(max-min==1) /*线性插值计算温度值*/{j=(K_TABLE[max]-K_TABLE[min])/10; /*表中相邻两值对应温度相差10°C*/j=(da-K_TABLE[min])/j;var=10*min+j;break;}if(max==min){if(da>=K_TABLE[min]){j=(K_TABLE[min+1]-K_TABLE[min])/10;j=(da-K_TABLE[min])/j;}else if(da<K_TABLE[min]){j=(K_TABLE[min]-K_TABLE[min-1])/10;j=(da-K_TABLE[min-1])/j;min=min-1;}var=10*min+j;break;}}var=var+500;ViewTemperature[0]=var/1000+0x30;ViewTemperature[1]=var/100%10+0x30;ViewTemperature[2]=var/10%10+0x30;ViewTemperature[3]=var%10+0x30;}void LcdDisplay(void){unsigned char ViewMODESelect,ViewTongDao[5]={"0 "},ViewChangeTime[5]={"00(S)"};ViewMODESelect=MODESelect+0x30;ViewTongDao[0]=TongDao+0x30;if(MODESelect==1||MODESelect==2){if(MODESelect==1) Display(0,3,5,0,":自动切换");else if(MODESelect==2) Display(0,3,5,0,":手动切换");Display(0,0,2,0,"模式"); //液晶显示Display(0,2,1,1,&V iewMODESelect);Display(1,0,5,0,"温度通道:");Display(1,5,5,1,V iewTongDao);Display(2,0,4,0,"温度值:");Display(2,4,4,1,V iewTemperature);Display(2,6,2,1,"℃");}else if(MODESelect==3){ViewChangeTime[0]=ChangeTime/10+0x30;ViewChangeTime[1]=ChangeTime%10+0x30;Display(0,0,2,0,"模式");Display(0,2,1,1,&V iewMODESelect);Display(0,3,5,0,":设置时间");Display(1,0,5,0,"切换时间:");Display(1,5,5,1,V iewChangeTime);Display(2,0,14,1," "); //本行清屏}}void TDSelect(void) //AD通道设置{if(TongDao>=5) TongDao=1;if(TongDao<=0) TongDao=4;if(TongDao==1) {ADC=0;ADB=0;ADA=0;}else if(TongDao==2) {ADC=0;ADB=0;ADA=1;}else if(TongDao==3) {ADC=0;ADB=1;ADA=0;}else if(TongDao==4) {ADC=0;ADB=1;ADA=1;}}main(){unsigned char AdCount=0; //用来存放AD采集次数InitLCD();TMOD=0x11; //定时器0初始化TH0=THC0;TL0=TLC0;TR0=1;ET0=1;EA=1;P2|=0x07; //按键初始为高while(1){ADWR=1; /************/ADCS=0; /************/ADWR=0; /**AD初始化**/ADWR=1; /************/while(!EOC); //等待转换结束ADRD=0;GetAdData[AdCount]=P0; //读取转换结果AdCount++;if(AdCount>=10) //连续采集10次值{AdCount=0;search(); //查表LED1=!LED1;LcdDisplay(); //显示}}}void Timer0() interrupt 1{static unsigned char count=0,UPFlag=1,DOWNFlag=1; //按键标志位static unsigned int TimeCount=0;TH0=THC0;TL0=TLC0;if(MODE==0||UP==0||DOWN==0){count++;if(count>=30) //消抖处理{count=0;if(MODE==0) //按键按下{MODESelect++;if(MODESelect>=4) MODESelect=1;}else if(UP==0){UPFlag=0;if(MODESelect==2){TongDao++;TDSelect();}}else if(DOWN==0){DOWNFlag=0;if(MODESelect==2){TongDao--;TDSelect();}}}}else count=0;if(MODESelect==1){TimeCount++;if(TimeCount>=(ChangeTime*1000/5)){TimeCount=0;TongDao++;TDSelect();}}else if(MODESelect==3){if(UPFlag==0) {UPFlag=1;ChangeTime++;}else if(DOWNFlag==0){DOWNFlag=1;ChangeTime--;if(ChangeTime<=0) ChangeTime=1;}}}。
简易逻辑分析仪的设计
简易逻辑分析仪的设计毕业设计 [论⽂] 题⽬:简易逻辑分析仪的设计系别:电⽓与电⼦⼯程系专业:电⽓⼯程及其⾃动化姓名:学号:指导教师:平顶⼭⼯学院2008 年05 ⽉28 ⽇⽬录⽬录 (1)摘要 (2)Abstract (3)简易逻辑分析仪..................................... 错误!未定义书签。
第⼀章绪论.. (4) 1.1 选题的⽬的和意义 (4)1.2 逻辑分析仪的基本组成原理 (4)1.3 逻辑分析仪的主要技术指标及发展趋势 (6)第⼆章⽅案论证与⽐较 (7)2.1 数字信号发⽣器模块 (7)2.2 逻辑分析仪模块 (8)第三章信号发⽣器实现⽅案 (11)3.1 硬件组成 (11)3.2 软件组成 (14)第四章简易逻辑分析仪⽅案实现 (15)4.1 结构组成 (15)4.2 数据采集和存储部分 (16)4.3 逻辑状态与波形显⽰部分 (17)4.4 简易逻辑分析仪的软件流程 (23)4.5 实时波形存储与上下翻页 (24)第五章:操作说明 (26)5.1 数字信号发⽣器操作⽅法 (26)5.2 逻辑分析仪操作⽅法 (26)第六章附录 (28)第七章总结 (42)致谢 (43)摘要本系统由8位可预置的循环移位数字信号发⽣器、简易逻辑分析仪两部分组成。
循环移位数字信号发⽣器由51单⽚机控制,可以产⽣8位可预置逻辑信号序列和时钟信号波形。
其中⼀路输出电平可在0~5V 内调节。
采⽤16×2液晶显⽰各设置参数,显⽰直观,设置⽅便。
简易逻辑分析仪采⽤双单⽚机协同⼯作的⽅式:其中⼀⽚单⽚机作输⼊控制、数据存储、数据显⽰及各控制参设置;另⼀⽚单⽚机控制D/A转换器输出波形到⽰波器。
两单⽚机之间采⽤串⾏⽅式进⾏通信。
我们采⽤XY扫描⽅式的显⽰⽅法。
X轴的锯齿波信号由D/A转换器产⽣,由于要同时显⽰8路信号,所以Y轴的信号由被测信号、时标信号和参考电平相加得到,在软件配合下,可以⽐较⽅便实现8路信号的稳定显⽰,同时也可显⽰时间标志线和触发点位置。
--基于51单片机的简易函数信号发生器的设计与分析
基于51单片机的简易函数信号发生器的设计与分析郭 辉(阜阳师范学院信息工程学院,安徽阜阳,236037)摘要:函数信号发生器设计与分析是单片机实践中的一重要实验。
本文采用Proteus 对函数信号发生器的原理图进行设计,并通过Keil 软件编程验证该设计的可行性,通过调节按键,该简易函数信号发生器可以正确输出正弦波、锯齿波、梯形波、矩形波,并可以通过按键对相应波形的频率进行调节,最终通过Proteus 制作出该电路的PCB 原理图。
本设计对单片机项目设计与实现具有一定的指导意义。
关键词:信号发生器;AT89C51;Proteus ;Keil ;PCB 中图分类号:TP368.1 文献标识码:BDesign and analysis of a simple function signal generator based on 51 single chip microcomputerGuo Hui(College of Information Engineering,Fuyang Teachers' College,Fuyang Anhui,236037)Abstract :This paper uses the principle of figure Proteus function signal generator is designed,and the feasibility of the design is verified by Keil software programming,by adjusting the key,the simple function signal generator can output sine wave,Ju Chibo,trapezoidal wave,rectangular wave,and can be adjusted through the key corresponding to the frequency of the waveform, eventually produced by Proteus PCB principle diagram of the circuit.Keywords :signal generator;AT89C51;Proteus;Keil;PCB 0 引言Proteus 软件为英国Labcenter electronics 公司开发的EDA 工具软件。
基于51单片机简易计算器课程设计报告书
电气与电子信息工程学院单片机课程设计设计题目:简易电子计算器专业班级: 12级电信(1)班学号: 1姓名:峥指导教师:章磊艾青设计时间:2014/06/03~2014/06/13设计地点:K2—407课程设计任务书2013 ~2014 学年第2学期学生:峥专业班级:电子信息工程技术(专)2012(1)班指导教师:艾青、章磊工作部门:电气学院电信教研室一、课程设计题目:单片机课程设计1. 出租车计价器系统设计2. 医院住院病人呼叫器的设计3. 作息时间控制器4. 数字温度计的设计5. 火灾报警器的设计6. 电子密码锁7. 电子计算器8.学生自选二、课程设计容1. 以单片机为核心器件,构造系统;2. 熟悉、掌握各种外围接口电路芯片的工作原理和控制方法;3. 熟悉、掌握单片机汇编语言的软件设计方法;4. 熟悉、掌握印刷电路板的设计方法;5. 根据具体设计课题的技术指标和给定条件,能独立而正确地进行方案论证和电路设计,要求概念清楚、方案合理、方确、步骤完整;6. 学会查阅有关参考资料和手册,并能正确选择有关元器件和参数;7. 编写设计说明书,参考毕业设计论文格式撰写设计报告(5000字以上)。
三、进度安排2.执行要求智能电子产品设计制作共8个选题,每组不超过7人,为避免雷同,在设计中每个同学所采用的方案不能一样。
四、基本要求(1)进行方案论证并根据要求确定系统设计方案;(2)绘制系统框图和电气原理草图,程序流程图;(3)对相关电路进行电路参数计算和元器件选择;(4)进行软件汇编并调试;(5)利用Proteus和Keil uVision2对系统进行联调;(6)绘制系统原理总图,列出原器件明细表;(7)画出软件框图,列出程序清单;(8)写出使用说明书;(9)对设计进行全面总结,写出课程设计报告。
五、课程设计考核办法与成绩评定第1章方案的选择与概述1. 单片机概述当今时代,是一个新技术层出不穷的时代。
在电子领域,尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统正以前所未见的速度被单片机智能控制系统所取代。
基于51单片机简易计算器课程设计报告
基于51单片机简易计算器课程设计报告引言:计算器是现代社会中常见的电子设备之一,它能够帮助人们进行各种数学运算,提高计算效率。
本文将介绍基于51单片机的简易计算器的设计过程及实现方法。
一、设计目标本次设计的目标是实现一个简易计算器,能够进行基本的加减乘除运算,并能够显示计算结果。
通过该设计,旨在加深学生对51单片机的理解,培养其实际操作能力。
二、硬件设计1. 电源模块:采用稳压电源模块,提供稳定的电压给单片机及其他电路模块。
2. 单片机模块:采用51单片机,作为计算器的核心控制模块,负责接收按键输入、进行运算和显示结果。
3. 按键模块:设计合适的按键电路,用于输入数字和操作符。
4. 显示模块:采用数码管或液晶显示屏,显示计算结果。
5. 连接线:将各个模块连接起来,确保信号的传输畅通。
三、软件设计1. 初始化:设置单片机的工作模式、端口方向和初始状态。
2. 按键扫描:通过轮询的方式检测按键是否被按下,若有按键按下则进行相应的处理。
3. 输入处理:根据按键的顺序和操作符的位置进行输入的处理,将输入的数字和操作符分别存储在相应的变量中。
4. 运算处理:根据输入的操作符进行相应的运算,得出计算结果。
5. 结果显示:将计算结果通过数码管或液晶显示屏进行显示。
6. 清零处理:在计算结果显示完毕后,对相关的变量进行清零处理,以便进行下一次的计算。
四、功能实现1. 加法运算:通过按下"+"按键,输入第一个数字,再按下"="按键,输入第二个数字,最后按下"="按键,计算并显示结果。
2. 减法运算:通过按下"-"按键,输入第一个数字,再按下"="按键,输入第二个数字,最后按下"="按键,计算并显示结果。
3. 乘法运算:通过按下"*"按键,输入第一个数字,再按下"="按键,输入第二个数字,最后按下"="按键,计算并显示结果。
基于51单片机毕业设计
基于51单片机毕业设计基于51单片机毕业设计随着科技的不断发展,单片机在各个领域得到了广泛的应用。
作为一种微型电脑,单片机具有体积小、功耗低、功能强大等特点,因此在毕业设计中,基于51单片机的项目也成为了许多电子信息类专业学生的首选。
在基于51单片机的毕业设计中,学生可以根据自己的兴趣和专业背景选择不同的项目。
比如,可以设计一个智能家居控制系统,通过单片机控制各种家电设备的开关,实现远程控制和定时控制功能。
这个项目既能锻炼学生的硬件设计能力,又能提高他们对物联网技术的理解和应用能力。
另外,基于51单片机的毕业设计还可以选择设计一个智能车辆控制系统。
通过单片机控制车辆的速度、转向和刹车等功能,实现自动驾驶或者遥控驾驶的功能。
这个项目不仅需要学生对电子电路的设计和调试能力,还需要他们对控制算法和传感器技术的理解和应用能力。
除了智能家居和智能车辆,基于51单片机的毕业设计还可以选择其他的项目。
比如,可以设计一个智能安防系统,通过单片机控制摄像头和报警器等设备,实现对家庭和办公室的安全监控和报警功能。
这个项目需要学生对图像处理和信号处理等方面的知识有一定的了解。
在进行基于51单片机的毕业设计时,学生需要进行详细的项目规划和设计。
首先,他们需要确定项目的目标和功能,明确项目的需求和约束条件。
然后,他们需要进行电路设计和硬件调试,选择合适的传感器和执行器,设计合理的电路连接和布局。
接下来,他们需要进行软件编程和系统调试,编写适合单片机的程序,实现项目的各项功能。
最后,他们需要进行系统测试和性能评估,验证项目的可行性和有效性。
在进行基于51单片机的毕业设计时,学生还需要注意一些问题。
首先,他们需要充分了解单片机的原理和特点,熟悉单片机的硬件和软件开发环境。
其次,他们需要学会使用各种工具和设备,如示波器、逻辑分析仪和编程器等,提高项目的开发效率和质量。
最后,他们需要与导师和同学进行充分的交流和合作,及时解决遇到的问题,提高项目的可行性和可靠性。
实用简易逻辑分析仪的设计与实现
第 3 卷第 2 3 期
20 0 7年 2月
电 子 工 皇 师
E E R L CT 0NI GI ER C EN NE
V 13 . o . 3 No 2 Fb 0 7 .2 0
实 用 简 易逻 辑 分析 仪 的设 计 与 实现
关键词: 逻辑分析仪 ; 示波器; 单片机 ; 多踪显示
中图分类 号 :M9 5 2 T 3 .
0 引 言
在 数 字 电路 的调 测 过 程 中 , 往 要 测 量 多路 信 号 往 的波形 , 析它们 的逻辑关 系 。如果 采 用普通 示 波器 , 分 只能测 量 两路 波形 , 需要 两两 相测 , 再进 行分 析 才能得 出多 路波 形之 间 的逻 辑 关 系 , 常 麻 烦 。如 果 采 用逻 非
1
一
辑分析仪则投资较高 , 特别是在实验教学中难以承受 。 因此 , 我们 设计 了一 种 基 于 示 波 器进 行 显 示 的简 易 逻 辑分析仪 , 采用单片机进行设计 , 价格低 , 性能稳定 , 可 扩展性强。该逻辑分析仪的另一个特点是能够使低频 被测信号稳定地显示 , 因此具有一定 的实用 和推广价
・ 测控技术 ・
电阻 的 取 值 非 常 关 键 , 阻 的 取 值 分 别 为 1 0 Q 、 电 5k 10k 5 Q 和 1 Q( 图 2 , 过实 验 验证 效果 0 Q、1k 0k 见 )经 很好 。7 HC 5 4 13为 4选 1数据 选 择器 , 地址 端 A、 由 B
输 出被测 信号 , 在示 波器 上稳 定地显 示 。 由于 示波 器 的余 辉 时 间一 定 , 于 示 波 器进 行 显 基
收稿 日期 : 060 -1 修 回 日期 : 060 -6 20 - 2 ; 6 2 0 -90 。
用STC12C5A60S2自制逻辑分析仪
用STC12C5A60S2自制逻辑分析仪逻辑分析仪对于开发者来说很重要,现在我们用STC12C5A60S2单片机制作一个 制作资料和上位机程序下载:51hei/bbs/dpj-20393-1.html,下面是单片机高速采样程序: #include//============================================================ ==========================//================================== ====================================================void UartInit(void) //串口初始化函数28800bps@24MHz{ IP = 0x02; IPH = 0x10; IP2 = 0x00; IPH2 = 0x00; //设置中断优先级PCON &= 0x7f;//波特率不倍速SCON = 0x50;//8位数据,可变波特率REN = 1; //启动接收BRT = 0xE6; //设定独立波特率发生器重装值AUXR |= 0x04;//独立波特率发生器时钟为Fosc,即1TAUXR |= 0x01;//串口1选择独立波特率发生器为波特率发生器AUXR |= 0x10;//启动独立波特率发生器ES = 1; //开串行口1中断//EA = 1; //开总中断} //============================================================ ==========================//================================== ====================================================voidInit_Timer0(void) //定时器0初始化函数{TMOD |= 0x02; //定时器0工作在模式2AUXR |= 0x80; //定时器0工作在1T模式TH0 = 0xff;TL0 = 0xff; //定时初值TR0 = 1; //启动定时器} //============================================================。
简易逻辑分析仪的设计与制作
目录前言 (2)第1章绪论 (3)第1.1节逻辑分析仪在数字科技中的地位 (3)第1.2节逻辑分析仪的发展状况 (5)第2章系统分析 (6)第2.1节逻辑分析仪的组成及工作原理 (6)第2.2节系统方案的选择与论证 (7)第2.3节系统总体方案框图 (9)第3章系统硬件设计 (11)第3.1节 CPU的选择与应用 (11)第3.2节数字信号发生器模块的实现 (15)第3.3节主控系统模块的电路设计与实现 (16)第3.4节功能实现模块 (18)第3.5节 D/A转换电路 (19)第3.6节硬件的抗干扰措施 (19)第4章系统软件设计 (20)第4.1节软件主CPU流程图 (20)第4.2节软件从CPU程序流程图 (21)第4.3节中断服务子程序流程图 (22)第4.4节掉电保护流程图 (23)第5章系统测试 (25)第5.1节测试仪器 (25)第5.2节测试方法 (25)第5.3节误差分析 (25)结论 (26)参考文献 (26)致谢 (27)附录:部分源程序 (28)【摘要】:逻辑分析仪是一种新型的数字测试仪器。
它应用于微机等数字系统的软件、硬件调试,故障检查,性能分析等过程中。
本设计采用AT89C51单片机控制8路逻辑信号电平采集的简易逻辑分析仪设计。
采用AT89C2051控制系统实现一个数字信号发生器可预置8路信号工作, 采集电路以5Kbit 每秒的速率同时对8路逻辑信号进行采样。
逻辑信号门限电压通过键盘任意设定,信号采集的触发等级、触发条件、触发位置由键盘设定。
【关键词】:逻辑分析仪;AT89C51;AT89C2051;数字信号发生器[Abstract]: Logic analyzer is a new-style digital testing instrument. It is used in the test of software and hardware of digital system, such as micro-computer, fault-checked, analyzing-performance.This paper introduces the design of the simple logic analyzer which acquisition of 8 routes signal level is controlled through AT89C51 single chip. The control system through AT89C2051 to realize a digital waveform generator scheduled 8 routes signal.5Kbit/s real-time sample rate of the acquisition circuit is faced to the 8 routes logic signal in the meantime. Threshold voltage of logic signal is set arbitrarily by keyboard, trigger rank, trigger condition and trigger location are set by keyboard.[Key words]: logic analyzer;AT89C51; AT89C2051; digital waveform generators前言信息时代是数字化的时代,数字技术的高速发展,出现了以高性能计算机为核心的数字通信、数字测量的数字系统。
简易逻辑分析仪设计
线移 位 , 普通 的台式 逻 辑分 析仪 相 比造价 低 。但 与 逻辑 分析 仪是 数 字 电路 常用 的分 析 仪器 , 有 是 系统规模 较 大 , 具 成本 较 高 ; 主体 由软 件构成 , 编程 采样 频 率高 、 量 大 、 道 多 、 析 功 能强 等 特 点 , 量 大 ; 容 通 分 尽管 实 现 实 时 显 示 , 不适 应 高速 应 用 的场 但
Jn u .2 1 00
简 易 逻 辑 分 析 仪 设 计
黄 铄 , 忠 义 梅
200) 3 0 9 ( 肥 工 业 大 学 电子 科 学 与 应 用 物 理 学 院 , 徽 合 肥 合 安
摘
要 : 计 了简易逻辑 分析仪 , 设 采用单 片机 AT 9 5 8 C 2作为主控制器 , 以外部接 口实现 数据采集存储 回放 , 辅 通过 普
针 对上 述 两 种 简 易 逻辑 分析 仪 方 案规 模 较大
成 本 偏 高等 缺 点 , AT8C5 片机 作 为主 控制 以 9 2单 当前 简 易逻 辑 分 析 仪 主 要 的两 种 设 计 方 案 为 器 代替 C L P D或F GA, 择 外扩 R P 选 AM 2 5 进行 62 6 ( ) 用F GA 芯 片和VHDL硬件 描述 语言 设计 的 数据 储存 , 以 8 5A 外部接 口实现数据 采集存 储 1应 P 辅 25 8位简 易逻辑 分析仪 [ 。2 C L 1 () P D结 合单 片机 进行 ] 设计 开发 [ 这 两 种方案 都 利用 可编 程逻 辑器 自身 引。
第 2 卷 第 2期 7
21 0 0年 6月
阜阳师范学院学报 ( 自然 科 学 版 )
J u n l fF y n a h r l g ( t r lS in e o r a u a g Te c esCol e Na u a ce c ) o e
基于单片机的简易逻辑分析仪设计
基于单片机的简易逻辑分析仪设计前言信息时代是数字化的时代,数字技术的高速发展,出现了以高性能计算机为核心的数字通信、数字测量的数字系统。
在研究这些数字系统产品的应用性能的同时也必须研究在设计、生产和维修他们的过程中,如何验证数字电路设计的合理性、如何协调硬件及其驱动应用软件的工作、如何测量其技术指标以及如何评价其性能。
逻辑分析仪的出现,为解决这些问题提供了可能。
随着数字系统复杂程序的增加,尤其是微处理器的高速发展,用示波器测试己显得有些无能为力。
1973年在美国应运而生的逻辑分析仪(Logic Analyzer),能满足数字域测试的各种要求。
它属于总线分析仪一类的数据域测试仪器主要用于查找总线(或多线)相关故障.同时对于数据有很强的选择能力和跟踪能力,因此,逻辑分析汉在数字系统的测试中获得了广泛的应用。
逻辑分析仪(Logic Analyzer)是以逻辑信号为分析对象的测量仪器。
是一种数据域仪器,其作用相当于时域测量中的示波器。
正如在模拟电路错误分析中需要示波器一样,在数字电路故障分析中也需要一种仪器,它适应了数字化技术的要求,是数字、逻辑电路、仪器、设备的设计、分析及故障诊断工作中不可按少的工具。
在测试数字电路、研制和维修电子计算机、微处理器以及各种集成化数字仪表和装置中具有广泛的用途;还是数字系统设计、侦错、软件开发和仿真的必备仪器;作为硬件设计中必不可少的检测工具,还可将其引入实验教学中,建立直观感性的印象,提升学生的硬件设计能力,可以全面提高教学质量;随着科技的发展,LA在多通道、大存储量、高采样速率、多触发功能方面得到更快的发展,在航天、军事、通信等数字系统领域得到越来越广泛的应用。
我们从上面可以看出逻辑分析仪在各个领域的广泛应用。
那么我们在学习、应用的同时设计并制作一个简易的逻辑分析仪就显的意义重大了,这样这个过程既可以让我们更加深入理解其原理,又可以提高动手设计并制作整个系统电路的能力,还可以将其作为简易仪器应用于以后的实验中。
简易型数字电路逻辑分析仪[实用新型专利]
专利名称:简易型数字电路逻辑分析仪
专利类型:实用新型专利
发明人:苏建徽,茆美琴,张国荣,孙艳霞,马炎,汪海宁,杜燕申请号:CN200720043000.5
申请日:20070822
公开号:CN201116928Y
公开日:
20080917
专利内容由知识产权出版社提供
摘要:简易型数字电路逻辑分析仪,其特征是采用通用示波器,并设置以单片机为中央处理器的信号采集处理电路,所述信号采集处理电路包括:8或16通道多路数据采样电路;电平移位转换电路,数字采样信号在电平移位转换电路中进行数字信号的多级电平移位转换,经电平移位转换的多路信号通过示波器的一个输入通道在示波器上以不同的零坐标显示;输出电路,以通用示波器为显示终端,同步周期循环分时输出逻辑移位电平信号。
本实用新型结构简单、成本低,适于在高等院校教学中进行普遍配置以提高教学实验质量。
申请人:合肥工业大学
地址:230009 安徽省合肥市屯溪路193号
国籍:CN
代理机构:安徽省合肥新安专利代理有限责任公司
代理人:何梅生
更多信息请下载全文后查看。
KEIL中逻辑分析仪的使用
KEIL中逻辑分析仪的使用本学期开了门嵌入式的课程,在实验课上用到了一款基于ARM Cortex-M3处理器的LPC1768的实验板。
本来这种课程我觉得应该可以学到很多东西,可是我发现实验课上老师基本只是讲了xx实验课的要求,然后你就拿着人家建好的工程编好的程序跑起来,仅仅只是运行了一下程序就可以结束了这个实验。
学生学到的东西真的太少,比如如何调试的问题,你如何能知道你编写的代码输出是不是你想要的?你如何知道你编写的代码的效率是不是符合要求的?这些老师都不会教你。
所以我觉得要想真正学到东西,无论什么时候都得靠自己。
见网上有不少百度“如何在Keil中使用逻辑分析仪“的帖子。
其实这个在以前用51的时候自己做过了,不过没有整理下来。
现在觉得还是有必要把学到的都记录下来,给自己复习,与大家分享。
下面就“如何在Keil中使用逻辑分析仪”进行讲解,小编会用简单的语言和图片进行阐述,你一定可以掌握。
如图主程序所示,程序的目的是要产生精确的1Hz的方波信号,则方波信号的高电平占0.5s,低电平占0.5s,本程序利用定时器的定时功能,每0.5s时间到则将P3.25引脚输出的电平翻转一次,从而可实现完整的1Hz方波信号的输出。
程序写好了,编译好了,那么下边就要使用逻辑分析仪进行软件调试,看看输出是不是你想要的波形。
首先进入调试模式,(讲解的时候我就从菜单栏而不用快捷面板上的快捷按钮吧,也为了让大家熟悉所使用的工具在哪个菜单下。
)菜单栏的Debug下拉菜单的start/stop debug session选项,然后调出逻辑分析仪,(只有进入调试模式才可以看到逻辑分析仪)。
在菜单栏的View下拉菜单中找到Analysis Windows就看到逻辑分析仪了点出来之后就是下边的窗口了:下边是如何设置的问题。
首先你要知道那些引脚可以被检测到,你可以在命令行窗口输入dir vtreg,如图所示:然后就可以显示出那些引脚是可以被检测到的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.. .本科生毕业设计报告学院物理与电子工程学院专业电子信息工程设计题目:基于51单片机的简易逻辑分析仪设计学生指导教师(及职称)班级学号完成日期:年月基于51单片机的简易逻辑分析仪设计物理与电子工程学院电子信息工程[摘要]本设计完成了一种能进行数字电路中多路数据测试的简易逻辑分析仪。
它以51单片机控制核心,数模转换器为逻辑信号门限电平控制电路,用按键和12864LCD作为人机交互界面,采用C51进行模块化编程,实现了四路信号的测试,具有成本低,使用方便等特点。
[关键词]数字电路单片机数模转换器逻辑分析仪1 设计任务与要求本设计的主要任务及参数指标是:数据位数4位,存储深度80字;数据速率最高1kHz;输入阻抗大于50kΩ;逻辑信号门限电平在1.0V~4.0V 围按8级任意设定。
2 设计方案本系统采用51单片机为控制核心,系统由单片机系统、逻辑电平控制、按键、LCD显示、系统电源等模块构成。
被测数据输入到逻辑电平控制模块,然后进行单片机进行测试,按键用于控制逻辑信号门限电平的大小,系统电源为各模块供电,各模块的供电电压为5V。
图1 系统框图3 设计原理分析3.1 单片机系统电路设计图2 单片机系统电路单片机系统为逻辑分析仪的核心,负责控制逻辑分析仪的逻辑电平、检测按键并驱动LCD 进行显示。
单片机系统电路如图2所示,由晶体振荡器Y1、电容C3和C4构成振荡器电路,为单片机提供时钟信号。
电容C1、电阻R2和R1、按键KEY1构成单片机复位电路,高电平复位,当按键KEY1按下的时间超过2个机器周期以上时,单片机就执行复位操作。
EA 接高电平,单片机首先访问部程序存储器。
J1EA/VP 31X119X218RESET 9RD 17WR 16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P 30TXD 11RXD 10U1P10P11P12P13P14P15P16P17P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P27123456789J11K+5Y112M+5RXD TXDRD WRT0T1INT0INT1C322p FC422p FR28.2KC110u F+512J6CON2KEY1SW2R1100..为1KΩ的排阻,作为P0口的外部上拉电阻。
在硬件制作时为了方便单片机的测试和功能的扩展,把所有的I/O口均通过排针引出。
3.2 人机界面电路设计.图3 按键控制电路按键控制电路如图3所示,用于控制逻辑分析仪的工作状态,如采样率改变、逻辑电平的调整等等,单片机通过检测按键对应的I/O口是否为低电平来判断按键是否按键,为了防止干扰,应在单片机的按键检测程序中加入延时函数。
.图4 LCD显示接口电路LCD显示接口电路如图4所示,此模块用来显示需要显示的数据,电位器R3用于调节液晶的对比度。
LCD采用采用字符式FM12864M-12L型LCD,为节约I/O 口,以串行方式与单片机连接。
..图5 蜂鸣器驱动电路蜂鸣器驱动电路如图5所示,选用三极管Q1为PNP型三极管,三极管基极电阻R11为1kΩ,因为单片机的灌电流能力强于拉电流能力,因此采用PNP型三极管,蜂鸣器采用5V有源蜂鸣器。
三极管连接到单片机的P17口,当P17输出为低电平时,蜂鸣器响。
3.3 逻辑电平控制电路设计逻辑分析仪主要作用在于时序判定,通常只显示两个电压(逻辑1和0),因此设定了参考电压后,逻辑分析仪将被测信号通过比较器进行判定,高于参考电压者为高电平,低于参考电压者为低电平,在高电平与低电平之间形成数字波形。
逻辑电平控制电路用于控制输入信号的门限电平,输入信号经过逻辑电平控制电路以后再连接到单片机的I/O口,主要有电压比较器和数模转换器构成,电路如图6所示。
逻辑分析仪被测信号路数为4路,采用4个电压比较器和一片数模转换器实现逻辑电平控制,电压比较器采用LM393,因为采用OC输出,所以输出端均连接上了5.1kΩ的上拉电阻。
4路输入信号的门限电平由数模转换器控制,为了使4路输入信号的门限电平一致,四片电压比较器的反向输入端接在一起,并连接到数模转换器的输出端。
数模转换器U2换用TLC5615来实现,TCL5615为十位串行数模转换器,控制方便,并节约单片机的I/O口,数模转换器的参考电压由U2的6脚输入,稳定的参考电压为2.5V,由TL431产生。
..图6 逻辑电平控制电路3.4 供电电源电路设计J15.图7 供电电源电路系统采用5V 供电,供电电源电路由LM7805完成,电路如图7所示。
J11为供电电源电路的输入端,D3为了防止反接,C6、C7为输入滤波电容,C8、C9为输出滤波电容,D5为电源指示灯,R8为电源指示灯的限流电阻。
4 系统软件设计图8 设计流程图设计流程图如图8所示,电路焊接完成先进行硬件的调试,然后进行程序的编译和软硬联合调试。
硬件调试先不放置芯片,通过万用表验证PCB与原理图的一致性,如果发现有不一致的地方,查找原因,直到解决问题为止。
然后进行加电测试,分别测试主要关键点的电压是否和原理一致,单独验证每个模块电路的正确性。
硬件验证通过后进行程序的编辑与调试,直到最终设计作品工作为止。
4.1 设计过程所用仪器1、DF1731SC2A直流稳压电源2、UT805A万用表3、PC机4.2 软件设计工具和平台采用Keil uVision4集成开发环境作为软件开发平台,用C语言对单片机编程实现系统各功能,并进行整体软件系统调试。
采用RS232串口为单片机进行程序下载,由于电脑没有RS232串口,因此使用CH341T完成USB转RS232,RS232连接到单片机串口完成程序的下载。
4.3 软件设计思想系统采用分模块编程的思想,然后通过标志位来实现各个模块之间的协调运行。
此逻辑分析仪的模块程序主要有数据采集模块、逻辑电平控制模块、按键检测模块、采样率控制模块、LCD显示驱动程序等。
4.4 软件设计流程图图9 程序流程图5 设计的结果图10 逻辑分析仪PCB布线图原理图的绘制和PCB的设计使用Protel 99se来完成,PCB板的制作采用快速热转印技术来完成。
在原理图的绘制及PCB的设计过程中特别注意规性,特别是PCB布线的一些规则,注意PCB走线、线距、线宽、空间布局等,合理选取接口,如图10所示为逻辑分析仪PCB布线图。
图11 多路数据逻辑分析图图12 逻辑电平设定测试图由于此逻辑分析仪为四通道,测试过程中,分别为每个通道加入被测逻辑电平,分别验证,然后四个通道同时验证,并测试逻辑电平设定等。
测试结果表明,符合设计要求。
6 总结采用51单片机为控制核心,数模转换器加电压比较器构成逻辑电平控制电路,LCD组成显示界面等,可以有效的构成简易逻辑分析仪的硬件系统,使用EDA开发工具可以缩短建议逻辑分析仪设计的时间,使用模块化编程的思想有利于程序的调试和可读。
通过对简易逻辑分析仪的设计,可以加深对系统设计思想的认知,初步具备电子设计的能力。
[参考文献][1] 庞利会,邓先荣,王军锋等.逻辑分析仪的设计与实现[J].电力自动化设备,2012,32(9):149-152.[2] 朱震华,储婉琴.简易逻辑分析仪的设计与实现[J].实验室研究与探索,2001,20(2):123-124.[3] 江波,叶丽.基于51单片机的简易逻辑分析仪[J].广西大学学报(自然科学版),2008,33(z1):128-130.[4] 朱震华,储婉琴.简易逻辑分析仪设计[J].电子工程师,2000,26(5):31-32,36.[5] 贾奕,黄劲松,鹏程等.简易逻辑分析仪设计[J].电子测试,2008,(10):70-75.[6] 朱更军,永供,项安等.串行10位D/A转换器TLC5615原理及与DSP的接口[J].电子质量,2003,(10):59-60.[7] 左现刚,余周,侯志松等.基于SPI总线的TLC5615在AVR 单片机中的应用[J].科技学院学报(自然科学版),2011,39(4):94-97.[8] 建波,高立新.串行数模转换器TLC5615的原理及其Proteus仿真设计[J].电脑,2008,(10):21,3.[9] 凌燕,黄允千.Proteus与Keil软件的整合在单片机实验开发中的应用[J].实验室研究与探索,2008,27(4):59-61,68.[10] 马刚,向仓.用Proteus与Keil整合构建单片机虚拟仿真平台[J].现代电子技术,2006,29(24):129-131.[11] 伍洁,跃,斌等.Proteus与Keil在单片机开放性实验中的应用[J].电子测量技术,2008,31(6):100-103,107.[12] 黄克亚.浅谈自制51单片机编程器方法和策略[J].科技信息,2009,(25):11.[13] 邱宁.利用USB总线的虚拟逻辑分析仪[J].自动化仪表,2003,24(9):21-24.[14] 胡昆霖,冶,左向利等.基于LabVIEW和FPGA的多通道虚拟逻辑分析仪的设计[J].电子技术应用,2012,38(11):91-93.[15] 丽焕.电压比较器电压传输特性的绘制[J].中国科技纵横,2013,(2):212.[16] 周宦银,吕子勇,马果花等.电压比较器实验研究[J].实验技术与管理,2012,29(3):42-44.[17] 旦花.单片机最小系统的设计与应用[J].无线互联科技,2012,(10):103-104.[18] 景小健,清华,清林等.MG-12864液晶显示器在智能仪表中的应用[J].化工自动化及仪表,2003,30(6):62-64.[19] 志广,晓泉,淮俊霞等.中文图形12864点阵液晶显示模块与51单片机的并行接口电路及C51程序设计[J].现代显示,2008,(7):41-44.[20] 大伟,黄璞.基于12864 LCD的波形显示系统的研制[J].仪器仪表用户,2008,15(3):28-29.The design of simple logic analyzer based on 51 single chipWang ShuShool of physics and electronic engineering 1230S007[Abstract]In this paper,a simple logic analyzer which can multiplex data in digital circuit test is designed. It takes 51 single-chip microcomputer to control the core.The digital to analog converter is used as a logic signal threshold level control circuit.The analyzer uses keyboard and 12864LCD as the man-machine interface, and modular programming with C51.It can test quadruplex signal with low cost,and uses conveniently.[Keywords]Digital circuit SCM Microcontroller DAC Logic Analyzer附一:源程序#include <reg52.h>#include "lcd.h"#include "tlc5615.h"#include "tlc1549.h"#define count 50000#define TH_M1 (65536-count)/256 //T0 (Mode 1)计数高8位#define TL_M1=(65536-count)%256 //T0 (Mode 1)计数低8位code uchar Display1[8]={"门限电平"};code uchar Display2[10]={"输出电压为"};sbit KEY1 = P0^3;sbit KEY2 = P0^4;sbit KEY3 = P0^5;sbit KEY4 = P0^6;sbit P13=P1^3;sbit P14=P1^4;sbit P15=P1^5;sbit P16=P1^6;unsigned int uiVoltage_ADC,uiVoltage_DAC; //uiVoltage:LCD显示用,无小数点float fVoltage_DAC; //定义实际需要输出的电压xdata unsigned char iCount=0; // 采样个数设置,这里设置为16次xdata unsigned char result_Port1[4][16]={0};xdata char port1_Flag=0;xdata char key12Flag=0;xdata char TR0Flag=0;xdata unsigned char key1=0; //控制显示屏上的列标记xdata unsigned char port_1[4]={1,2,3,4};char flay_a = 1;unsigned int Sample_Voltage(void);void Delay_1ms(int); //毫秒级延时函数void Control_DAC(void); //声明调整输出电压函数void displayPort1_in_LCD(unsigned char p, unsigned char i,unsigned char j);void displayPort1_in_LCD_by_Flush(unsigned char *p,unsigned char key);void put_and_Display_Voltage(); //当DA的电压设定发生改变时调用该函数void control_TR0_By_KEY3(); //通过按键KEY3控制采样的结束void display_Sample_Result(); //显示16次采样的结果函数void Sys_key();/******************************************************************************** 函数名:主函数功能说明:调用函数:入口参数:出口参数:说明:********************************************************************************/void main(){LCD_init(); //初始化LCDLCD_Clear(); //LCD清屏// T0_init();port1_Flag=0;key12Flag=0;//禁止按键key1和key2工作TR0Flag=0;// 禁止Time0工作TR0=1; //开启Time0工作fVoltage_DAC = 2.5;// put_and_Display_Voltage();// Delay_1ms(20);DAC_TLC5615_Voltage(fVoltage_DAC);while(1){if(flay_a==0){port_1[0]=(char)P13;port_1[1]=(char)P15;port_1[2]=(char)P14;port_1[3]=(char)P16;displayPort1_in_LCD_by_Flush(&port_1,key1%8);key1++;key1=key1%128;// Delay_1ms(500);// flay_a=1;// Sys_key();if(KEY1==0) //增加DAC电压,{Delay_1ms(10);if(KEY1==0){while(!KEY1);fVoltage_DAC=fVoltage_DAC+0.5;if(fVoltage_DAC>4.0){fVoltage_DAC = 1.0;}// IE=0x00;flay_a=1;// TR0Flag=1; //按一次就开始采样,再按一次就结束采样;}}if(KEY3==0) //减DAC电压,{Delay_1ms(10);if(KEY3==0){while(!KEY3);fVoltage_DAC=fVoltage_DAC-0.5;if(fVoltage_DAC<1.0){fVoltage_DAC = 4.0;}flay_a=1;// IE=0x00;// key12Flag=1;}}}if(flay_a==1){put_and_Display_Voltage();flay_a=0;}}}/********************************************************************************函数名:Display_Voltage功能说明:显示电压,整数调用函数:LCD_Pos Send_Data Write_LCD入口参数:Voltage(带显示电压*1000倍以后的值)x,y(从LCD的坐标x,y处开始显示)出口参数:无说明:显示围为0-9999 列:当Voltage=1234时,显示1.234V********************************************************************************/void Display_Voltage(unsigned int Voltage,char x,char y){code uchar Display_Dot[1]={"."};code uchar Display_Unit[1]={"V"};LCD_Pos(x,y);Write_LCD(Voltage/1000+0x30,1);Send_Data(Display_Dot,1); //显示小数点Write_LCD(Voltage%1000/100+0x30,1);Write_LCD(Voltage%100/10+0x30,1);Write_LCD(Voltage%10+0x30,1);Send_Data(Display_Unit,1); //显示单位}/********************************************************************************函数名:Sample_Voltage功能说明:带有滤波功能的电压测量调用函数:ADC_TLC1549入口参数:无出口参数:Votlage(测量滤波后的电压)说明:********************************************************************************/unsigned int Sample_Voltage(void){double Filt_Tab[3]={0};char Flag_Filt_Tab = 0;unsigned int Tab_Vol[30] ={0},k=0,Votlage = 0;double Sum = 0;char i=0,j=0;///////////////////////平均值滤波////////////for(i=0;i<30;i++){Tab_Vol[i]= ADC_TLC1549();}for(j=0;j<30;j++)for(i=0;i<30-j;i++)if(Tab_Vol[i]>Tab_Vol[i+1]){k=Tab_Vol[i];Tab_Vol[i]=Tab_Vol[i+1];Tab_Vol[i+1]=k;}for(i=0;i<10;i++){Sum +=Tab_Vol[i+10]; //取中间二十组数据}Sum = Sum/10; //平均滤波后的值Votlage =(unsigned)(Sum/1024.0*3770); //扩大1000 //需要一阶滞后滤波时把Sum修改成Filt_Tab[2]并取消屏蔽return Votlage;}/******************************************************************************** 函数名:Delay_1ms功能说明:毫秒级延时函数调用函数:入口参数:x:延时x毫秒出口参数:说明:********************************************************************************/void Delay_1ms(int x){int i,j;for(i=0;i<x;i++)for(j=0;j<120;j++);}//把p1.3,p1.4,p1.5,p1.6在液晶中进行显示,每行显示一组数据void displayPort1_in_LCD(unsigned char p, unsigned char i,unsigned char j) {LCD_Pos(i,j); //设置显示位置为第i行的第j个字符Write_LCD(p+0x30,1);}//一次显示四个电平值,显示在一列。