资源描述
河北师范大学本科生毕业论文
家用快热式电热水器的设计与制作
绪论
当今社会大部分人在使用热水器时,基本上都是采用的快热式的。这是因为它给人们带来了极大的方便,人们不再为热水器耗电量大而发愁,所以快热式电热水器走进千家万户应经成为必然的。
我国也在不断大力提倡家庭使用快热式电热水器,这样可以为国家节省很多电能。使用电热水器的方便之处还在于我国的电力来源比较方便,电能是无污染、清洁的,很受人们欢迎。目前市场燃气热水器、太阳能热水器、储水式电热水器遍地开花,然而燃气热水器因其安全隐患及越来越高的使用成本正逐渐淡出热水器市场;而太阳能热水器也因其严格受天气、气候及安装条件影响而很难占有更大市场份额;而目前占主流的储水式电热水器体积庞大、预热时间长、热水储水量有限,已不适用现代生活节奏,于是快热式电热水器以其小巧时尚的外观、比储水式更快的加热速度、比燃气热水器更安全的特点横空出世!在欧洲、东南亚市场热水器发展历程充分证明了这一点。
普通电热水器有如下缺点:
1、热水器长期通电,长期保持在六十度以上高温,发热管易结垢,内胆易漏水,因而较易损坏;
2、管道热水热量损耗大;
3、等候用水时间太长;
4、在热水流出前都必须浪费一定量的冷水,根据管道的长短,一般家庭中冷水损耗量大,基本可达10-25升/次。
而快热式电热水器 克服了上述缺点。它有很多优点,如:安全,干净环保;即开即热,3-5秒出热水无须等候,热水使用时间不受限制,想用多久就用多久;用多少烧多少,省电省水,没有损耗;内置温控仪保证温度在30-50度之间,解决温度持续高温导致的结垢漏水问题。
体积小不占空间,其中封闭式(尺寸为:24cm*9.5cm*25cm,类似25×25的卫生间地砖那么小,纯白色。)可以隐藏在厨柜内,安装方便,特别适合新装修的房子,款式多样,美观实用,也是职工福利和客户礼品的绝佳选择。特别方便于洗涤,和洗漱,是为现代家居厨房洗涤、卫生间洗漱专业设计生产的快速电热水器,结合了燃气热水器和传统储水式电热水器优点。
这里的快热式热水器的设计要求:(1)必须做到隋开随用,所以这就要求加热功率很大,以至于减少加热时间,所以温度检测元件的快速性就显得很重要。(2)要做到安全可靠,这就要求控制电路要准确及时,防止热水器烧干而引发火灾或出现爆炸危险危及人身安全。
这里之所以设计快热式家用电热水器一是兴趣所致,二是正是看到了它的未来,即将来人们将越来越多的使用它。
第1章 总体功能要求
本设计研究的内容和所做的工作本设计研究的内容和所做的工作本设计研究的内容和所做的工作本设计研究的内容和所做的工作
(一)用2位数码管显示出水温度,能显示设定功率档位。
(二)温度测试显示范围为00-99℃,精度为±1℃。
(三)设置3个功率档位指示灯,1-4档1个灯亮,5-8档2个灯亮,9档3个灯全亮,0档无功率输出,档位灯不亮。
(四)设置3个轻触按钮,分别为电源开关键、“+” 键和“-”键。加热功率分为0-9档,按“+”键依次递增至9档,按“-”键依次递减至0。
(五)出水温度超过65℃时停止加热,并蜂鸣报警,温度降至45℃以下时恢复。
(六)内胆温度超过105℃时停止加热,防止干烧。
第2章 设计方案论证
按快热式电热水器的功能要求,决定采用模块组成系统,主要包括电源电路、单片机控制器、温度检测电路、按键输入电路、LED数码管及指示电路、报警电路和加热控制电路。快热式电热水器为了达到“快热”的效果,取消了储水罐,使冷水在进入加热管后立即被加热,着就要求加热管有较大的功率。家用电热水器一般采用方便,可靠的电热丝加热方法。根据热学及流体力学原理,结合实际实验室测试,可以得到水温与流量、加热功率之间的关系。
对于加热功率的控制,最简单的方法是由若干不同功率的电热丝组合得到几种加热功率,但由于快热式热水器的加热功率较普通的大,且档位设置较多,用电热丝组合的方法需要几组电热丝和继电器,成本增高且工作可靠性降低,所以比较理想的是采用可控硅控制功率,电路简单又控制方便。
温度检测的方法较多,最经典的方法就是用热敏电阻(或热敏传感器)组成电桥来采集信号,再经放大,A/D转换后送单片机。目前比较先进的方法是采用专门的集成测温传感器(如DS18B20),直接将温度转换成数字信号传送给单片机。为了简化电路,降低成本,本设计采用了温度/频率转换测温法,直接将温度信息转换成频率信号,用单片机测出频率大小,从而间接测出温度值,温度/频率转换电路简单可靠且成本低廉。
对于快热式家用电热水器来说,硬件系统是它的最基本的框架,是系统的所有功能的丛础。硬件的选择和所选硬件的性能对系统的功能实现以及系统的精度都有直接的影响,系统的设计成功与否很大程度上取决于硬件系统的设汁。本系统硬件方案论证包括单片机、温度检测传感器、加热控制驱动电路、电源电路、及键盘和显示电路的选择。
2.1 单片机的选择
方案一:
我们知道8031芯片内部无ROM,需要外扩程序存储器,由此造成电路焊接的困难,况且使用8031还需要另外购买其他的芯片,如A/D转换及定时/计数器(PWM)等芯片,从而造成成本较高,不实用。
方案二:
因为89C51芯片内部有ROM,且片内ROM全部采用Flash ROM,它能于3V的超低压工作,与MCS-51系列单片机完全兼容,由于89c51单片机成本低廉且工作可靠,采用12MH z的晶振, 需所以我们选择89C51作为系统微处理器。这就是快热式电热水器加热的基本方程式。
2.2温度检测传感器的选择
温度检测的方法很多,有热点阻,热电偶,热敏电阻,还有专门的集成测温传感器等。
方案一:
热电式传感器是将温度变化转化为电量变化的装置,它利用敏感元件的电磁参数随温度变化而变化的特性来达到测量目的。通常把被测温度的变化转换为敏感元件的电阻变化、电势的变化,再经过相应的测量电路输出电压或电流,然后由这些参数的变化来检测对象的温度变化。热敏电阻具有灵敏度高、体积小、较稳定、制作简单、寿命长、易于维护、动态特性好等优点。但有变化率非线性,不适合测量高温区等缺点。
方案二:
集成测温传感器如:DS18B20,直接将温度转换为数字信号传送给单片机。这种方法虽然比较先进,但电路也比较复杂成本也较高。
方案三:
温度/频率转化测温法,直接将温度信息转换成频率信号,用单片机测出频率的大小,从而间接测出温度值,温度/频率转换电路简单可靠,成本低廉。所以采用此方案。
2.3传感器输出的放大电路的选择
方案一:
运算放大器LM324带有真差动输入的四运算放大器。该四放大器可以工作在低到3伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。它的性能特点是短跑保护输出、真差动输入级、底偏置电流为最大100mA、每封装含四个运算放大器、具有内部补偿的功能、共模范围扩展到负电源、行业标准的引脚排列、输入端具有静电保护功能。但用在本电路中接线较复杂,且价格昂贵所以不用。
方案二:
采用74LS04作为输出放大电路的选择,它还可以作为驱动电路使用,74ls04是TTL电平反相器,使用较经济且性能也很理想,所以在本方案中采用。
2.4 驱动及加热控制电路的选择
方案一:
若干不同功率的电热丝组合而成。但需要几组电热丝和继电器,成本增高且工作可靠性降低,所以不用。
方案二:
通过一个继电器驱动,采用可控硅控制功率,能经受较高的功率,所以可以设置较多的档位,成本大大降低可靠性较高,而且电路简单,所以本方案采用。
2.5电源电路的选择
方案一:
采用干电池,使用方便,安全可靠,但价格昂贵,且使用时间较短,所以不采用。
方案二:
市电整流成+5v电压,由于89C52对电源要求不甚严格,市电来源方便,且经稳压管稳压也较可靠,较经济实惠,所以采用此方案。
2.6 显示器的选择
LED数码管显示器可分为两种显示方式:静态显示和动态显示。
方案一:
LED数码管静态显示,多片七段译码器驱动显示,这不仅增加了成本,还需要占用单片机多个I/O口,也给电路的焊接带来一定的困难,因此不选用这种方案作为显示模块,所以排除此方案。
方案二:
LED数码管显示器动态显示方式下,将所有位的段选线并联在起,由位选线控制哪位接收字段码。采用动态扫描显示,也就是在显示过中,轮流向各位送出字形码和相应的字位选择,同一时刻只有一位显示,其他各位熄灭。利用显示器的余晖和人眼的视觉暂留现象,只要每一位显示足够短,则人看到的就是无为数码管同时显示。在动态显示方式下电路设计简单,以采用。
2.7 键盘的选择
方案一:
键盘选用行列式键盘,行列式键盘的接口方法,直接接口于单片机的I/O口上。键盘设置在行、列线的交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接+5V,被拉在高电平状态。但线路较复杂,价格较昂贵。不适用。
方案二:
独立式按键是指直接用输入端口线构成的单个按键电路,常用于需要少量几个按键的计算机控制系统。每个独立式按键单独占用一根输入端口线,各键的工作状态不会相互影响。采用轻触式独立小按钮,即实用又方便,因为本电路对键盘的要求不高,所以采用这种方案。
第3章 系统总体设计
3.1 系统的工作流程
(1)接通电源
(2)开启电热水器
(3)调节水量。
(4)调节功率
(5)检测出水温度,判断是否继续加热.。
(6)排水。
3.2 快热式电热水器系统组成框图
图3.1快热式电热水器系统组成框图
3.3 系统控制算法的设计
实验测试后建立的温度/频率表是0—100c温度所对应的频率值。它是一个频率对应于温度递减的非线性函数,在c语言中用一个一维数组b[101]来表示,下标为温度,数组元素为频率值。计算温度采用高效、准确的二分查找法。过程如下:
1)先给定查找的温度最大值Tm和最小值Ti,即确定查找的范围,根据已有的温度表默认最大值Tm=100,最小值Ti=0。
2)假定测的温度Te为最大值与最小值的中间值,即T e=(Tm+Ti)/2
3)将实际测的频率值T0rig与假定温度Te在表格中对应的频率Tab[temp]相比较,如果相等,那么假定温度就是当前实际温度,即完成查找。
4)若T0rig> Tab[temp],说明实际温度应该在Ti与Te之间,则修改查找范围,令Tm=Te;同理,若T0rig<Tab[temp],说明实际温度应该在Te与Tm之间,则令Ti=Te;
5)检查查找范围,若Tm-Ti<=1,则判断T0rig更接近于最大值对应的频率Tab[Tm]
还是最小值对应的频率Tab[Ti],实际温度值取频率更接近的那个值既完成查找。
6)若Tm-Ti.>1则重复第2),3),4),5)步,直到查找完成。
温度检测程序完成温度计算后,便刷新系统当前温度寄存器,并判断有无超温、置位或清除相应的标志位。
第4章 系统硬件单元电路的设计
本系统硬件电路主要包涵:单片机,报警电路、加热控制电路、过零检测电路和温度检测电路等部分。
4.1 单片机晶振电路
AT89C52是一个低功耗40个管脚的高性能CMOS8位单片机片,内8KB ISP的可反复擦写1000次的Flash只读程序存储器。器件采用ATMEL公司的高密度非易失性存 储技术制造兼容MCS-51标准指令系统及80C51引脚结构芯片内集成了8bit通用 中央处理器和ISP Flash存储单元功能强大的89C52可为智能家用电热水器控制系统提供高性价比的解决方案。
主要性能特点:
1、4k Bytes Flash片内程序存储器;
2、128 bytes的随机存取数据存储器(RAM);
3、32个外部双向输入/输出(I/O)口;
4、5个中断优先级、2层中断嵌套中断;
5、6个中断源;
6、2个16位可编程定时器/计数器;
7、2个全双工串行通信口;
8、看门狗(WDT)电路;
9、片内振荡器和时钟电路;
10、与MCS-51兼容;
11、全静态工作:0Hz-33MHz;
12、三级程序存储器保密锁定;
13、可编程串行通道;
14、低功耗的闲置和掉电模式。
电热水器控制器是以单片机为核心包括了检测控制和人机接口三个部分采用模块化设计思想整个系统硬件电路包括单片机及其外围电路键盘及显示和片外存储电路温度电压以及流量检测电路加热护电路漏电检测电路电源电压和复位电路。在本系统设计中,采用了11.0592MHZ晶振,手动加上电复位.为了更好的防干扰,晶振的外壳接地,另外还在5V与地之间加一个无级电容。
其中加热部分采用双向二极管控制的热敏电阻,控制方便可靠。报警电路采用自鸣式报警器。实用且很方便买到。
过零检测部分桥式电路,三极管和一个“非”门组成的电路,灵明度更高。
而温度检测部分很重要,所以采用RC震荡电路,和热敏电阻组成的电路进行检测,简单并且成本很低,也很容易实现。
在整个单片机控制系统中,CPU既是运算处理中心,又是控制中心,是控制系统中最关键的器件。此系统控制方案简单,数据量也不大,因此选用AT89C51作为控制系统的主机。
AT89C51有40引脚双列直插(DIP)形式。其与80C51引脚结构基本相同,其逻辑引脚图如图1。
图 4-1 AT89C52逻辑引脚图
各引脚功能叙述如下:
1.电源和晶振
VCC——运行和程序校验时加+5V
GND——接地
XTAL1——输入到振荡器的反向放大器
XTAL2——反向放大器的输出,输入到内部时钟发生器
(当使用外部振荡器时,XTAL1接地,XTAL2接收振荡器信号)
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。
2.I/O(4个口,32根)
P0口——8位、漏极开路的双向I/O口。当使用片外存储器(ROM、RAM)时,作地址和数据分时复用。在程序校验期间,输出指令字节(需加外部上拉电路)。P0口(作为总线时)能驱动8个LSTTL负载。
P1口——8位、准双向I/O口。在编程/校验期间,用于输入低位字节地址。P1口可驱动4个LSTTL负载。对于80C51,P1.0——T2,是定时器的计数端且位输入;P1.1——T2EX,是定时器的外部输入端。这时,读两个特殊输入引脚的输出锁存器应由程序置1。
P2口——8位、准双向I/O口。当使用片外存储器(ROM及RAM)时,输出高8位地址。在编程/校验期间,接收高位字节地址。P2口可以驱动4个LSTTL负载。
P3口——8位、准双向I/O口,具有内部上拉电路。P3口提供各种替代功能。在提供这些功能时,其输出锁存器应由程序置1。P3口可以输入/输出4个LSTTL负载。
3.串行口
P3.0——RXD(串行输入口),输入。
P3.1——TXD(串行输出口),输出。
4.中断
P3.2——INT0外部中断0,输入。
P3.3——INT1外部中断1,输入。
5.定时器/计数器
P3.4——T0定时器/计数器0的外部输入,输入。
P3.5——T1定时器/计数器1的外部输入,输入。
6.数据存储器选通
P3.6——WR低电平有效,输出,片外存储器写选通。
P3.7——RD低电平有效,输出,片外存储器读选通。
7.控制线(共4根)
输入:
RST——复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
EA/Vpp——片外程序存储器访问允许信号,低电平有效。在编程时,其上施加21V的编程电压。
注意:在加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
输入、输出:
ALE/PROG——地址锁存允许信号,输出。ALE以1/6的振荡频率稳定速率输出,可用作对外输出的时钟或用于定时。在EPROM编程期间,作输入,输入编程脉冲(PROG)。ALE可以驱动8个LSTTL负载。当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。
注意:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
输出:
SEN——片外程序存储器选通信号,低电平有效。在从片外程序存储器取址期间,在每个机器周期中,当PSEN有效时,程序存储器的内容被送上P0口(数据总线)。PSEN可以驱动8个LSTTL负载。
4.2 温度传感器及放大电路设计
温度/频率变换电路由多谐振荡器组成,R24是一个热敏电阻,当温度变化是引起它的阻值变化,因而电流发生变化,从而振荡器的输出频率发生变化,所以通过频率值可以求得温度值。它的电路如图3-2所示:
图4-2 温度传感器及放大电路
4.3 过零检测电路图的设计
此电路应用三极管的通断来引发输出脉冲的有无,每当三极管接通时电路输出一个正的脉冲,而当三级管截止时不输出脉冲,以此来控制双向晶闸管的导通。它的电路如图3-3所示:
图3-3 过零检测电路
4.4 驱动电路的设计
加热控制驱动电路:通过光耦二极管来控制加热丝的导通,而加热电阻通过发光二极管来显示加热于否,当加热时二极管发光,而不加热时二极管不发光,其中利用热继电器来控制电路的通断,当通电时它的常开触头闭合,电路接通,电热丝加热,否则电路断开。它的熔断丝选为110度的热保险丝,控制加热温度。电路如图3-4所示:
图4-3 加热控制驱动电路图
报警器驱动电路,电路图如图3-5所示:
图4-4 报警器驱动电路
4.5显示电路的设计
数码管显示电路的设计是采用双向共阳极串行接口电路,用来显示加热档位,直观性更强。它的电路图如图3-6所示:
图4-5 显示电路
第5章 系统的软件设计
5.1 程序概括
单片机的快热式家用电热水器的设计主要包括主程序、显示扫描、按键扫描子程序、加热控制子程序和温度检测子程序。要想实现预设计的功能软件的设计至关重要,必须认真考虑。
快热式电热水器温度控制系统程序是由MCS-51单片机C语言编写,整个程序主要由8个子函数组成,分别是2个延时函数(毫秒级和微秒级),一个写液晶数据函数,一个写液晶指令(地址)函数,一个写DS18B20数据函数,一个读DS18B20数据函数,一个复位DS18B20的函数.一个初始化函数 (不包括中断函数);经过组合:得到如下3大函数,再加上中断函数(3个)一共可分为4大函数.分别如下:
1:初始化函数, (void init ())这里面包括了液晶的初始化设置,和进入系统后,液晶要固定显示的字符,中断的设置;扫描按键和温度
2:显示DS18B20温度的函数,( void cs18wd())这里面主要包括了要读取温度,显示当前温度,超温报警,控制总中断等
3:设置函数,( void sz())这里面包括了按键的扫描,设置档位,设置设定温度,电磁阀的控制,液晶的显示,蜂鸣器的控制等
4:中断函数(三个),这里面包括了,过零检测信号,给T0,T1,赋初值,给双向可控硅导通信号等
从控制系统要完成的功能可知软件编程主要由信号的采集输出控制和参数及状态显示三部分组成信号的采集包括了温度流量电压信号的采集参数和状态显示部分实现对温度流量加热功率和故障的显示输出控制部分是由一系列算法完成图是控制器控制算法的框图
其中包括出水温度反馈的控制可控硅的工作完成对电热水器的输出控制继电器的实现粗调控制可控硅做细调控制控制系统软件的设计采用模块化结构由主程序中断服务程序若干功能模块子程序组成
5.2 主程序流程图
由于51系列单片机没有停机命令,所以可以利用主程序设置死循环反复运行各个任务。将实用的子程序放在内部。根据CPU的运行时间计算总的运行时间。
程序流程图如图 4.1所示:
图 5-1 主程序流程图
5.3 显示扫描子程序
显示扫描子程序完成两位共阳数码管的扫描显示任务。下图即为显示扫描子程序流程图如图4-2所示:
图5-2 显示扫描子程序
5.4 加热控制子程序
加热控制子程序通过控制继电器的通断来决定是否给电热丝通电加热,而加热的功率大小则由双向可控硅的导通角来决定。系统程序利用外中断INT1检测市电的过零点,检测到过零点后,立即根据设定的加热档位给定时器T1赋一个延时参数,并打开定时器T1,允许其中断如图4-3所示:
图5-3加热控制子程序
5.5 按键扫描处理子程序
按键扫描子程序负责逐个扫描档位+键、-键和开关键是否被按下,若有键被按下,则作出相应处理。按键扫描处理子程序流程图如4-4所示:
图5-4按键扫描处理子程序
5.6 温度检测子程序
此程序的目的是用来检测水温并传给相应的控制机构进行控制,它的可靠性直接关系到整个控制系统的精密程度。它的程序流程图如图4-5所示:
图5-5 温度检测子程序流程图
第6章 系统的调试
6.1 硬件测试
Protues仿真结束并成功后,在焊接板上完成了硬件组装。在调试硬件时遇到过很多问题,但只要细心、认真检查这些问题都是可以避免的,主要问题及解决办法现列如下:
接通电源后LCM1602没有正确的显示。电路通电后液晶屏幕只亮但是不显示数据,后来经过电路的检查,发现电路连接中有两根线接反了,通过修改,电路显示正常。
电路工作一段时间之后有的芯片发热严重。经查发现原来是有尖锐的管脚刺破邻近的漆包线造成短路,断掉该线并再次连接可解决问题。
6.2 软件测试
由于本系统涉及到多个子程序,多个芯片的编程。首先必须对可编程芯片的控制字即其控制指令要熟记于心。其次,芯片很多都有时钟输入端,需要晶振支持。对芯片的读写都需要在相应的触发沿到来时才能进行。
图6-1 程序编译
第7章 系统的仿真与制作
在这次设计中,应用到了两个比较常用的软件Protues仿真软件和keil编译软件,首先我通过对电路要求编写了C语言程序,通过keil编译软件进行检测,通过多次的修改,终于完成了电路程序的编译,同时通过keil编译软件生成*.HEX的一个文件,然后根据要求通过protues仿真软件做出相应的电路图来,将各个元器件连接好后,将生成的*.HEX文件写到单片机中,然后进行仿真,在这个过程中,所有元器件都处于一种理想的状态,所以,只要程序和电路连接正确,仿真便很容易实现。
结束语
本次设计的快热式家用电热水器采用单片机对电路进行简单的控制,因此系统的稳定性比较高。本方案着重体现在较热速度之快上,它采用双向晶闸管(即可控硅)对价热电路进行控制,这样系统的可靠性就大大增强,因为晶闸管能够根据门极电压可靠的接通或断开,而且采用发光二极管来及时的检测电路的加热情况。而设记得另一个优势还在于它采用了温度/频率检测电路,通过电路频率的变化来及时的反应出当时的温度,这样就避免了因为热敏电阻的变化不能及时的传给单片机而带来的滞后问题。频率的变化受到外界的干扰要远远小于电阻变化所带来的干扰,因此准确性,可靠性大大提高。
在这次设计中还采用了两位共阳数码管来反映功率档位,通过它门的量灭数量来反映加热时功率输出,及时的提醒人们当时的水温变化情况,更加清晰。而在设计中还采用轻触式按钮来调节功率的档位,其中一个按钮时逐渐增加功率档位,而另一个按钮时逐渐减小功率档位,还有一个是控制电源开关的通断,即总开关。设计中还采用报警器来及时的反应温度是否超标,提示操作者是否将继续加热热水器。
尽管这次设计中我还不能做到尽善尽美,一些内容还有待于进一步的研究,因为必定我们的知识有限,而且以前还没有接触过单片机,但为了这次课程设计,我提前翻阅了很多资料,特别是了很多有关单片机的书籍,这给我以后学习单片机课程打下了基础,也开拓了我的视野,是我了解到了单片机的用处是如此的广泛。它几乎涉及到了我们生活的各个方面。
在设计中我遇到了很多困难,也让我对一些生疏的有了更深刻的了解,比如二分查找算法,我现在可以说已经能够熟练掌握。虽然设计中的困难使我很是头疼,但通过自己的不懈努力和同学们的大力帮助毕竟还是一点点的克服了困难,真的很感谢他们,这次设计的完成离不开他们的帮助。
在本次课程设计中使我真正了解到了实践与理论结合的重要性,以前总是在头脑中产生一种想法,却从没有机会去认真的做它们,以至不知道结果是行通还是行不通,但通过这一周的课程设计终于可以使我独立的去完成一个项目,虽然结果难免有不足之处,但毕竟是亲自动手去做的,收获是可想而知的。
参考文献
(1) 夏继强. 单片机实验与实践教程. 北京:北京航空航天大学出版社
(2) 赵晓安. MCS-51单片机原理及应用. 天津:天津大学出版社
(3) 徐惠民、安德宁. 单片微型计算机原理接口与应用.北京:北京邮电大学出版社
(4) 吴国经等 单片机应用技术 中国电力出版社
(5) 李全利,迟荣强编著 单片机原理及接口技术 高等教育出版社
(6)张毅刚等, MCS-51单片机应用设计,哈工大出版社
(7) 马忠梅等,单片机的C语言应用程序设计,北京航空航天大学出版社
(8)李广弟等 单片机基础 北京航空航天出版社
(9)楼然苗等,单片机课程设计指导 北京航空航天出版社
致谢
写毕业论文总结是一次再系统学习的过程,毕业论文答辩自述的完成,同样也意味着新的学习生活的开始。
毕业论文暂告收尾,这也意味着我在大学的四年的学习生活既将结束。回首既往,自己一生最宝贵的时光能于这样的校园之中,能在众多学富五车、才华横溢的老师们的熏陶下度过,实是荣幸之极。在这四年的时间里,使我在学习上和思想上都受益非浅。
非常感谢我的导师教授在我大学的最后学习阶段——毕业设计阶段给自己的指导,从最初的定题,到资料收集,到写作、修改,到论文定稿,都给了我耐心的指导和无私的帮助。在此我向老师表示我诚挚的谢意。同时,感谢所有任课老师和所有同学在这四年来给自己的指导和帮助,是他们教会了我专业知识,教会了我如何学习,教会了我如何做人。正是由于他们,我才能在各方面取得显著的进步,在此向他们表示我由衷的谢意,并祝所有的老师培养出越来越多的优秀人才,桃李满天下!
附录1:系统硬件总原理图
附录2:元器件清单
序号
元件名称
型号规格
数量
1
单片机
AT89S52
1
2
三端稳压块
L7805
1
3
光耦
MOC3023
1
4
双向可控硅
BTA41-600B
1
5
发热管
7.5KW
1
6
蜂鸣器
5V有源蜂鸣器 电磁式
1
7
碳膜电阻
RXT-20KΩ
1
8
碳膜电阻
RXT-2KΩ
1
9
碳膜电阻
RXT-200Ω
1
10
碳膜电阻
RXT-5KΩ
1
11
碳膜电阻
RXT-510Ω
1
12
碳膜电阻
RXT-4.7KΩ
3
13
碳膜电阻
RXT-10KΩ
4
14
电解电容
CXD-10μF/16V
1
15
电解电容
47μF/50V
2
16
瓷片电容
30pF
2
17
瓷片电容
103
4
18
按键
6*6*5MM微动轻触按键
3
19
三极管
S9014
1
20
三极管
S9012
3
21
二极管
1N4007
8
22
发光二级管
3MM红发光二极管
3
23
热保险丝
105℃
1
24
继电器
DC5V-AC250V-10A
2
25
晶振
11.0592MHZ
1
26
变压器
220V-9V 10W
1
附录3:源程序清单
#include<reg51.h>
#include<intrins.h>
#include<math.h>
void delay(unsigned int); //延时函数
void display(void); //显示函数
unsigned char keyscan(void); //按键扫描处理函数
void heatctrl(void); //加热控制函数
void temptest(void); //测温函数
sbit swkey=P1^0; //开关键
sbit upkey=P1^1; //加热档位“+”键
sbit downkey=P1^2; //加热档位“—”键
sbit buzz=P1^5; //蜂鸣器输出端
sbit triac=P1^6; //可控硅触发信号输出端
sbit relay=P1^7; //继电器控制信号输出端
sbit led1=P2^5; //加热档位指示灯1
sbit led2=P2^6; //加热档位指示灯2
sbit led3=P2^7; //加热档位指示灯3
signed char data ctemp; //当前测得水温寄存器
unsigned char data dispram[2]={0x10,0x10}; //显示区缓存
unsigned char data heatpower,px0count; //加热档位寄存器、外中断0计数器
bit tempov,t0tst,testok; //超温标志、测温开始标志、测温结束标志
void main (void)
{
unsigned char i,j;
int ctep;
ctep=15;
heatpower=5;
tempov=0;
swkey=0;
TMOD=0x11;
TCON=0x50;
IP=0x01;
IE=0x80;
while(1)
{
i=1;
do{
for(j=0;j<100;j++)
{
if(keyscan()) i=6;
display();
heatctrl();
}//end for(b=0;b<100;b++)
temptest();
}
while(--i);
j=abs(ctemp);
dispram[1]=j%10;
j/=10;
dispram[0]=j? j:0x11;
}
}
void delay(unsigned int dt)
{
register unsigned char bt;
for(;dt;dt--)
for(bt=250;--bt;);
}
void display(void)
{
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char i,a;
a=0x01;
for(i=0;i<2;i++)
{
P2|=0x1f;
P0=table[dispram[i]];
P2&=a;
delay(4);
a=_crol_(a,1);
P0=0xff;
}}
unsigned char keyscan(void)
{
unsigned char i,ch;
if(upkey==0)
{
buzz=0;
for(i=0;i<5;i++) display();
buzz=1;
if(heatpower<9) heatpower++;
dispram[0]=0;
dispram[1]=heatpower;
while(upkey==0) display();
return(1);
}
else if(downkey==0)
{
buzz=0;
for(i=0;i<5;i++)display();
buzz=1;
if(heatpower>0) heatpower++;
dispram[0]=0;
dispram[1]=heatpower;
while(downkey==0) display();
return(2);
}
else if(swkey==0)
{
buzz=0;
for(i=0;i<30;i++) display();
buzz=1;
swkey=1;
while(swkey==0) display();
ch=IE;
IE=0x00;
P0=0xff;
P1=0xff;
P2=0xff;
dispram[0]=0x10;
dispram[1]=0x10;
display();
while(1)
{
while(swkey)display();
buzz=0;
for(i=0;i<10;i++)display();
buzz=1;
if(swkey==0) break;
}
while(swkey==0)display();
IE=ch;
return(0);
}
else return(0);
}
void heatctrl(void)
{
if(!tempov)
{
relay=0;
buzz=1;
switch(heatpower)
{
case 0:{EX1=0,ET1=0;triac=1;led1=1;led2=1;led3=1;break;}
case 1:
case 2:
case 3:
case 4:{led1=0;led2=1;led3=1;EX1=1;break;}
case 5:
case 6:
case 7:
case 8:{led1=0;led2=0;led3=1;EX1=1;break;}
case 9:{EX1=0;ET1=0;led1=0;led2=0;led3=0;triac=0;break;}
}
}
else
{
relay=1;
EX1=0;
ET1=0;
triac=1;
buzz=0;
}
}
void tempt
展开阅读全文