传感器液位检测项目设计方案.doc_第1页
传感器液位检测项目设计方案.doc_第2页
传感器液位检测项目设计方案.doc_第3页
传感器液位检测项目设计方案.doc_第4页
传感器液位检测项目设计方案.doc_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

传感器液位检测项目设计方案1.方案选择1.1方案1: 为了完成完成本次液位检测设计的各种功能,将整个电路分为四个部分:传感器检测部分、A/D转换部分、显示部分以及控制驱动部分。器框架如下图所示:单 片 机A/D转换器传感器显示电路报警电路键盘控制控制驱动电路图1.1 方案原理方框图传感器检测部分选用的是FYC-3型浮子液位传感器。该传感器的机构合理,抗干扰能力强,分辨率高,量程大,寿命长,有掉电后信号跟踪记忆功能。能够将液位的变化通过标准的电信号输出。A/D转换器选用的是A/D0808芯片。它是一个八位的A/D转换器,转换精度较高,从A/D0808出来的信号可以直接送给单片机处理。在本次课设中我选用的单片机是INTEL公司的8位单片机AT89C51。与8086系列相比,AT89C515具有明显的价格优势,而且能够满足精度要求。显示部分采用的是LCD显示屏,与传统的LED相比,LCD更加节能。而且随着现代科技的发展,LCD取代LED是势在必行的。1.2方案2:该方案与方案1大同小异,除控制外,其它没什么区别。方案1采用的是单片机控制,而在方案2中我才用的是PLC控制。PLC采用的是循环扫描的工作方式、通过自诊断、通信处理、扫描输入、刷新输出这五个工作过程来完成一个周期。但是,利用PLC控制价格比较昂贵,需要的其他硬件较多,使得安装显得不方便,且占用空间大。综合考滤这两种方案:他们都是可行的,都能达到所需的目的。方案1原理直观,关键是价格低廉、集成度高、处理功能强、可靠性比较高,便于操作。方案2在功能上采用的是开关逻辑控制、闭环过程控制、位置控制以及多PLC分布式控制等。它更适合在工业上应用,工程技术人员可以很容易的读懂其程序,同时在改变控制要求时,只需改变程序梯形图就能满足要求。但它存在一个致命的缺点价格昂贵,需要的其他硬件较多,使得安装显得不方便,且占用空间大,适合用在对精度要求很高的场所。综上所述,方案1具有明显的优势,因此采用方案1为本次液位控制的最佳方案。2.硬件电路的设计2.1传感器检测部分在本次课设中我选用的是FYC-3型浮子式液位传感器,选用光电式编码器,配以精密的变速结构、线轮、不锈钢钢丝绳、重锤、防浪锤和浮子等构成。该传感器安装在测量对象的上端(如水箱),当液位变化时,浮子随之上升或下降,测绳便带动线轮做旋转运动,与线轮同轴连接的编码器就输出与液位对应的模拟信号并送至后续电路继续处理,从而达到了对液位的实时显示及控制目的。该传感器结构合理,抗干扰能力强,分辨率高,量程大,寿命长,有掉电后有信号跟踪记忆功能。他能够长期用于液位测量并能保证性能的稳定可靠,是江河湖泊。水库、船闸、水电站、水温观测站、水厂以及石油化工等行业理想的液位传感器。该传感器的测量轮采用加深绳沟和减少钢丝绳压力夹角的方法解决了钢丝绳容易脱落的现象;传感器外壳、测量轮、支架均采用铝合金材料,测绳采用不锈钢材料、浮子采用工程塑料制作,因而具有良好的耐腐蚀性;编码器采用光电绝对式编码器而不是脉冲型的,因而具有极强的抗干扰能力,具有断电记忆功能,只要回复供电,不需任何预置就可立即读出实时的测量值。图2.1 传感器外形及安装尺寸示意图2.2电源模块设计仅就单片机系统(最小系统)而言,一般只需要5V的直流电源供电,而对实际的单片机来说,由于需要扩展一定得测控转换通道和其相应的接口电路外设,除了5V的直流电源外,还可能需要其他的如12V的直流电源。如下图2.2所示,直流电源模块的设计有以下两种设计方法,本次设计采用(b)类电源设计方案,即通过常用的220V交流电源变压、整流、稳压、滤波及AC/DC变换后给整个系统提供所需要的直流电源。滤波电路稳压电路DC/DC变换电路直流供电设备(a)变压电路整流电路稳压电路滤波电路交流供电设备 (b)图2.2 电源模块设计系统组成框图如下图2.3所示电路为5V直流电源输出具体电路设计,其中电路的核心集成芯片7805是一种价格便宜、应用广泛的线性稳压器电子元件,其采用TO-220的封装形式,可以提供1A的最大工作电流,且由于内部具有过压过流保护,使整机的电源电路稳定,性能可靠。图2.3 5V直流电源输出电路设计在图2.3中可看出,本电路采用220V的交流电压供电,220V交流电经过变压器后转换成12V交流电输出,12V交流电经过整流电桥后可以实现转换成直流电压输出,直流电压经过C1和C2两次滤波后,接到线性稳压器7805后即可转换成稳定的5V直流电压输出,电容C3和C4的设置也是起到滤波的作用,R1作为限流电阻,D2是LED作为电路的显示部分,起到指示的作用。电源模块的抗干扰技术是系统的重要可靠性指标,一个设计良好的电源模块,应该在设计过程中充分考虑到抗干扰性能的要求。系统电源模块的干扰可以分为供电线耦合的干扰和电源本身产生的干扰。使用交流稳压器:在工业现场,电网上的电压波动较大,因此需要经过交流稳压器再进入到电源模块的变压器,从而使供电稳定。采用瞬态电压抑制措施:当开关在通断时,都会产生一个幅值很高的瞬时电压脉冲,因此,在电压模块设计中可以使用瞬态抑制二极管,从而起到保护作用。使用浪涌抑制器:在工业现场,当有大型设备启停时,会产生浪涌的现象,此时,可以采用CR(电容-电阻)浪涌抑制器。2.3A/D转换部分的设计现在市面上ADC芯片的品种、型号很多,其内部功能强弱、转换速度快慢、转换精度高低有很大差别,但用户最关心的外特性包括以下四种基本信号引脚端:模拟信号输入端(单极性或双极性);数字量输出端(并行或串行);转换启动信号输入端;转换结束信号输出端。除此之外,各种不同型号的芯片可能还会有一些其他各不相同的控制信号端。选用ADC芯片时,除了必须考虑各种技术要求外,通常还需了解芯片以下两方面的特性:数字输出的方式是否有可控三态输出;启动转换的控制方式是脉冲控制式还是电平控制式。在本次课程设计中我选用的是ADC0808,它与ADC0809在精度上略有差别(前者精度为8位,后者精度为7位),其它各方面完全相同。他们都是CMO器件,不仅包括一个8位的逐次逼近型的ADC部分,而且还提供一个8通道的模拟多路开关和通道寻址逻辑,因而有理由把它作为简单的“数据采集系统”。利用它可直接输入8个单端的模拟信号分时进行A/D转换,在多点巡回检测和过程控制、运动控制中应用十分广泛。1) 主要技术指标和特性(1)分辨率: 8位。(2)总的不可调误差: ADC0808为0.5LSB。(3)转换时间: 取决于芯片时钟频率,如CLK=500kHz时,TCONV=128s。(4)单一电源: +5V。(5)模拟输入电压范围: 单极性05V;双极性5V,10V(需外加一定电路)。(6)具有可控三态输出缓存器。(7)启动转换控制为脉冲式(正脉冲),上升沿使所有内部寄存器清零,下降沿使A/D转换开始。(8)使用时不需进行零点和满刻度调节。2) 内部结构和外部引脚ADC0808的内部结构和外部引脚分别如图2.4和图2.5所示。内部各部分的作用和工作原理在内部结构图中已一目了然,在此就不再赘述,下面仅对各引脚定义分述如下: 图2.4 ADC0808内部结构框图(1)IN0IN78路模拟输入,通过3根地址译码线ADDA、ADDB、ADDC来选通一路信号。(2)D7D0A/D转换后的数据输出端,为三态可控输出,故可直接和微处理器数据线连接。8位排列顺序是D7为最高位,D0为最低位。(3)ADDA、ADDB、ADDC模拟通道选择地址信号,ADDA为低位,ADDC为高位。地址信号与选中通道对应关系如表11.3所示。(4)VR(+)、VR(-)正、负参考电压输入端,用于提供片内DAC电阻网络的基准电压。在单极性输入时,VR(+)=5V,VR(-)=0V;双极性输入时,VR(+)、VR(-)分别接正、负极性的参考电压。图2.5 ADC0808外围电路图表2.1 地址信号与选中通道的关系地 址选中通道ADDCADDBADDA000011110011001101010101IN0IN1IN2IN3IN4IN5IN6IN7(5)ALE地址锁存允许信号,高电平有效。当此信号有效时,A、B、C三位地址信号被锁存,译码选通对应模拟通道。在使用时,该信号常和START信号连在一起,以便同时锁存通道地址和启动A/D转换。(6)STARTA/D转换启动信号,正脉冲有效。加于该端的脉冲的上升沿使逐次逼近寄存器清零,下降沿开始A/D转换。如正在进行转换时又接到新的启动脉冲,则原来的转换进程被中止,重新从头开始转换。(7)EOC转换结束信号,高电平有效。该信号在A/D转换过程中为低电平,其余时间为高电平。该信号可作为被CPU查询的状态信号,也可作为对CPU的中断请求信号。在需要对某个模拟量不断采样、转换的情况下,EOC也可作为启动信号反馈接到START端,但在刚加电时需由外电路第一次启动。(8)OE输出允许信号,高电平有效。当微处理器送出该信号时,ADC0808的输出三态门被打开,使转换结果通过数据总线被读走。在中断工作方式下,该信号往往是CPU发出的中断请求响应信号。3) 工作时序与使用说明ADC0808的工作时序如图2.6所示。当通道选择地址有效时,ALE信号一出现,地址便马上被锁存,这时转换启动信号紧随ALE之后(或与ALE同时)出现。START的上升沿将逐次逼近寄存器SAR复位,在该上升沿之后的2s加8个时钟周期内(不定),EOC信号将变低电平,以指示转换操作正在进行中,直到转换完成后EOC再变高电平。微处理器收到变为高电平的EOC信号后,便立即送出OE信号,打开三态门,读取转换结果。图2.6 ADC 0808工作时序模拟输入通道的选择可以相对于转换开始操作独立地进行(当然,不能在转换过程中进行),然而通常是把通道选择和启动转换结合起来完成(因为ADC0808的时间特性允许这样做)。这样可以用一条写指令既选择模拟通道又启动转换。在与微机接口时,输入通道的选择可有两种方法,一种是通过地址总线选择,一种是通过数据总线选择。如用EOC信号去产生中断请求,要特别注意EOC的变低相对于启动信号有2s+8个时钟周期的延迟,要设法使它不致产生虚假的中断请求。为此,最好利用EOC上升沿产生中断请求,而不是靠高电平产生中断请求。2.4单片机的选择单片机的全称是单片微型计算机(Single Chip Microcomputer),国际上统称为微控制器(Micro Controller Unit,MCU)。它把组成微型计算机的各功能部件:中央处理器(CPU)、随机存取器(RAM)、只读存取器(ROM)、可编程存取器(EPROM)、并行及串行输入/输出接口电路、定时器/计数器、中断控制器等集成在一块半导体芯片上,构成一个完整的微型计算机。选用89C51最小系统如下图所示:图2.7 89C51最小系统在本次课程设计中我选用的单片机是AT89C51。AT89C51是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含4K bytes的可反复擦写的只读程序存储器(PEROM)和128bytes 的随机数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能非常强大,可灵活的用于各种控制领域。图2.8 AT89C51单片机引脚图如上图2.7所示为AT89C51单片机的引脚图,AT89C51单片机由微处理器、片内存取器RAM/ROM、P0-P3组成的I/O端口、各种存取器组成的特殊功能寄存器SFR、串行接口、定时/计数器、中断系统、振荡器等所组成。下面分别介绍各部分的基本情况。(1)XTAL1 接外部晶体的一个引脚。在单片机内部,他是构成片内震荡器的反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,即把此信号直接接到内部时钟发生器的输入端。(2)XTAL2 接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。(3)RST 复位输入端。当振荡器运行时,该引脚上出现两个机器周期的高电平将使单片机复位。(4)ALE 当访问外部存储器时,ALE(地址锁存)的输出用于锁存地址的低位字节。(5)程序存储允许输出是外部程序存储器的读选通信号。(6) 外部访问允许端。要使CPU只访问外部程序存储器,则端必须保持低电平。如果保密位LB1被编程,复位时在内部都会锁存端的状态。(7)P0端口 P0是一个8位漏极开路型双向I/O端口。作为输出口用时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作为高阻或输入端用。(8)P1端口 P1是一个带有内部上拉电阻的8位双向I/O端口。P1的输出缓冲器可驱动4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。在对Flash编程和程序验证时,P1接收低8位地址。(9)P2端口 P2是一个带有内部上拉电阻的8位双向I/O端口。它同P1一样,只不过在对Flash编程和程序验证时,P2接收高8位地址和一些控制信号。(10)P3端口 P3端口同P1、P2口一样,只不过在使用时更关注它的第二功能。2.5 显示电路的设计关于显示部分,有两种选择:一种是传统的LCD液晶显示器,另一种是新兴的LED发光二极管。LED的寿命是长一些、节能一些,但是价格太贵,只要精度要求不高,选用LCD完全能达到要求。因此,综合考虑以上因素,在本次课程设计中我选用LCD作为显示输出器。在单片机系统中用液晶显示器作为输出器件有如下优点:1)显示质量高:由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。2)体积小、重量轻:液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。3)功耗低 相对而言:液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。在本次课程设计中我选用LCD型号为LM016L,Z,在protues中引脚图如下:图2.9 LM016L引脚图LM016L有两行,每行有128列,每8列对应1字节的8位,即每行由16字节,共168个点组成。一个完好的LM016L屏可以显示32个字节。芯片的工作电压是4.5-5.5V,工作电流为20mA,模块最佳工作电压是5.0V。液晶模块内部的控制器共有11条控制指令。液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。由于液晶显示芯片LM016L自身的特点,其程序的设计可以采用模块化设计,这样可以起到简化程序的作用,个别程序模块设计如下所示:模块1:LCD忙状态检测bit LCD_Busy_Check() bit result;RS=0;RW=1;E=1;delay4us();result=(bit)(P0&0x80);E=0;return result;模块2:向LCD写入指令命令void LCD_Write_Command(uchar cmd) while(LCD_Busy_Check(); /判断LCD是否忙碌RS=0;RW=0;E=0;_nop_();_nop_();P0=cmd;delay4us();E=1;delay4us();E=0;模块3:设置LCD显示位置void Set_Disp_Pos(uchar pos)LCD_Write_Command(pos|0x80);模块4:向LCD写入数据显示void LCD_Write_Data(uchar dat) while(LCD_Busy_Check(); /判断LCD是否忙碌RS=1;RW=0;E=0;P0=dat;delay4us();E=1;delay4us();E=0;模块5:LCD初始化void LCD_Initialise() LCD_Write_Command(0x38);DelayMS(1);LCD_Write_Command(0x0C);DelayMS(1);LCD_Write_Command(0x06);DelayMS(1);LCD_Write_Command(0x01);DelayMS(1);2.6 控制驱动电路设计控制驱动电路主要由电动机、继电器以及一些相应的原件构成,它根据测控系统的需要来控制点机的启动、停止。从而能自动的控制液位的高度。在本次课程设计中控制驱动电路是不可缺少的。由于设计的是实时液位检测系统,可用来检测水箱以及锅炉里的水位。当液位超过警戒水位时,该电路就得驱动电机工作,使进水量减少,出水量增多,同时报警电路也同时启动,输出报警信号。同理,液位过低时电机也工作,以增加水箱或锅炉的水量。图2.10和图2.11则分别是控制驱动电路以及报警电路的电路图。图2.10 控制驱动电路电路图图2.11 报警电路电路图2.7 键盘设计键盘有两种最基本的组成形式:独立式键盘和矩阵式键盘。矩阵式键盘的工作过程要比独立式键盘复杂得多,适用的场合也比较广。由于本次课程设计不需要复杂的按键设置,故在设计中我采用的是独立式键盘。如下图所示:图2.12 键盘设计如图所示,设计中采用四个按键来控制液位。它们分别与单片机AT89C51的P1.0、P1.1、P1.2、P1.3口连接。因为是实时液位显示,“设置”可以用来设置时间,“+”、“”用来调节时间,一旦时间调整完毕按下“确认”即可。它不仅可以显示当前液位高度,还可以查看历史水位,只需调节时间即可。2.8 时钟信号设计由于要涉及到实时显示,所以需要设计一个时钟信号输出模块用以显示。其电路图如下所示:图2.13 时钟信号图DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天可以自动调整,具有闰年补偿功能。在本次设计中时钟信号用来显示具体时间,以方便查询历史数据和记录实时数据。3.软件设计 3.1软件流程设计(1)确定算法或算法思想。算法是指解决问题的方法和步骤。(2)根据算法画出程序流程图。有了流程图后可以从图上检验算法的正确性,减少出错的可能,同时也可以是编程时思路更加清晰。本次设计的程序框图如下:开 始LCD初始化清 屏ADC0808初始化LCD显示液位采集液位采集LCD显示液位最大值 否电机启动 是电机保持返回图2.14 程序流程图(3)根据流程图编写程序。这是本次设计的最重要的一步。首先要进行定义,程序开始后得进行初始化,编写主程序以及子程序,知道程序结束。(4)上机调试运行程序。在本次设计中所用的是keil软件进行程序调试的。通过keil编译通过后会生成一个hex文件,将该文件写进单片机AT89C51中就可进行仿真了。但是通过编译的程序并不能说明它是正确的,只能说它没有语法错误,之余是否能达到预期效果,还得通过进一步的实验才能完成。3.2上机软件仿真在本次课程设计中,我采用的是Keil软件仿真,具体介绍如下:(1) 建立一个新工程。(2) 然后选择要保存的路径,输入工程名字,比如保存到桌面新建文件夹里,工程名字为text,然后保存。(3) 选择所用的单片机AT89C51。(4) 单击文件菜单,在下拉菜单中单击“新建”选项。其中文件的扩展名应该为“.c”,然后再保存。(5) 在编辑菜单界面,单击“Target1”前面的“+”号,然后在“Source Group1”单击右键即可。(6) 写入源程序,单击“P工程”菜单,再在下拉菜单中单击“B构造目标”,开始编译源程序,构造目标。(7) 编译成功后,开始对程序进行调试。(8) 单击“P工程”菜单,在下拉菜单中单击“目标Target1属性”,对所需属性进行相应的修改后即可对程序进行编译。4.液位测控系统的误差分析 任何系统都存在误差,所谓的“真值”只是一个理想值,在实际中并不存在,我们只能无限的接近它,而并不能达到。因此,对一个测控系统而言,精度是一个主要指标。在本次课程设计中,影响液位测控系统的精度的因素除了干扰和噪声外,最重要的因素就是相应电子器件的处理位数精度的不足,如ADC0808的分辨率只有8位。一下则是本次液位测控系统的各种误差来源的分析和相应的解决方法: (1)被测液体的密度产生的误差:因为系统中高度的控制是和所测量液体的密度具有一定的比例关系的,当液体的密度不均匀时或者出现误差时,通过标度变换后误差就会直接影响到液位的高度上,所以测量时应该对所测液体的密度进行多次的实验验证。(2)传感器误差:在本次课程设计中我选用的传感器是FYC3型浮子式液位传感器。它的测量精度有限,为0.1%量程1cm。这样就不可避免的会产生误差。要克服或者减少误差,就得选用精度更高的传感器,如在本次实验中由于水箱不是很高,量程也不需要太大,所以可以选择量程小的,这样就在一定程度上提高了精度。(3)工业现场的电场和磁场的干扰:因为本次液位测控系统是应用到工业当中去的,所以工业当中存在电场和磁场的会对系统产生一定的干扰(如交变磁场会产生感应电动势),为了抑制器两种干扰都系统的影响,可以采用如下的方法:屏蔽或去除干扰源,采用屏蔽电缆技术,采用光电隔离耦合器隔离技术等。(4)A/D转化器和单片机位数产生的误差:当传感器信号经过放大处理后进入到AD转换器时,因为本次采用8位的AD转换器,它的分辨率为1/。所以其转换精度会对系统产生一定的影响,同时单片机在处理数据时,在标度变换中进行计算时因为对数据进行了取整,约去了余数部分,所以也会对系统带来一定的误差。5.设计心得这次为期四周的课程设计终于要落下帷幕了。在这说长不长,说短不短的四周时间里,我学到了很多!这次课程设计是监测系统综合课程设计,在没有做以前,觉得这个课程设计只是对四年来所学的知识做一个单纯总结,但是通过这次做课程设计我发现自己的看法有点太片面。通过这次监测系统综合课程设计使我明白了自己原来知识还比较欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。也许这个课程设计做的也不太好,但是在设计过程中所学到的东西是这次课程设计中最大的收获和财富,使我终身受益。在此要感谢黎水平老师对我的悉心指导,黎老师在我选择设计方案时给我指明了方向。有了方向,以后的路就好走多了。同时也使我们的同学关系更进一步得到了提升,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法,这样使我们对一些知识点的理解更透彻,所以在这里也要感谢帮助我的同学。总之,在这次课程设计中遇到了很多困难,同时也克服了很多困难,在解决困难的过程中我们享受了很多、学到了很多。通过这次课程设计我对“纸上得来终觉浅,绝知此事要躬行。这句古训体会更深了。实践出真知!6.参考文献【1】汪德彪.CS-51单片机原理及接口技术.北京:电子工业出版社,2007.8【2】赵燕.传感器原理及其应用.北京:北京大学出版社,2010年2月【3】康华光.模拟电子技术基础.北京:高等教育出版社,2004年4月【4】何桥.单片机原理及应用.北京:中国铁道出版社,2004年【5】何小艇.电子系统设计(第三版).浙江:浙江大学出版社,2004年8月【6】张朝辉.检测技术及应用.北京:中国计量出版社,2005年10月【7】李朝青.单片机原理与接口技术.北京:北京航空航天大学出版社,1999年【8】李刚.林凌.现代测控电路.北京:高等教育出版社,2004年1月【9】谭浩强.C语言程序设计.北京:清华大学出版社,2005年7月【10】杨龙麟.电子测量技术.北京:人民邮电出版社2007年7月【11】张国雄.测控电路.北京:机械工业出版社.2002年【12】陈守仁.自动检测技术及仪表.北京:机械工业出版社.1998.附录1 液位测控系统完整程序/*-DS1302.H文件 DS1302的一些命令定义-*/#ifndef _DS1302_H#define _DS1302_H#define uchar unsigned char/*- register address-*/#define DS1302_sec_add 0x80 /秒寄存器地址#define DS1302_min_add 0x82 /分寄存器地址#define DS1302_hr_add 0x84 /时寄存器地址#define DS1302_date_add 0x86 /日寄存器地址#define DS1302_month_add 0x88 /月寄存器地址#define DS1302_day_add 0x8A /星期寄存器地址#define DS1302_year_add 0x8C /年寄存器地址#define DS1302_control_add 0x8E /控制寄存器地址#define DS1302_charger_add 0x90 /涓细充电管理寄存器地址#define DS1302_clkburst_add 0xBE /时钟突发模式寄存器地址/*- 函数声明-*/void delay_DS1302(uchar); /延时函数void DS1302_write_data(uchar ,uchar); /写一个字节到DS1302uchar DS1302_read_data(uchar); /从DS1302读一个字节void DS1302_write_time(void); /写入当前时间到DS1302void DS1302_read_time(void); /从DS1302读取当前时间void DS1302_initial(void); /DS1302初始化 void Time_to_Str(void); /实时时间转换为液晶字符#endif#include hardware.h#include DS1302.h#define uchar unsigned charuchar Time_Buffer13=12,00,00; /时、分、秒uchar Time_Buffer23; /时、分、秒uchar Time_String9; /时间的液晶字符uchar hide_hour=0,hide_min=0,hide_sec=0; /时、分、秒位闪标记/*-函数功能:延时函数 函数原型:delay_DS1302()输入值:us微秒 返回值:无-*/void delay_DS1302(uchar us) while (us-);/*-函数功能:写一个字节到DS1302 函数原型:DS1302_write_byte()输入值:数据地址,数据 返回值:无-*/void DS1302_write_data(uchar addr,uchar wdata)uchar Level;RST=1; /启动DS1302总线delay_DS1302(1); /*写入目标地址:addr*/addr=addr&0xFE; /最低位置零,写操作for(Level=0;Level1; /右移1位/*写入数据:wdata*/for(Level=0;Level1; /右移1位RST=0; /停止DS1302总线/*-函数功能:从DS1302读一个字节 函数原型:DS1302_read_byte()输入值:数据地址 返回值:数据-*/uchar DS1302_read_data(uchar addr)uchar Level,rdata=0,Leveldata=0;RST=1; /启动DS1302总线delay_DS1302(10);/*写入目标地址:addr*/addr=addr|0x01; /最低位置高for (Level=0;Level1;/*输出数据:rdata*/for (Level=0;Level8;Level+)SCLK=1;delay_DS1302(10);SCLK=0;delay_DS1302(10); /产生下降沿,完成读操作Leveldata=(uchar)IO;Leveldata=1; rdata=rdata|Leveldata;RST=0; /停止DS1302总线return rdata;/*-函数功能:写入当前时间到DS1302 函数原型:DS1302_write_time()-*/void DS1302_write_time(void)uchar i,Level;for(i=0;i3;i+) /BCD处理Level=Time_Buffer1i/10;Time_Buffer2i=Time_Buffer1i%10;Time_Buffer2i=Time_Buffer2i+Level*16;DS1302_write_data(DS1302_control_add,0x00); /关闭写保护 DS1302_write_data(DS1302_sec_add,0x80); /暂停 DS1302_write_data(DS1302_charger_add,0xA9); /涓流充电 DS1302_write_data(DS1302_hr_add,Time_Buffer20); /时 DS1302_write_data(DS1302_min_add,Time_Buffer21); /分DS1302_write_data(DS1302_sec_add,Time_Buffer22); /秒DS

温馨提示

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

评论

0/150

提交评论