单片机c语言语句,执行一条非复合,单独的一条语句,花费__1___个___2__周期?

下载费用:20 元 &
毕业设计-基于51单片机_的烘干箱智能温度控制器毕业设计____初稿.doc 开封大学毕业设计题目烘干箱智能温度控制器设计姓名李振华学号专业班级09电气一班分院机电工程学院指导教师董卫军日I摘要温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用,利用新型单总线式数字温度传感器实现对温度的测试与控制得到更快的开发,本文设计了一种基于AT89C51的温度检测及报警系统。该系统将数字温度传感器DB18B20通过模拟放大电路接在模数转化器ADC0809的输入端,然后将ADC0809的输出端接在控制器的一个端口上,对传感器温度进行采集,将采集到的温度值与设定值进行比较,当低于设定的上限温度时,通过打开加热电路来使温度自然冷却。文中给出了系统实现的硬件原理图及软件流程图。经实验测试表明,该系统测量精度高、抗干扰能力强、报警及时准确,具有一定的参考价值。该系统设计和布线简单,结构紧凑,体积小,重量轻,抗干扰能力强,性价比高,扩展方便,在大型仓库,工厂,智能化建筑等领域的多点温度检测中有广阔的应用前景。关键词DB18B20;ADC0809;AT89C51;CD4511。\II目录摘要IIABSTRACTIII目录IV1温度控制器绪论111课题背景112温度检测系统的国内外状况22整体系统方案321系统整体方案和结构322系统硬件接线图43系统硬件电路设计531主机控制电路532温度采集电路733模数转换电路934数码显示电路1335键盘输入电路与加热控制电路154程序设计1841主程序设计1842温度检测模块2043数值转化模块2244BCD显示模块2445比较加热模块2646键盘中断程序27总结32参考资料33致谢341温度控制器绪论11课题背景测量控制的作用是从生产现场中获取各种参数,运用科学计算的方法,综合各种先进技术,使每个生产环节都能够得到有效的控制,不但保证了生产的规范化、提高产品质量、降低成本,还确保了生产安全。所以,测量控制技术已经被广泛应用于炼油、化工、冶金、电力、电子、轻工和纺织等行业。随着单片机技术的迅速兴起与蓬勃发展,其稳定、安全、高效、经济等优点十分突出,所以其应用也十分广泛。单片机已经无处不在、与我们生活息息相关,并且渗透到生活的方方面面。单片机的特点是体积较小,也就是其集成特性,其内部结构是普通计算机系统的简化,增加一些外围电路,就能够组成一个完整的小系统,单片机具有很强的可扩展性。它具有和普通计算机类似的、强大的数据处理功能,通过使用一些科学的算法,可以获得很强的数据处理能力。所以单片机在工业中应用中,可以极大地提高工业设备的智能化、数据处理能力和处理效率,而且单片机无需占用很大的空间。随着温度检测理论和技术的不断更新,温度传感器的种类也越来越多,在微机系统中使用的传感器,必须是能够将非电量转换成电量的传感器,目前常用的有热电偶传感器、热电阻传感器和半导体集成传感器等,每种传感器根据其自身特性,都有它自己的应用领域。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89C51。12温度检测系统的国内外状况温度是一个非常重要的物理量,因为它直接影响燃烧、化学反应、发酵、烘烤、煅烧、蒸馏、浓度、挤压成形、结晶以及空气流动等物理和化学过程。温度控制失误就可能引起生产安全、产品质量、产品产量等一系列问题。因此对温度的检测的意义就越来越大。温度采集控制系统在工业生产、科学研究和人们的生活领域中,得到了广泛应用。在工业生产过程中,很多时候都需要对温度进行严格的监控,以使得生产能够顺利的进行,产品的质量才能够得到充分的保证。使用自动温度控制系统可以对生产环境的温度进行自动控制,保证生产的自动化、智能化能够顺利、安全进行,从而提高企业的生产效率。温度采集控制系统是在嵌入式系统设计的基础上发展起来的。嵌入式系统虽然起源于微型计算机时代,但是微型计算机的体积、价位、可靠性,都无法满足广大对象对嵌入式系统的要求,因此,嵌入式系统必须走独立发展道路。这条道路就是芯片化道路。将计算机做在一个芯片上,从而开创了嵌入式系统独立发展的单片机时代。单片机诞生于二十世纪七十年代末,经历了SCM、MCU和SOC三大阶段。在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。例如在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用MCS51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。同时温度也是生活中最常见的一个物理量,也是人们很关心的一个物理量,它与我们的生活息息相关,有着十分重要的意义,在工业生产中,温度过高或过低会直接影响到产品的质量、对机械设备和控制系统中的各种元器件造成一定的损坏,严重的会影响到生产安全。在日常生活中,温度过高或过低同样会造成一些不良影响。2整体系统方案21系统整体方案和结构本温度控制系统,是基于单片机的控制系统,单片机采用AT89C51为内核,其有低功耗,高性能CMOS8位单片机,4KB的可反复擦写1000次的FLASH只读程序存储器,器件采用ATMEL公司的高密度,非易失性存储技术,芯片内集成了通用8位中央处理器和ISPFLASH存储单元,是功能强大的微型计算机的,可为许多嵌入式控制系统提供高性价比的解决方案。系统的工作过程为通过键盘输入温度数,,然后将设定的温度存入内存单元并显示在共阴极数码显示管上。然后用DS18B20数字温度传感器作为温度传感器,将其采集到的温度量转换为模拟电流量,然后经过模拟放大电路,使其变为ADC0809可以接受的电压量,然后再输入到模数转换器ADC0809中,经过模数转换后的数字量再输入到89C51中,经过89C51数据处理后,判断与键盘输入的温度是否相同,高于设置温度的话关闭加热器,如果低于设置温度的话,开加热器对水进行加热。整个系统的模块图,如图1加热控制电路键盘输入电路图1系统结构图AT89C51温度采集电路模数转化电路数码显示电路22系统硬件接线图图2硬件接线图3系统硬件电路设计31主机控制电路本系统采用AT89C51单片机作为主控电路,管脚及其封装如图3图389C51封装图AT89C51具有如下特点40个引脚,4KBYTESFLASH片内程序存储器,128BYTES的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,片内时钟振荡器。管脚说明AT89C51的引脚结构图及功能的叙述。1)电源和晶振VCC运行和程序校验时加5V。VSS接地。XTAL1输入到振荡器的反相放大器。XTAL2反相放大器的输出,输入到内部时钟发生器。当用外部振荡器时,XTAL2不用,XTAL1接收振荡器信号。2)制线共4根。A输入RST复位输入信号,高电平有效。在振荡器工作时,在RST上作用两个机器周期以上的高电平,将器件复位。EA/VPP片外程序存储器访问允许信号,低电平有效。在编程时,其上施加21V或12V的编程电压。B输入、输出ALE/PROG地址锁存允许信号,输出。用作片外存储器访问时,低字节地址锁存。ALE以1/6的振荡频率稳定速率输出,可用做对外输出的时钟或用于定时。在EPROM编程期间,作输入。输入编程脉冲(PROG)。ALE可以驱动8个LSTTL负载。C输出PSEN片外程序存储器选通信号,低电平有效。在从片外程序存储器取指期间,在每个机器周期中,当PSEN有效时,程序存储器的内容被送上P0口(数据总线)。PSEN可以驱动8个LSTTL负载。3)I/O口4个口,32根。P08位、漏极开路的双向I/O口。当使用片外存储器(ROM及RAM)时,作地址和数据总线分时复用。在程序校验期间,输出指令字节(这时,需加外部上拉电阻)。P0口能驱动8个LSTTL负载。P18位、准双向I/O口,具有内部上拉电阻。在编程/校验期间,用做输入低位字节地址。P1口可驱动4个LSTTL负载。P28位、准双向I/O口,具有内部上拉电阻。当使用片外存储器(ROM及RAM)时,输出高8位地址。在编程/校验期间,接收高位字节地址。P2口可以驱动4个LSTTL负载。P38位、准双向I/O口,具有内部上拉电阻。P3还提供各种替代功能。在提供这些功能时,其输出锁存器应由程序置1。P3口可以驱动4个LSTTL负载。I/O口的端口自动识别功能,保证了无论是P1口(低8位地址)P2口(高8位地址)的总线复用,还是P3口的功能复用,内部资源自动选择而不需要用指令进行状态选择。?串行口P30RXD(串行输入口),输入。P31TXD(串行输出口),输出。?中断P32INT0,外部中断0,输入。P33INT1,外部中断1,输入。?定时器/计数器P34T0,定时器/计数器0的外部输入,输入。P35T1,定时器/计数器1的外部输入,输入。?数据存储器选通P36WR,低电平有效,输出,片外数据存储器写选通。P37RD,低电平有效,输出,片外数据存储器读选通。图中VCC就是由外电源电路提供的5V的电源。AT89C51微控制器对于广泛的电源输入有很强的兼容性,对于供电电源的噪音也有很强的适应性。此外AT89C51设计和配置了振荡频率可为0HZ并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。本控制系统的连接引脚的方案如下1单片机最基本的电路就是能够使单片机正常的启动和工作的电路,包括电源VCC端接5V电压,VSS接地。EA端由于该引脚低电平时是访问片外存储器,本系统不需要扩展片外存储器,所以要保持高电平,接电源电压5V。2时钟电路对于单片机系统而言是必须的由于单片机内部是由各种各样的数字逻辑器件构成,而这些器件又必须按时间顺序完成。所以在管脚的XTAL1和XTAL2引脚外接石英晶体和俩个谐振电容,电容采用2个20PF电容,采用12M的石英晶体。这样就可以构成89C51的基本时钟电路,时钟频率为12M。3复位电路是对单片机进行初始化操作,使单片机处于一个确定的初始状态。而要89C51复位得在RESETY引脚上加5MS的高电平信号就可以了。当石英晶体频率为12MHZ,复位电路参数为10ΜF的电解电容和10KΩ的电阻。如图4为单片机的起振电路和复位电路的连接图时钟电路复位电路图44本系统中需要单片机输入输出的模块有4个模块分别是模数转换模块,键盘输入模块,数码显示模块,输出控制模块。但是89C51的输入输出口就4个。其中P3口用来做第二功能,P3第二功能中需要用到外部中断和片外读写端。所以键盘输入电路和输出控制电路需共用一个I/O口,由于P1口内部用上拉电阻代替了场效应管T1,做输出时口时无需外接上拉电阻,做输入口是与P0一样,所以本系统用P1口作为共用口。数模转换用P0口,数码显示用P2口。ALE当不访问外部存储器时,该端以时钟频率的1/6输出固定的正脉冲信号,所以用其做数模转换模块的ADC0809的时钟频率输入端,89C51的ALEAD0809的CLOCK。P3口用于第二功能,由于本系统采用中断键盘扫秒方式,其中P33(INT0)用于跟键盘并联。P32INT1用于ADC0809转换完成后通过EOC向单片机发送控制信号。P36(WR)进过非门接入到ADC0809的START和ALE引脚上,P37(RD)经过非门接入到ADC0809的OE端。32温度采集电路DS18B20是美国DALLAS公司生产的单线数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易于微处理器等优点,特别适合于构成多点温度测控系统,可直接将温度转化成数字信号供微机处理,而且每个DS18B20都有唯一的产品号并可存入其ROM中,以使在构成大型温度测控系统时在单线上挂任意多个DS18B20芯片。从DS18B20读出或写入DS18B20信息仅需要一根口线,共读写及温度变换功率来原于数据总线,该总体本身也可以向所挂接DS18B20供电,而无需额外电源。DS18B20能提供九位温度读数,它无需任何外围硬件即可方便构成温度检测系统。图23DS18B20表1数字温度传感器的引脚引脚8脚(SOIC)引脚PR35说明51GND地42DQ单线应用的数据输入/输出引脚43VDD电源231DS18B20数字温度传感器结构介绍DS18B20的内部框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口,存放中间数据的高速暂存器,用于存储用户设定的温度上下限值的TH和TL解发器,存储与控制逻辑、8位循环沉余校验码(CRC)发生器等七部分组成。图231DS18B20内部结构框图DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2S减为750MS。DS18B20的低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。下图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。低温度系数晶振高温度系数晶振预置斜率累加器比较计数器10计数器20温度寄存器图232DS18B20测温原理框图232DS18B20数字温度传感器的特性(1)适应电压范围更宽,电压范围30~55V,在寄生电源方式下可由数据线供电(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内(5)温范围-55℃~+125℃,在10~85℃时精度为±05℃(6)可编程的分辨率为9~12位,对应的可分辨温度分别为05℃、025℃、0125℃和00625℃,可实现高精度测温(7)在9位分辨率时最多在9375MS内把温度转换为数字,12位分辨率时最多在750MS内把温度值转换为数字,速度更快(8)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力(9)负压特性电源极性接反时,芯片不会因发热而烧毁,但不能正常工作233DS18B20与AT89C51的连接电路连接方法如图6图6加热电路33模数转换电路ADC0809是采样分辨率为8位的、以逐次逼近原理进行模数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。如图7为ADC0809的封装图和内部结构图图7ADC0809封装和结构图ADC0809特性18路输入通道,8位A/D转换器,即分辨率为8位。2具有转换起停控制端。3转换时间为100ΜS。4单个+5V电源供电。5模拟输入电压范围0~+5V,不需零点和满刻度校准。6工作温度范围为40~+85摄氏度。7低功耗,约15MW。从ADC0809的各个参数分辨率为8位跟单片机的一组I/O口正好相符合。转换时间为100ΜS,量程为0到5V上可以分析,本系统采用该模数转换器,量化误差也足以满足系统要求,综合各种参数跟本系统十分符合,故选择ADC0809作为本系统的模数转化模块。驱动ADC0809最基本连接是在VCC接5V电压为ADC0809的工作电压,GND接地,REF和REF为参考电压,功能是与输入的模拟信号进行比较,作为逐次逼近的基准,其典型值为REF5V,REF0V,本系统电源电压正好也为5V,所以采用电源电压。如表1为模数转化的输入输出对照表表1输入输出对照表温度值/℃AD590电流/ΜA经10千欧/V经放大电路输出ADC0809的输出57DE490FAINT0INT7为8个模拟量输入通道,本系统中只用一个模拟量输入就是AD590的输出端,故只选择INT0作为作为模拟量的输入ADDA,ADDB,ADDC,是8路模拟通道地址输入选择断,从表2中可以看出把三个管脚全接地,变为选择INT0作为模拟量的输入通道。表2模拟通道地址输入选择表ADDCADDBADDA选择通道000INT0001INT1010INT2011INT3100INT4101INT5110INT6111INT7D7D0为数据输出线,也是我们将要得到的数字量,所以应该将他接入到89C51的P0口上。CLK为时钟脉冲输入端因为ADC0809内部没有时钟电路,需要外接时钟信号,要求时钟频率不高于640KHZ,而89C51的ALE,当不访问外部存储器时,该端以时钟频率的1/6输出固定的正脉冲信号,所以将ADC0809的CLK通过分频器接到89C51的ALE端。由于89C51的ALE输出1/6的时钟频率,计算12M/62M2M/4500KHZ在ADC0809可以接受的频率范围之内。ALE为地址锁存信号。在上升沿将通道地址所存到锁存器。STARE为启动控制信号,在上升沿,所有内部寄存器清零,下降的时候开始AD转换这俩个管脚一起控制ADC0809的启动过程,而单片机的WR端输出为低电平输出控制,所以将这俩个管脚通过非门电路并联到单片机的P36(WR)管脚,当单片机执行写出操作时,通过WR管脚启动ADC0809的模数转换。OE端为数据输出端控制端,当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出转换后的数字量,而单片机的RD端输出也为低电平输出控制,所以将它通过非门接到单片机的RD端,当单片机执行读入操作时,打开ADC0809的数据输出控制。EOC端A/D转换结束信号输出端,当A/D转换结束时,此端输出一个高电平,此引脚接到89C51的P33,用于判断温度转换是否结束,结束的话就取转换数据,没有的话就继续等待转换。连接方法如图8图8模数转换电路34数码显示电路显示电路采用7段BCD码所存译码显示驱动器CD4511,来驱动阴极LED数码管,这样可以省去繁琐的拆字程序和查表程序,节省很大一部分CPU资源是时间。图9CD4511封装和逻辑图CD4511的特点具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。可直接驱动LED显示器。其管脚功能和连接原理如下BI4脚是消隐输入控制端,当BI0时,不管其它输入端状态如何,数码管均处于熄灭(消隐)状态,不显示数字。所以这里接电源电压高电位使其能够显示当前要显示的数值。LT3脚是测试输入端,当BI1,LT0时,译码输出全为1,不管输入DCBA状态如何,七段均发亮,显示“8”。它主要用来检测数码管是否损坏。这里也接电源电压使其能够正常工作。LE锁定控制端,当LE0时,允许译码输出。LE1时译码器是锁定保持状态,译码器输出被保持在LE0时的数值,这里保持一直温度显示,不需要锁定控制功能,所以也接电源电压。A1、A2、A3、A4、为8421BCD码输入端,本系统中我们用P2口作为单片机的输出接入到CD4511的数据输入,由于显示的温度为2位数,需要用到俩个CD4511,P21P23接低位数据显示,P24P27接高数据显示,单片机P2口直接输出压缩型BCD码片能实现数据显示。如表3为CD4511的真值表,对应的可以看到各引脚输入的电平与输出的关系A、B、C、D、E、F、G,为译码输出端,输出为高电平1有效,因为CD4511的CMOS电路提供的电流较大,所以需要外接限流电阻,接上200Ω限流电阻就可。表3CD4511真值表输入输出LEBILIDCBAABCDEFG显示XX0XXXXXXXX0000000消隐11与数码显示管的连接方法如图10图10显示电路35键盘输入电路与加热控制电路本系统的键盘控制需要完成以下功能,能够控制温度的升高和降低且在设置温度的时候显示电路能够显示当前设置的温度,还能够按下一个键时为查看当前的温度。本系统中水的温度,基本在0度100度之间,温度之间的相差不是很大,综合考虑使用独立键盘,使用六个键来控制温度的升高和降低,再用另一个键来用于用户控制显示当前设置的温度。控制键分俩组一组增加温度,一组降低温度,3个键分别为,增加1℃,增加5℃,增加10℃。另一组与其对应减少。用P1口的16这6个引脚来用于控制温度,第P10管脚用于用户按下时查看当前设置的温度,其中这些按键都并联在外部中断口INT0上。如图11为键盘电路的接线图图11键盘电路温度加热电路将加热控制信号经驱动器,来驱动固体继电器(SSR)工作,从而接通或断开加热丝两端电源,实现对水的加热控制。固体继电器特点1驱动电流小,仅仅几毫安与TTL,CMOS等数字电路兼容2无触点,无火花干扰寿命长,耐腐蚀3能承受的浪涌电流大,一般为额定值的612倍所以单片机的P1口,通过电路放大就可以控制SSR来接通加热丝,加热水温度连接接方法如图12图12加热电路4程序设计41主程序设计本系统软件同样将对各个模块编写程序,主程序调用各个模块来运行整个系统。主程序首先对89C51的端口和所用内存初始化。然后系统不停的重复调用各个模块,用于更快捷的做出控制反应。调用顺序分别为温度检测模块,数值转化模块,显示模块,和比较加热模块。键盘模块采用中断扫描方式,这样可以节省很多CPU资源。主程序流程图如图13外部中断初始化内存单元清零结束关闭加热丝,端口初始化开始调用温度检测模块调用数值转换模块调用BCD显示模块调用比较控制模块无条件跳转图13主程序流程图根据流程图编写程序,程序如下ORG0000HAJMPMAINORG0003HAJMPJIANPANORG0030HMAINMOVSP,60H;堆追指令赋值MOVP1,7FH;关闭加热丝,键盘初始化CLRIT0;IT0低电平有效SETBEA;CPU中断开放SETBEX0;允许外部中断0控制SETBPX0;外部中断0高优级先控制MOV50H,00H;ADC0809检测值缓冲区清零MOV60H,00H;数值转换存储单元清零MOV70H,00H;显示内存单元清零MOV80H,00H;键盘输入单元清零XUNHUANACALLWENDU;调用温度检测模块ACALLZHUANHUA;调用数值转换模块ACALLBCD;调用BCD显示模块ACALLJIARE;调用比较加热模块AJMPXUNHUAN;跳转到主程序重新开始执行END42温度检测模块A/D转换后的数字量通常采用查询方式和中断方式传送到单片机进行数据处理。本控制系统采用单片机通过查询方式测试EOC的状态,可以判断转换是否完成。为了实现温度的准确检测,采用了平均值滤波法抗干扰。即连续2次启动ADC0809进行A/D转换,求取转换结果的平均值,存入指定单元,以得到检测温度值。最后将计算的结果存入温度检测缓冲区50H。温度检测流程图如下图14开始转换单元初始化启动ADC0809累加转换结果求平均值转换是否结束2次转换是否结束存结果YNNY返回图14温度检测流程图根据流程图编写程序如下WENDUMOV50H,00H;检测单元清零MOVR3,02H;转换次数MOVDPTR,7FF8H;送ADC0809的地址WEN01MOVXDPTR,A;启动ADC0809JBP33,;等待ADC0809转换结束MOVXA,DPTR;读取模数转换的值ADDCA,50H;上次转换相加MOV50H,A;存入存储单元DJNZR3,WEN01;俩次是否转换完成RRCA;带进位循环右移1位,相当于除2CLRC;将CY位清零MOV50H,A;平均数存入检测存储单元RET43数值转化模块由于ADC0809是将AD590转化的模拟电压值转换为数字量,所以得到的还不是当前温度度数的数值,所以还要对采集到的电压值进行数值转化,转化为温度值。经过分析,由于AD590通过放大电路放大整理当温度是100℃的时候,输出电压为5V,对应的ADC0809输出数字量为FF(十进制的255),所以1℃对应数值25,但由于直接计算浮点数,非常复杂,经分析除以25,等于处于5/2,也就等于乘以2/5,相当于除以5在乘以2,所以将单片机采集到的数值经上面的转化后,就是当前的温度值。程序流程图如图15开始累加器清零保存结果计算当前的温度值待转换值存入累加器返回图15数值转化流程图根据流程图编写程序如下ZHUANHUAMOVA,00H;清零AMOVB,00H;清零BMOVA,50H;采集到的数值给AMOVB,5H;除数5赋值给BDIVAB;采集到的数值除以5MOVB,2;乘数2赋值给BMULAB;就算当前温度值MOV60H,A;保存当前16进制温度值RET44BCD显示模块数值转化后得到的温度值是16进制的温度,所以无法直接送出显示,所以还应该对该数值,进行显示转化,转化为压缩型BCD码,这样通过CD4511就可以显示了。由于被转换的16进制在0到100的范围内,所以将16进制温度除以0AH,得到的的就是商位十位,余数为个位。由于大陆地区气压没有海平面高。所以温度无法达到100℃,所以俩位数码显示管就可以显示。根据算法画出的流程图如图16
文档加载中……请稍候!
下载文档到电脑,查找使用更方便
20 元 &&0人已下载
还剩页未读,继续阅读
<a href="UserManage/CopyrightAppeal.aspx?bid=5871668" title="版权申诉" class="fLeft works-manage-item works-manage-report" target="_blank"
关&键&词: 51单片机智能温度控制 单片机控制 基于单片机的智能烘干 基于51单片机的 51单片机 温度控制 控制器 的烘干箱 毕业论文 毕业设计 毕业设计论文 单片机 51的 单片机毕业设计论文 单片机毕业设计
& 我的文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:毕业设计-基于51单片机_的烘干箱智能温度控制器毕业设计____初稿.doc 链接地址:
当前资源信息
类型: 共享资源
格式: DOC
大小: 787.80KB
上传时间:
copyright@
我的文库网站版权所有 经营许可证编号:京ICP备号-4c语言中如何判断两个字符串相等?
c语言中如何判断两个字符串相等?
09-08-11 &
#include &string.h&char s1[10],s2[10];...if(strcmp(s1,s2)==0) &#160;printf(&两字符串相等\n&);string.h 头文件中就有比较函数,可以用来比较是否相等
请登录后再发表评论!
C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。主要有以下特点:  C语言在很多方面都可以用,不仅仅是在软件开发上,各类科研都是需要用到C语言的。具体应用比如我是学硬件的,单片机以及嵌入式系统都可以用C来开发。  C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的功能。许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。用C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了, 像PC- DOS 、WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:1. C是中级语言,它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。  2. C是结构式语言.结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C 语言是以函数形式提供给用户的, 这些函数可方便的调用, 并具有多种循环、条件语句控制程序流向, 从而使程序完全结构化。  3. C语言功能齐全C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另外C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大, 可以实现决策目的编游戏,编3D游戏,做数据库,做联众世界,做聊天室,做PHOTOSHOP做FLASH,做3DMAX。  4. C语言适用范围大C 语言还有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机型。
请登录后再发表评论!
请登录后再发表评论!
最容易理解的就是自己写个函数,一个一个去比较直到不相当
请登录后再发表评论!
用strcmp函数即可。strcmp函数是比较两个字符串的大小,返回比较的结果。一般形式是: &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; i=strcmp(字符串,字符串);其中,字符串1、字符串2均可为字符串常量或变量;i &#160; 是用于存放比较结果的整型变量。比较结果是这样规定的: &#160;①字符串1小于字符串2,strcmp函数返回一个负值;②字符串1等于字符串2,strcmp函数返回零;③字符串1大于字符串2,strcmp函数返回一个正值;
请登录后再发表评论!
#include&stdio.h& main() { char str1[],str2[];
&#160;int i,j;
&#160;gets(str1[]);
&#160;gets(stt2[]);
&#160;for(i=0;str[i]!=&#39;\n&#39;;i++)
&#160;{ if(str1[i]==str2[i])
&#160; &#160; &#160;j=1;
&#160; &#160;else {j=0;}
&#160;if(j=1)
&#160; &#160;printf(&两个字符串相等&);
&#160;else printf(&两个字符串不相等&); getch(); }
请登录后再发表评论!
#include &string.h&char s1[10],s2[10];...if(strcmp(s1,s2)==0) &#160;printf(&两字符串相等\n&);string.h 头文件中就有比较函数,可以用来比较是否相等
请登录后再发表评论!
推荐一本实用工具给你 C函数基本都齐了 &#160;C函数(清华)巨好 &#160;百度可以收索到 &#160;很不错函数名: strcmp功 &#160;能: 串比较用 &#160;法: int strcmp(char *str1, char *str2);程序例:#include &string.h&#include &stdio.h&int main(void) { &#160; &#160;char *buf1 = &aaa&, *buf2 = &bbb&, *buf3 = &ccc&; &#160; &#160; &#160; &#160;ptr = strcmp(buf2, buf1); &#160; &#160;if (ptr & 0) &#160; &#160; &#160; printf(&buffer 2 is greater than buffer 1\n&); &#160; &#160;else &#160; &#160; &#160; printf(&buffer 2 is less than buffer 1\n&); &#160; &#160;ptr = strcmp(buf2, buf3); &#160; &#160;if (ptr & 0) &#160; &#160; &#160; printf(&buffer 2 is greater than buffer 3\n&); &#160; &#160;else &#160; &#160; &#160; printf(&buffer 2 is less than buffer 3\n&); &#160; &#160;return 0; }
请登录后再发表评论!

我要回帖

更多关于 单片机if else语句 的文章

 

随机推荐