基于AT89C51单片机的智能电流检测系统设计-毕业设计.doc_第1页
基于AT89C51单片机的智能电流检测系统设计-毕业设计.doc_第2页
基于AT89C51单片机的智能电流检测系统设计-毕业设计.doc_第3页
基于AT89C51单片机的智能电流检测系统设计-毕业设计.doc_第4页
基于AT89C51单片机的智能电流检测系统设计-毕业设计.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计论文基于单片机的智能电流检测系统的设计摘要:电流检测系统是一种比较成熟的技术,但是基于单片机的电流检测系统是近来新兴的一种技术,主要优点是可以一次将多个电流信号测量并显示出来。本文阐述了基于单片机的智能电流系统设计的组成及设计方法。它的设计是为了检测比如直流、交流以及脉冲电流信号的有效值或者平均值。它是在at89c51单片机的基础上搭建硬件,配合c语言编程,通过keil软件和proteus软件将仿真结果显示出来。最后与准确电流的对比,精确程度能达到98%。本文只是进行了理论仿真,未进行实物搭建,对后续工作还有待于进一步研究。关键字:电流检测系统;单片机硬件;编程;仿真design of intelligent current detection system based on mcuabstract: the current detection system is a relatively mature technology, but the microcontroller-based current detection system is a recently emerging technology. its main advantage is that more than current signals can be measured and displayed.this article describes the composition and design methodology of design of intelligent current detection system based on mcu. it is in order to detect such as dc, ac and pulse current signal rms or average. it is to build the hardware on the basis of at89c51 microcontroller with c language programming, keil software and proteus software simulation results displayed. finally, compared with accurate and current, the precision of the detection system can reach 98%.this article run a theoretical simulation, without building physical structures. thefollow-up also needs further study.key word: current detection system; single-chip; hardware; programming; simulation毕业设计论文目 录绪论11 电流测量系统的整体设计22 电流检测系统的硬件设计32.1 电流供给电路设计32.2 数据采集及转换电路设计32.2.1adc0808简介32.2.2单片机与adc0808接口设计62.3 单片机显示电路设计72.3.1 液晶显示器lm016l简介72.3.2 lm016l与单片机接口设计112.4 电流系统的转化电路122.4.1 单片机i/o端口介绍123 电流检测系统软件设计153.1 ad转换和数据采集程序设计153.2 电流检测系统的显示子程序153.3 单片机内部数据传输程序和外部中断程序154 数据转换计算164.1数据标定164.2数据采集164.3数据转换计算164.4 数据验算165 子程序流程图175.1 ad模数转换和数据采集流程图及程序附录175.2 lm016l显示流程图及程序附录195.3单片机内部数据传输程序和外部中断流程图及程序附录225.4 单片机总流程图及程序附录235.5 电流测量系统硬件电路图附录29结论30致谢31参考文献32i绪 论单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器cpu随机存储器ram、只读存储器rom、多种i/o口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、a/d转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。基于单片机的电流智能检测系统的设计是利用单片机的多处理性能,来完成电流测量系统的智能控制。这样可以很方便的实现快速的对多个电流信号进行实时检测。国外对基于单片机的智能电流测量系统的技术研究较早,始于20世纪70年代。显示采用模拟式的组合仪表,采集现场信息进行指示、记录和控制。80年代末出现了分布式控制系统。目前正开发和研制计算机数据采集控制系统的多音字综合控制系统。现在世界各国的电流检测技术发展的很快,一些国家在实现自动化的基础上正向着完全自动化、无人化的方向发展。我国对于电流测量技术的研究比较晚。我国工程技术人员在吸收发达国家电流测控技术的基础上,才掌握了基于单片机的电流测量的技术。从总体上正从消化吸收,检点应用阶段向实用化、综合性应用阶段过度和发展。在技术上,我国的单片机智能测量电流的技术趋于成熟,但是在微电流测量这方面,由于单片机本身材料的缺陷使得我国与国外还有一定差距,还有待于发展。国内许多厂商已经开始研究基于单片机的测量电流的系统,并且获得了一定的研究成果,在精度方面达到了一定的水平。本课题可应用于测量,以及为科研领域提供精确的可供参考的数据。在研究方法上,要将理论与实践结合起来,以严谨的工作态度来实现系统的仿真运行。本次的毕业设计是应用单片机技术来实现电流的只能测量,重在掌握单片机技术,并且能从单片机的电流智能检测系统的设计中了解一些测量领域的知识。第32页 共32页1 电流测量系统的整体设计电流测量系统的总体设计如下(图1.1):先由外部电路给adc0808输入数据,然后adc0808由单片机(at89c51)编程控制实现自动转换,然后经过转换的数据传回单片机内,经过单片机处理,然后再经过lm016l液晶显示器显示出来。其间需要通过其他的外围设备支持。图1.1 总体设计此次设计的电流测量系统采集的是平均电流和有效电流,限于技术水平和硬件条件,不能测量动态电流。2 电流检测系统的硬件设计2.1 电流供给电路设计外部电流型号需要通过霍尔传感器将电流转换成为电压,然后由滑动变阻器和电源共同组成电流供给电路,如图2.1所示:图2.1 电流供给电路2.2 数据采集及转换电路设计2.2.1 adc0808简介数据采集电路中需要用到a/d转换器adc0808,先对其进行简单介绍:adc0808是采样频率为8位的、以逐次逼近原理进行模数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行a/d转换。 1主要特性1)8路8位ad转换器,即分辨率8位2)具有转换起停控制端3)转换时间为100s4)单个5v电源供电5)模拟输入电压范围05v,不需零点和满刻度校准6)工作温度范围为-4085摄氏度7)低功耗,约15mw2内部结构adc0808是cmos单片型逐次逼近式ad转换器,内部结构如图2.2.1所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型da转换器、逐次逼近。图2.2.1 adc08083外部特性(引脚功能)adc0808芯片有28条引脚,采用双列直插式封装,如图2.2.2所示。下面说明各引脚功能:in0in7:8路模拟量输入端2-12-8:8位数字量输出端adda、addb、addc:3位地址输入线,用于选通8路模拟输入中的一路ale:地址锁存允许信号,输入,高电平有效start: ad转换启动信号,输入,高电平有效eoc: ad转换结束信号,输出,当ad转换结束时,此端输出一个高电平(转换期间一直为低电平)oe:数据输出允许信号,输入,高电平有效。当ad转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量clk:时钟脉冲输入端。要求时钟频率不高于640khzref(+)、ref(-):基准电压vcc:电源,单一 5vgnd:地图2.2.2 adc0808外部引脚图当电流通过in0通道进入adc0808时,通过单片机给其指令使其开始转换。adc0808的工作过程是:首先输入3位地址,并使ale=1,将地址存入地址锁存器中。此 地址经译码选通8路模拟输入之一到比较器。start上升沿将逐次逼近寄存器复位。下降沿启动 ad转换,之后eoc输出信号变低,指示转换正在进行。直到ad转换完成,eoc变为高电平,指示ad转换结束,结果数据已存入锁存器,这个信号可 用作中断申请。当oe输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。工作时序如图2.2.3所示:图2.2.3 adc0808工作时序图极限参数:电源电压(vcc):6.5v控制端输入电压:-0.3v15v其它输入和输出端电压:-0.3vvcc+0.3v贮存温度:-65+150功耗(t=+25):875mw引线焊接温度:气相焊接(60s):215;红外焊接(15s):220抗静电强度:400v输出端注意:out7为最低位-out0为最高位,out7-out0分别接单片机的p0.0到p0.7端。2.2.2单片机与adc0808接口设计根据adc0808的功能及其工作过程,可将其与单片机的接口设计如图2.2.4所示:图2.2.4 单片机与adc0808硬件接线图2.3 单片机显示电路设计2.3.1 液晶显示器lm016l简介 单片机处理过的数据要通过lm016l液晶显示器将结果显示出来。所以这里有必要对lm016l进行简单的介绍:lm016l液晶模块采用hd44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,lm016l与单片机mcu通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(ir)和数据寄存器(dr)忙标志(bf),显示数ram(ddram),字符发生器roma(cgorom)字符发生器ram(cgram),地址计数器ram(ac)。ir用于寄存指令码,只能写入不能读出,dr用于寄存数据,数据由内部操作自动写入ddram和cgram,或者暂存从ddram和cgram读出的数据,bf为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,ddtam用来存储显示的字符,能存储80个字符码,cgrom由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系,可以查看下面的ascii码表。cgram是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,ac可以存储ddram和cgram的地址,如果地址码随指令写入ir,则ir自动把地址码装入ac,同时选择ddram或cgram但愿,lm016l液晶模块的引脚如图2.3.1所示:图2.3.1 lm016l引脚图引脚说明:lm016l字符型lcd通常有14条引脚线或16条引脚线的lcd,多出来的2条线是背光电源线vcc(15脚)和地线gnd(16脚),其控制原理与14脚的lcd完全一样,表2.3.1是lm016l的引脚功能表2.3.1 lm016l引脚功能引脚符号功能说明1vss一般接地2vdd接电源(+5v)3v0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10k的电位器调整对比度)4rsrs为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器5r/wr/w为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6ee(或en)端为使能(enable)端,下降沿使能。7db0底4位三态、 双向数据总线 0位(最低位)8db1底4位三态、 双向数据总线 1位9db2底4位三态、 双向数据总线 2位10db3底4位三态、 双向数据总线 3位11db4高4位三态、 双向数据总线 4位12db5高4位三态、 双向数据总线 5位13db6高4位三态、 双向数据总线 6位14db7高4位三态、 双向数据总线 7位(最高位)(也是busy flang)15bla背光电源正极16blk背光 电源负极寄存器选择控制表如下表2.3.2:表2.3.2 寄存器选择控制表rsr/w操作说明00写入指令寄存器(清除屏等)01都busy flag(db7),以及读取位址计数器(db0db6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据注:1.关于e=h脉冲开始时初始化e为0,然后置e为1,再清0。2.busy flag(db7):在此位为被清除为0时,lcd将无法再处理其他的指令要求。工作时序:读写操作时序如图2.3.2和2.3.3所示:图2.3.2 读操作时序图2.3.3 写操作时序字符集:lm016l液晶模块内部的字符发生存储器(cgrom)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“a”的代码是01000001b(41h),显示时模块把地址41h中的点阵字符图形显示出来,我们就能看到字母“a”。 因为lm016l识别的是ascii码,试验可以用ascii码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如a。图2.3.4是lm016l的16进制ascii码表。读的时候,先读上面那列,再读左边那行,如:感叹号!的ascii为0x21,字母b的ascii为0x42(前面加0x表示十六进制)。 显示地址:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1600h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0ah 0bh 0ch 0dh 0eh 0fh40h 41h 42h 43h 44h 45h 46h 47h 48h 49h 4ah 4bh 4ch 4dh 4eh 4fhlm016l通过d0d7的8位数据端传输数据和指令。显示模式设置: (初始化)0011 0000 0x38 设置162显示,57点阵,8位数据接口;显示开关及光标设置:(初始化)0000 1dcb d光标显示(1有效)、c光标显示(1有效)、b光标闪烁(1有效)0000 01ns n=1(读或写一个字符后地址指针加1 &光标加1),n=0(读或写一个字符后地址指针减1 &光标减1)s=1 且 n=1 (当写一个字符后,整屏显示左移)s=0 当写一个字符后,整屏显示不移动数据指针设置:数据首地址为80h,所以数据地址为80h+地址码(0-27h,40-67h)其他设置:01h(显示清屏,数据指针=0,所有显示=0);02h(显示回车,数据指针=0)。通常推荐的初始化过程:延时15ms写指令38h延时5ms写指令38h 延时5ms 写指令38h 延时5ms(以上都不检测忙信号) (以下都要检测忙信号)写指令38h写指令08h 关闭显示写指令01h 显示清屏写指令06h 光标移动设置写指令0ch 显示开及光标设置单片机通过以上指令集和相应的ascii码表显示数据。图2.3.4 lm016l的ascii码表2.3.2 lm016l与单片机接口设计单片机与lm016l可用以图2.3.5的接法连接:图2.3.5 lm016l与单片机的接口2.4 电流系统的转化电路2.4.1 单片机i/o端口介绍转换电路的主要部分是单片机at89c51,它也属于51单片机中的一类。at89c51能处理各类信号,在信号送达后单片机内的各个存储器和寄存器开始相应的动作来完成所要求的结果。at89c51有四个端口,p0,p1,p2,p3四个口,每个端口内部结构相同,但是所属职能有所不同。图2.4.1为单片机的引脚图:图2.4.1 单片机引脚图p0口:p0口是一组8位漏极开路型双向io口,也即地址数据总线复用口。作为输出口用时,每位能以吸收电流的方式驱动8个ttl逻辑门电路,对端口p0写“l”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在flash编程时,p0口接收指令字节。而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。p1口:p1 是一个带内部上拉电阻的8位双向io口,p1的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。与at89c5l不同之处是,p1.0和p1.1还可分别作为定时计数器2的外部计数输入(p1.0t2)和输入(p1.1t2ex)。flash编程和程序校验期间,pl接收低8位地址。p2口:p2 是一个带有内部上拉电阻的8位双向io口,p2的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对端口p2写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行movxdptr指令)时,p2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行movxri指令)时,p2口输出p2锁存器的内容。flash编程或校验时,p2亦接收高位地址和一些控制信号。p3口:p3口是一组带有内部上拉电阻的8位双向io口。p3口输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对p3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的p3口将用上拉电阻输出电流(iil)。p3口除了作为一般的io口线外,更重要的用途是它的第二功能,如表2.3.3所示:表 2.3.3 p3口引脚的第二功能端口引脚第二功能p3.0rxd(串行输入口)p3.1txd(穿行输出口)p3.2int0(外部中断0)p3.3int1(外部中断1)p3.4t0(定时器/计数器0)p3.5t1(定时器/计数器1)p3.6wr(外部数据储存器写选通)p3.7rd(外部数据储存器读选通)此外,p3口还接收一些用于flash闪速存储器编程和程序校验的控制信号。单片机除了4个端口外,还有其他引脚,在这里简单介绍一下: rst:复位输入。当振荡器工作时,rst引脚出现两个机器周期以上高电平将使单片机复位。aleprog:当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ale仍以时钟振荡频率的l6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ale脉冲。对flash存储器编程期间,该引脚还用于输入编程脉冲(prog)。如有必要,可通过对特殊功能寄存器(sfr)区中的8eh单元的d0位置位,可禁止ale操作。该位置位后,只有一条movx和movc指令才能将ale激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ale禁止位无效。psen:程序储存允许(psen)输出是外部程序存储器的读选通信号,当at89c51 由外部程序存储器取指令(或数据)时,每个机器周期两次psen有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次psen信号。eavpp:外部访问允许。欲使cpu仅访问外部程序存储器(地址为0000hffffh),ea端必须保持低电平(接地)。需注意的是:如果加密位lb1被编程,复位时内部会锁存ea端状态。如ea端为高电平(接vcc端),cpu则执行内部程序存储器中的指令。flash存储器编程时,该引脚加上+12v的编程允许电源vpp,当然这必须是该器件是使用12v编程电压vpp。xtal1:振荡器反相放大器的及内部时钟发生器的输入端。xtal2:振荡器反相放大器的输出端。3 电流检测系统软件设计3.1 ad转换和数据采集程序设计数据采集是由adc0808实现的,adc0808是以逐次逼近原理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行a/d转换为了使adc0808据采集和转换工作,需要给adc0808引脚发入触发信号:为了使adc0808工作起来,需要有时钟信号clk,为了使adc0808能够开始转换数据需要使st和ale有下降沿信号发生,因而需要为st和ale端口提供下降沿信号;为了能使转换完的数据输出,需要为adc0808提供输出信号,即oe管脚需要高电平。在数据输出完成后,oe管脚要置于低电平,以为下次数据输出做准备。3.2 电流检测系统的显示子程序电流系统的结果显示是有lm016l液晶显示器显示出来。液晶显示器共有16个管脚,数据指令传送端d0d7,还有数据和地址命令切换端rw,rs。当rs为高电平时,d0d7端口传送地址信号,当rw为高电平时,d7d0传送指令信号。在此期间,d7管脚除了传输数据和指令还兼做判断busy flag(以下简称bf)寄存器的指示端。当bf为0时,不执行指令,只传输同一种类型的数据;当bf为1时,执行指令,开始切换数据传输的类型。bf的置位由液晶显示器自动执行。e管脚是使能信号输入端,当为1时,能为lm016l传送数据,当为0时不能传送数据。3.3 单片机内部数据传输程序和外部中断程序单片机在执行数据显示的程序时,有p0口传送到p2的数据和单片机内本身传送给p2的“current flow”数据,为了防止两个数据发生干扰,于是选择应用中断程序。因为adc0808完数据之后会由eoc管脚发出一个脉冲信号来提示单片机转换完成,所以可以用这个信号成为单片机的int0外部中断。这样单片机内部的数据和p0口传到p2口的数据之间不会产生干扰,可以分时传送数据。4 数据转换计算4.1数据标定 在未将数据转换之前,adc0808的显示范围为0255(十进制数),为了能使显示的数据更准确,需要对未转换之前的数据进行标定,分别将数据分为大,中,小3部分进行,从而方便采集。标定值为:085,86170,171255.4.2数据采集在标定好数据之后,从标定的范围中选取三组数据进行数学分析和计算,从而得出转换所需要的参数,表4.2.1是所选取的三组数据:表4.2.1 数据采集实际电流值i(ma)标定范围显示数据d1000855118086170925001712552524.3数据转换计算数据在采集好之后,要对其进行处理。根据图5.5.1可知电流检测系统中实际电流值和显示数据之间呈现线性关系:i=kd+b。其中k和d是所求的参数。将上述采集的数据带入线性关系式之后,解线性方程组可求得k=1.99,b=-1.49。将k,d这两个参数带入程序中就可显示最终的结果。4.4 数据验算一般而言,最终的显示结果和真实结果之间的误差在1%之内算合格。通过最终验算,所测数据98%在合格范围内,能达到一般精度等级。5 子程序流程图5.1 ad模数转换和数据采集流程图及程序附录 功能说明:此流程图实现的功能是将模拟信号转换成数字信号。模数转换和数据采集子程序附录:#include #include #include #include #define uchar unsigned char #define uint unsigned int sbit rs=p15; sbit rw=p16; sbit e=p17; sbit st=p30;sbit oe=p31;sbit ale=p32;sbit adda=p11;sbit addb=p12;sbit addc=p13;sbit eoc=p33;void ad0808()/ad0808转换子程序 uchar i;adda=0;addb=0;addc=0;st=0;ale=0;delay(100);st=1;ale=0;while(!eoc);oe=1;table2i=p0;oe=0;5.2 lm016l显示流程图及程序附录功能说明:此流程图实现的功能是将adc0808转换完的数据由液晶显示器显示出来。lm016l显示子程序附录:#include #include #include #include #define uchar unsigned char #define uint unsigned int sbit rs=p15; sbit rw=p16; sbit e=p17; sbit st=p30; sbit oe=p31; sbit ale=p32; sbit adda=p11; sbit addb=p12; sbit addc=p13; sbit eoc=p33; uchar table1=current flow:; uchar table3=ma; bit lcd_bz() bit result;rs=0;rw=1;e=1;_nop_();_nop_();_nop_();_nop_();result=(bit)(p2&0x80);e=0;return result; void lcd_wcmd(uchar cmd) while(lcd_bz();rs=0;rw=0;e=0;_nop_();_nop_();_nop_();_nop_();p2=cmd;_nop_();_nop_();_nop_();_nop_();e=1;_nop_();_nop_();_nop_();_nop_();e=0; void lcd_pos(uchar pos)lcd_wcmd(pos|0x80);void lcd_wdat(uchar dat)while(lcd_bz();rs=1;rw=0;e=0;_nop_();_nop_();_nop_();_nop_();p2=dat;_nop_();_nop_();_nop_();_nop_();e=1;_nop_();_nop_();_nop_();_nop_();e=0;void lcd_init()lcd_wcmd(0x38);lcd_wcmd(0x0c);lcd_wcmd(0x06);lcd_wcmd(0x01);5.3单片机内部数据传输程序和外部中断流程图及程序附录 功能说明:此流程图实现的功能是将单片机内部数据以及外部转换分时数据显示到液晶显示器上。 单片机内部数据传输程序和外部中断程序附录:#include #include #include #include#define uint unsigned intuint table28;void timer_0() interrupt 2int i;table2i=p0;p2=table2i;5.4 单片机总流程图及程序附录通过以上子程序流程图的总结,可以总结出下列主程序流程图:单片机程序附录:#include #include #include #include #define uchar unsigned char #define uint unsigned int sbit rs=p15; sbit rw=p16; sbit e=p17; sbit st=p30; sbit oe=p31; sbit ale=p32; sbit adda=p11; sbit addb=p12; sbit addc=p13; sbit eoc=p33; uchar table1=current flow:; uint table28; uchar table3=ma; void delay(uchar ms)/延时子程序 uchar i;while(ms-)for(i=0;i255;i-);_nop_();_nop_();_nop_();_nop_(); void ad0808()/ad0808转换子程序 uchar i;st=0;ale=0;delay(100);st=1;ale=0;while(!eoc);oe=1;table2i=p0;oe=0; bit lcd_bz()/位函数 bit result;rs=0;rw=1;e=1;_nop_();_nop_();_nop_();_nop_();result=(bit)(p2&0x80);e=0;return result; void lcd_wcmd(uchar cmd)/lcd指令输入子函数 while(lcd_bz();rs=0;rw=0;/下降沿触发lcd使能信号e=0;_nop_();_nop_();_nop_();_nop_();p2=cmd;_nop_();_nop_();_nop_();_nop_();e=1;_nop_();_nop_();_nop_();_nop_();e=0; void lcd_pos(uchar pos)/lcd显示位置子函数lcd_wcmd(pos|0x80);void lcd_wdat(uchar dat)/lcd数据输入子函数while(lcd_bz();rs=1;rw=0;e=0;_nop_();_nop_();_nop_();_nop_();p2=dat;_nop_();_nop_();_nop_();_nop_();e=1;_nop_();_nop_();_nop_();_nop_();e=0;void lcd_init()/lcd初始化子函数lcd_wcmd(0x38);lcd_wcmd(0x0c);lcd_wcmd(0x06);lcd_wcmd(0x01);void main()/主函数uchar i;adda=0;addb=0;addc=0;ie=0x84;while(1)ad0808();delay(100);lcd_init();delay(5);lcd_pos(0x01);i=0;while(table1i!=0)lcd_wdat(table1i);i+;delay(50);lcd_pos(0x42);i=0;while(table2i!=0)table2i=table2i*1.99-1.49;lcd_wdat(table2i/100+0x30);/bailcd_wdat(table2i%100/10+0x30);/shilcd_wdat(table2i%100%10+0x30);/gei+;delay(50);lcd_pos(0x46);i=0;while(table3i!=0)lcd_wdat(table3i);i+;void timer_0() interrupt 2uchar i;p2=table2i;5.5 电流测量系统硬件电路图附录图5.5.1 硬件电路设计结论此次毕业设计大体上实现了任务书上的功能,可以对某些电流信号可以实现实时检测,但是还存在较多的不足之处,比如:(1)该系统只能对持续的电流信号进行检测,不能对电流波动幅度太大的信号进行点对点检测,只能是

温馨提示

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

评论

0/150

提交评论