首页 基于单片机的智能插座的设计(含完整C程序和电路图)_毕业论文

基于单片机的智能插座的设计(含完整C程序和电路图)_毕业论文

举报
开通vip

基于单片机的智能插座的设计(含完整C程序和电路图)_毕业论文 毕 业 论 文(设 计) 题 目 基于单片机的智能插座的设计 基于单片机的智能插座的设计 作者: ) 指导教师: [摘要]:本文主要描述了一个定时插座的设计与制作。定时插座可以弥补现实生活中普通插座功能的不足,能够通过外设按键设置两组开关定时时段和6组倒计时定时,同时也能够通过红外遥控进行无线控制,使外接电器可以按照一定规律工作,既可以达到智能控制的目的,又在很大程度上起到节能的作用。 [关键词]:STC89C52;定时;插座;红...

基于单片机的智能插座的设计(含完整C程序和电路图)_毕业论文
毕 业 论 文(设 计) 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目 基于单片机的智能插座的设计 基于单片机的智能插座的设计 作者: ) 指导教师: [摘要]:本文主要描述了一个定时插座的设计与制作。定时插座可以弥补现实生活中普通插座功能的不足,能够通过外设按键设置两组开关定时时段和6组倒计时定时,同时也能够通过红外遥控进行无线控制,使外接电器可以按照一定规律工作,既可以达到智能控制的目的,又在很大程度上起到节能的作用。 [关键词]:STC89C52;定时;插座;红外;继电器 The design of timing socket based on microcontroller Author: ( ) Tutor: Abstract: This paper mainly describes the design and production of a timing socket. The timing socket could compensate for the shortage of the common socket .It also could set any timing in a day and six groups of fast timing by the key. At the same time, it could also be remotely controlled by infrared controller, so that home appliances could work on rules. In this way, it can achieve the purpose of being intelligently controlled and will largely save the electric energy. Keywords: STC89C52; Timing; Socket; Infrared; Relay 目 录 11.绪论 11.1 课题研究的背景及意义 11.2 课题研究的现状及发展趋势 31.3 本文主要研究内容 42. 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 的提出及论证 42.1方案的提出 52.2方案的比较 52.3方案的确定 63.硬件电路设计 63.1主控制器及最小系统 93.2稳压电源模块 103.3时钟电路 123.4显示电路 143.5控制模块 143.6 温度采集模块 164.软件设计 174.1 DS1302计时程序 194.2 LCD1602显示电路程序 204.3 DS18B20测温电路程序 215.仿真与调试 245.1 硬件调试 245.2 软件调试 255.3 小结 276.结束语 28参考文献 29致谢 附录A 外文文献及翻译 附录B 源程序 附录C 硬件连接图 附录D 实物图 1.绪论 1.1 课题研究的背景及意义 随着社会科技的不断进步,各式各样的电子产品已经慢慢融入到了我们的生活,这也就意味着我们需要更多的能源来维持我们的生活正常的进行,但是,这个社会是一个能源逐渐枯竭的社会,节约能源又成为了这个社会的主题。所以,为了解决这样一对矛盾,我们了解到,越来越多的产品有了待机功能,如电视机,电脑,冰箱,空调等家用电器。据调查,我国城市家庭的平均待机能耗,相当于每个家庭每天都在亮着一盏15瓦到30瓦的长明灯。据测算,家电待机能耗占到中国家庭电力消耗的10%以上。而正是由于这种长期的待机状态,使得插座的负荷也越来越大,带来了非常严重的安全隐患。除此之外,也使得电器的寿命大大缩短。 因此,在本次设计中我们就要对家庭中普通的插座进行更加智能化的设计,我们利用单片机对继电器的控制来达到控制插座通断的目的,并可以通过外设键盘对插座进行定时设置,使其可以按照我们的意愿定时通断。在定时功能的基础上,加上了测温模块、过载保护和防雷模块。 所以此次的设计具有以下意义: 1) 节约能源; 2) 消除安全隐患; 3) 延长家用电器的使用寿命; 4) 使人们的生活更加方便,简单。 1.2 课题研究的现状及发展趋势 现在市场上的220V移动式电源插座大部分功能单一,只能简单的实现电源的通断,小部分可以实现定时,但大都是机械式的,而不能根据使用者的意愿编程设定时间自动通断,有时满足不了人们的需求。智能可编程开关插座则可以实现定时可编程,通过编程定时,自动接通和断开,给人们生活带来很大方便,得到了广泛应用。 目前市场上比较好的智能插座有小管家智能插座、科德牌智能插座、POLYHOME智能插座、博联智能插座等等。其中,小管家智能插座采用智能芯片系统及其相关的程序控制软件对电器进行协调控制,智能关机,将待机能耗降为零,以达到安全节能的目的。它可以在电器遥控关机后自动切断电源,遥控开机时,能自动接通电源,从而达到安全、节电的效果。它还具有消除待机能耗、智能化保护功能、避免电磁波辐射、有效防雷击冲击的特点。科德TW-L12采用大屏液晶显示,可以进行定时设定,最小设定时间为1分钟,每天最多可设置20组开与关,每周可设置140组。并且具有模式功能,随时可切换到长通或定时状态。而POLYHOME智能插座是北京博力恒昌科技有限公司生产的智能家居产品之一。它主要的特点是内嵌Zigbee无线接收模块,可以对它进行无线遥控,智能控制一些家用电器,比如开关空调、开关电饭煲等,也可以与普通插座互换。对于比较先进的博联智能插座,它是基于Wi-Fi通讯,可实现任何时间、任何地点通过智能手机随心所欲的控制家中、办公室的电器。 随着单片机技术的不断发展,智能插座的功能也在不断的更新。由于单片机具有优异的性能性价比,集成度高、体积小、可靠性高,控制功能强,低电压、低功耗等特点,以及单片机控制电路技术的发展使智能插座具有定时准确、性能稳定、携带方便等优点。因此智能可编程开关插座发展迅速,得到了很广泛的应用。所以,智能插座会朝着微型化、低功耗、无线遥控、语音控制等更加智能数字化的方向发展,让人们的生活更加便捷。再具体说,以后智能插座的发展,在节能的基础上,质量要稳定,插座本身耗能要小,这是发展的必要趋势。同时可加上其他一些功能,像USB接口,这样一来,手机,MP3等电器充电机会更加方便;语音功能,让操作更加方便;也可加上温度测量显示功能,让这个插座实现更多的功能,使得智能插座体积小但功能更强大,携带也更加方便。 而目前智能插座的实现 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 有机械式定时插座、基于单片机的定时器功能实现插座的智能定时、还有采用现成的智能芯片。机械式定时插座是通过转动刻度盘,来设定定时时间,比如科德TW-A07的22小时倒时定时器;而基于单片机的智能插座是通过用单片机控制继电器的通断来控制插座的开关,即通过单片机编程实现智能定时;而采用智能芯片的节能插座是通过芯片直接感应来实现智能通断电,从而达到消除待机功耗的目的;还有一种比较先进的,基于Wi-Fi通讯,只要家中有无线路由器,插座就会自动寻找网路,用户只需输入上网密码即完成配置,通过智能手机在全球任何地点都可以控制。 智能插座有效地解决了待机能耗的问题,从而提高终端用电设备的使用寿命,促进我国节电降耗产品领域的发展。也消除了生活中的很多安全隐患。可达到适用于彩电、电脑、空调等用电领域的较高技术指标与节电能力。而随着技术的不断发展,对智能插座的承受功率不断地增高完善,智能插座除了广泛应用于家用电器外,还会更多的应用到工业领域。 1.3 本文主要研究内容 在本次设计中我们就要对家庭中普通的插座进行更加智能化的设计,我们利用单片机对继电器的控制来达到控制插座通断的目的,并可以通过外设键盘和红外遥控对插座进行定时设置和温度设置,使其可以按照我们的意愿定时通断。在定时定温功能的基础上,加上了过载保护和防雷模块。 2.方案的提出及论证 2.1方案的提出 方案一:设计一个以单片机STC89C52控制的定时开关插座,能控制一路220V/10A的插座,使其可以在24小时内能预先设定定时范围,每天周而复始地控制用电器具的自动开启和关闭,因为是通过时钟芯片来定时,所以更加准确。同时还能通过红外遥控随时控制插座的开关,从而达到方便、智能、节电的目的。其系统框图如图2.1所示: 图2.1 基于单片机的智能插座框图 方案二:设计一个定时开关,通过拨码开关预置一个时间,再通过计数器倒计时方式进行计数,当到达某一个时间时,发出一个信号,进而来控制电器的工作。具体原理是由555组成秒脉冲发生器,再由CD40192构成一个倒计时的计时器,通过一个拨码开关预设时间,最后数码管显示,蜂鸣器报警。其设计框图如图2.2所示: 图2.2 数字式定时开关 2.2方案的比较 方案一和方案二均可实现插座的定时。若用数字电路完成,所设计的电路相对复杂,需要更多的数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,其精度也不如单片机和时钟芯片配合的准确,由于元件较多,焊接过程也会比较复杂,成本也高。而单片机控制更加灵活,功能更加强大,可编程性也更高,因为用单片机主要是软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也相对降低。 2.3方案的确定 通过上述方案的比较,用单片机进行定时插座的设计比数字电路更加准确灵活,功能更加强大,成本相对更低,硬件复杂性也更小,所以,综合各方面因素,本设计采用方案一。 3.硬件电路设计 定时插座系统在未设置任何定时的时候显示界面显示时间,通过按键设置可设置在24小时内的两组定时开关时间和六组一小时内的固定模式定时,分别控制插座的开关,从而控制外部电器的工作与否。 总体的硬件电路框图如图3.1所示: 图3.1 硬件电路框图 3.1主控制器及最小系统 STC89C52是宏晶公司生产的40引脚双列直插芯片,单片机片内集成512字节程序运行空间、8K字节Flash存储空间支持最大64K外部存储扩展。根据不同的运行速度和功耗的要求,时钟频率可以设置在0-33M之间。片内资源有4组I/O控制端口、3个定时器、8个中断、软件设置低能耗模式、看门狗和断电保护。可以在4V到5.5V宽电压范围内正常工作。具有许多独特的优点,即体积小、重量轻、单一电源、低功耗、功能强、价格低廉、运算速度快、抗干扰能力强、可靠性高等,所以特别适用于实时测控系统,应用领域很广,已成为传统工业技术改造,各类产品跟新换代,实现自动化智能化的理想模型。 其内部包含以下功能部件: a.8位CPU; b.振荡器和时钟电路; c.8k字节的程序存储器EPROM; d.256字节的数据存储器RAM; e.可寻址外部存储器和数据存储器各64字节; f.20多个特殊功能寄存器; g.32线并行I/O口; h.一个全双工串行I/O口; i.3个16位定时器/计时器; 图3.2 DIP-40封装STC89C52引脚图 P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻。 P1口:P1口是一个具有内部上拉电阻的8位双向I/O口。P1输出缓冲器能驱动4个TTL逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。 P2口:P2口是一个具有内部上拉电阻的8位双向I/O口。P2输出缓冲器能驱动4个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入口使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。 P3 口:P3口是一个具有内部上拉电阻的8位双向I/O口。P3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。 RST——复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。 单片机最小系统如图3.3所示: 图3.3 单片机最小系统仿真图 最小系统中包括晶振电路和复位电路,其中复位电路采用手动按键复位,来应对系统在运行过程中发生程序跑飞的情况。 复位电路通常分为两种:上电复位(图3.4)和手动复位(图3.5)。 图3.4 上电复位 图3.5 手动复位 3.2稳压电源模块 本设计用到78L05稳压芯片。设计中的继电器是比较耗电的器件,而且如果电量不足会使得继电器无法工作,因为通过78L05稳压芯片把9V电源稳压输出5V给单片机供电。78LXX系列是三端正电源稳压电路,封装形式为TO-220。 它具有一系列固定的电压输出,应用非常广泛。每种类型由于内部电流的限制,以及过热保护和安全工作区的保护,使它基本不会损坏。如果能提供足够的散热片,它们就能够提供大于1.5A的输出电流。当接入适当的外部器件后就能获得各种不同的电压和电流。 如图3.6,78L05具有以下特点: a. 最大输出电流为1.5A; b.输出电压为5V; c.热过载保护; d.短路保护; e.输出晶体管安全工作区保护; 1脚:输入 2脚:接地 3脚:输出 图3.6 78L05 具体的5V电源电路如下图3.7所示: 图3.7 电源电路 3.3时钟电路 系统采用DS1302作为计时器,从而实现定时插座能在24小时内实现任意时间的可变定时和一小时内的固定模式定时。这样可以使得定时准确,方便,节约系统资源,同时程序编写上也能相对简单。 DS1302 是高性能时钟芯片,具有以下特性: 实时时钟,可对秒、分、时、日、周、月、以及带闰年补偿的年进行计数; 用于高速数据暂存的31*8RAM; 最少引脚的串行I/O; 2.5-5.5V满肚工作范围; 2.5V时耗电小于300nA; 用于时钟或数据读/写的单字节或多字节数据传送; 8引脚DIP或可选的用于表面的8引脚SOIC封装; 简单的3线接口; TTL兼容(VCC=5V); 可选的工业温度范围-40℃至+85℃; 在DS1202基础上增加的特点: ——可选的慢速充电的能力; ——用于主电源和备份电源的双电源引脚; ——备份电源引脚可用作电池或超容量电容器的输入端; ——附加的告诉暂存存储器(7字节)。 图3.8为DS1302的芯片引脚图。 表3.1为DS1302各引脚的功能。 图3.3.1 DS1302的芯片引脚图 图3.8 DS1302的芯片引脚图 DS1302各个引脚的功能可以通过表3.1表示,其中有主电源、备用电池、振荡器、数据输入/输出端口、复位端口和串行时钟端口。 图3.9为本设计中时钟芯片和单片机的连接电路,5、6、7引脚分别接在了单片机的P05、P06、P07口。备用电池采用了3v的纽扣电池。 表3.1 DS1302引脚功能 引脚号 引脚名称 功能 1 VCC2 主电源 2、3 X1、X2 振荡器,外接32.768HZ晶振 4 GND 电源地 5 RST 复位 6 I/O 数据输入/输出(双向) 7 SCLK 串行时钟 8 VCC1 后备电源 图3.9 DS1302电路图 3.4显示电路 本设计采用的是LCD1602字符型液晶显示器。LCD液晶显示器是一种低功耗的显示器件,它广泛应用于工业控制、消费电子及便携式电子产品中。它不进省电,而且能够显示大量的信息,如文字、曲线、图形、动画等,其功能比数码管强大得多。 LCD1602液晶显示模块可同时显示16*2即32个字符,内部含有的字符发生存储器里面存储了160个不同的点阵字符图形,包括阿拉伯数字、英文字母的大小写、常用的符号和日文的片假名等,每个字符都有一个固定的代码,比如大小写英文字母的A的代码是01000001B(41H),显示模块在显示A时就把地址41H中的点阵字符图像显示出来,我们就能看到屏幕显示字母A了。表3.2为LCD1602引脚定义: 表3.2 LCD1602引脚定义 引脚号 引脚名 电平 输入/输出 作用 1 Vss 电源地 2 Vcc 电源(+5V) 3 Vee 对比调整电压 4 RS 0/1 输入 0=输入指令 1=输入数据 5 R/W 0/1 输入 0=向LCD写入指令或数据 1=从LCD读取信息 6 E 1,1→0 输入 使能信号,1时读取信息, 1→0(下降沿)执行命令 7 DB0 0/1 输入/输出 数据总线line0(最低位) 8 DB1 0/1 输入/输出 数据总线line1 9 DB2 0/1 输入/输出 数据总线line2 10 DB3 0/1 输入/输出 数据总线line3 11 DB4 0/1 输入/输出 数据总线line4 12 DB5 0/1 输入/输出 数据总线line5 13 DB6 0/1 输入/输出 数据总线line6 14 DB7 0/1 输入/输出 数据总线line7(最高位) 15 A +Vcc LCD背光电源正极 16 K 接地 LCD背光电源负极 3.5控制模块 本设计采用的是型号为SONGLE SRD-05VDC-SL-C的继电器,5V继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用,实现小电压控制大电压的目的。在本系统中,主要是用于控制插座的开关状态,通过单片机I/O输出信号控制继电器的工作已否从而达到控制插座开关的目的。 3.6 温度采集模块 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单、体积小、低功耗、高精度、抗干扰能力强等特点的数字温度传感器。 DS1820数字温度计提供9位(二进制)温度读数,指示器件的温度。信息经过单线接口送入DS1820或从DS1820送出,因此从主机CPU到DS1820仅需一条线(和地线)、DS1820的电源可以由数据线本身提供而不需要外部电源。因为每一个DS1820在出厂时已经给定了唯一的序号,因此任意多个DS1820可以存放在同一条单线总线上。这允许在许多不同的地方放置温度敏感器件。DSI820的测量范围从一55℃到+125℃增量值为0.5℃,可在1s(典型值)内把温度变换成数字每一个DS1820包括一个唯一的64位长的序号,该序号值存放在DS1820内部的ROM(只读存贮器)中。开始8位是产品类型编码(DS1820编码均为10H)、接着的48位是每个器件唯一的序号、最后8位是前面56位的CRC(循环冗余校验)码。DS1820中还有用于贮存测得的温度值的两个8位存贮器FAM编号为0号和1号。1号存贮器存放温度值的符号,如果温度为负(℃).则1号存贮器8位全为1,否则全为0。0号存贮器用于存放温度值的补码,LSB(最低位)的“1"表示0.5℃。将存贮器中的二进制数求补再转换成十进制数并除以2就得到被测温度(-550℃一125℃). DS1820的引脚如图3.10所示、每只DS1820都可以设置成两种供电方式.即数据总线供电方式和外部供电方式。采取数据总线供电方式可以节省一根导线,但完成温度测量的时间较长,采取外部供电方式则多用一根导线,但测量速度较快。 1.GND:地; 2.DQ:数字输入/输出; 3.VDD:可选的+5V电源。 图3.10 DS18B20的引脚图 4.软件设计 本设计中用到的单片机是STC89C52,为了使编写的程序更加简单明了,采用C语言进行编程,用Keil软件进行编译,STC—ISP软件进行下载。 软件设计部分包括液晶显示程序、DS1302计时程序、DS18B20测温程序,独立式按键处理程序等。由于定时设置是通过独立式按键进行设置的,程序在按键扫描部分相对重要。在检测到被设置了定时任务时,系统要检测是否到达定时时间,执行相应的动作。图4.1为主程序流程图: 图4.1 主程序流程图 4.1 DS1302计时程序的编写 DS1302串行时钟芯片的主要组成部分:移位寄存器控制逻辑、振荡器、实时时钟以及RAM。为了初始化任何的数据传送,把RST置为高电平且把提供地址和命令信息的8位装入到移位寄存器中。数据在SCLK的上升沿串行输入。无论是读周期还是写周期发生,也无论传送方式是单字节传送还是多字节传送,开始8位指定的40个字节中的那个将被访问。在开始8个时钟周期把命令字装入移位寄存器之后,另外的时钟在读操作时输出数据,在写操作时输入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加最大可达248的数。 DS1302总共有12个寄存器,其中的7个寄存器分别与日历、时钟相关,存放的数据位为BCD码形式。表3为它的日历、时间寄存器及控制字,其中奇数为读操作,偶数为写操作。 表4.1为寄存器地址和内容: 表4.1 寄存器地址和内容 写寄存器 读寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 秒 80H 81H CH 10秒 秒 分 82H 83H 0 10分 分 小时 84H 85H 12/2 4 0 10 A/P 时 时 日 86H 87H 0 0 10日 日 月 88H 89H 0 0 0 10月 月 星期 8AH 8BH 0 0 0 0 0 星期 年 8CH 8DH 10年 年 控制 8EH 8FH WP 0 0 0 0 0 0 0 如图4.2为DS1302的命令字节,每一数据传送由命令字节初始化。最高位有效位MSB必须为1。如果它是零,禁止写DS1302,位6为逻辑0指定时钟日历数据;逻辑1指定RAM数据。位1和5指定进行输入或输出的特定寄存器。最低位LSB 为逻辑0指定进行写操作;逻辑1指定进行读操作,命令字节总是从最低有效为LSB开始输入。 7 6 5 4 3 2 1 0 1 RAM/CK​​​ A4 A3 A2 A1 A0 RD/W 图4.2 DS1302的命令字节 如图4.3为1302的程序流程图: 图4.3 DS1302实时时间流程图 4.2 LCD1602显示电路程序编写 这部分的显示过程主要是显示从DS1302读取的日历和时钟数值,从DS18B20读取温度值,同时当检测到独立式按键有键按下时,显示相应的设置菜单等。 基本操作时序: 读状态:输入:RS=L,RW=H,E=H 输出:DO~D7=状态字 写状态:输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲 输出:无 读数据:输入:RS=H,RW=H,E=H 输出:DO~D7=数据 写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲 输出:无 1602显示流程图如图4.4所示: 图4.4 1602显示流程图 4.3 DS18B20显示电路程序编写 DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。其设计流程图如图4.5所示。 图4.5 温度采集子程序流程图 5.仿真与调试 5.1系统的仿真 本次设计仿真调试所用的软件是keil和protues.其中,keil用来编写和调试程序,protues用来搭建原理图并进行仿真。在使用这两个软件时,都遇到了一些问题,例如在使用protues进行原理图绘制的时候,有些器件很难找到,这就会浪费很多时间,所以,最后在网上下载了一个protues元件对照表,这个问题就得到了解决。在使用keil编程的时候,问题主要出在编译时,因为这次设计程序代码比较长,所以在开始编译时,会出错,提示是因为代码太长,开始不知道该怎么办,最后通过百度后才知道是因为安装的keil软件没有破解,破解后问题迎刃而解。 图5.1 kell软件应用图 (1)点击project,设置一些软件目标选项: 图5.2 生成工程项目 点击“Project->New project”菜单,出现一个对话框,要求给将要建立的工程起一个名字,你可以在编缉框中输入一个名字,点击“保存”按钮,出现第二个对话框,按要求选择目标器件片。建立新文件并增加到组。分别设置“target1”中的“Target,output,debug”各项,使程序汇编后产生HEX文件。 (2)编译,调试系统程序 Keil 单片机模拟调试软件内集成了一个文本编辑器,用该文本编辑器可以编辑源程序。在集成开发环境中选择菜单“File → New...”、单击对应的工具按钮或者快捷键Ctrl +N 将打开一个新的文本编辑窗口,完成C语言源文件的输入,并且完成源程序向当前工程的添加。 然后在集成开发环境中选择菜单“File→Save As...”可以完成文件的第一次存储。注意,C语言源文件的扩展名应该是“.c”,它应该与工程文件存储在同一文件夹之内。在完成文件的第一次存储以后,当对C语言源文件又进行了修改,再次存储文件则应该选择菜单“File→Save”、单击对应的工具按钮或者快捷键Ctrl +S 实现文件的保存。 接着的工作需要把C语言源文件加入工程之中。选择工程管理器窗口的子目“Source Group 1”,再单击鼠标右键打开快捷菜单。在快捷菜单中选择“Add File to Group ‘Source Group 1’”,加入文件对话框被打开。在这个对话框的“查找范围(I)”下拉列表框中选择存储C语言源文件的文件夹,在“文件类型(T)” 下拉列表框选择“C Source file(*.a*;*.src)”,这时存储的C语言源文件将显示出来。双击要加入的文件名或者选择要加入的文件名再单击“Add”按钮即可完成把C语言源文件加入工程。文件加入以后,加入文件对话框并不消失,更多的文件也可以利用它加入工程。如果不需要加入其它文件,单击“Close”按钮可以关闭加入文件对话框。这时工程管理窗口的文件选项卡中子目录“Source Group 1”下出现一个C语言源文件。 需要注意,当把C语言源文件加入工程但还没有关闭加入文件对话框,这时有可能被误认为文件没有成功地加入工程而再次进行加入操作,系统将显示所需的文件已经加入的提示。在这种情况下,单击提示框中的“确定”按钮,再单击“Close”按钮可以关闭加入文件对话框。 (3) 编译源程序,出现错误时,返回上一级对错误更改后重新编译,直到没有错误为止。 其中需要注意是一些设置: 单片机设置: 图5.3 单片机属性设置图 其中是需要导入由KEIL软件生成的"*.hex"文件,再是时钟频率为12MHZ。 电源的设置:点击Design出现选项点击Configure Power Rails如下图所示的对话框: 图5.4 电源设置 设置电源为5V。 5.1 硬件调试 开始时是从面包板上搭接硬件电路,一切顺利,当用洞洞板焊接完成后,1602没有显示时间和温度,检查了很长时间才发现问题,因为使用排母,让18b20插在上面,所以,在插的时候插反了。而时钟也没有显示,所以检查1302是否有问题,检查完才发现1302忘了接地。通过不断地查找问题,然后一个一个解决,最终终于正常工作。 继电器部分的电路检查时开始用3节干电池给单片机供电,发现继电器无法工作,检查原因后才知道继电器的供电电压不足,因而用12V转5V的稳压电源时工作正常。 5.2 软件调试 在软件设计前,先把大致的程序流程理清,然后再分模块调试,将各模块部分的程序先调试可行后再整合到一起,编写主程序。 首先是LCD1602显示程序,通过编写过的程序掌握了1602的显示原理及其显示过程用到的指令如清屏,开关显示等。初步设计了显示器需要显示的显示菜单。然后通过独立式按键设置显示菜单,执行相应的功能。因为所有的设置在独立式按键处理上都要实现,使得按键处理程序必须有条不紊的编写,先列好按键处理的大致流程,需要设置的的显示菜单和各个按键按下后必须实现的菜单选项等。有了这些流程后才能在编程过程中减少一些不必要的麻烦。 在控制定时方面,开始只是让系统可以通过独立式按键设置一组定时开关时间,后面意识到可设置的定时组数太少,功能过于简单,就再加入了一组定时设置,使系统可以通过独立式按键设置两组定时开关时间。后来再经过多番考虑后发现。定时插座设置时间有时候需要快速定时,如果通过按键设置一定时间段的定时可能比较耗时,于是就加入了固定定时模式,可以在简单的操作中设置一个小时内的6组固定模式定时。因为按键处理这块加入了大部分的设置功能,所以编写过程比较费力,通过反复调试,系统已经可以达到预期的效果。 5.3 小结 通过一番努力,终于在此次设计中完成了预期设计任务。所设计的定时插座已经可以实现预期功能。该定时插座可以控制一路220V/10A的插座,可以设置在一天24小时内的两组任意定时开关时间和6组一小时内的固定模式定时;还可以通过温度上下限的设置,控制继电器稍的工作状态。定时插座工作时红色指示灯亮,不工作时指示灯不亮。 本次设计的定时插座虽然可以实现定时控制一路插座的功能,但是可定时的路数和定时组数仍然不够。现实生活中,随着人们的生活水平不断的提高,家电等用电器具越来越多,单一的一路控制明显不能满足要求。因而,如果在设计时多加入几路的插座控制,而且各路控制互不干扰,各司其职的话,用户只需要将要定时控制的用电器具都插在定时插座上,通过各自的定时设置,就可以使各电器按照人们的习惯有规律地工作,很大程度上方便人们的日常生活。同时,可以给定时插座加上保护措施,如漏电保护开关等,达到安全的目的。另外,本次设计中所使用的红外遥控器基本只能在同一室内控制插座,如果采用无线电遥控器 等更加先进的遥控器的话,人们或许就可以在室内的任何地方随时控制家电的开关状态了。再者,设计中的定时插座开关状态变换只是用单一红色指示灯体现,如果可以加入扬声器等反应更加明显的指示,甚至是自动语音指示等比较能引起人们注意的外部设备,会让定时插座变得更加人性化,实用性也更高。 6.结束语 本次毕业设计基于单片机的定时插座到此就告一段落了,所设计的硬件和软件都可以正常工作,各项设计均达到了设计任务的要求。定时插座已经可以完成一天24小时内的两组定时开关设置和六组一小时内的固定模式定时,还可以通过温度上下限的设置,控制继电器稍的工作状态。同时也可以通过红外遥控一键控制插座开关和设置固定模式定时。设计过程中有喜有忧,但是经过多次反复的问题分析和系统调试,还是解决了各个难题,也使我在设计电路及分析电路问题上学到了很多。而在编程上,通过这次设计,我对C语言编程有了进一步的熟悉,巩固了所学知识。但是,在这过程中,我也发现了自己所学知识的不足,在今后仍需不断努力学习。 参考文献 [1]徐伟.智能插座在智能家居系统中的设计和应用[J].中国仪器仪表,2010,(10) [2]黄界.基于AVR的智能节能插座的设计[J].现代电子技术,2010,(12) [3]王啸东.智能避雷定时插座的设计[J].电工电气,2010,(05) [4]张凯.新型数字节能功率分配型智能插座的设计实现[J].电子设计应用,2009,(07) [5]温铁钝 , 孙键国, 张天宏. 无线遥控智能插座的设计[J]. 测控技术 , 2003,(10) [6]方佩敏. 智能插座——DS1213B[J]. 今日电子 , 1996,(Z1) [7]王宏. 智能节电插座 省电就是省钱[J]. 现代营销(创富信息版) , 2008,(07) [8]杨妤. 打破行业格局 纽曼自创“节电插座”[J]. 中国品牌与防伪 , 2007,(10) [9]高全.节能插座[J].生意通,2005,(10) [10]张运波,刘淑荣.工厂电气控制技术[M].北京:高等教育出版社,2004. [11]燕庆明.电路分析教程[M].北京:高等教育出版社,2007. [12]姚文轩.多功能智能插座设计[J].企业技术开发,2010,(11) [13]张毅刚,彭喜元,彭宇.单片机原理及应用[M]. 北京: 高等教育出版社, 2010. [14]谭浩强.C程序设计[M].北京:清华大学出版社,2005. [15]殷志坚.电子工艺实训教程[M].北京:北京大学出版社,2007.9 [16] AT89C51 DATA SHEEP Philips Semiconductors 1999.dec [17] Rhee W.Design of high-performance CMOS charge pumps inphase-locked loops. IEEE International Symposium on Cir-cuits and Systems. 1999 致谢 本次设计是在杨帆老师的细心指导和关怀下顺利完成的。在此期间,杨老师定期召集同组人员开会指导工作,在整个设计中不断给予我们良好的建议,使我们的设计更加顺利。同时,这次设计业也离不开其他同学和老师的帮助,在硬件软件设计方面给我提供了不少建议和帮助,让我在设计过程中少走了不少弯路,更好得完成了设计。在此谨向他们表示衷心的感谢。 附录A 外文文献及翻译 智能家居的无线电源插座系统 宋光明,丁飞,张薇娟和宋爱国,电机及电子学工程师联合会会员 摘要 本文提出的设计是一个关于家庭自动化网络的无线可控的电源插座系统的实施。所提出的电源插座集成了一个ZigBee无线模块纳入其体系结构。它充当作为家庭自动化网络中的执行节点来进行远程控制。一个电源插座的样本模型已经随着所提出的框架被完成。一个用于验证电源插座模块基本功能的简单的家庭化自动化网络的测试平台也已经被建立。演示实验的结果表明,所提出的电源插座模块可以通过小型基础设施方便,灵活的控制各种家电。它可以帮助我们在家庭环境中迅速的添加更多的智能化。 索引词——智能家居,家庭自动化,电源插座,无线传感器和执行器网络。 1.简介 由于智能家居变得越来越受欢迎,人们需要更多的家庭自动化设备,以提升自己的生活空间和享受高科技的生活。他们想用更多的传感器和执行器装备他们的房子,以获得最佳的方便,安全和娱乐。当家里环境变得更智能,老人也可以住在自己的房子,以保持独立和隐私,尽可能避免太早进入养老院。 在最近几年,许多新的无线通信技术的快速发展导致了家庭自动化设备的翻新。实际应用的无线传感器网络是一个很好的例子。无线传感器网络的发展最初是出于军事应用如战场监视。无线传感器网络,现在用在许多其他应用领域,包括环境监测,医疗保健,家居自动化,交通控制。随着现已新发布的无线传感器网络ZigBee 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ,我们被赋予了更多的机会,建立无线控制和监测的应用程序,以至于可以保证低成本,低功耗,范围广和高可靠性。 电源插座可能是在现代家居环境中最常用的电器设备。如果我们想建立一个家庭自动化系统,这些设备是实现电气连接,甚至开关功能必要的模块。通过无线传送到所连接的插座来开关电开关控制家电,这不是一个新的想法。许多可以提供远程控制功能的电源插座产品在商业市场都有供应。但应该指出的是,这些产品大多只能支持点对点的无线通信。每一个电源插座必须配有遥控器的遥控器操作。当你不得不同时处理许多远程控制网点时,是非常不方便来控制电源的。 ZigBee技术已被应用于建筑家庭自动化网络,实现无线接入监控和控制应用。一些研究人员已经提出了一种基于ZigBee的通用遥控器控制单元和一个ZigBee红外转换模块用于控制多种传统的消费类电子设备。这是非常难以被与这么多的厂商从不同的IR代码兼容的。同时,由于成本和其他非技术原因,他也很难说服家电厂家集成这些模块到他们的产品中。在大多数情况下,我们只需要开启/关闭家用电器然后让这些设备在那工作。因此,把无线传输控制功能集成到电源插座是一个好主意。一个基于蓝牙的无线可控电源插座模块已经被提出了。由于蓝牙的限制协议,那种模块将低效的形成大型的网状网络和双向的数据通信。添加太多的其他通信接口到终端设备,也大大增加了系统的的复杂性和成本。而作为一个结果,它会阻止这种器件被广泛部署在家庭环境中的。 本文提出了基于ZigBee的无线控制家庭自动化建设的电源插座架构网络。所提出的电源插座模块集成了一个ZigBee无线电到它的体系结构。它在家庭自动化网络远程控制操作中作为一个执行器节点。系统架构,设计的无线电力插座模块和演示实验将在第II-IV讨论。 2. 系统概述 轻松控制各种家电是智能家居的一个特点。为了实现这些远程控制功能,我们通常在一个新的房子施工过程中需要添加控制线,而且必须在室内装饰安装之前完成。电源插座的无线设备提供了一个更灵活的方式来实现远程控制功能。有了这些设备,你不再需要破坏原有的室内装饰来进行系统升级或维护。这些设备对于原来的那些没有安装家庭自动化基础设施的老房子更有用。如图1所示,家庭自动化网络的提出其实是一个实际应用的无线传感器和执行器网络。家庭自动化网络是由几个传感器节点,多个无线电源插座模块和一个基站组成的。每个电源插座模块被设计成执行器节点添加到家庭自动化网络中。传感器节点和执行器节点部署在家庭环境和他们自主地形成多跳网状网络。该基站可以提供多个接口网状网络的本地用户交互和远程网络管理。 图1 在家庭环境中的无线电源插座系统。 3.无线电源插座模块 提出的电源插座系统的核心部件是无线电源插座模块。它在可灵活控制的家电产品中起着重要的作用。它被设计作为一个执行器节点来执行远程控制的功能。图2显示出提出的电源插座模块结构的分解图。它是由一个符合ZigBee标准的射频收发器,主板和电源变压器组成,所有这些都安装在一个塑料壳中。RF收发器由一个扩展连接器与主板连接。它工作在2.4 GHz频段并建立与其他的无线通信信道范围内的节点。主板使用的是低成本MCU实现控制逻辑和一个特定的芯片来驱动继电器。所提出电源插座模块的原型是如图3所示。该原型的尺寸是196毫米×163毫米×60mm。有6个插口,其中每个单独控制。 图4显示出了该电源插座模块的软件控制流程。它首先需要在其上电后搜索附近其他工作节点。它通过收听周围的交通广播,建立了附近的信息表。电源插座模块根据它们之间的通信能源成本从附近信息表中选择一个节点,作为它的父级。具有最低通信的能源成本的邻居节点将被选为父级。路由信息也将定期在整个网络中广播告诉其他父节点的信息。当这些动作完成,电源插座模块将成功加入家庭网络,并开始发送或接收数据包。当一个消息被接收时,电源插座模块首先通过分析数据包报头判断,它到底是命令消息还是路由信息。路由信息将被直接发送到发送缓冲区作为下一个目的地。该命令消息将被进一步分析,以获得特定的操作命令。 图2 提出的电源插座模块的结构分解。 图3 无线电源插座模块的原型。 图4 控制流电源插座模块。 图5 演示实验的测试平台设置。 4.系统的实现 A.测试平台设置 一个为了验证提出的电源插座的基本功能的简单的家庭自动化网络系统的测试平台的模块在我们的实验室中已经被创建。如图5所示,测试平台包括一个电源插座模块,热电红外线传感器模块,基站,手持式终端,以及一些一般使用交流电源的家电。电源插座模块,PIR传感器模块和基站彼此之间的无线通信时通过Zigbee协议实现的。手持式装置,如掌上电脑和智能手机,可以用作便携式用户终端来控制家庭网络系统。该终端通过与基站建立蓝牙连接来与家庭网络中的节点进行通信。用户可以方便地使用这些移动终端来控制家庭网络里的每一个设备。 图6显示了电源插座系统运行在不同的移动终端的图形用户界面。我们设计了掌上电脑和智能手机上的GUI来分别满足各种终端用户的需要。掌上电脑有一个更快的处理器和更大的触摸屏。因此,我们可以在它上面更友好的实现用户交互。该智能手机虽然没有触摸屏,但可以只用一只手按压摇杆按钮和键盘来灵活操作。该图形用户界面显示每个电源插座和PIR传感器模块的实时状态。如果我们要开启或关闭其中一个插座,从列表中选择相应的项目,并按下,该命令将被发送到电源插座模块。 B.演示实验 为了测试无线电源插座模块的功能,一个主动的照明实验已经制定并在测试平台上进行。如图7是实验的过程。PIR传感器模块被放置在桌子的边缘,来监控任何通过走廊的人。电源插座模块和基站被放置在桌子的角落。当PIR传感器模块检测人体的存在时,将向上面的基站立即发送状态的变化信息。然后,该基站将像下属的电源插座模块发送命令来打开灯和电扇在该人进入下一个区域之前。这是一个全自动过程并预定义的例程。我们也可以使用上述描述的移动终端手动控制过程。它在日常家庭生活中是非常有用的,当我们在晚上从一个房间移动到另一个房间。如果有更多的PIR传感器模块和 更多的电源插座模块,我们可以设计更多智能化的算法来预见人打算访问的下一个目的地了。 (a) (b) 图6 运行在手持终端的图形用户界面。 (a)在智能手机。 (b)掌上电脑。 (a) 0s (b) 1s (c) 2s (d)3s 图7 主动照明实验。 5.结论Alpha 我们已经提出了一个无线电源插座系统来远程控制家电。所提出的插座模块加入了ZigBee无线电到它的架构,所以具有了网状组网能力。传感器和执行器网络的行程可以通过部署电源插座模块连同其他传感器节点进入家庭环境。电源插座模块的基本功能 已经在测试平台上通过执行照明的实验测试。实验结果表明,提出的电源插座模块成功的实现远程控制各种很少家电的基础设施。它提供了更快,更灵活的方式建设和部署家庭自动化网络。 参考文献 [1] C. D. Nugent, D. D. Finlay, P. Fiorini, Y. Tsumaki 和 E. Prassler,“家庭自动化作为独立生活的一种方式,”硕士论文。AUTOM。 SCI收录。英,第一卷。5,第1号,第1-8页,2008年1月。 [2] M. Chan, D. Esteve, C. Escriba 和 E. Campo,“对智能家居目前的状态和未来的挑战的审查”在生物医学中计算机的方法和程序,第二卷。91,第1号,2008年7月,第55-81页。 [3] K. Romer 和 F. Mattern,“无线传感器网络的设计空间网络,” IEEE无线通信,第一卷。11,N 6,第54-61页,12月2004 [4] J.Y. Jung and J.W. Lee,“ZigBee设备的访问控制和可靠的数据传输是基于ZigBee的健康监测系统,”第十届国际法律程序会议上先进的通讯技术,ICACT2008年,凤凰公园,韩国,2008年2月17日至20日,第795-797页。 [5] Il-Kyu Hwang and Jin-Wook Baek,“基于数字门锁的无线接入监测和控制系统,” IEEE Trans Consum Electron, 第53卷,第4号,第1724年至1730年,2007年。 [6] Wan-Ki Park, Intark Han and Kwang-Roh Park,“基于ZigBee的动态多个传统IR控制的数字消费控制方案设备,” IEEE Trans Consum Electron, 第53卷,第一号,第172-177页,2007。 [7] Chia-Hung Lien, Ying-Wen Bai and Ming-Bo Lin,“家用电源管理的远程控制电源插座系统,” IEEETrans Consum Electron,第53卷,第4号,1634-1641页,2007年。 宋光明,(S’04-M’05),1974年12月14日出生于中国宜春市,在1997年和2001年,在中国合肥科技大学获得了B.S.的和M.S机械工程学位。在2004年,他获得了中国合肥科技大学控制科学博士学位。 从2004年到2006年间,他是中国东南大学机器人传感器和控制实验室的一名研究员。自2006年,他一直在中国东南大学仪器科学与工程学院。他目前是中国东南大学仪器科学与工程学院的副教授。 他目前的研究兴趣包括无线传感器网络,分布式测量和控制,网络机器人。 宋博士是中国传感器网络技术委员会计算机学会的一员。 2004年,丁飞在中国南京理工大学机电工程学院获得B.S.学位。2007年,他在中国镇江的江苏大学获得了测量与控制技术M.S.学位。他目前是中国南京东南大学仪器科技博士候选人。他的研究兴趣包括传感器网络,移动机器人嵌入式系统和应用。 2006年,张薇娟在西安工程大学电信系获得了电子信息学士学位。目前,她是中国南京东南大学测量技术与仪器MS的候选人。她的研究兴趣包括无线传感器网络,家庭自动化系统,无处不在的运算。 宋爱国(M'98)1968年11月11日出生于中国黄山市。他于1990年,收到了B.S.的自动控制测量学位,在1993年从南京航空和控制 航天大学获得了M.S学位,在1996年,在中国南京东南大学获得测量与控制博士学位。 从1996年到1998年期间,他是中国东南大学智能信息处理实验室的一名副研究员。从1998年到2000年,他是中国东南大学仪器科学与工程学院的学院副教授。从2000年到2003年,他中国东南大学是机器人的传感器和控制实验室主任。从2003年4月至2004年4月,他是美国西北大学实验室智能机械系统的客座科学家。目前,他是中国东南大学仪器科学与工程学院一个教授。他目前的兴趣集中在遥控操作,触觉显示屏,Internet遥控机器人,分布式测量系统。 宋博士是中国仪器仪表协会的成员和中国机器人协会的成员。他作为中国机器人期刊的副编辑。 附录B 源程序 #include #include #define uchar unsigned char #define uint unsigned int sbit lcdrs=P3^7; sbit lcdrw=P3^6; sbit lcden=P3^5; sbit SCLK=P0^7; sbit IO=P0^6; sbit RST=P0^5; sbit DQ=P2^5; //18B20接口 sbit RELAY=P2^4; //继电器接口 sbit P0_2=P0^2; sbit s1=P2^0;//模式切换按键 sbit s2=P2^1;//确定按键 sbit s3=P2^2;//加 sbit s4=P2^3;//减 uchar code table1[]=" : : : "; uchar code table2[]=" : : : "; uchar code table3[]=" Welcome to "; uchar code table4[]=" Timing Sockets "; uchar code table5[]="20 - - "; uchar code table6[]=" : : "; uchar code table7[]="MON"; uchar code table8[]="TUE" ; uchar code table9[]="WED" ; uchar code table10[]="THR"; uchar code table11[]="FRI"; uchar code table12[]="SAT"; uchar code table13[]="SUN"; uchar code table14[]="Set the Calendar"; uchar code table15[]="Set the Mode"; uchar code table16[]="Set the Timing "; uchar code table17[]="Mode Choice"; uchar code table18[]="1 2 3 4 5 6"; uchar code table19[]="Set temperature"; uchar code table20[]=" L: H: "; uchar code table22[]="set temp value:"; int c0,c1,temper; uchar dd[7]; uchar aa[7]={0,0,11,17,4,6,11}; uchar ee[3]={11,0,0}; uchar ff[3]={11,1,0}; uchar kk[2]={11,2}; uchar hh[2]={11,3}; uchar gg[6]; bit flag,flag2,flag3,flag4; bit flag5,flag6,flag7,flag8,flag9; bit flag10,flag11,flag12,flag13; bit flag14,flag15,flag16,flag17,a; char miao,fen,shi,ri,yue,zhou,nian; uchar sw,gw; uchar s1num,s2num; void display(void); /*延时函数*/ void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } //温度延时 void delay2(uint temp) { uint i,j; for(i=0;i0;i--)//开始传输8个字节的数据 { SCLK=0; //初始时钟线置为0 if(inbyte&0x01) IO=1; else IO=0; SCLK=1; delay1(1); inbyte=inbyte>>1; } } /*ds1302读数据*/ uchar DS1302_rbyte() { uchar i,temp=0; IO=1; for(i=7;i>0;i--) { SCLK=0; if(IO==1) temp=temp|0x80; else temp=temp&0x7f; SCLK=1; temp=temp>>1; } return (temp); } /*往ds1302的某个地址写入数据*/ void Write_DS1302(uchar cmd,uchar indata) { RST=1; DS1302_wbyte(cmd); DS1302_wbyte(indata); RST=0; SCLK=0; } /*读ds1302某地址的的数据*/ uchar Read_DS1302(uchar addr) { uchar backdata; RST=1; DS1302_wbyte(addr); backdata=DS1302_rbyte();//先写地址, //然后读数据 RST=0; SCLK=0; return (backdata); } /*DS18B20*/ /*DS18B20初始化*/ uchar reset() { uchar presence; DQ=0; delay2(29); DQ=1; delay2(3); presence=DQ; delay2(25); return(presence); } /*读DS18B20一位数据*/ uchar read_bit() { uchar i; DQ=0; DQ=1; for(i=0;i<3;i++); return(DQ); } /*写DS18B20一位数据*/ void write_bit(uchar date) { DQ=0; if(date==1) DQ=1; delay2(5); DQ=1; } /*读DS18B20一字节数据*/ uchar read_byte1() { uchar date=0; uchar i; for(i=0;i<8;i++) { if(read_bit()) date|=0x01<>i)&0x01); write_bit(j); delay2(1); } } /*读取温度*/ int read_temp() { int templ,temph; int temp; reset(); write_byte1(0xcc);//跳过读序号列号操作 write_byte1(0x44);//启动温度转换 delay2(10000);//转换延时 reset();//复位DS18B20 //(每一次读之前都要对DS18B20进行复位操作) write_byte1(0xcc);//跳过读序号列号操作 write_byte1(0xbe);//读温度寄存器 //(头两个值分别为低位和//高位) templ=read_byte1();//读取温度值低8位 temph=read_byte1();//读取温度值高8位 temp=temph;//把读取的温度值 //的高8位放在了temp的 //8位上 temp<<=8; temp=temp|templ; temp=temp*0.0625*10; return(temp); } /*设置初始时间*/ void Set_DS1302(uchar addr,uchar *p,uchar n)//写入n个数据 { uchar bb; Write_DS1302(0x8e,0x00);//写控制字,允许写操作 for(;n>0;n--) {sw=(*p)/10; gw=(*p)%10; bb=(sw<<4)|gw; Write_DS1302(addr,bb); p++; addr=addr+2; } Write_DS1302(0x8e,0x80);//写保护,不允许写 } /*读取当前时间*/ void Read_nowtime(uchar addr,uchar *p,uchar n) { for(;n>0;n--) { *p=Read_DS1302(addr); p++; addr=addr+2; } } /*ds1302初始化*/ void init_DS1302() { RST=0; SCLK=0; Write_DS1302(0x80,0x00);//写控制字,允许写 Write_DS1302(0x90,0x00);//禁止涡流充电 } void write_sfm(uchar add,uchar date) { sw=date/10; gw=date%10; write_com(0x80+0x40+add); write_data(0x30+sw); write_data(0x30+gw); } void write_nyr(uchar add,uchar date) { sw=date/10; gw=date%10; write_com(0x80+add); write_data(0x30+sw); write_data(0x30+gw); } /*星期处理*/ void write_zhou() { uchar num; write_com(0x80+13); switch(zhou) {case 1: for(num=0;num<3;num++) { write_data(table13[num]); delay(1); }; break; case 2: for(num=0;num<3;num++) { write_data(table7[num]); delay(1); }; break; case 3: for(num=0;num<3;num++) { write_data(table8[num]); delay(1); }; break; case 4: for(num=0;num<3;num++) { write_data(table9[num]); delay(1); }; break; case 5: for(num=0;num<3;num++) { write_data(table10[num]); delay(1); }; break; case 6: for(num=0;num<3;num++) { write_data(table11[num]); delay(1); }; break; case 7: for(num=0;num<3;num++) { write_data(table12[num]); delay(1); }; break; default:break; } } /*设置时间界面*/ void lcall() { uchar num1; write_com(0x01); write_com(0x80); for(num1=0;num1<8;num1++) { write_data(table5[num1]); delay(10); } write_com(0xc0); for(num1=0;num1<8;num1++) { write_data(table6[num1]); delay(10); } display(); } /*写入定时开关时间界面*/ void lcall5() { uchar num2; write_com(0x01); write_com(0x80); for(num2=0;num2<15;num2++) { write_data(table1[num2]); delay(10); } write_com(0xc0); for(num2=0;num2<15;num2++) { write_data(table2[num2]); delay(10); } write_nyr(0,ee[0]); write_nyr(3,ee[1]); write_nyr(6,ee[2]); write_nyr(0x09,kk[0]); write_nyr(0x0c,kk[1]); write_sfm(0,ff[0]); write_sfm(3,ff[1]); write_sfm(6,ff[2]); write_sfm(0x09,hh[0]); write_sfm(0x0c,hh[1]); } /*固定定时模式界面*/ void lcall3() { uchar num3; write_com(0x01); write_com(0x80); for(num3=0;num3<11;num3++) { write_data(table17[num3]); delay(10); } write_com(0xc0); for(num3=0;num3<16;num3++) { write_data(table18[num3]); delay(10); } } /*写入温度上下限界面*/ void lcall15() { uchar num4; write_com(0x01); write_com(0x80); for(num4=0;num4<15;num4++) { write_data(table22[num4]); delay2(10); } write_com(0xc0); for(num4=0;num4<15;num4++) { write_data(table20[num4]); delay2(10); } write_sfm(4,c0); write_sfm(13,c1); } /*按键处理程序*/ void keyscan() { uchar num; if(s1==0) {delay(5);//消抖 if(s1==0)//s1按下 { s1num++; flag=1; write_com(0x01); write_com(0x80); while(!s1); switch(s1num) { case 1: for(num=0;num<16;num++) { write_data(table14[num]); write_com(0x0c);delay(1); write_data(table14[num]); write_com(0x0c);delay(1); write_com(0x0c);delay(1);}; break; case 2: write_com(0x0c); s2num=0;flag3=0; for(num=0;num<16;num++) { write_data(table16[num]); write_com(0x0c);delay(1); write_data(table16[num]); write_com(0x0c);delay(1); } ; break; case 3: for(num=0;num<12;num++) { write_data(table15[num]); write_com(0x0c);delay(1); write_data(table15[num]); write_com(0x0c);delay(1); }; break; case 4: for(num=0;num<15;num++) { write_data(table19[num]); write_com(0x0c);delay(1); write_data(table19[num]); write_com(0x0c);delay(1); } ; break; case 5: s2num=0;flag6=0; s1num=0; flag=0;flag5=0;write_com(0x0c); for(num=0;num<8;num++) { write_data(table5[num]); delay(1); } write_com(0xc0); for(num=0;num<8;num++) { write_data(table6[num]); delay(1); } break; default:break; } } } if(s1num!=0) { if(s1num==1)//改时间 { if(s2==0) {delay(5); if(s2==0) {s2num++; if(flag3==0) {lcall();} while(!s2); switch(s2num) { case 1:flag3=1;write_com(0x80+3); write_com(0x0f);break; case 2:write_com(0x80+6);break; case 3:write_com(0x80+9);break; case 4:write_com(0x80+13);break; case 5:write_com(0xc0+1);break; case 6:write_com(0xc0+4);break; case 7:write_com(0xc0+7);break; case8:flag3=0;s2num=0; write_com(0x0c); Set_DS1302(0x80,aa, 7);break; default:break; } } } if(s2num!=0) { if(s3==0) {delay(5); if(s3==0) {while(!s3); switch(s2num) { case 1:nian++; if(nian==100) nian=0; write_nyr(2,nian); write_com(0x82); aa[6]=nian;Set_DS1302(0x80,aa, 7); break; case 2:yue++; if(yue==13) yue=0; write_nyr(5,yue); write_com(0x85); aa[4]=yue;Set_DS1302(0x80,aa, 7); break; case 3:ri++; if(ri==31) ri=0; write_nyr(8,ri); write_com(0x88); aa[3]=ri;Set_DS1302(0x80,aa, 7); break; case 4:zhou++; if(zhou==8) zhou=1; aa[5]=zhou; write_zhou(); write_com(0x80+13); Set_DS1302(0x80,aa, 7);break; case 5:shi++; if(shi==24) shi=0; write_sfm(0,shi); write_com(0xc0); aa[2]=shi;Set_DS1302(0x80,aa, 7);break; case 6:fen++; if(fen==60) fen=0; write_sfm(3,fen); write_com(0xc3); aa[1]=fen;Set_DS1302(0x80,aa, 7);break; case 7:miao++; if(miao==60) miao=0; write_sfm(6,miao); write_com(0xc6); aa[0]=miao;Set_DS1302(0x80,aa,7);break; default:break; } } } if(s4==0) {delay(5); if(s4==0) {while(!s4); switch(s2num) { case 1:nian--; if(nian==-1) nian=99; write_nyr(2,nian); write_com(0x82); aa[6]=nian;Set_DS1302(0x80,aa, 7); break; case 2:yue--; if(yue==-1) yue=12; write_nyr(5,yue); write_com(0x85); aa[4]=yue; Set_DS1302(0x80,aa, 7);break; case 3:ri--; if(ri==0) ri=31; write_nyr(8,ri); write_com(0x88); aa[3]=ri;Set_DS1302(0x80,aa, 7); break; case 4:zhou--; if(zhou==0) zhou=7; aa[5]=zhou; write_zhou(); write_com(0x80+13); Set_DS1302(0x80,aa, 7);break; case 5:shi--; if(shi==-1) shi=23; write_sfm(0,shi); write_com(0xc0); aa[2]=shi;Set_DS1302(0x80,aa, 7);break; case 6:fen--; if(fen==-1) fen=59; write_sfm(3,fen); write_com(0xc3); aa[1]=fen;Set_DS1302(0x80,aa, 7);break; case 7:miao--; if(miao==-1) miao=59; write_sfm(6,miao); write_com(0xc6); aa[0]=miao;Set_DS1302(0x80,aa, 7);break; default:break; } } } } } if(s1num==2) //定时模式1 { if(s2==0) {delay(5); if(s2==0) { s2num++; if(flag6==0) lcall5(); while(!s2); switch(s2num) { case 1:flag6=1;write_com(0x81); write_com(0x0f);break; case 2:write_com(0x84);break; case 3:flag2=1;write_com(0x87);break; case 4:write_com(0xc1);break; case 5:write_com(0xc4);break; case 6:flag4=1;write_com(0xc7);break; case 7:write_com(0x8a);break; case8:flag13=1;write_com(0x8d);break; case 9:write_com(0xca);break; case10:flag14=1; write_com(0xcd);break; case11:flag6=0;s2num=0; write_com(0x0c);break; default: break; } } } if(s2num!=0) { if(s3==0) { delay(5); if(s3==0) {while(!s3); switch(s2num) { case 1:ee[0]+=1; if(ee[0]==24) ee[0]=0; write_nyr(0,ee[0]); write_com(0x80); break; case 2:ee[1]+=1; if(ee[1]==60) ee[1]=0; write_nyr(3,ee[1]); write_com(0x83); break; case 3:ee[2]+=1; if(ee[2]==60) ee[2]=0; write_nyr(6,ee[2]); write_com(0x86); break; case 4:ff[0]+=1; if(ff[0]==24) ff[0]=0; write_sfm(0,ff[0]); write_com(0xc0); break; case 5:ff[1]+=1; if(ff[1]==60) ff[1]=0; write_sfm(3,ff[1]); write_com(0xc3); break; case 6:ff[2]+=1; if(ff[2]==60) ff[2]=0; write_sfm(6,ff[2]); write_com(0xc6); break; case 7:kk[0]+=1; if(kk[0]==24) kk[0]=0; write_nyr(0x09,kk[0]); write_com(0x89); break; case 8:kk[1]+=1; if(kk[1]==60) kk[1]=0; write_nyr(0x0c,kk[1]); write_com(0x8c); break; case 9:hh[0]+=1; if(hh[0]==24) hh[0]=0; write_sfm(0x09,hh[0]); write_com(0xc9); break; case 10:hh[1]+=1; if(hh[1]==60) hh[1]=0; write_sfm(0x0c,hh[1]); write_com(0xcc); break; default:break; } } } if(s4==0) {delay(5); if(s4==0) { while(!s4); switch(s2num) { case 1:ee[0]-=1; if(ee[0]==-1) ee[0]=23; write_nyr(0,ee[0]); write_com(0x80); break; case 2:ee[1]-=1; if(ee[1]==-1) ee[1]=59; write_nyr(3,ee[1]); write_com(0x83); break; case 3:ee[2]-=1; if(ee[2]==-1) ee[2]=59; write_nyr(6,ee[2]); write_com(0x86); break; case 4:ff[0]-=1; if(ff[0]==-1) ff[0]=23; write_sfm(0,ff[0]); write_com(0xc0); break; case 5:ff[1]-=1; if(ff[1]==-1) ff[1]=59; write_sfm(3,ff[1]); write_com(0xc3); break; case 6:ff[2]-=1; if(ff[2]==-1) ff[2]=59; write_sfm(6,ff[2]); write_com(0xc6); break; case 7:kk[0]-=1; if(kk[0]==-1) kk[0]=23; write_nyr(0x09,kk[0]); write_com(0x89); break; case 8:kk[1]-=1; if(kk[1]==-1) kk[1]=59; write_nyr(0x0c,kk[1]); write_com(0x8c); break; case 9:hh[0]-=1; if(hh[0]==-1) hh[0]=23; write_sfm(0x09,hh[0]); write_com(0xc9); break; case 10:hh[1]-=1; if(hh[1]==-1) hh[1]=59; write_sfm(0x0c,hh[1]); write_com(0xcc); break; default:break; } } } } } if(s1num==3) //定时模式2 { if(s2==0) { delay(5); if(s2==0) {s2num++; if(flag5==0) lcall3(); while(!s2); switch(s2num) { case 1:flag5=1;write_com(0xc0); write_com(0x0f);break; case 2:write_com(0xc3);break; case 3:write_com(0xc6);break; case 4:write_com(0xc9);break; case 5:write_com(0xcc);break; case 6:write_com(0xcf);break; case 7:s2num=0;flag5=0; write_com(0x0c);break; default: break; } } } if(s2num!=0) { if(s3==0) {delay(5); if(s3==0) { while(!s3); switch(s2num) { case 1:gg[0]=fen+1; flag7=1;P0_2=1; write_com(0x0c);break; case 2:gg[1]=fen+20; flag8=1;P0_2=1; write_com(0x0c);break; case 3:gg[2]=fen+30; flag9=1;P0_2=1; write_com(0x0c);break; case 4:gg[3]=fen+40; flag10=1;P0_2=1; write_com(0x0c);break; case 5:gg[4]=fen+50; flag11=1;P0_2=1; write_com(0x0c);break; case 6:gg[5]=fen+60; flag11=1;P0_2=1; write_com(0x0c);break; default:break; } } } } } if(s1num==4) //温度范围设置 { if(s2==0) { delay2(5); if(s2==0) { s2num++; if(flag16==0) lcall15(); while(!s2); switch(s2num) { case 1:flag16=1;write_com(0xc5); write_com(0x0f);break; case 2:flag17=1;write_com(0xce); break; case 3:flag16=0;s2num=0; write_com(0x0c);break; default: break; } } } if(s2num!=0) { if(s3==0) { delay2(5); if(s3==0) { while(!s3); switch(s2num) { case 1:c0+=1; if(c0==29) c0=0; write_sfm(4,c0); write_com(0xc5); break; case 2:c1+=1; if(c1==100) c1=29; write_sfm(13,c1); write_com(0xce); break; default: break; } } } if(s4==0) { delay2(5); if(s4==0) { while(!s4); switch(s2num) { case 1:c0-=1; if(c0==-1) c0=27; write_sfm(4,c0); write_com(0xc5); break; case 2:c1-=1; if(c1==28) c1=99; write_sfm(13,c1); write_com(0xce); break; default: break; } } } } } } } /*定时处理*/ void dingshi(void) { if((shi==ee[0])&&(fen==ee[1]) &&(miao==ee[2])&&(flag2==1)) { flag2=0; RELAY=1;P0_2=0; a=1; } if((shi==ff[0])&&(fen==ff[1]) &&(miao==ff[2])&&(flag4==1)) { flag4=0;P0_2=1; RELAY=0; } if((shi==kk[0])&&(fen==kk[1])&&(flag13==1)) { flag13=0;P0_2=0; RELAY=1; a=1; } if((shi==hh[0])&&(fen==hh[1])&&(flag14==1)) { flag14=0;P0_2=1; RELAY=0; } if((fen==gg[0])&&(flag7==1)) { flag7=0;P0_2=0;RELAY=1; a=1; } if((fen==gg[1])&&(flag8==1)) { flag8=0;P0_2=0;RELAY=1; a=1; } if((fen==gg[2])&&(flag9==1)) { flag9=0;P0_2=0;RELAY=1; a=1; } if((fen==gg[3])&&(flag10==1)) { flag10=0;P0_2=0;RELAY=1; a=1; } if((fen==gg[4])&&(flag11==1)) { flag11=0;P0_2=0;RELAY=1; a=1; } if((fen==gg[5])&&(flag12==1)) { flag12=0;P0_2=0;RELAY=1; a=1; } } /*温度控制*/ void wenkong(void) { if((temper*0.1=c1)) { P0_2=0;RELAY=1; } if(((temper*0.1c0))&&(a!=1)) { P0_2=1;RELAY=0; } } /*显示时间与温度*/ void display(void) { Read_nowtime(0x81,dd,7); miao=dd[0]-(dd[0]>>4)*6; fen=dd[1]-(dd[1]>>4)*6; shi=dd[2]-(dd[2]>>4)*6; ri=dd[3]-(dd[3]>>4)*6; yue=dd[4]-(dd[4]>>4)*6; zhou=dd[5]-(dd[5]>>4)*6; nian=dd[6]-(dd[6]>>4)*6; write_sfm(6,miao); write_sfm(3,fen); write_sfm(0,shi); write_nyr(2,nian); write_nyr(5,yue); write_nyr(8,ri); write_zhou(); write_com(0xca); temper=read_temp(); if(temper<0) { write_com(0xca); write_data('-'); temper=0-temper; } else { write_com(0xca); write_data(' '); } ; write_com(0xcc); write_data(temper/100+0x30); write_com(0xcd); write_data(temper%100/10+0x30); write_com(0xcf);write_data('C'); write_com(0xce);write_data(0xdf); } /*系统初始化*/ void sysinit() { init(); init_DS1302(); P0_2=1; c0=10;c1=66; RELAY=0; flag2=0; flag4=0; flag7=0; flag8=0; flag9=0; flag10=0; flag11=0; flag12=0; flag13=0; flag14=0; flag17=0; } /*主函数*/ void main() { sysinit();//系统初始化 while(1) { keyscan();//按键扫描 if(flag==0) { display();//显示 } dingshi();//定时处理 wenkong();//温度控制 delay(50); } } 附录C 硬件连接图 附录D 实物图 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:       日  期:        ​​​​​​​​​​​​ 指导教师签名:        日  期:        使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:        ​​​​​​​​​​​​ 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 指导教师评阅书 指导教师评价: 一、撰写(设计)过程 1、学生在论文(设计)过程中的治学态度、工作精神 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、学生掌握专业知识、技能的扎实程度 □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、学生综合运用所学知识和专业技能分析和解决问题的能力 □ 优 □ 良 □ 中 □ 及格 □ 不及格 4、研究方法的科学性;技术线路的可行性;设计方案的合理性 □ 优 □ 良 □ 中 □ 及格 □ 不及格 5、完成毕业论文(设计)期间的出勤情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 建议成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 (在所选等级前的□内画“√”) 指导教师: (签名) 单位: (盖章) 年 月 日 评阅教师评阅书 评阅教师评价: 一、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 建议成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 (在所选等级前的□内画“√”) 评阅教师: (签名) 单位: (盖章) 年 月 日 教研室(或答辩小组)及教学系意见 教研室(或答辩小组)评价: 一、答辩过程 1、毕业论文(设计)的基本要点和见解的叙述情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、对答辩问题的反应、理解、表达情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、学生答辩过程中的精神状态 □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 评定成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 (在所选等级前的□内画“√”) 教研室主任(或答辩小组组长): (签名) 年 月 日 教学系意见: 系主任: (签名) 年 月 日 学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声明的法律结果由本人承担。 学位论文作者(本人签名): 年 月 日 学位论文出版授权书 本人及导师完全同意《中国博士学位论文全文数据库出版章程》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入CNKI《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按“章程”规定享受相关权益。 论文密级: □公开 □保密(___年__月至__年__月)(保密的学位论文在解密后应遵守此协议) 作者签名:_______ 导师签名:_______ _______年_____月_____日 _______年_____月_____日 独 创 声 明 本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 本声明的法律后果由本人承担。   作者签名: 二〇一〇年九月二十日   毕业设计(论文)使用授权声明 本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。 本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。 (保密论文在解密后遵守此规定)   作者签名: 二〇一〇年九月二十日 致 谢 时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。 首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。 首先,我要特别感谢我的知道郭谦功老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。 其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。 另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。 最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。 四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。 回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。 学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。 在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。 最后,我要特别感谢我的导师***老师、和研究生助教***老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够及时完成,这里一并表示真诚的感谢。 致 谢 这次论文的完成,不止是我自己的努力,同时也有老师的指导,同学的帮助,以及那些无私奉献的前辈,正所谓你知道的越多的时候你才发现你知道的越少,通过这次论文,我想我成长了很多,不只是磨练了我的知识厚度,也使我更加确定了我今后的目标:为今后的计算机事业奋斗。在此我要感谢我的指导老师——***老师,感谢您的指导,才让我有了今天这篇论文,您不仅是我的论文导师,也是我人生的导师,谢谢您!我还要感谢我的同学,四年的相处,虽然我未必记得住每分每秒,但是我记得每一个有你们的精彩瞬间,我相信通过大学的历练,我们都已经长大,变成一个有担当,有能力的新时代青年,感谢你们的陪伴,感谢有你们,这篇论文也有你们的功劳,我想毕业不是我们的相处的结束,它是我们更好相处的开头,祝福你们!我也要感谢父母,这是他们给我的,所有的一切;感谢母校,尽管您不以我为荣,但我一直会以我是一名农大人为荣。 通过这次毕业设计,我学习了很多新知识,也对很多以前的东西有了更深的记忆与理解。漫漫求学路,过程很快乐。我要感谢信息与管理科学学院的老师,我从他们那里学到了许多珍贵的知识和做人处事的道理,以及科学严谨的学术态度,令我受益良多。同时还要感谢学院给了我一个可以认真学习,天天向上的学习环境和机会。 即将结束*大学习生活,我感谢****大学提供了一次在农大接受教育的机会,感谢院校老师的无私教导。感谢各位老师审阅我的论文。 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:       日  期:        ​​​​​​​​​​​​ 指导教师签名:        日  期:        使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:        ​​​​​​​​​​​​ 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 独 创 声 明 本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 本声明的法律后果由本人承担。   作者签名: 年 月 日   毕业设计(论文)使用授权声明 本人完全了解**学院关于收集、保存、使用毕业设计(论文)的规定。 本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。 (保密论文在解密后遵守此规定)   作者签名: 年 月 日 基本要求:写毕业论文主要目的是培养学生综合运用所学知识和技能,理论联系实际,独立分析,解决实际问题的能力,使学生得到从事本专业工作和进行相关的基本训练。毕业论文应反映出作者能够准确地掌握所学的专业基础知识,基本学会综合运用所学知识进行科学研究的方法,对所研究的题目有一定的心得体会,论文题目的范围不宜过宽,一般选择本学科某一重要问题的一个侧面。 毕业论文的基本教学要求是: 1、培养学生综合运用、巩固与扩展所学的基础理论和专业知识,培养学生独立分析、解决实际问题能力、培养学生处理数据和信息的能力。2、培养学生正确的理论联系实际的工作作风,严肃认真的科学态度。3、培养学生进行社会调查研究;文献资料收集、阅读和整理、使用;提出论点、综合论证、总结写作等基本技能。 毕业论文是毕业生总结性的独立作业,是学生运用在校学习的基本知识和基础理论,去分析、解决一两个实际问题的实践锻炼过程,也是学生在校学习期间学习成果的综合性总结,是整个教学活动中不可缺少的重要环节。撰写毕业论文对于培养学生初步的科学研究能力,提高其综合运用所学知识分析问题、解决问题能力有着重要意义。 毕业论文在进行编写的过程中,需要经过 开题报告 课题研究开题报告ppt课题开题报告格式污水处理厂开题报告研究生开题报告酒店vi设计开题报告 、论文编写、论文上交评定、论文答辩以及论文评分五个过程,其中开题报告是论文进行的最重要的一个过程,也是论文能否进行的一个重要指标。 撰写意义:1.撰写毕业论文是检验学生在校学习成果的重要措施,也是提高教学质量的重要环节。大学生在毕业前都必须完成毕业论文的撰写任务。申请学位必须提交相应的学位论文,经答辩通过后,方可取得学位。可以这么说,毕业论文是结束大学学习生活走向社会的一个中介和桥梁。毕业论文是大学生才华的第一次显露,是向祖国和人民所交的一份有份量的答卷,是投身社会主义现代化建设事业的报到书。一篇毕业论文虽然不能全面地反映出一个人的才华,也不一定能对社会直接带来巨大的效益,对专业产生开拓性的影响。但是,实践证明,撰写毕业论文是提高教学质量的重要环节,是保证出好人才的重要措施。 2.通过撰写毕业论文,提高写作水平是干部队伍“四化”建设的需要。党中央要求,为了适应现代化建设的需要,领导班子成员应当逐步实现“革命化、年轻化、知识化、专业化”。这个“四化”的要求,也包含了对干部写作能力和写作水平的要求。 3.提高大学生的写作水平是社会主义物质文明和精神文明建设的需要。在新的历史时期,无论是提高全族的科学文化水平,掌握现代科技知识和科学管理方法,还是培养社会主义新人,都要求我们的干部具有较高的写作能力。在经济建设中,作为领导人员和机关的办事人员,要写指示、通知、总结、调查报告等应用文;要写说明书、广告、解说词等说明文;还要写科学论文、经济评论等议论文。在当今信息社会中,信息对于加快经济发展速度,取得良好的经济效益发挥着愈来愈大的作用。写作是以语言文字为信号,是传达信息的方式。信息的来源、信息的收集、信息的储存、整理、传播等等都离不开写作。 论文种类:毕业论文是学术论文的一种形式,为了进一步探讨和掌握毕业论文的写作规律和特点,需要对毕业论文进行分类。由于毕业论文本身的内容和性质不同,研究领域、对象、方法、表现方式不同,因此,毕业论文就有不同的分类方法。 按内容性质和研究方法的不同可以把毕业论文分为理论性论文、实验性论文、描述性论文和设计性论文。后三种论文主要是理工科大学生可以选择的论文形式,这里不作介绍。文科大学生一般写的是理论性论文。理论性论文具体又可分成两种:一种是以纯粹的抽象理论为研究对象,研究方法是严密的理论推导和数学运算,有的也涉及实验与观测,用以验证论点的正确性。另一种是以对客观事物和现象的调查、考察所得观测资料以及有关文献资料数据为研究对象,研究方法是对有关资料进行分析、综合、概括、抽象,通过归纳、演绎、类比,提出某种新的理论和新的见解。 按议论的性质不同可以把毕业论文分为立论文和驳论文。立论性的毕业论文是指从正面阐述论证自己的观点和主张。一篇论文侧重于以立论为主,就属于立论性论文。立论文要求论点鲜明,论据充分,论证严密,以理和事实服人。驳论性毕业论文是指通过反驳别人的论点来树立自己的论点和主张。如果毕业论文侧重于以驳论为主,批驳某些错误的观点、见解、理论,就属于驳论性毕业论文。驳论文除按立论文对论点、论据、论证的要求以外,还要求针锋相对,据理力争。 按研究问题的大小不同可以把毕业论文分为宏观论文和微观论文。凡届国家全局性、带有普遍性并对局部工作有一定指导意义的论文,称为宏观论文。它研究的面比较宽广,具有较大范围的影响。反之,研究局部性、具体问题的论文,是微观论文。它对具体工作有指导意义,影响的面窄一些。 另外还有一种综合型的分类方法,即把毕业论文分为专题型、论辩型、综述型和综合型四大类: 1.专题型论文。这是分析前人研究成果的基础上,以直接论述的形式发表见解,从正面提出某学科中某一学术问题的一种论文。如本书第十二章例文中的《浅析领导者突出工作重点的方法与艺术》一文,从正面论述了突出重点的工作方法的意义、方法和原则,它表明了作者对突出工作重点方法的肯定和理解。2.论辩型论文。这是针对他人在某学科中某一学术问题的见解,凭借充分的论据,着重揭露其不足或错误之处,通过论辩形式来发表见解的一种论文。3.综述型论文。这是在归纳、总结前人或今人对某学科中某一学术问题已有研究成果的基础上,加以介绍或评论,从而发表自己见解的一种论文。4.综合型论文。这是一种将综述型和论辩型两种形式有机结合起来写成的一种论文。如《关于中国民族关系史上的几个问题》一文既介绍了研究民族关系史的现状,又提出了几个值得研究的问题。因此,它是一篇综合型的论文。 写作步骤:毕业论文是高等教育自学考试本科专业应考者完成本科阶段学业的最后一个环节,它是应考者的 总结 性独立作业,目的在于总结学习专业的成果,培养综合运用所学知识解决实际 问题 的能力。从文体而言,它也是对某一专业领域的现实问题或 理论 问题进行 科学 研究 探索的具有一定意义的论说文。完成毕业论文的撰写可以分两个步骤,即选择课题和研究课题。 首先是选择课题。选题是论文撰写成败的关键。因为,选题是毕业论文撰写的第一步,它实际上就是确定“写什么”的问题,亦即确定科学研究的方向。如果“写什么”不明确,“怎么写”就无从谈起。 教育部自学考试办公室有关对毕业论文选题的途径和要求是“为鼓励理论与工作实践结合,应考者可结合本单位或本人从事的工作提出论文题目,报主考学校审查同意后确立。也可由主考学校公布论文题目,由应考者选择。毕业论文的总体要求应与普通全日制高等学校相一致,做到通过论文写作和答辩考核,检验应考者综合运用专业知识的能力”。但不管考生是自己任意选择课题,还是在主考院校公布的指定课题中选择课题,都要坚持选择有科学价值和现实意义的、切实可行的课题。选好课题是毕业论文成功的一半。 第一、要坚持选择有科学价值和现实意义的课题。科学研究的目的是为了更好地认识世界、改造世界,以推动社会的不断进步和发展 。因此,毕业论文的选题,必须紧密结合社会主义物质文明和精神文明建设的需要,以促进科学事业发展和解决现实存在问题作为出发点和落脚点。选题要符合科学研究的正确方向,要具有新颖性,有创新、有理论价值和现实的指导意义或推动作用,一项毫无意义的研究,即使花很大的精力,表达再完善,也将没有丝毫价值。具体地说,考生可从以下三个方面来选题。首先,要从现实的弊端中选题,学习了专业知识,不能仅停留在书本上和理论上,还要下一番功夫,理论联系实际,用已掌握的专业知识,去寻找和解决工作实践中急待解决的问题。其次,要从寻找科学研究的空白处和边缘领域中选题,科学研究。还有许多没有被开垦的处女地,还有许多缺陷和空白,这些都需要填补。应考者应有独特的眼光和超前的意识去思索,去发现,去研究。最后,要从寻找前人研究的不足处和错误处选题,在前人已提出来的研究课题中,许多虽已有初步的研究成果,但随着社会的不断发展,还有待于丰富、完整和发展,这种补充性或纠正性的研究课题,也是有科学价值和现实指导意义的。 第二、要根据自己的能力选择切实可行的课题。毕业论文的写作是一种创造性劳动,不但要有考生个人的见解和主张,同时还需要具备一定的客观条件。由于考生个人的主观、客观条件都是各不相同的,因此在选题时,还应结合自己的特长、兴趣及所具备的客观条件来选题。具体地说,考生可从以下三个方面来综合考虑。首先,要有充足的资料来源。“巧妇难为无米之炊”,在缺少资料的情况下,是很难写出高质量的论文的。选择一个具有丰富资料来源的课题,对课题深入研究与开展很有帮助。其次,要有浓厚的研究兴趣,选择自己感兴趣的课题,可以激发自己研究的热情,调动自己的主动性和积极性,能够以专心、细心、恒心和耐心的积极心态去完成。最后,要能结合发挥自己的业务专长,每个考生无论能力水平高低,工作岗位如何,都有自己的业务专长,选择那些能结合自己工作、发挥自己业务专长的课题,对顺利完成课题的研究大有益处。 致 谢 这次论文的完成,不止是我自己的努力,同时也有老师的指导,同学的帮助,以及那些无私奉献的前辈,正所谓你知道的越多的时候你才发现你知道的越少,通过这次论文,我想我成长了很多,不只是磨练了我的知识厚度,也使我更加确定了我今后的目标:为今后的计算机事业奋斗。在此我要感谢我的指导老师——***老师,感谢您的指导,才让我有了今天这篇论文,您不仅是我的论文导师,也是我人生的导师,谢谢您!我还要感谢我的同学,四年的相处,虽然我未必记得住每分每秒,但是我记得每一个有你们的精彩瞬间,我相信通过大学的历练,我们都已经长大,变成一个有担当,有能力的新时代青年,感谢你们的陪伴,感谢有你们,这篇论文也有你们的功劳,我想毕业不是我们的相处的结束,它是我们更好相处的开头,祝福你们!我也要感谢父母,这是他们给我的,所有的一切;感谢母校,尽管您不以我为荣,但我一直会以我是一名农大人为荣。 通过这次毕业设计,我学习了很多新知识,也对很多以前的东西有了更深的记忆与理解。漫漫求学路,过程很快乐。我要感谢信息与管理科学学院的老师,我从他们那里学到了许多珍贵的知识和做人处事的道理,以及科学严谨的学术态度,令我受益良多。同时还要感谢学院给了我一个可以认真学习,天天向上的学习环境和机会。 即将结束*大学习生活,我感谢****大学提供了一次在**大接受教育的机会,感谢院校老师的无私教导。感谢各位老师审阅我的论文。 STC89C52 7805稳压电源模块 DS1302计时模块 按键模块 继电器模块 DS18b20模块 LCD显示模块 控制电路 译码器 定时器 秒脉冲发生器 返回 写命令 读数据 写数据 数据显示 读状态 初始化 开始 报警电路 STC89C52 7805稳压电源模块 DS1302计时模块 按键模块 继电器模块 DS18b20模块 LCD显示模块 _1432920914.vsd � � 开始 变量出事换 使DS1302不具备写保护 复位将产生一个高电平 写1302地址 延时一段时间 向该地址写数据 地址增加 数据写完了吗? 复位产生一个高电平 写1302地址 延时一段时间 将改地址的数据读出 地址增加 数据读完了吗? 显示数据 Y N Y N _1432921576.vsd � � 测温开始 复位DS18B20 跳过ROM指令 启动温度转换 等待数据转换 复位DS18B20 读取温度值 在线访问DS18B20完毕? Y N _1432915468.vsd � � 开始 初始化 按键扫描 是否定时? 执行定时程序 Y 是否到达定时时间或温度 执行相应开关程序并显示 Y N N N _1432905563.vsd � � � � 开始 初始化 线路更新 定时 接收到信息? 信息类型 哪一个插座? 发送缓存 延时 A A 开/关 开/关 开/关 开/关 开/关 开/关 A A 否 是 线路信息 命令信息 其他信息 1 2 3 4 5 6
本文档为【基于单片机的智能插座的设计(含完整C程序和电路图)_毕业论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥11.9 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
不系舟红枫
从教近30年,经验丰富,教学水平较高
格式:doc
大小:2MB
软件:Word
页数:80
分类:工学
上传时间:2019-01-22
浏览量:129