资源描述
优秀毕业论文,支持预览,答辩通过,欢迎下载需要 CAD 图纸,咨询 QQ:414951605 或 1304139763摘 要本文介绍了一种新型家庭健康供水装置自动控制系统,并给出了系统的工作原理、硬件结构及软件流程。本系统采用 ATMEL 公司单片机系列中的 AT89C51 为 CPU,采用外部开关元件作为供水装置的外部检测装置,输出单元采用固态继电器。固态继电器控制水泵、进水电磁阀、出水电磁阀、臭氧发生器和净水电磁阀,完成对水位的控制和消毒。实际使用证明该系统具有良好的控制效果。关键词: 健康供水装置,单片机 AT89C51,固态继电器优秀毕业论文,支持预览,答辩通过,欢迎下载需要 CAD 图纸,咨询 QQ:414951605 或 1304139763AbstractThis paper introduces a new type of family health device for water supply automatic control system, and gives the system working principle, hardware structure and software flow. The system used ATMEL microcontroller series AT89C51 CPU, using the external switch element as a water supply device for external detecting device, output unit by using solid state relay. Solid state relay control water pump, a water inlet electromagnetic valve, a water outlet electromagnetic valve, the ozone generator and the water solenoid valve, completion of the water level control and disinfection. The practice shows that the system has good control effectiveness.Key words: Healthy water supply device, single-chip AT89C51, solid state relay优秀毕业论文,支持预览,答辩通过,欢迎下载目 录摘 要 .IAbstract.II1 绪论 .11.1 课题的研究意义 .11.2 课题的目的 .12 家庭健康供水装置自动控制系统总体方案设计 .22.1 确定设计流程图 .22.2 系统方案论证 .22.2.1 单片机的选取 .22.2.2 输入输出设备的选取 .32.3 确定总体设计方案 .33 家庭健康供水装置自动控制系统硬件设计 .43.1 AT89C51 单片机的特点及引脚说明 .43.1.1 AT89C51 单片机的特点 .43.1.2 AT89C51 单片机引脚功能说明 .53.2 各模块电路图 .73.2.1 单片机最小应用系统电路设计 .73.2.2 输入模块电路设计 .83.2.2 输 出模块电路设计 .94 家庭健康供水装置自动控制系统软件设计 .104.1 控制过程设计 .104.2 绘制流程图 .104.3 Keil 软件编程 .11结论 .16致 谢 .17参考文献 .18附录 1 系统 C 语言程序清单 .19附录 2 系统电路图 .25附录 3 PCB 板图 .26XXXX 大学本科毕业设计(说明书)11 绪论1.1 课题的研究意义家用健康供水装置是一种运用于家庭用水净化和无化学残留的食品消毒杀菌、洗涤清洁的全自动家庭水处理系统,主要利用目前世界上广泛运用的臭氧技术并结合离子筛分离技术运行杀菌消毒和水质净化。其控制系统要事先供水装置的自动上水、自动完成水质净化、直饮水和消毒水自动协调供应、并具备缺水和漏水等故障报警、处理保护功能。其控制系统是整个供水处理装置的关键,选用何种方式控制尤其重要,目前的主要的几种控制方式有纯继电器控制、PLC 控制和单片机控制。继电器控制方式接线复杂,控制元件繁多,故不适合。PLC 控制成本比较高,也不适合家用供水装置,故选用单片机控制整个系统。单片机作为自动控制中的一个核心器件在小型自动控制系统及信号采集方面已经被广泛应用,技术也相对较成熟,它不仅有体积小,安装方便,功能较齐全等优点,而且有很高的性价比,应用前景广。1.2 课题的目的通过本次设计,我们对大学四年所学课程将做出一个总结,对各门课程均将有更深入的了解,更加熟练的掌握设计方案的提出,设计流程的规划以及各器件的硬件连和软件编程,并且能够更加熟练的操作 Protell99SE 软件,真正培养出科学的思维方式和灵活解决问题的能力,为以后实际工作奠定良好的基础。XXXX 大学本科毕业设计(说明书)22 家庭健康供水装置自动控制系统总体方案设计2.1 确定设计流程图在熟悉课题,明确任务的基础上,查阅相关资料,理清设计思路,综合考虑总的设计时间和各部分设计所需时间,最终决定将本次设计分五大步进行。(1)熟悉课题,明确任务,查阅相关资料,确定总体设计方案;(2)根据各部分的功能划分功能模块,确定每一模块的硬件组成,合理选取具有相应功能的器件;(3)进行硬件设计,把各器件组成相应功能的模块,并把各功能模块进行电气连接,形成总的功能系统;(4)进行软件设计,编写程序,实现各模块功能,使整个系统能够良好的运行;(5)进行仿真调试,检查各模块功能能否完全实现,综合考虑系统的灵活性、稳定性、误差大小及测温效率调整各器件的各项参数。使系统的处在最佳性能状态。经分析总结,确定总的设计流程如图 2.1 所示。开始总体设计方案功能模块划分系统设计软件设计 硬件设计仿真调试图 2.1 设计流程图2.2 系统方案论证XXXX 大学本科毕业设计(说明书)32.2.1 单片机的选取若采用 8031 芯片,其内部没有程序存储器,需要进行外部扩展,这给电路增加了复杂度,且占用空间增大。但是如果采用 AT89C51 单片机为控制核心优点凸显,51 系列微处理器基于简化的嵌入式控制系统结构,被广泛应用于从军事到自动控制再到 PC 机上的键盘上的各种应用系统上,仅次于 Motorola 68HC11 在 8 位微控制器市场上的销量,很多制造商都可提供 51 系列单片机,像 Intel Philips Siemens 等,这些制造商给51 系列单片机加入了大量的性能和外部功能,像 I2C 总线接口,模拟量到数字量的转换,看门狗,PWM 输出等,不少芯片的工作频率达到 40M,工作电压下降到1.5V。基于一个内核的这些功能使得 51 系列单片机很适合作为厂家产品的基本构架,它能够运行各种程序而且开发者只需要学习这一个平台 1。比较这两种方案,综合考虑单片机的各部分资源,因此此次设计选用第二种方案,选用 AT89C51 单片机为核心处理器。2.2.2 输入输出设备的选取输入元件采用外部开关输入,成本低控制简单。输出采用 SSR 固态继电器输出,固态继电器有体积小,使用寿命高的优点。2.3 确定总体设计方案通过对设计任务及相关芯片的深入了解,最终决定本设计采用 AT89C51 单片机作为控制器,外部开关量为控制输入元件,固态继电器为输出元件,完成整个供水系统的控制系统,其系统设计其总体结构如图 2.2 所示。单片机AT89C51外部输入开关 外部输出 SSRXXXX 大学本科毕业设计(说明书)4图 2.2 系统结构图3 家庭健康供水装置自动控制系统硬件设计3.1 AT89C51 单片机的特点及引脚说明3.1.1 AT89C51 单片机的特点AT89C51 是美国 ATMEL 公司生产的低电压、高性能 CMOS 8 位单片,内含 4Kbytes 的可反复擦写的只读程序存储器(EPROM)和 128 bytes 的随机存取数据存储器(RAM ) ,器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内置通用 8 位中央处理器(CPU )和 Flash 存储单元,功能强大的 AT89C51 单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域,该芯片外形结构及引脚如图 3.1 所示 4。XXXX 大学本科毕业设计(说明书)5XTAL218XTAL119ALE30 EA31 PSEN29RST9P0.0/AD0 39P0.1/AD1 38P0.2/AD2 37P0.3/AD3 36P0.4/AD4 35P0.5/AD5 34P0.6/AD6 33P0.7/AD7 32P1.01 P1.12 P1.23P1.34 P1.45 P1.56P1.67 P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT0 12P3.3/INT1 13P3.4/T0 14P3.7/RD 17P3.6/WR 16P3.5/T115P2.7/A15 28P2.0/A8 21P2.1/A9 22P2.2/A10 23P2.3/A11 24P2.4/A12 25P2.5/A13 26P2.6/A14 27U1AT89C51图 3.1 AT89C51 外形结构及引脚AT89C51 单片机主要性能参数为:(1)与 MCS-51 产品指令系统完全兼容;( 2)4K 字节可重擦写 Flash 闪速存储器;(3)1000 次擦写周期;(4)全静态操作:0Hz24H z;(5)三级加密程序存储器;(6)1288 字节内部 RAM;( 7)32 个可编程 I/O 口线;(8)2 个 16 位定时/计数器;(9)6 个中断源;(10 )可编程串行 UART 通道;(11)低功耗空闲和掉电模式 8。AT89C51 提供 4K 字节 Flash 闪速存储器,128 字节内部 RAM,32 个 I/O口线,两个 16 位定时/计数器,一个 5 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51 可降至 0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM,定时/ 计数器,串行通信口及中断系统继续工作。掉电方式保存 RAM 中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。3.1.2 AT89C51 单片机引脚功能说明(1)Vcc :电源电压;(2)GND:地;(3)P0 口: P0 口是一组 8 位漏极开路型双向 I/O 口,也即地址/ 数据总线复XXXX 大学本科毕业设计(说明书)6用口。作为输出口用时,每位能吸收电流的方式驱动 8 个 TTL 逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。(4)P1 口: P1 口是一个带内部上拉电阻的 8 位双向 I/O 口,P1 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口写“1” ,通过内部的上拉电阻把端口拉倒高电平,此时可做输入口。做输入口输入时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I IL) 。Flash 编程和程序校验期间,P1 接收低 8 位地址。(5)P2 口: P2 是一个带有内部上拉电阻的 8 位双向 I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路,对端口写“1” ,通过内部的上拉电阻把端口拉倒高电平,此时可做输入口,做输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输入一个电流(I IL) 。在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行 MOVXDPTR 指令)时,P2 口送出高 8 位地址数据。在访问 8 为地址的外部数据存储器(如执行 MOVXR1 指令)时,P2 口线上的内容(也即特殊功能寄存器 SFR 区中 R2 寄存器的内容) ,在整个访问期间不改变。Flash 编程或校验时,P2 亦接受高位地址和其它控制信号。(6)P3 口: P3 口是一个带有内部上拉电阻的 8 位双向 I/O 口,P3 口的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口写“1” 时,它们被内部上拉电阻拉高并可作为输入端。作输入端时,被外部拉低的 P3 口将用上拉电阻输出电流(I IL) 。P3 口除了作为一般的 I/O 口线外,更重要的用途是它的第二功能,如表 3.1 所示。表 3.1 P3 口第二功能端口引脚 第二功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 (外部中断 0)P3.3 (外部中断 1)P3.4 T0(定时/ 计数器 0)XXXX 大学本科毕业设计(说明书)7P3.5 T1(定时/ 计数器 1)P3.6 (外部数据存储器写选通)P3.7 (外部数据存储器读选通)P3 口还接收一些用于 Flash 闪速存储器编程和程序校验的控制信号(7)RST : 复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。(8)ALE/ :当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲可用于锁存地址的低八位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的 1/6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。对 Flash存储器编程期间,该引脚还用于输入编程脉冲( ) 。如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置置位后,只有一条 MOVX 和 MOVC 指令 ALE 才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 无效 8。(9) :程序储存允许( )输出是外部程序存储器的读选通信号,当 AT89C51 由外部程序存储器取指令(或数据)时,每个机器周期两次 有效,即输出两个脉冲。在此期间,当访问外部数据存储器时,这两次有效的 信号不出现。(10)EA/VPP:外部访问允许。欲使 CPU 仅访问外部数据存储器(地址为0000HFFFFH) ,EA 端必须保持低电平(接地) 。需注意的是:如果加密位LB1 被编成,复位时内部会锁存 EA 端状态。如 EA 端为高电平(接 Vcc 端) ,CPU 则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上 +12V 的编程允许电源 Vpp,当然这必须是该器件使用 12V 编程电压 Vpp。(10)XTAL1 :振荡器反相放大器及内部时钟发生器的输入端。(11)XTAL2 :振荡器反相放大器的输出端。3.2 各模块电路图3.2.1 单片机最小应用系统电路设计单片机系统是整个硬件系统的核心,它即协调整机工作,又是数据处理器,XXXX 大学本科毕业设计(说明书)8是软硬件系统连接的桥梁,AT89C51 是一个低电压,高性能 CMOS 8 位单片机带有4K 字节的可反复擦写的程序存储器(PENROM)和 128 字节的存取数据存储器(RAM) ,这种器件采用 ATMEL 公司的高密度、不容易丢失存储技术生产,并且能够与 MCS-51 系列的单片机兼容。片内含有 8 位中央处理器和闪烁存储单元,有较强的功能的 AT89C51 单片机能够被应用到控制领域中。因此,我们选用AT89C51 单片机来满足我们程序的要求。单片机最小应用系统电路包括以下的两个部分:时钟电路和复位电路。如图 3-1 所示。1、 时钟电路 单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。MCS-51 单片机内部有一个用于构成振荡器的高增益反向放大器,引脚 XTAL1 和 XTAL2 分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式。2、 复位电路 为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位后可使 CPU 及系统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要 RST 引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果 RST 引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出 (1/0)端口寄存器置为 FFH,堆栈指针 SP 置为 07H, SBUF 内置为不定值,其余的寄存器全部清 0,内部 RAM 的状态不受复位的影响,在系统上电时 RAM 的内容是不定的。复位操作有两种情况,即上电复位和手动( 开关) 复位。本系统采用上电复位方式。XXXX 大学本科毕业设计(说明书)9图 3.2 最小应用电路3.2.2 输入模块电路设计单片机上输入点引脚的分配:P1.0水箱上位开关 K1;P1.1水箱下位开关 K2;P1.2 出水按钮 K3;P1.3入水按钮 K4。其电路图如图 3.3 所示XXXX 大学本科毕业设计(说明书)10图 3.3 输入电路3.2.3 输出模块电路设计单片机上输出点引脚的分配:P2.0缺水指示灯 D;P2.1 净水电磁阀P;P2.2 消毒电磁阀 C2;P2.3 进水电磁阀 C1;P2.4 出水泵P;P2.5 臭氧发生器 F。其电路图如图 3.4 所示图 3.4 输出电路图XXXX 大学本科毕业设计(说明书)114 家庭健康供水装置自动控制系统软件设计4.1 控制过程设计本家庭自动供水装置控制系统分无人操作和有人操作两种模式:1)无人为操作下:1、如果下水位没水(K2 断开) ,加水(C1 和 F 打开)2、如果 10 秒过后,下水位还没水,停止进水(C1 和 F 关) ,报警3、如果 1 分钟后,上水位没水,停止进水(C1 和 F 关) ,报警4、若上水位有水,停止进水(C1 和 F 关)2) 人为操作下:停止加水(C1 和 F 关)A,出水1、出水按钮(K3)第一次触发,若水箱有水(K2 闭合) ,停止消毒,打开出水阀 C3,启动水泵 P2、出水按钮(K3)再次触发,关闭出水阀 C3,停止水泵 P3、若水箱没水,停止出水,关闭出水阀 C3,停止水泵 PB,消毒1、消毒按钮(K4)第一次触发,若水箱有水(K2 闭合) , ,停止出水,打开消毒电磁阀 C2,臭氧发生器 F,水泵 P2、出水按钮(K4)再次触发,关闭消毒阀 C2,停止水泵 P,关闭臭氧发生器3、若水箱没水,关闭消毒阀 C2,停止水泵 P,关闭臭氧发生器4.2 绘制流程图本系统在 Keil 中用 C 语言进行编程,来控制单片机对数据进行处理,根据上述控制过程绘制其总的程序流程图如图 4.1 所示。XXXX 大学本科毕业设计(说明书)12复位管脚初始化定时器初始化消毒排水正常缺水消毒处理排水处理加水是否是是 否否定时器 0 中断报警处理正常加水计数放水或消毒计数图 4.1 总的系统程序流程图4.3 Keil 软件编程运用 keil uvision2 进行编程时,具体的步骤如下:1、新建一个工程打开 keil uvision2 软件,在菜单栏上选择 project 菜单下的 new project (新建一个工程) 选择工程存储存位置,我们新建一文件夹,然后把工程保存在这一文件夹里面,保存之前先输入文件名如:how138,如图 4.2。XXXX 大学本科毕业设计(说明书)13图 4.2 新建工程点击保存之后会弹出选择芯片对话框,我们要用的是 AT89C51 单片机,所以选择 ATMEL 公司的 AT89C51 单片机即可,然后单击确定,如图 4.3。图 4.3 选择单片机型号软件会弹出提示框:问你是否添加默认代码,我们不需要所以选择否,如图XXXX 大学本科毕业设计(说明书)144.4。这样一个工程框加就建立好了。图 4.4 确认对话框2、新建源程序文件(本例使用汇编语言)选择菜单 File 下面的 New (新建源程序文件)如图 4.5。在代码编辑框中输入代码如图 4.6 所示,可以根据需要输入自已的代码。输入完成之后点击保存,并输入文件名:Text1.a (注意:要输入后缀名,因为是汇编所以使用 a 为后缀名),把文件保存在工程文件夹所在的目录里。然后关才源程序编辑框,这一步完成。图 4.5 新建源程序文本XXXX 大学本科毕业设计(说明书)15图 4.6 代码输入文本框3、 把源程序添加到工程中在文件列表里选择 Source Group 1 然后单击右键,在弹出的菜单里选择 Add file to Group (添加源程序)如图 4.7(a),弹出选择源程序对话框,我们选择择文件类型为 *.s *.src *.a 这一项如图 4.7(b) ,然后找到第二步建立的源程序 Text1.a ,选择之后单击 ADD 按钮一次,最选择择关闭。此时源程序已经添加到工程中在文件列表中可以看到XXXX 大学本科毕业设计(说明书)16图 4.7 添加源文件到工程4、 编译并生成 Hex 文件接下来就是对源程序进行编译了,如果代码输入正确之后会提示编译成功。XXXX 大学本科毕业设计(说明书)17结论本设计介绍了基于单片机的家用健康供水装置的应用,采用单片机 AT89C51 作为控制器,使系统既能满足精度要求,又能兼顾顾客的价格需要。该系统主要实现了实现供水装置的自动上水、自动完成水质净化、直饮水和消毒水自动协调供应、并具备缺水和漏水等故障报警、处理保护功能。系统动作准确,提高了资源的利用率,大有推广应用的价值。经调试验证,本系统已基本完成任务要求,达到了预期目的,在以后的生产生活中有较好的应用前景。XXXX 大学本科毕业设计(说明书)18致 谢随着毕业设计的结稿,我们精彩的大学生活也将画上句号。在本次设计中,我们教研室各位老师都对我们进行了精心的指导,从下达任务书到开题,再到设计,一直到最终的结稿都尽心尽责,使我们对四年所学内容有了更加深刻的理解,同时掌握了把理论运用到实践当中的技巧。我在设计的过程中,董老师以严谨的治学作风、扎实的理论基础和渊博的专业知识使我受益匪浅,在这里,非常感谢董老师的精心指导!在长达半年的设计过程中,董老师一直耐心地对我们进行指导,大到课题提纲,小到细节连线都无微不至的关心着我们的设计。在设计过程中通过自己坚持不懈地努力和小组成员的帮助下,整个设计按预期目标已基本完成。其中很多问题是通过和小组其他人员讨论才得到解决,在这里,感谢小组成员对我的大力支持,不仅在设计技术方面帮助了我,同时在精神上支持我。同时感谢本系我们提供了优良的实验室,实验室内器材丰富,设备先进,完全满足了我们设计所需的基本要求,实验室老师也对我们进行了实验指导,使我们在实验过程中能更加娴熟的操作,大大增快了我们的设计进度,非常感谢系里领导和老师为我们提供的优良环境和为我们提供的经典指导。感谢我的父母及家人,没有您们这么多年含辛茹苦的教导,把我抚养长大,就没有我今天丰富多彩的生活,我也不会顺利的完成本次设计,我将会更加努力的学习、工作报答您们的养育之恩。半年的毕业设计生活已接近尾声,但老师和同学们的形象却永远留在我们心中,人生中最闪亮的四年将影响我的一生,充实而多彩的毕业设计时光将在我的人生旅途中永放光芒!XXXX 大学本科毕业设计(说明书)19参考文献1张俊谟单片机中级教程原理与应用M北京:北京航空航天大学出版社, 20082陈立周,陈宇单片机原理及应用M北京:机械工业出版社, 20083蒋辉平,周国雄基于 Proteus 的单片机系统设计与仿真实例M北京:机械工业出版社,20094张克弄数字电子技术基础M北京:高等教育出版社, 20035梁贺青增强核内存 80C51 教程M北京:电子工业出版社,20036高峰单片微机应用系统设计及应用技术M北京:机械工业出版社, 20047张迎新单片机原理及应用M北京:电子工业出版社, 20048杜树春单片机 C 语言编程 MCS-51 单片机原理与应用 M北京:北京航空航天大学出版社,20069胡伟,季晓衡单片机 C 程序设计及应用实例M北京:人民邮电出版社,200310张靖武单片机系统的 PROTEUS 设计与仿真M北京:电子工业出版社,200711范风强,兰婵丽单片机语言 C51 应用实践集锦M北京:电子工业出版社,200312林志琦,等基于 Proteus 的单片机可视化软硬件仿真M北京:北京航空航天大学出版社,200613石东海单片机数据通信技术从入门到精通M西安:西安电子科技大学出版社,200214周润景,张丽娜基于 PROTUES 的电路及单片机系统设计与仿真M北京:北京航空航天大学出版社,200615求是科技单片机通信技术与工程实践M北京:人民邮电出版社, 200516秦晓梅,陈育斌单片机原理综合实验教程M大连:大连理工大学出版社, 200417严天峰单片机应用系统设计与仿真调试M北京:北京航空航天大学出版社,200518张培仁基于 C 语言编程 MCS-51 单片机原理与应用 M北京:清华大学出版社,200219赵文博,刘文涛单片机语言 C51 程序设计M北京:人民邮电出版社,200320Dallas Semiconductor CorporationDS2430A 256-Bit 1-Wire EEPROMDallas XXXX 大学本科毕业设计(说明书)20Semiconductor corporation21李光飞,等单片机课程设计实例指导M北京:北京航空航天大学出版社, 200422求实科技单片机典型外围器件及应用实例M北京:人民邮电出版社, 200523沙占友,等单片机外围电路设计M北京:电子工业出版社,2006附录 1 系统 C 语言程序清单#include/*P1.0 水箱上位开关 K1P1.1 水箱下位开关 K2P1.2 出水按钮 K3P1.3 入水按钮 K4P2.0 缺水指示灯 DP2.1 净水电磁阀 PP2.2 消毒电磁阀 C2P2.3 进水电磁阀 C1P2.4 出水泵 PP2.5 臭氧发生器 F工作流程:无人为操作下:1、如果下水位没水(K2 断开) ,加水(C1 和 F 打开)2、如果 10 秒过后,下水位还没水,停止进水(C1 和 F 关) ,报警3、如果 1 分钟后,上水位没水,停止进水(C1 和 F 关) ,报警4、若上水位有水,停止进水(C1 和 F 关)人为操作下:停止加水(C1 和 F 关)A,出水1、出水按钮(K3)第一次触发,若水箱有水( K2 闭合) ,停止消毒,打开出水阀 C3,启动水泵 P2、出水按钮(K3)再次触发,关闭出水阀 C3,停止水泵 P3、若水箱没水,停止出水,关闭出水阀 C3,停止水泵 PB,消毒1、消毒按钮(K4)第一次触发,若水箱有水( K2 闭合) , ,停止出水,打开消毒电磁阀 C2,臭氧发生器 F,水泵 P2、出水按钮(K4)再次触发,关闭消毒阀 C2,停止水泵 P,关闭臭氧发生器3、若水箱没水,关闭消毒阀 C2,停止水泵 P,关闭臭氧发生器*/#define F_ P2_5 /=1 臭氧发生器开, =0 臭氧发生器关#define C_1 P2_4 /=1 进水电磁阀开, =0 进水电磁阀关#define C_2 P2_3 /=1 消毒电磁阀开, =0 消毒电磁阀关#define C_3 P2_2 /=1 净水电磁阀开, =0 净水电磁阀关#define P_ P2_1 /=1 出水水泵开,=0 出水水泵关XXXX 大学本科毕业设计(说明书)21#define D_ P2_0 /=1 缺水指示灯开, =0 缺水指示灯关/#define MS_50_H 0X9c#define MS_50_L 0X40#define S_2 50#define S_10 250#define S_60 1300/typedef structunsigned char key1;unsigned char key2;unsigned char key3;unsigned char K3_mark;unsigned char key4;unsigned char K4_mark;unsigned char K3_first;unsigned char K4_first;unsigned char C1_mark;unsigned char C2_mark;unsigned char C3_mark;unsigned char Alarm;STRCUT_KEY;STRCUT_KEY KEY;/typedef structunsigned int count_k1;unsigned char count_k2;unsigned char count_led;STRCUT_COUNT;STRCUT_COUNT Count;/进水开/#define KEY1_ON() C_1 = 1;F_ = 1;/进水关/#define KEY1_OFF() C_1 = 0;F_ = 0;/出水开/#define KEY3_ON() C_3 = 1;C_2 = 0;P_ = 1;/出水关/#define KEY3_OFF() C_3 = 0;P_ = 0;/消毒开/#define KEY4_ON() C_2 = 1;F_ = 1;C_3 = 0;P_ = 1;/消毒关/#define KEY4_OFF() C_2 = 0;F_ = 0;P_ = 0;void Delay_ms(unsigned char n);void Key_check(void);XXXX 大学本科毕业设计(说明书)22void Time0_Init(void);void Init(void);void Twinkle(void);void Key2(void);void Key3(void);void Key4(void);void Pattern(void);/*定时器 0 初始化 Time0_init()*/void Time0_Init(void)TMOD = 0X01; /设置 50ms 中断IE = 0X82;TH0 = MS_50_H;TL0 = MS_50_L;TR0 = 1;/*定时器 0 中断*/void Time0_Int() interrupt 1TH0 = 0XC3;TL0 = 0X50;if (KEY.C1_mark=1) /若 C1 打开,开始计时Count.count_k1+;if(Count.count_k110000)Count.count_k1=2000;else Count.count_k1=0;if(KEY.C2_mark=1)|(KEY.C3_mark=1)Count.count_led+;/*程序初始化 Init()*/void Init(void)P1 = 1;P2 = 0;EA = 0;/*延时 ms 函?Delay_ms()*/void Delay_ms(unsigned char n)unsigned int i=0;while(n-)for (i=0;iS_10)&(KEY.key2=0)|(Count.count_k1S_60)&(KEY.key1=0) /若是接通 C1 10 秒钟后,key2 无反应,或接通 C1 1 分钟后 K1 无反应,报警KEY1_OFF();Twinkle();KEY.Alarm = 1;else /按下消毒或排水键XXXX 大学本科毕业设计(说明书)25if (Count.count_k2S_2) /若 K2 闭合 2 秒钟,断开C2、C3、P、FCount.count_k2 = 0;C_2 = 0;C_3 = 0;F_ = 0;P_ = 0;void main(void)Delay_ms(100); /开机延时Init(); /初始化Time0_Init(); /定时器 0 初始化while(1)Key_check(); /检测按键Key3(); /K3 处理Key4(); /K4 处理Pattern();XXXX 大学本科毕业设计(说明书)26附录 2 系统电路图XXXX 大学本科毕业设计(说明书)27附录 3 PCB 板图
展开阅读全文