- 1.15 MB
- 2022-04-21 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
南京工程学院自动化学院本科毕业设计(论文)题目:智能温度检测与显示系统的设计专业:自动化南京工程学院自动化学院本科毕业设计(论文)n南京工程学院自动化学院本科毕业设计(论文)GraduationDesign(Thesis)DesignofIntelligenttemperatureexaminationanddisplaysystemByZhangzheSupervisedbyAssociateProf.SongLirongDepartmentofAutomationEngineeringNanjingInstituteofTechnologyJune,2009n毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名: 日 期: 指导教师签名: 日 期: 使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: n学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期:年月日导师签名:日期:年月日n指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神□优□良□中□及格□不及格2、学生掌握专业知识、技能的扎实程度□优□良□中□及格□不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力□优□良□中□及格□不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性□优□良□中□及格□不及格5、完成毕业论文(设计)期间的出勤情况□优□良□中□及格□不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)指导教师:(签名)单位:(盖章)年月日n评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)评阅教师:(签名)单位:(盖章)年月日n教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况□优□良□中□及格□不及格2、对答辩问题的反应、理解、表达情况□优□良□中□及格□不及格3、学生答辩过程中的精神状态□优□良□中□及格□不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格评定成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)教研室主任(或答辩小组组长):(签名)年月日教学系意见:系主任:(签名)年月日n南京工程学院自动化学院本科毕业设计(论文)摘要近年来,形形色色家电器已经在人们的日常生活中扮演着十分重要的角色。随着科学技术的不断创新,各种智能家电也渐渐的走进了人们的日常生活,其中温度控制方面在智能家电领域的应用将十分广泛。本课题所研究的智能温度检测,采用目前市场普遍应用的数字温度传感器实现,加之其人性化的液晶显示功能,今后在家用电器领域具有广阔的应用前景。系统主要的组成模块如下:键盘扫描模块(4个独立按键);检测信息提示模块(发光二极管);日期显示模块(通过DS1302时钟芯片实现);液晶显示模块(采用12864液晶显示芯片);温度控制模块(使用DS18B20温度传感器设计);其实现的主要功能为:(1)日期显示,用于实现实时的时间信息显示(2)加热模式,主要应用在智能热水器方面,用于控制水温。(3)制冷模式,主要应用在智能冰箱方面,用于控制冷藏食物的温度。(4)恒温模式,主要应用在空调方面,用于控制室内的温度,保持恒温。(5)附加功能:体温检测模式。由于目前世界各国人们正在遭受甲型H1N1流感的威胁,本设计所带的附加功能,主要完成初步检测的任务。关键词:单片机;温度控制;智能家电IVn南京工程学院自动化学院本科毕业设计(论文)ABSTRACTTheelectricalappliancesofallformsalreadywereplayinginrecentyearstheveryimportantroleinpeople'sdailylife.Alongwithscience'sandtechnology'sunceasinginnovation,eachkindofintelligentelectricalappliancesalsograduallyenteredpeople'sdailylife,thetemperaturecontrolaspectwillbeverywidespreadintheintelligentelectricalappliancesdomain'sapplication.Thistopicstudiestheintelligencetemperaturedetector,usesthepresentmarketuniversalapplicationthedigittemperaturesensortorealize,inadditionitsuser-friendlyliquidcrystaldisplayfunction,fromnowonwillhavethebroadapplicationprospectinthedomesticelectricappliancesdomain.Thesystemmaincompositionmoduleisasfollows:Keyboardscanningmodule(4independentpressedkeys);Simulationheatingmodule(lightemitterdiode);Thedatedisplaymodule(realizesthroughDS1302clockchip);Theliquidcrystaldisplaymodule(uses12864liquidcrystaldisplaychip);Thetemperaturecontrolmodule(usesDS18B20temperaturesensordesign);Itrealizesthemajorfunctionis:(1)thedatedemonstratedthatusesinrealizingthereal-timetimeinformationtodemonstrate(2)heatsupthepattern,themainapplicationintheintelligentwaterheateraspect,usesincontrollingthewatertemperature.(3)refrigeratesthepattern,themainapplicationintheintelligentrefrigeratoraspect,usesincontrollingrefrigerationfoodthetemperature.(4)theconstanttemperaturepattern,themainapplicationintheairconditioningaspect,usesinthecontrolroomthetemperature,maintainstheconstanttemperature.(5)attachesthefunction:Bodytemperatureexaminationpattern.BecausethepresentvariouscountriespeoplearesufferingtheTypeAH1N1flu'sthreat,thisdesignbringstheadditionalfunction,mainlycompletestheinitialsurveytheduty.Keywords:Monolithicintegratedcircuit;Temperaturecontrol;IntelligentelectricalappliancesIVn南京工程学院自动化学院本科毕业设计(论文)目录第一章绪论31.1引言31.2选题的背景和意义31.3本文的结构4第二章系统总体方案设计52.1方案选择52.2总体方案设计5第三章系统硬件设计73.1单片机控制模块设计73.1.1概述73.1.2功能特性83.1.3引脚描述83.1.4时钟振荡电路与复位电路103.1.5AT89C52硬件连接图:113.2温度控制模块设计(DS18B20)123.2.1DS18B20产品的特点123.2.2DS18B20的引脚介绍123.2.3DS18B20硬件连接133.2.4DS18B20的工作原理143.3时钟模块设计(DS1302)173.3.1概述173.3.2DS1302引脚描述及与单片机硬件连接183.4液晶显示模块设计(12864)193.4.1液晶显示模块概述193.4.2外形尺寸203.4.3模块引脚说明203.4.412864液晶与单片机的硬件连接图213.5发光二极管与独立键盘模块设计223.5.1发光二极管223.5.2独立键盘22第四章系统软件设计244.1温度控制模块程序设计244.2日期模块程序设计274.2.1DS1302内部寄存器274.2.2DS1302的工作时序图304.3液晶显示模块程序设计334.3.1用户指令集334.3.2显示坐标关系374.3.3显示RAM384.3.412864工作时序图39IVn南京工程学院自动化学院本科毕业设计(论文)4.4发光二级管与键盘程序设计424.5系统程序流程图44第五章附加功能介绍455.1硬件连接图455.2功能介绍45第六章结论466.1论文总结466.2感想46致谢47参考文献48附录A:英文资料49附录B:英文资料翻译53附录CPROTUES仿真硬件设计图56附录D程序清单57附件:毕业论文光盘资料IVn南京工程学院自动化学院本科毕业设计(论文)第一章绪论1.1引言 随着科学技术的飞速发展,各种高技术不断涌入我们的生活、工作,也改变着我们的认识。融入一定智慧的各类智能技术,正在悄悄走近我们,并将会成为下一个世纪技术的焦点。家用电器的功能控制大致经历了普通控制型、电子控制型、微电脑控制型、智能模糊控制型的发展历程,其使用操作也是由简单到复杂、再到简单的过程,并且家用电器的功能越来越完善。现代家用电器已经进入了微电脑(单片机)、传感器智能模糊控制的新时代。随着单片微型计算机不断发展,由于它具有体积小、功能强、性价比高等特点,因此其在温度控制领域方面的应用已经逐步占据主导地位。由其构成的温度控制器的已广泛应用于家用电器、节能装置等诸多领域,使产品小型化、智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。其实对人类来说,先进和智能的家用电器的发明和使用是巨大的贡献,我们应该从积极的和长远的意义去看待这些发明。多亏了这些先进和智能的家用电器减轻了家务的繁杂和冗长,家庭主妇们可以节约大量的时间来陪伴家人、孩子,所以在现代,全职的家庭主妇就很少了,既能外出工作,又能回家做家务,里外都不耽误。1.2选题的背景和意义在人类的生活环境中,温度扮演着极其重要的角色。无论你生活在哪儿,从事哪些工作,无时无刻不在与温度打着交道。在温度控制领域温度传感元件几乎是无处不在。从空调系统、冰箱、电饭煲、电风扇等家电产品直至PC机、服务器、计算机外设、移动电话手机等,都需要具有温度传感功能的器件。虽然长期以来热敏电阻器是最常用的元件,目前在一些工业应用领域仍然起重要的作用;但是,集成电路温度传感器比起热敏电阻器有着明显的优点,包括准确度更高,体积更小,功耗更低,更加适合在集成电路系统中应用。温度传感器集成电路的电压输出与温度成正比,在相当宽的温度范围内,都具有很高的准确度。反之,热敏电阻器的电压输出与温度不具有线性关系,需通过查表或外加线性化电路,才能得到准确的温度。而且,热敏电阻器在高温区段电压变化率较小,不易分辨,造成温度测量的误差较大。这是热敏电阻器的最大缺点。相比之下,集成电路温度传感器因其电压输出与温度成线性关系,无论在高温或低温范围内,准确度都是一样的。其次,热敏电阻器产品在不同的批次间存在差异,电子响应性能不一致。因而,使用前都需要进行调校,在大量生产时增加成本和时间。集成电路71n南京工程学院自动化学院本科毕业设计(论文)温度传感器的输出阻抗较低,功耗也较低;热敏电阻器通过消耗电流感受温度,功耗较高。而且,长时间感受温度使热敏电阻器本身的温度也升高,测量温度的准确性降低。从成本上分析,尽量单个热敏电阻器的价格低,但它必须配合相关元件才能达到集成电路温度传感器的准确度。从整体上说,热敏电阻器所需的成本反而更高。采用集成电路温度传感器需要较少的芯片支持,占用印刷电路板的空间小。而且,系统设计可以简化,节省设计时间。基于温度传感元件以上的优点,在本设计中采用了目前市场上广泛应用的一款数字温度传感器——DS18B20。它是由美国DALLAS公司生产单总线器件,具有线路简单,体积小的特点。随着科学技术的不断创新,数字温度传感器已经广泛应用在家用电器、工业控制以及人们的日常生活等许多领域。特别是在家用电器领域应用的最为广泛,例如智能热水器、空调器恒温装置、电冰箱制冷系统等均可采用数字温度传感器来实现。随着人们生活水平的不断提高,各种智能家电会成为家电行业的主要发展方向。届时,数字温度传感器以及液晶显示模块将会进一步走进更加广泛的家用电器领域。为人们的生活服务。1.3本文的结构本文以基于单片机的智能温度检测器的设计。对单片机应用与数字温度传感器、液晶显示、时钟芯片等的应用技术进行了研究。全文共分为六章,各章的主要内容如下:第一章简要地介绍智能家电的发展以及温度控制技术在家电领域中的应用;第二章规划并给出系统的总体设计方案;第三章介绍了系统各模块的介绍,及其在PROTUES中的硬件仿真设计;第四章对系统的各模块进行软件设计,给出了程序的流程图;第五章对对于系统的附加功能(体温检测)进行了介绍;第六章总结了整个课题研究工作,总结了设计的成果和感想。71n南京工程学院自动化学院本科毕业设计(论文)第二章系统总体方案设计2.1方案选择由于数字温度传感器的各方面的优点。在本设计中采用了目前市场上广泛应用的一款数字温度传感器——DS18B20。它是由美国DALLAS公司生产单总线器件,具有线路简单,体积小的特点。以AT89C52为核心的单片机控制系统,采用12864液晶来实现相应信息的显示,用DS1302时钟芯片来实现实时时间提示功能。2.2总体方案设计系统主要的组成模块如下:键盘扫描模块(4个独立按键);检测信息提示模块(发光二极管);日期显示模块(通过DS1302时钟芯片实现);液晶显示模(采用12864液晶显示芯片);温度控制模块(使用DS18B20温度传感器设计);附加功能模块(体温检测)。系统总体方案设计框图如图2.1所示日期显示模块DS1302检测信息提示模块AT89C52单片机键盘液晶显示模块12864附加功能模块温度控制模块DS18B20图2.1系统总体方案设计框图其实现的以下的功能:71n南京工程学院自动化学院本科毕业设计(论文)(1)日期显示模块:编程通过AT89C52控制DS1302时钟芯片实现时钟功能(包括:年、月、日、星期、时、分、秒)。相应的时期信息发送到12864液晶上显示。(2)当S1键时:进入制冷模式,温度控制模块DS18B20采集当前温度信息与制冷的设定值比较。并将相应的信息发送到12864液晶上显示。(3)当S2键时:进入加热模式,温度控制模块DS18B20采集当前温度信息与加热的设定值比较。并将相应的信息发送到12864液晶上显示(4)当S3键时:进入恒温模式,温度控制模块DS18B20采集当前温度信息与恒温设定值比较。并将相应的信息发送到12864液晶上显示(5):当S4键时:进入附加功能模块,温度控制模块DS18B20采集当前体温数值并与设定值比较。并将相应的信息发送到12864液晶上以及发光二极管上显示71n南京工程学院自动化学院本科毕业设计(论文)第三章系统硬件设计3.1单片机主控制模块设计3.1.1概述AT89C52是美国ATMEL公司生产的低电压,高性能CMOS电路8位单片机,片内含有8Kbytes的可反复擦写的FLASH只读程序存储器和256bytes的随机存取数据存储器(RAM)。芯片采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统。内置通用8位中央处理器(CPU)和Flash存储单元,由于功能强大,可应用于多种高性价比场合。AT89C52的引脚如图3.1所示。主要性能参数如下:l与MCS-51产品指令系统完全兼容l8K字节可重擦写Flash闪速存储器l1000次擦写周期l全静态操作:0Hz~24MHzl三级加密程序存储器l256×8字节内部RAMl32个可编程I/O口线l3个16位定时/计数器l8个中断源l可编程串行UART通道l低功耗空闲和掉电模式图3.1AT89C52芯片引脚图71n南京工程学院自动化学院本科毕业设计(论文)3.1.2功能特性AT89C52提供以下的功能标准:8K字节闪烁存储器,256字节随机存取数据存储器,32个I/O口,3个16位定时/计数器,1个6向量两级中断结构,1个全双工串行通信口,片内振荡器和时钟电路。另外,AT89C52还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式。空闲方式停止中央处理器的工作,能够允许RAM、定时/计数器、串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件的工作直到下一个硬件复位。3.1.3引脚描述VCC:电源电压GND:地P0口:P0口是一组8位漏极开路双向I/O口,即地址/数据总线复用口。作为输出口时,每一个管脚都能够驱动8个TTL电路。当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。P0口在FLASH编程时,P0口接收指令,在程序校验时,输出指令,需要外接上拉电阻。P1口:P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为输入口。因为内部有上拉电阻,某个引脚被外部信号拉低时输出一个电流。与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入和输出。FLASH编程和程序校验期间,P1接受低8位地址。P2口:P2口是一个内部带有上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。因为内部有上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。FLASH编程或校验时,P2口接收高位地址和其它控制信号。P3口:P3口是一组带有内部电阻的8位双向I/O口,P3口输出缓冲故可驱动4个TTL电路。对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。P3口除了作为一般的I/O口外,更重要的用途是它的第二功能,如下表3.271n南京工程学院自动化学院本科毕业设计(论文)所示:端口引脚第二功能P3.0RXDP3.1TXDP3.2INT0P3.3INT1P3.4T0P3.5T1P3.6WRP3.7RD表3.2P3口第二功能表P3口还接收一些用于FLASH存储器编程和程序校验的控制信号。RST:复位输入。当振荡器工作时,RET引脚出现两个机器周期以上的高电平将使单片机复位。:当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE以时钟震荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲时,FLASH存储器编程时,这个引脚还用于输入编程脉冲。如果必要,可对特殊寄存器区中的8EH单元的D0位置禁止ALE操作。这个位置后只有一条MOVX和MOVC指令ALE才会被应用。此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序储存允许输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器读取指令时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器时,这两次有效的PSEN信号不出现。:外部访问允许。欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。需要注意的是:如果加密位LBI被编程,复位时内部会锁存EA端状态。如EA端为高电平,CPU则执行内部程序存储器中的指令。闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V编程电压VPP。71n南京工程学院自动化学院本科毕业设计(论文)XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。3.1.4时钟振荡电路与复位电路AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激震荡器。外接石英晶体及电容C1,C2接在放大器的反馈回路中构成并联震荡电路。对外接电容C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响震荡频率的高低、震荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30PF±10PF,而如果使用陶瓷振荡器建议选择40PF±10PF。用户也可以采用外部时钟。采用外部时钟的电路如图3.3示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求图3.3时钟振荡电路本设计中采用如图3.4所示的振荡电路:71n南京工程学院自动化学院本科毕业设计(论文)图3.4振荡电路本设计中采用如图3.5所示的复位电路:图3.5复位电路3.1.5AT89C52硬件连接图:本设计中采用AT89C52硬件连接图如图3.6所示图3.6AT89C52硬件连接图71n南京工程学院自动化学院本科毕业设计(论文)3.2温度控制模块设计(DS18B20)DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。3.2.1DS18B20产品的特点(1)、只要求一个端口即可实现通信。(2)、在DS18B20中的每个器件上都有独一无二的序列号。(3)、实际应用中不需要外部任何元器件即可实现测温。(4)、测量温度范围在-55。C到+125。C之间。(5)、数字温度计的分辨率用户可以从9位到12位选择。(6)、内部有温度上、下限告警设置。3.2.2DS18B20的引脚介绍TO-92封装的DS18B20的引脚排列及其引脚功能描述见图3.7所示:图3.7DS18B20的引脚说明3.2.3DS18B20硬件连接首先介绍一下“单总线”71n南京工程学院自动化学院本科毕业设计(论文)的概念。主机可以是微控制器,从机是单总线器件,它们之间的数据交换只通过一条数据线。设备通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时释放总线,让其他设备使用总线。单总线通常要求外接一个约5K的上拉电阻。Ds18b20芯片手册上的典型连接如下图3.8所示.从图中可以看出,DS18B20与单片机的连接非常简单,单片机只需要一个I/O口就可以控制DS18B20。图3.8Ds18b20的典型硬件连接图在本设计中,DS18B20与AT89C52硬件连接如图3.9所示:图3.9Ds18b20硬件连接图3.2.4DS18B20的工作原理存储器存储器有一个暂存SRAM和一个存储高低报警触发值TH和TL的非易失性电可擦除EEPROM组成。注意当报警功能不使用时,TH和TL寄存器可以被当作普通寄存器使用。(1)位0和位1为测得温度信息的LSB和MSB。这两个字节是只读的。71n南京工程学院自动化学院本科毕业设计(论文)(1)第2和第3字节是TH和TL的拷贝。(2)位4包含配置寄存器数据。(3)位5,6和7被器件保留,禁止写入。(4)高速暂存器的位8是只读的,包含以上八个字节的CRC码。DS18B20的存储器结构示于图3.10:图3.10DS18B20的存储器结构图测温操作DS18B20的核心功能是它的直接读数字的温度传感器。温度传感器的精度为用户可编程的9,10,11或12位,分别以0.5℃,0.25℃,0.125℃和0.0625℃增量递增。在上电状态下默认的精度为12位。DS18B20启动后保持低功耗等待状态;当需要执行温度测量和AD转换时,总线控制器必须发出[44h]命令。在那之后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度寄存器中,温度寄存器格式图3.11。图3.11DS18B20温度寄存器格式图由于DS18B20在上电状态下默认的精度为12位,最高位是符号位,即温度值是11位,存储在高速暂存器的温度寄存器中0—71n南京工程学院自动化学院本科毕业设计(论文)1字节。单片机在读取数据时,一次读两个字节共16位数据,其中高5位为符号位,低11位为温度数据位。(1)当前5位为0时,读取的温度为正值,将读到的11位二进制温度值乘以0.0625,可以得到实际温度值。(2)当前5位为1时,读取的温度为负值,需要将读到的11位二进制温度值按位取反并加1,再乘以0.0625,才可以得到实际温度值。本设计中,对于读取的温度数值的处理过程现分析如下:首先从DS18B20中读出转换完成的当前温度值a=ReadOneChar();//温度值低位b=ReadOneChar();//温度值高位t=b;t<<=8;t=t|a;t=t*0.0625;//转换为实际的十进制温度)DS18B20的指令1、ROM指令一旦总线控制器探测到一个存在脉冲,它就发出一条ROM指令。如果总线上挂有多只DS18B20,这些指令将基于器件独有的64位ROM片序列码使得总线控制器选出特定要进行操作的器件。这些指令同样也可以使总线控制器识别有多少只,什么型号的器件挂在总线上,同样,它们也可以识别哪些器件已经符合报警条件。ROM指令有5条,都是8位长度。总线控制器在发起一条DS18B20功能指令之前必须先发出一条ROM指令。64位(激)光刻只读存储器介绍:每只DS18B20都有一个唯一存储在ROM中的64位编码。最前面8位是单线系列编码:28h。接着的48位是一个唯一的序列号。最后8位是以上56位的CRC编码。图3.1264位(激)光刻只读存储器F0h—(搜索ROM指令)当系统上电初始化的时候,总线控制器必须通过识别总线上所有ROM片序列码去71n南京工程学院自动化学院本科毕业设计(论文)得到从机的数目和型号。总线控制器通过搜索ROM指令多次循环搜索ROM编码,以确认所有从机器件。33h—(读取ROM指令)只有在总线上存在单只DS18B20的时候才能使用这条命令。该命令允许总线控制器在不使用搜索ROM指令的情况下读取从机的64位片序列码。如果总线上有不止一只从机,当所有从机试图同时传送信号时就会发生数据冲突。55h—(匹配ROM指令)匹配ROM指令,后跟64位ROM编码序列,让总线控制器在多点总线上定位一只特定的DS18B20。只有和64位ROM片序列码完全匹配的DS18B20才能响应随后的存储器操作指令;所有和64位ROM片序列码不匹配的从机都将等待复位脉冲。CCh—(忽略ROM指令)这条指令允许总线控制器不用提供64位ROM编码就使用功能指令。例如,总线控制器可以先发出一条忽略ROM指令,然后发出温度转换指令[44h],从而完成温度转换操作。注意:当只有一只从机在总线上时,无论如何,忽略ROM指令之后只能跟着发出一条读取暂存器指令[BEh]。在单点总线情况下使用该命令,器件无需发回64位ROM编码,从而节省了时间。如果总线上有不止一只从机,若发出忽略ROM指令,由于多只从机同时传送信号,总线上就会发生数据冲突。ECH—(报警搜索指令)这条命令的流程和搜索ROM指令相同,然而,只有满足报警条件的从机才对该命令作出响应。只有在最近一次测温后遇到符合报警条件的情况,DS18B20才会响应这条命令。2、DS18B20功能指令在总线控制器发给欲连接的DS18B20一条ROM命令后,跟着可以发送一条DS18B20功能指令。这些命令允许总线控制器读写DS18B20的暂存器,发起温度转换和识别电源模式。DS18B20的功能指令详见下文。44h—(温度转换指令)这条命令用以启动一次温度转换。温度转换指令被执行,产生的温度转换结果数据以2个字节的形式被存储在高速暂存器中,而后DS18B20保持等待状态。4Eh—(写暂存器指令)这条命令向DS18B20的暂存器写入数据,开始位置在TH寄存器(暂存器的第2个字节),接下来写入TL寄存器(暂存器的第3个字节),最后写入配置寄存器(暂存器的第4个字节)。数据以最低有效位开始传送。上述三个字节的写入必须发生在总线控制器发出复位命令前,否则会中止写入。BEh—(读暂存器指令)71n南京工程学院自动化学院本科毕业设计(论文)这条命令读取暂存器的内容。读取将从字节0开始,一只进行下去,直到第9字节(字节8,CRC)读完,如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。48h—(拷贝暂存器指令)这条命令把TH,TL和配置寄存器(第2、3、4字节)的内容拷贝到EEPROM中。B8H—(召回EEPROM指令)这条命令把报警触发器的值(TH和TL)以及配置数据从EEPROM拷回暂存器。总线控制器在发出该命令后读时序,DS18B20会输出拷回标识:0标识正在拷回,1标识拷回结束。这种拷回操作在DS18B20上电时自动执行,这样器件一上电暂存器里马上就存在有效的数据了。B4h—(读电源模式指令)总线控制器在这条命令发给DS18B20后发出读时序,若是寄生电源模式,DS18B20将拉低总线,若是外部电源模式,DS18B20将会把总线拉高。本设计中,由于只采用了一个DS18B20温度传感器,则在具体程序设计中采用了以下指令。分析如下:WriteOneChar(0xCC);//跳过读序列号的操作,由于只有一个DS18B20WriteOneChar(0x44);//启动温度转换WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度值3.3时钟模块设计(DS1302)3.3.1概述DS1302是DALLAS公司推出的涓流充电时钟芯片内含,有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24或12小时格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:RES(复位)、I/O(数据线)、SCLK(串行时钟)。串行时钟时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW。DS1302是由DS1202改进而来,增加了以下的特性:双电源管脚用于主电源和备份电源供应,Vcc1为可编程涓流充电,电源附加七个字节存储器。71n南京工程学院自动化学院本科毕业设计(论文)它广泛应用于电话、传真、便携式仪器以及电池供电的仪器仪表等产品领域。下面将主要的性能指标作一综合:(1)实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整的能力。(2)318位暂存数据存储RAM(3)串行I/O口方式使得管脚数量最少(4)宽范围工作电压:2.0—5.5V(5)工作电流:2.0V时,小于300nA(6)读/写时钟或RAM数据时,有两种传送方式:单字节传送和多字节传送(字符组方式)(8)脚DIP封装或可选的8脚SOIC封装(根据表面装配)(9)简单3线接口(10)与TTL兼容(Vcc=5V)(11)可选工业级温度范围-40—85摄氏度(12)与DS1202兼容(13)在DS1202基础上增加的特性-对Vcc1有可选的涓流充电能力-双电源管用于主电源和备份电源供应-备份电源管脚可由电池或大容量电容输入-附加的7字节暂存存储器3.3.2DS1302引脚描述及与单片机典型接口DS1302的管脚排列及描述如图3.13所示管脚描述:X1,X2——32.768KHz晶振管脚GND——地RST——复位脚I/O——数据输入/输出引脚SCLK——串行时钟Vcc1,Vcc2——电源供电管脚71n南京工程学院自动化学院本科毕业设计(论文)图3.13DS1302引脚分布DS1302与单片机典型接口由下图表示图3.14DS1302与单片机典型连接在本设计中,DS1302与AT89C52硬件连接如图3.15所示:图3.15DS1302的硬件连接3.4液晶显示模块设计(12864)71n南京工程学院自动化学院本科毕业设计(论文)3.4.1液晶显示模块概述AT12864汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。主要技术参数和显示特性:电源:VDD3.3V~+5V(内置升压电路,无需负压);显示内容:128列×64行显示颜色:黄绿显示角度:6:00钟直视LCD类型:STN与MCU接口:8位或4位并行/3位串行配置LED背光多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等3.4.2外形尺寸外观尺寸:93×70×12.5mm视域尺寸:73×39mm外形尺寸如图3.16所示:图3.1612864外形尺寸图3.4.3模块引脚说明128X64HZ引脚说明71n南京工程学院自动化学院本科毕业设计(论文)图3.17128X64HZ引脚说明逻辑工作电压(VDD):4.5~5.5V电源地(GND):0V工作温度(Ta):0~60℃(常温)/-20~75℃(宽温)3.4.412864液晶与单片机的硬件连接图图3.1812864液晶与单片机的硬件连接图71n南京工程学院自动化学院本科毕业设计(论文)3.5发光二极管与独立键盘模块设计3.5.1发光二极管本次设计中采用了两只发光二极管:红色和绿色。其与AT89C52的硬件连接方式如下:图3.19发光二极管硬件连接图由于二极管的单向导电性可知:阳极连接VCC,阴极通过100欧姆(起限流的作用)的电阻连接到单片机的P1.5与P1.6口。当P1.5与P1.6口为低电平时,则发光二极管亮起。3.5.2独立键盘键盘是微型计算机最常用的输入设备,用户可以通过键盘向计算机输入指令、地址和数据。键盘分为:编码键盘和非编码键盘。一般单片机系统中采用非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。独立键盘与AT89C51的硬件连接如下图所示:图3.20独立键盘硬件连接图按键开关的抖动问题71n南京工程学院自动化学院本科毕业设计(论文)组成键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的。在下图中,当开关S未被按下时,P1。0输入为高电平,S闭合后,P1。0输入为低电平。由于按键是机械触点,当机械触点断开、闭合时,会有抖动,P1。0输入端的波形如图2所示。这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全可以感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对计算机而言,这已是一个“漫长”的时间了。为使CPU能正确地读出P1口的状态,对每一次按键只作一次响应,就必须考虑如何去除抖动,常用的去抖动的方法有两种:硬件方法和软件方法。单片机中常用软件法,因此,对于硬件方法我们不介绍。软件法其实很简单,就是在单片机获得P1。0口为低的信息后,不是立即认定S1已被按下,而是延时10毫秒或更长一些时间后再次检测P1。0口,如果仍为低,说明S1的确按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键释放后(P1。0为高)再延时5-10个毫秒,消除后沿的抖动,然后再对键值处理。不过一般情况下,我们通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。当然,实际应用中,对按键的要求也是千差万别,要根据不同的需要来编制处理程序,但以上是消除键抖动的原则。本次设计中采用以下的延时子函数来完成毫秒级的延时voiddelay1(unsignedintz){unsignedintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}第四章系统软件设计4.1温度控制模块程序设计DS18B20的工作时序图71n南京工程学院自动化学院本科毕业设计(论文)由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。复位时序图4.1复位时序图由时序图图可知:1现将数据线置为高电平。2延时(时间尽可能短一点)3数据线拉到低电平04延时750us(该时间范围可以在480—960us)5数据线拉到高电平16延时等待。如果初始化成功在15—60us产生一个有DS18B20返回的低电平0,根据该状态可以确定它的存在。7若CPU读到数据线上的低电平0后,还要进行延时480us。将数据线再次拉到高电平1后结束。由以上的分析可以写出DS18B20的初始化子函数如下:Init_DS18B20(void)//传感器初始化{unsignedcharx=0;71n南京工程学院自动化学院本科毕业设计(论文)DQ=1;//DQ复位delay(10);//稍做延时DQ=0;//单片机将DQ拉低delay(80);//精确延时大于480us//450DQ=1;//拉高总线delay(20);x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败delay(30);}读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。图4.2读时序时序图由时序图图可知:1将数据线拉到低电平0,延时6us。3将数据线拉到高电平1,延时4us。4读数据线的状态得到一位状态位,并进行数据处理,延时。5重复上面的步骤,读完一个字节的数据。由以上的分析可以写出DS18B20的读数据子函数如下:ReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--)71n南京工程学院自动化学院本科毕业设计(论文){DQ=0;//给脉冲信号dat>>=1;DQ=1;//给脉冲信号if(DQ)dat|=0x80;delay(8);}return(dat);}写时序对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。图4.3写时序时序图1数据线拉到低电平0。2按从低到高位顺序发送数据,一次发送一位,延时50us3将数据线拉到高电平1.4重复上面的步骤,直到发送完一个字节。由以上的分析可以写出DS18B20的写字节子函数如下:WriteOneChar(unsignedchardat){unsignedchari=0;71n南京工程学院自动化学院本科毕业设计(论文)for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;delay(10);DQ=1;dat>>=1;}delay(8);}4.2日期模块程序设计4.2.1DS1302内部寄存器CH:时钟停止位寄存器2的第7位:12/24小时标志CH=0振荡器工作允许bit7=112小时模式CH=1振荡器停止bit7=024小时模式WP:写保护位寄存器2的第5位:AM/PM定义WP=0寄存器数据能够写入AP=1下午模式WP=1寄存器数据不能写入AP=0上午模式TCS:涓流充电选择DS:二极管选择位TCS=1010使能涓流充电DS=01选择一个二极管TCS=其它禁止涓流充电DS=10选择两个二极管DS=00或11,即使TCS=1010,充电功能也被禁止71n南京工程学院自动化学院本科毕业设计(论文)图4.4DS1302内部寄存器在本设计中,对于DS1302寄存器的操作分析如下:(1)取时间voidgettime(systemtime*time){ucharreadvalue;readvalue=dat_read(ds1302_second);//读出“秒”的数值由DS1302芯片中关于“秒”寄存器如下:71n南京工程学院自动化学院本科毕业设计(论文)CH:时钟停止位则可知通过如下的运算可以可以将“秒”的数值转换为十进制数time->second=((readvalue&0x70)>>4)*10+(readvalue&0x0f);同理可以根据上面表中的有关DS1302内部寄存器的格式完成下面的“分”,“时”,“日”,“月”,“年”,“星期”的操作。readvalue=dat_read(ds1302_minute);time->minute=((readvalue&0x70)>>4)*10+(readvalue&0x0f);readvalue=dat_read(ds1302_hour);time->hour=((readvalue&0x30)>>4)*10+(readvalue&0x0f);readvalue=dat_read(ds1302_day);time->day=((readvalue&0x30)>>4)*10+(readvalue&0x0f);readvalue=dat_read(ds1302_week);time->week=(readvalue&0x07);readvalue=dat_read(ds1302_month);time->month=((readvalue&0x01)>>4)*10+(readvalue&0x0f);readvalue=dat_read(ds1302_year);time->year=((readvalue&0xf0)>>4)*10+(readvalue&0x0f);//下面是将读取出来的时间依次存入datastring数组中datastring[0]=time->year/10;datastring[1]=time->year%10;datastring[2]=time->month/10;datastring[3]=time->month%10;datastring[4]=time->day/10;datastring[5]=time->day%10;datastring[6]=time->hour/10;datastring[7]=time->hour%10;datastring[8]=time->minute/10;datastring[9]=time->minute%10;datastring[10]=time->second/10;datastring[11]=time->second%10;datastring[12]=time->week;(2)是否写保护voidds1302_protect(bitflag)71n南京工程学院自动化学院本科毕业设计(论文){if(flag)dat_write(0x8e,0x80);//禁止写elsedat_write(0x8e,0x00);//允许写}由于DS1302寄存器中(地址为0X8E)WP:写保护位WP=0寄存器数据能够写入WP=1寄存器数据不能写入(3)12/24小时时间设置由于DS1302寄存器中(地址为0X85或0X84)寄存器的第7位12/24小时标志bit7=1,12小时模式bit7=0,24小时模式voidday_set(bitflag)//flag为1为12时制,为0则为24小时制{ucharhour;hour=(dat_read(0x85)&0x7f);//保留小时寄存器中原有的时间值ds1302_protect(0);if(flag){dat_write(0x84,0x80|hour);//将寄存器的第7位置为1}71n南京工程学院自动化学院本科毕业设计(论文)else{dat_write(0x84,0x00|hour);//将寄存器的第7位置为0}ds1302_protect(1);}(4)DS1302初始化由于DS1302寄存器中CH:时钟停止位CH=0振荡器工作允许CH=1振荡器停止voidinit_ds1302(void){ucharsecond=dat_read(ds1302_second);if(second&0x80)//如果CH=1振荡器停止settime(ds1302_second,0);//通过设定CH=0振荡器工作允许}4.2.2DS1302的工作时序图(1)首先根据单总线方式编写向DS1302中写一个字节数据的子函数voidds1302_write(uchardat){uchari,j;j=dat;for(i=0;i<8;i++)//由于采用单总线通讯方式,数据要一位位的传送{IO=j&0x01;CLK=1;//一个时钟脉冲传送一位CLK=0;j>>=1;}}71n南京工程学院自动化学院本科毕业设计(论文)(2)首先根据单总线方式编写从DS1302读一个字节数据的子函数uchards1302_read(){uchari;for(i=0;i<8;i++){ACC=ACC>>1;//由于先读出的为数据的最低位ACC7=IO;//将总线上的数据读到ACC7中CLK=1;CLK=0;}return(ACC);}读时序:图4.5DS1302的读工作时序图由时序图可知从DS1302读数据过程:先写入一字节的地址,说明从此地址中读出一字节数据,再把数据返回。编写从DS1302读数据的子函数如下:uchardat_read(ucharaddr)//addr中存放地址值{uchardat;RST=0;CLK=0;RST=1;ds1302_write(addr|0x01);//将addr中存放地址值写入DS1302dat=ds1302_read();//从DS1302中读出一字节数据CLK=1;71n南京工程学院自动化学院本科毕业设计(论文)RST=0;return(dat);}写时序:图4.6DS1302的写工作时序图由时序图可知向DS1302写入数据过程:先写入一字节的地址,说明向此地址中写入一字节数据。voiddat_write(ucharaddr,uchardat)//addr为要写数据的地址,dat为要写的数据{RST=0;CLK=0;RST=1;ds1302_write(addr);ds1302_write(dat);CLK=1;RST=0;}4.3液晶显示模块程序设计4.3.1设计指令71n南京工程学院自动化学院本科毕业设计(论文)图4.7液晶显示模块设计指令4.3.2显示坐标关系1、图形显示坐标水平方向X—以字节单位垂直方向Y—以位为单位图4.8液晶显示模块的图形显示坐标71n南京工程学院自动化学院本科毕业设计(论文)图4.9液晶显示模块的汉字显示坐标4.3.3显示RAM1、文本显示RAM(DDRAM)文本显示RAM提供8个×4行的汉字空间,当写入文本显示RAM时,可以分别显示CGROM、HCGROM与CGRAM的字型;ST7920A可以显示三种字型,分别是半宽的HCGROM字型、CGRAM字型及中文CGROM字型。三种字型的选择,由在DDRAM中写入的编码选择,各种字型详细编码如下:显示半宽字型:将一位字节写入DDRAM中,范围为02H-7FH的编码。显示CGRAM字型:将两字节编码写入DDRAM中,总共有0000H,0002H,0004H,0006H四种编码显示中文字形:将两字节编码写入DDRAMK,范围为A1A0H-F7FFH(GB码)或A140H-D75FH(BIG5码)的编码。2、绘图RAM(GDRAM)绘图显示RAM提供128×8个字节的记忆空间,在更改绘图RAM时,先连续写入水平与垂直的坐标值,再写入两个字节的数据到绘图RAM,而地址计数器(AC)会自动加一;在写入绘图RAM的期间,绘图显示必须关闭,整个写入绘图RAM的步骤如下:1、关闭绘图显示功能。2、先将水平的位元组坐标(X)写入绘图RAM地址;再将垂直的坐标(Y)写入绘图RAM地址;将D15——D8写入到RAM中;将D7——D0写入到RAM中;打开绘图显示功能。绘图显示的缓冲区对应分布请参考“显示坐标”游标/闪烁控制ST7920A提供硬件游标及闪烁控制电路,由地址计数器(addresscounter)的值来指定DDRAM中的游标或闪烁位置。4.3.412864工作时序图71n南京工程学院自动化学院本科毕业设计(论文)LCD初始化voidlcd_init(void){unsignedcharx,y;e=rs=rw=0;cs1=cs2=1;cs1=0;cs2=1;rs=rw=0;P2=0x3f;e=1;delay(2);e=0;delay(2);cs1=0;cs2=1;rs=rw=0;P2=0xc0;e=1;delay(2);e=0;delay(2);cs1=cs2=0;cs1=1;cs2=0;rs=rw=0;P2=0x3f;e=1;delay(2);e=0;delay(2);cs1=1;cs2=0;rs=rw=0;P2=0xc0;e=1;delay(2);e=0;delay(2);cs1=cs2=0;for(y=0;y<8;y++){for(x=0;x<128;x++)lw(x,y,0);}}并行写操作时序(本设计采用方式)图4.10液晶显示模块的并行写操作时序71n南京工程学院自动化学院本科毕业设计(论文)voidlw(unsignedcharx,unsignedchary,unsignedchardd){if(x<64){cs1=cs2=0;rs=rw=0;cs1=0;cs2=1;P2=0xb8|y;e=1;delay(2);e=0;delay(2);rs=rw=0;cs1=0;cs2=1;P2=0x40|x;e=1;delay(2);e=0;delay(2);rs=1;rw=0;cs1=0;cs2=1;P2=dd;e=1;delay(2);e=0;delay(2);}else{cs1=cs2=0;x=x-64;rs=rw=0;cs1=1;cs2=0;P2=0xb8|y;e=1;delay(2);e=0;delay(2);rs=rw=0;cs1=1;cs2=0;P2=0x40|x;e=1;delay(2);e=0;delay(2);rs=1;rw=0;cs1=1;cs2=0;P2=dd;e=1;delay(2);e=0;delay(2);cs1=cs2=1;}P2=0xff;}/***************写16*16分辨率汉字************/voidwrite_chinese(x,y,array)unsignedcharx,y;unsignedchararray[];{unsignedcharj,dd;for(j=0;j<32;j++){dd=array[j];if(j<16)lw(x+j,y,dd);elselw(x+j-16,y+1,dd);}}/***************写8*16分辨率字母,数字**********/71n南京工程学院自动化学院本科毕业设计(论文)voidwrite_english(x,y,array)unsignedcharx,y;unsignedchararray[];{unsignedcharj,dd;for(j=0;j<16;j++){dd=array[j];if(j<8)lw(x+j,y,dd);elselw(x+j-8,y+1,dd);}}4.4发光二级管与键盘程序设计本设计中采用三个独立按键:S1:制冷模式S2加热模式S3恒温模式(1)当S1被按下时进入制冷模式(此时的设定温度值为5℃)。如果当前温度高于设定值,则发光二极管红色灯亮起,提示制冷。如果当前温度达到设定值,发光二极管绿色灯亮起,提示制冷结束。本设计中的模拟制冷子程序如下:voiddeal_1(unsignedintt){if(t>shedi_1)//shedi_1等于5℃{led1=0;led2=1;}else{led1=1;led2=0;wendu=0;}71n南京工程学院自动化学院本科毕业设计(论文)}(1)当S2被按下时进入加热模式(此时的设定温度值为95℃)。如果当前温度低于设定值,则发光二极管红色灯亮起,提示加热。如果当前温度达到设定值,发光二极管绿色灯亮起,提示加热结束。本设计中的模拟加热子程序如下:voiddeal_2(unsignedintt){if(t=shedi_3&&t<=shedi_4)//shedi_3等于23℃,shedi_4等于26℃{led1=1;//红灯灭led2=0;//绿灯亮}else{led1=0;led2=1;wendu=0;}71n南京工程学院自动化学院本科毕业设计(论文)}4.5系统程序流程图开始键盘扫描模块(判断哪个键被按下)时钟模块DS1302工作S1?/S4S3S2附加功能恒温模式加热模式制冷模式温度控制模块DS18B20工作液晶显示模块12864开始工作,显示日期和温度的相应信息结束图4.11系统程序流程图71n南京工程学院自动化学院本科毕业设计(论文)第五章附加功能介绍5.1硬件连接图图5.1附加功能的硬件连接图5.2功能介绍当S2被按下时进入体温检测模式。如果当前体温值低于38℃,则发光二极管绿色灯亮起,表明身体健康。如果体温值到达38℃但小于39℃,发光二极管黄色灯亮起,警告提醒。如果体温值到达39℃,发光二极管红色灯亮起,危险提醒。本设计中的体温检测子程序如下:voiddeal_4(uintt){if(t<=shedi_5){led3=0;led4=1;led5=1;}elseif(t<=shedi_6){led3=1;led4=0;led5=1;}else{led3=1;led4=1;led5=0;}71n南京工程学院自动化学院本科毕业设计(论文)第六章结论6.1论文总结本次课题通过的对智能温度检测器的学习和利用以及相关的单片机知识的应用,使我对一个实际的单片机系统的开发过程有了更深入的了解.通过在整个课题中的学习和摸索,进一步的掌握了大学所学的各方面的主要知识,也能够从多方面的思考学习和解决问题丰富了我对单片机系统开发的实践经验,为我以后的工作和学习打下良好的实践基础.回顾整个设计过程,所掌握的内容如下:1.学习并掌握了DS18B20温度传感器芯片、DS1302时钟芯片、12864液晶显示芯片的使用方法。2.熟练的使用KEIL软件进行软件编译,PROTUES软件进行硬件仿真。3.进一步熟悉了单片机系统的软件与硬件设计。6.2感想单片机课程设计,是对单片机知识的验证,可以帮助我们理解巩固所学知识,激发我们对单片机课程的兴趣,更锻炼了我们独立思考、开拓创新的能力。经过近三个月的努力,毕业设计终于大告成功了。在实际设计中发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。71n南京工程学院自动化学院本科毕业设计(论文)致谢值此论文即将脱稿之际,首先要向我的指导老师宋丽蓉老师致以诚挚的谢意。毕业设计中的点点滴滴,都倾注着宋老师的心血。在她的悉心指导和谆谆教诲下,我顺利地完成了这次毕业设计,并提高了自己各方面的能力。宋老师渊博的学识、一丝不苟的敬业态度、饱满的工作热情都给我留下了深刻的印象,成为我以后工作学习的榜样。在整个设计过程中,宋老师给了我很大的帮助。她引导我对课题进行思考,帮我分析课题。在毕业设计中当我出现了难题无法自己解决时,宋老师总能及时帮助我,正确的引导我思索问题的所在。在宋老师的指导下我学到很多东西,她教给我的不仅是知识和理论,更多的是发现问题及解决问题的方法。宋老师给我的课题提出了很多有建设性的宝贵意见使我的毕业设计更加完善了。自动化系的各位领导老师在我们做设计的过程中也是十分关注的,经常过来问一下进展及出现的问题,并给予了一定的帮助,向所有关心和帮助过我的领导、老师、同学和朋友表示由衷的谢意!衷心地感谢在百忙之中评阅我的设计和参加答辩的各位老师!张哲二OO九年六月于南京71n南京工程学院自动化学院本科毕业设计(论文)参考文献1、睢丙东.单片机应用技术与实例.电子工业出版社,1998,72、谭浩强.C语言程序设计(第二版)北京:清华大学出版社19993、李光飞.单片机C程序设计实例指导.北京.北京航空航天大学出版社,20054、梅丽凤,王艳秋,汪毓铎.单片机原理及接口技术.北京:清华大学出版社,2003,55、先锋工作室.单片机程序设计实例.北京.清华大学出版社,20056、张洪润主编单片机应用设计200例(上册)北京:北京航空航天大学出版社20067、张洪润主编单片机应用设计200例(上册)北京:北京航空航天大学出版社20068、侯玉宝主编基于Proteus的51系列单片机设计与仿真北京:电子工业出版社20089、朱清慧主编Proteus教程—电子线路的设计、编程、仿真北京:清华大学出版社200810、王为青邱文勋主编51单片机应用开发案例精选北京:人民邮电大学出版社200711、张靖武编著单片机系统的设计与仿真电子工业出版社12、刘文涛单片机应用开发实例清华大学出版社2005年9月13、严天峰单片机应用系统设计与仿真调试北京航空航天大学出版社,200514、戴佳苗龙陈斌51单片机应用系统开发典型实例,200571n南京工程学院自动化学院本科毕业设计(论文)附录A:英文资料TheIntroductionofAT89C52DescriptionTheAT89C52isalow-power,high-performanceCMOS8-bitmicrocomputerwith8KbytesofFlashprogrammableanderasablereadonlymemory(PEROM).ThedeviceismanufacturedusingAtmel’shigh-densitynonvolatilememorytechnologyandiscompatiblewiththeindustry-standardMCS-51instructionsetandpinout.Theon-chipFlashallowstheprogrammemorytobereprogrammedin-systemorbyaconventionalnonvolatilememoryprogrammer.Bycombiningaversatile8-bitCPUwithFlashonamonolithicchip,theAtmelAT89C52isapowerfulmicrocomputerwhichprovidesahighly-flexibleandcost-effectivesolutiontomanyembeddedcontrolapplications.FunctioncharacteristicTheAT89C52providesthefollowingstandardfeatures:8KbytesofFlash,256bytesofRAM,32I/Olines,three16-bittimer/counters,asixvectortwo-levelinterruptarchitecture,afullduplexserialport,on-chiposcillatorandclockcircuitry.Inaddition,theAT89C52isdesignedwithstaticlogicforoperationdowntozerofrequencyandsupportstwosoftwareselectablepowersavingmodes.TheIdleModestopstheCPUwhileallowingtheRAM,timer/counters,serialportandinterruptsystemtocontinuefunctioning.ThePower-downModesavestheRAMcontentsbutfreezestheoscillatordisablingallotherchipfunctionsuntilthenexthardwarereset.PinDescriptionVCC:Supplyvoltage.GND:Ground.Port0:Port0isan8-bitopen-drainbi-directionalI/Oport.Asanoutputport,eachpincansinkeightTTLinputs.When1sarewrittentoport0pins,thepinscanbeusedashighimpedanceinputs.Port0mayalsobeconfiguredtobethemultiplexedloworderaddress/databusduringaccessestoexternalprogramanddatamemory.InthismodeP0hasinternalpullups.Port0alsoreceivesthecodebytesduringFlashprogramming,andoutputsthecodebytesduringprogramverification.Externalpullupsarerequired71n南京工程学院自动化学院本科毕业设计(论文)duringprogramverification.Port1Port1isan8-bitbi-directionalI/Oportwithinternalpullups.ThePort1outputbufferscansink/sourcefourTTLinputs.When1sarewrittentoPort1pinstheyarepulledhighbytheinternalpullupsandcanbeusedasinputs.Asinputs,Port1pinsthatareexternallybeingpulledlowwillsourcecurrent(IIL)becauseoftheinternalpullups.Port1alsoreceivesthelow-orderaddressbytesduringFlashprogrammingandverification.Port2Port2isan8-bitbi-directionalI/Oportwithinternalpullups.ThePort2outputbufferscansink/sourcefourTTLinputs.When1sarewrittentoPort2pinstheyarepulledhighbytheinternalpullupsandcanbeusedasinputs.Asinputs,Port2pinsthatareexternallybeingpulledlowwillsourcecurrent,becauseoftheinternalpullups.Port2emitsthehigh-orderaddressbyteduringfetchesfromexternalprogrammemoryandduringaccessestoexternaldatamemorythatuse16-bitaddresses.Inthisapplication,itusesstronginternalpull-upswhenemitting1s.Duringaccessestoexternaldatamemorythatuse8-bitaddresses,Port2emitsthecontentsoftheP2SpecialFunctionRegister.Port2alsoreceivesthehigh-orderaddressbitsandsomecontrolsignalsduringFlashprogrammingandverification.Port3Port3isan8-bitbi-directionalI/Oportwithinternalpullups.ThePort3outputbufferscansink/sourcefourTTLinputs.When1sarewrittentoPort3pinstheyarepulledhighbytheinternalpullupsandcanbeusedasinputs.Asinputs,Port3pinsthatareexternallybeingpulledlowwillsourcecurrent(IIL)becauseofthepullups.Port3alsoservesthefunctionsofvariousspecialfeaturesoftheAT89C51aslistedbelow:71n南京工程学院自动化学院本科毕业设计(论文)Port3alsoreceivessomecontrolsignalsforFlashprogrammingandverification.RSTResetinput.Ahighonthispinfortwomachinecycleswhiletheoscillatorisrunningresetsthedevice.ALE/PROGAddressLatchEnableoutputpulseforlatchingthelowbyteoftheaddressduringaccessestoexternalmemory.Thispinisalsotheprogrampulseinput(PROG)duringFlashprogramming.InnormaloperationALEisemittedataconstantrateof1/6theoscillatorfrequency,andmaybeusedforexternaltimingorclockingpurposes.Note,however,thatoneALEpulseisskippedduringeachaccesstoexternalDataMemory.Ifdesired,ALEoperationcanbedisabledbysettingbit0ofSFRlocation8EH.Withthebitset,ALEisactiveonlyduringaMOVXorMOVCinstruction.Otherwise,thepinisweaklypulledhigh.SettingtheALE-disablebithasnoeffectifthemicrocontrollerisinexternalexecutionmode.PSENProgramStoreEnableisthereadstrobetoexternalprogrammemory.WhentheAT89C51isexecutingcodefromexternalprogrammemory,PSENisactivatedtwiceeachmachinecycle,exceptthattwoPSENactivationsareskippedduringeachaccesstoexternaldatamemory.EA/VPPExternalAccessEnable.EAmustbestrappedtoGNDinordertoenablethedevicetofetchcodefromexternalprogrammemorylocationsstartingat0000HuptoFFFFH.Note,however,thatiflockbit1isprogrammed,EAwillbeinternallylatchedonreset.EAshouldbestrappedtoVCCforinternalprogramexecutions.Thispinalsoreceivesthe12-voltprogrammingenablevoltage(VPP)duringFlashprogramming,forpartsthatrequire12-voltVPP.XTAL1Inputtotheinvertingoscillatoramplifierandinputtotheinternalclockoperatingcircuit.XTAL2Outputfromtheinvertingoscillatoramplifier.71n南京工程学院自动化学院本科毕业设计(论文)OscillatorCharacteristicsXTAL1andXTAL2aretheinputandoutput,respectively,ofaninvertingamplifierwhichcanbeconfiguredforuseasanon-chiposcillator,asshowninFigure1.Eitheraquartzcrystalorceramicresonatormaybeused.Todrivethedevicefromanexternalclocksource,XTAL2shouldbeleftunconnectedwhileXTAL1isdrivenasshowninFigure2.Therearenorequirementsonthedutycycleoftheexternalclocksignal,sincetheinputtotheinternalclockingcircuitryisthroughadivide-by-twoflip-flop,butminimumandmaximumvoltagehighandlowtimespecificationsmustbeobserved.Figure1.OscillatorConnectionsFigure2.ExternalClockDriveConfiguration71n南京工程学院自动化学院本科毕业设计(论文)附录B:英文资料翻译AT89C52的介绍描述AT89C52是一个低电压,高性能CMOS8位单片机带有8K字节的可反复擦写的程序存储器(PENROM)。和256字节的存取数据存储器(RAM),这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。片内含有8位中央处理器和闪烁存储单元,有较强的功能的AT89C51单片机能够被应用到控制领域中。功能特性AT89C52提供以下的功能标准:8K字节闪烁存储器,256字节随机存取数据存储器,32个I/O口,3个16位定时/计数器,1个6向量两级中断结构,1个串行通信口,片内震荡器和时钟电路。另外,AT89C52还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式。闲散方式停止中央处理器的工作,能够允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。掉电方式保存随机存取数据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一个复位。引脚描述VCC:电源电压GND:地P0口:P0口是一组8位漏极开路双向I/O口,即地址/数据总线复用口。作为输出口时,每一个管脚都能够驱动8个TTL电路。当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。P0口在闪烁编程时,P0口接收指令,在程序校验时,输出指令,需要接电阻。P1口:P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时输出一个电流。闪烁编程时和程序校验时,P1口接收低8位地址。P2口:71n南京工程学院自动化学院本科毕业设计(论文)P2口是一个内部带有上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。闪烁编程或校验时,P2口接收高位地址和其它控制信号。P3口:P3口是一组带有内部电阻的8位双向I/O口,P3口输出缓冲故可驱动4个TTL电路。对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。P3口除了作为一般的I/O口外,更重要的用途是它的第二功能,如下表所示:端口引脚第二功能P3.0RXDP3.1TXDP3.2INT0P3.3INT1P3.4T0P3.5T1P3.6WRP3.7RDP3口还接收一些用于闪烁存储器编程和程序校验的控制信号。RST:复位输入。当震荡器工作时,RET引脚出现两个机器周期以上的高电平将使单片机复位。ALE/:当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE以时钟震荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲时,闪烁存储器编程时,这个引脚还用于输入编程脉冲。如果必要,可对特殊寄存器区中的8EH单元的D0位置禁止ALE操作。这个位置后只有一条MOVX和MOVC指令ALE才会被应用。此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序储存允许输出是外部程序存储器的读选通信号,当AT89C71n南京工程学院自动化学院本科毕业设计(论文)51由外部程序存储器读取指令时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器时,这两次有效的PSEN信号不出现。EA/VPP:外部访问允许。欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。需要注意的是:如果加密位LBI被编程,复位时内部会锁存EA端状态。如EA端为高电平,CPU则执行内部程序存储器中的指令。闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V编程电压VPP。XTAL1:震荡器反相放大器及内部时钟发生器的输入端。XTAL2:震荡器反相放大器的输出端。时钟震荡器AT89C52中有一个用于构成内部震荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自然震荡器。外接石英晶体及电容C1,C2接在放大器的反馈回路中构成并联震荡电路。对外接电容C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响震荡频率的高低、震荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30PF±10PF,而如果使用陶瓷振荡器建议选择40PF±10PF。用户也可以采用外部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求71n南京工程学院自动化学院本科毕业设计(论文)附录CPROTUES仿真硬件设计图71n南京工程学院自动化学院本科毕业设计(论文)附录D程序清单/*******************************欢迎光临*************************************______________________________________________________________________毕业设计题目:智能温度传感器毕业院校:南京工程学院设计者:张哲功能简介:(1)制冷模式(2)加热模式(3)恒温模式带有时钟显示功能附加功能:甲型H1N1流感初步检测仪_______________________________________________________________________下面为本次设计中各引脚连接介绍:(1)12864芯片数据口:P2.0DB0P2.1DB1P2.2DB2P2.3DB3P2.4DB4P2.5DB5P2.6DB6P2.7DB7控制字:P1.0E//高电平有效P1.1RW//H:读,L:写P1.2RS//H:数据,L:命令P1.3CS2//低电平有效P1.4CS1//低电平有效其他控制接口:VCCRST//低电平复位VCCVCCGNDGNDVCC经10K可变电阻接地,中点接V071n南京工程学院自动化学院本科毕业设计(论文)(2)DS1302芯片P3.0I/OP3.1SCLK--串行时钟P3.2RST--低电平有效X1,X2连接32.768KHz晶振Vcc1,Vcc2(电源供电管脚)连接VCC(3)DS18b20芯片输出端P3.7VCCVCCGNDGND(4)键盘P3.4KEY1P3.5KEY2P3.6KEY3(5)发光二极管P1.5红灯P1.6绿灯****************************************************************************//************(1)函数的初定义****************/#include#defineucharunsignedchar#defineuintunsignedint#defineds1302_second0x80#defineds1302_minute0x82#defineds1302_hour0x84#defineds1302_day0x86#defineds1302_week0x8a#defineds1302_month0x88#defineds1302_year0x8c/**端口定义**/sbitrw=P1^1;sbitrs=P1^2;sbite=P1^0;sbitcs1=P1^3;sbitcs2=P1^4;sbitIO=P3^0;sbitCLK=P3^1;sbitRST=P3^2;sbitACC7=ACC^7;sbitDQ=P3^7;//定义传感器数据输入管脚sbitkey1=P3^4;sbitkey2=P3^5;71n南京工程学院自动化学院本科毕业设计(论文)sbitkey3=P3^6;sbitkey4=P0^4;sbitled1=P1^5;sbitled2=P1^6;sbitled3=P0^1;sbitled4=P0^2;sbitled5=P0^3;uchardatastring[13];////存放时间的数组typedefstruct{ucharsecond;ucharminute;ucharhour;ucharday;ucharweek;ucharmonth;ucharyear;}systemtime;//定义的时间的类型ucharx,y;ucharcount;charmiao,shi,fen;intwendu=0;ucharzz;uintshedi_1=5;uintshedi_2=95;uintshedi_3=23;uintshedi_4=26;uintshedi_5=37;uintshedi_6=38;uintshedi_7=39;/**************(2)DS1302时钟芯片函数*****************///DS1302写入一个字节voidds1302_write(uchardat){uchari,j;j=dat;for(i=0;i<8;i++){IO=j&0x01;CLK=1;CLK=0;j>>=1;}71n南京工程学院自动化学院本科毕业设计(论文)}//DS1302读出一个字节uchards1302_read(){uchari;for(i=0;i<8;i++){ACC=ACC>>1;ACC7=IO;CLK=1;CLK=0;}return(ACC);}//写入数据voiddat_write(ucharaddr,uchardat)//addr为要写数据的地址,dat为要写的数据{RST=0;CLK=0;RST=1;ds1302_write(addr);ds1302_write(dat);CLK=1;RST=0;}//读出数据uchardat_read(ucharaddr)//addr为要读出数据的地址{uchardat;RST=0;CLK=0;RST=1;ds1302_write(addr|0x01);dat=ds1302_read();CLK=1;RST=0;return(dat);}//是否写保护voidds1302_protect(bitflag){if(flag)dat_write(0x8e,0x10);//禁止写elsedat_write(0x8e,0x00);//允许写}//时间设置voidsettime(ucharaddr,ucharvalue){71n南京工程学院自动化学院本科毕业设计(论文)ds1302_protect(0);dat_write(addr,value);ds1302_protect(1);}//时间增减设置voidset(ucharadr,bitflag){uchardat;dat=dat_read(adr);if(flag)dat_write(adr,dat+1);elsedat_write(adr,dat-1);}//12/24小时时间设置voidday_set(bitflag)//flag为1为12时制,为0则为24小时制{ucharhour;hour=(dat_read(0x85)&0x7f);//保留小时寄存器中原有的时间值ds1302_protect(0);if(flag){dat_write(0x84,0x80|hour);}else{dat_write(0x84,0x00|hour);}ds1302_protect(1);}//取时间voidgettime(systemtime*time){ucharreadvalue;readvalue=dat_read(ds1302_second);time->second=((readvalue&0x70)>>4)*10+(readvalue&0x0f);readvalue=dat_read(ds1302_minute);time->minute=((readvalue&0x70)>>4)*10+(readvalue&0x0f);readvalue=dat_read(ds1302_hour);time->hour=((readvalue&0x30)>>4)*10+(readvalue&0x0f);readvalue=dat_read(ds1302_day);time->day=((readvalue&0x30)>>4)*10+(readvalue&0x0f);readvalue=dat_read(ds1302_week);time->week=(readvalue&0x07);readvalue=dat_read(ds1302_month);time->month=((readvalue&0x01)>>4)*10+(readvalue&0x0f);readvalue=dat_read(ds1302_year);time->year=((readvalue&0xf0)>>4)*10+(readvalue&0x0f);datastring[0]=time->year/10;71n南京工程学院自动化学院本科毕业设计(论文)datastring[1]=time->year%10;datastring[2]=time->month/10;datastring[3]=time->month%10;datastring[4]=time->day/10;datastring[5]=time->day%10;datastring[6]=time->hour/10;datastring[7]=time->hour%10;datastring[8]=time->minute/10;datastring[9]=time->minute%10;datastring[10]=time->second/10;datastring[11]=time->second%10;datastring[12]=time->week;}//DS1302初始化voidinit_ds1302(void){ucharsecond=dat_read(ds1302_second);if(second&0x80)settime(ds1302_second,0);}/*************(3)DS18b20温度传感器函数*********************///延时函数voiddelay(uintnum){while(num--);}//传感器初始化Init_DS18B20(void){ucharx=0;DQ=1;//DQ复位delay(10);//稍做延时DQ=0;//单片机将DQ拉低delay(80);//精确延时大于480us//450DQ=1;//拉高总线delay(20);x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败delay(30);}//读一个字节ReadOneChar(void){uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=0;//给脉冲信号dat>>=1;71n南京工程学院自动化学院本科毕业设计(论文)DQ=1;//给脉冲信号if(DQ)dat|=0x80;delay(8);}return(dat);}//写一个字节WriteOneChar(uchardat){uchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;delay(10);DQ=1;dat>>=1;}delay(8);}//读取温度intReadTemperature(void){uchara=0;ucharb=0;intt=0;floattt=0;Init_DS18B20();WriteOneChar(0xCC);//跳过读序列号的操作WriteOneChar(0x44);//启动温度转换Init_DS18B20();WriteOneChar(0xCC);//跳过读序列号的操作WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度值a=ReadOneChar();//低位b=ReadOneChar();//高位t=b;t<<=8;t=t|a;t=t*0.0625;return(t);}//与预设温度值比较函数voiddeal_1(uintt)71n南京工程学院自动化学院本科毕业设计(论文){if(t>shedi_1){led1=0;//红灯亮led2=1;//绿灯灭}else{led1=1;led2=0;wendu=5;}}voiddeal_2(uintt){if(t=shedi_3&&t<=shedi_4){led1=1;//红灯灭led2=0;//绿灯亮}else{led1=0;led2=1;}}voiddeal_4(uintt){if(t<=shedi_5){led3=0;led4=1;led5=1;}elseif(t<=shedi_6)71n南京工程学院自动化学院本科毕业设计(论文){led3=1;led4=0;led5=1;}else{led3=1;led4=1;led5=0;}}/*************(4)LCD12864芯片显示函数******************/voidlw(ucharx,uchary,uchardd){if(x<64){cs1=cs2=0;rs=rw=0;cs1=0;cs2=1;P2=0xb8|y;e=1;delay(2);e=0;delay(2);rs=rw=0;cs1=0;cs2=1;P2=0x40|x;e=1;delay(2);e=0;delay(2);rs=1;rw=0;cs1=0;cs2=1;P2=dd;e=1;delay(2);e=0;delay(2);}else{cs1=cs2=0;x=x-64;rs=rw=0;cs1=1;cs2=0;P2=0xb8|y;e=1;delay(2);e=0;delay(2);rs=rw=0;cs1=1;cs2=0;P2=0x40|x;e=1;delay(2);e=0;delay(2);rs=1;rw=0;cs1=1;cs2=0;P2=dd;e=1;delay(2);e=0;delay(2);cs1=cs2=1;}P2=0xff;}//LCD初始化voidlcd_init(void){ucharx,y;e=rs=rw=0;cs1=cs2=1;cs1=0;cs2=1;rs=rw=0;P2=0x3f;e=1;delay(2);e=0;delay(2);//cs1=0;cs2=1;rs=rw=0;P2=0xc0;e=1;delay(2);e=0;delay(2);//cs1=cs2=0;cs1=1;cs2=0;rs=rw=0;P2=0x3f;e=1;delay(2);e=0;delay(2);cs1=1;cs2=0;71n南京工程学院自动化学院本科毕业设计(论文)rs=rw=0;P2=0xc0;e=1;delay(2);e=0;delay(2);cs1=cs2=0;for(y=0;y<8;y++){for(x=0;x<128;x++)lw(x,y,0);}}//写16*16分辨率汉字voidwrite_chinese(x,y,array)ucharx,y;uchararray[];{ucharj,dd;for(j=0;j<32;j++){dd=array[j];if(j<16)lw(x+j,y,dd);elselw(x+j-16,y+1,dd);}}//写8*16分辨率字母,数字voidwrite_english(x,y,array)ucharx,y;uchararray[];{ucharj,dd;for(j=0;j<16;j++){dd=array[j];if(j<8)lw(x+j,y,dd);elselw(x+j-8,y+1,dd);}}/*************(5)独立键盘函数******************/voiddelay1(uintz){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidkeyscan(void){if(key1==0){71n南京工程学院自动化学院本科毕业设计(论文)delay1(1);if(key1==0){zz=1;}}if(key2==0){delay1(1);if(key2==0){zz=2;}}if(key3==0){delay1(1);if(key3==0){zz=3;}}if(key4==0){delay1(1);if(key4==0){zz=4;}}}/**************(6)取字模函数****************/ucharcodejian[32]={0x08,0x88,0x68,0xFF,0x28,0x48,0x10,0x48,0x44,0x43,0x44,0x48,0x50,0x10,0x10,0x00,0x02,0x01,0x00,0x7F,0x00,0x20,0x22,0x2C,0x21,0x2E,0x30,0x28,0x27,0x22,0x20,0x00};ucharcodece[32]={0x08,0x31,0x86,0x60,0x00,0xFE,0x02,0xF2,0x02,0xFE,0x00,0xF8,0x00,0x00,0xFF,0x00,0x04,0xFC,0x03,0x00,0x80,0x47,0x30,0x0F,0x10,0x67,0x00,0x07,0x40,0x80,0x7F,0x00};ucharcodenin[32]={0x80,0x40,0x30,0xFC,0x03,0x90,0x68,0x06,0x04,0xF4,0x04,0x24,0x44,0x8C,0x04,0x00,0x00,0x20,0x38,0x03,0x38,0x40,0x40,0x49,0x52,0x41,0x40,0x70,0x00,0x09,0x30,0x00};ucharcodexian1[32]={71n南京工程学院自动化学院本科毕业设计(论文)0x02,0x42,0x42,0xFE,0x42,0x42,0xFE,0x02,0x02,0xFA,0x02,0x02,0xFE,0x00,0x00,0x00,0x08,0x08,0x08,0x07,0x84,0x44,0x23,0x18,0x06,0x01,0x3E,0x40,0x43,0x40,0x78,0x00};ucharcodezai[32]={0x00,0x04,0x04,0xC4,0x64,0x9C,0x87,0x84,0x84,0xE4,0x84,0x84,0x84,0x84,0x04,0x00,0x04,0x02,0x01,0x7F,0x00,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x00};ucharcodede[32]={0x00,0xF8,0x8C,0x8B,0x88,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x03,0x26,0x40,0x20,0x1F,0x00,0x00};ucharcodeti[32]={0x40,0x20,0xF8,0x17,0x02,0x10,0x10,0x90,0x70,0xFF,0xD0,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x7F,0x00,0x08,0x04,0x0A,0x09,0x08,0x7F,0x08,0x09,0x06,0x0C,0x04,0x00};ucharcodewei[32]={0x00,0x10,0x10,0x12,0x14,0x1C,0x10,0xF0,0x9F,0x10,0x10,0x10,0x10,0xF8,0x10,0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x11,0x26,0x40,0x20,0x1F,0x00,0x00};ucharcodejia[32]={0x00,0x08,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x20,0x40,0x3F,0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00};ucharcodere[32]={0x44,0xC4,0x44,0xFF,0x24,0x04,0x14,0xA4,0x7F,0xC4,0x84,0x7C,0x84,0x00,0x00,0x00,0xC0,0x62,0x34,0x03,0x14,0x62,0x01,0x08,0x30,0x60,0x01,0x08,0x33,0x64,0x07,0x00};ucharcodezi[32]={0x00,0x50,0x4F,0x4A,0x48,0xFF,0x48,0x48,0x48,0x00,0xFC,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x3F,0x01,0x01,0xFF,0x21,0x61,0x3F,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00};ucharcodeleng[32]={0x02,0x1C,0xC8,0x30,0x40,0x20,0x10,0x0C,0x23,0xC4,0x08,0x10,0x30,0x60,0x20,0x00,0x02,0x7E,0x01,0x00,0x01,0x01,0x01,0x09,0x11,0x71,0x29,0x07,0x01,0x00,0x00,0x00};ucharcodeheng[32]={0x70,0x00,0xFF,0x08,0x30,0x02,0xF2,0x92,0x92,0x92,0x92,0x92,0xF2,0x02,0x00,0x00,0x00,0x00,0x7F,0x00,0x20,0x20,0x27,0x24,0x24,0x24,0x24,0x24,0x27,0x20,0x20,0x00};ucharcodewen[32]={71n南京工程学院自动化学院本科毕业设计(论文)0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00};ucharcodemaohao[32]={0x00,0x00,0x00,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};ucharcodeshe[32]={0x40,0x41,0xCE,0x04,0x00,0x80,0x40,0xBE,0x82,0x82,0x82,0xBE,0xC0,0x40,0x40,0x00,0x00,0x00,0x7F,0x20,0x90,0x80,0x40,0x43,0x2C,0x10,0x10,0x2C,0x43,0xC0,0x40,0x00};ucharcodeding[32]={0x00,0x10,0x0C,0xA4,0x24,0x24,0x25,0xE6,0x24,0x24,0x24,0x24,0x14,0x0C,0x04,0x00,0x40,0x20,0x18,0x07,0x08,0x10,0x20,0x7F,0x42,0x42,0x42,0x42,0x40,0x40,0x00,0x00};ucharcodedang[32]={0x00,0x00,0x40,0x42,0x5C,0x48,0x40,0x40,0x7F,0x40,0x50,0x4E,0x44,0xC0,0x00,0x00,0x00,0x00,0x20,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x7F,0x00,0x00};ucharcodeqian[32]={0x08,0x08,0xE8,0xA8,0xA9,0xAE,0xEA,0x08,0x08,0xC8,0x0C,0x0B,0xEA,0x08,0x08,0x00,0x00,0x00,0x7F,0x04,0x24,0x44,0x3F,0x00,0x00,0x1F,0x40,0x80,0x7F,0x00,0x00,0x00};ucharcodezhi[32]={0x80,0x40,0xF0,0x2F,0x02,0x04,0xE4,0xA4,0xB4,0xAF,0xA6,0xA4,0xE4,0x04,0x00,0x00,0x00,0x00,0xFF,0x00,0x40,0x40,0x7F,0x4A,0x4A,0x4A,0x4A,0x4A,0x7F,0x40,0x40,0x00};ucharcodexing[32]={0x00,0x00,0x00,0xBE,0x2A,0x2A,0x2A,0xEA,0x2A,0x2A,0x2A,0x2A,0x3E,0x00,0x00,0x00,0x00,0x48,0x46,0x41,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x49,0x41,0x40,0x00};ucharcodeqi[32]={0x00,0x04,0xFF,0x54,0x54,0x54,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,0x42,0x22,0x1B,0x02,0x02,0x0A,0x33,0x62,0x18,0x07,0x02,0x22,0x42,0x3F,0x00,0x00};ucharcodedian[]={0x00,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};ucharcodeC[]={0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00};ucharcodexian[]={0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};71n南京工程学院自动化学院本科毕业设计(论文)ucharcodeshu[10][16]={{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},{0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},{0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},{0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},{0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},{0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},{0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},{0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},{0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00}};ucharcodeji[7][32]={{0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x10,0x00},{0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x04,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00},{0x00,0xFE,0x02,0x02,0x02,0xFE,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x7F,0x28,0x24,0x23,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x7F,0x00,0x00},{0x00,0x02,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0xC2,0x82,0x02,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x30,0x20,0x00},{0x10,0x10,0x10,0x10,0x10,0x91,0x12,0x1E,0x94,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x00,0x00,0x01,0x02,0x0C,0x78,0x30,0x00,0x00},{0x00,0x40,0x40,0x40,0x40,0x40,0x40,0xFE,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x38,0x00,0x00}};71n南京工程学院自动化学院本科毕业设计(论文)/*****************主函数*******************/voidmain(){charaw,bw;systemtimerealtimelcd_init();while(1){gettime(&realtime);//从DS1302中读出时间数值write_english(0,0,shu[2]);//显示"年"write_english(8,0,shu[0]);write_english(16,0,shu[datastring[0]]);write_english(24,0,shu[datastring[1]]);write_english(32,0,xian);write_english(40,0,shu[datastring[2]]);//显示"月"write_english(48,0,shu[datastring[3]]);write_english(56,0,xian);write_english(64,0,shu[datastring[4]]);//显示"日"write_english(72,0,shu[datastring[5]]);write_chinese(80,0,xing);//显示"星期"write_chinese(96,0,qi);write_chinese(112,0,ji[datastring[12]-2]);write_english(32,2,shu[datastring[6]]);//显示"时"write_english(40,2,shu[datastring[7]]);write_english(48,2,xian);write_english(56,2,shu[datastring[8]]);//显示"分"write_english(64,2,shu[datastring[9]]);write_english(72,2,xian);write_english(80,2,shu[datastring[10]]);//显示"秒"write_english(88,2,shu[datastring[11]]);keyscan();if(zz!=0){if(zz==1){write_chinese(0,4,zi);write_chinese(16,4,leng);write_chinese(32,4,maohao);71n南京工程学院自动化学院本科毕业设计(论文)write_chinese(48,4,she);//显示"设定温度值"write_chinese(64,4,ding);write_chinese(80,4,zhi);write_english(96,4,shu[0]);write_english(104,4,shu[5]);write_english(112,4,dian);write_english(120,4,C);wendu=ReadTemperature();//读取温度deal_1(wendu);aw=wendu/10;//分别把温度的十位与个位分离bw=(wendu%10)/1;write_chinese(48,6,dang);//显示"当前温度值"write_chinese(64,6,qian);write_chinese(80,6,zhi);write_english(96,6,shu[aw]);write_english(104,6,shu[bw]);write_english(112,6,dian);write_english(120,6,C);}elseif(zz==2){write_chinese(0,4,jia);write_chinese(16,4,re);write_chinese(32,4,maohao);write_chinese(48,4,she);//显示"设定温度值"write_chinese(64,4,ding);write_chinese(80,4,zhi);write_english(96,4,shu[9]);write_english(104,4,shu[5]);write_english(112,4,dian);write_english(120,4,C);wendu=ReadTemperature();//读取温度deal_2(wendu);aw=wendu/10;//分别把温度的十位与个位分离bw=(wendu%10)/1;write_chinese(48,6,dang);//显示"当前温度值"71n南京工程学院自动化学院本科毕业设计(论文)write_chinese(64,6,qian);write_chinese(80,6,zhi);write_english(96,6,shu[aw]);write_english(104,6,shu[bw]);write_english(112,6,dian);write_english(120,6,C);}elseif(zz==3){write_chinese(0,4,heng);write_chinese(16,4,wen);write_chinese(32,4,maohao);write_english(48,4,shu[2]);write_english(56,4,shu[3]);write_english(64,4,dian);write_english(72,4,C);write_english(80,4,xian);write_english(88,4,xian);write_english(96,4,shu[2]);write_english(104,4,shu[6]);write_english(112,4,dian);write_english(120,4,C);wendu=ReadTemperature();//读取温度deal_3(wendu);aw=wendu/10;//分别把温度的十位与个位分离bw=(wendu%10)/1;write_chinese(48,6,dang);//显示"当前温度值"write_chinese(64,6,qian);write_chinese(80,6,zhi);write_english(96,6,shu[aw]);write_english(104,6,shu[bw]);write_english(112,6,dian);write_english(120,6,C);}elseif(zz==4){write_chinese(0,4,jian);write_chinese(16,4,ce);write_chinese(32,4,maohao);write_chinese(48,4,nin);write_chinese(64,4,xian1);write_chinese(80,4,zai);71n南京工程学院自动化学院本科毕业设计(论文)write_chinese(96,4,de);write_chinese(112,4,ti);write_chinese(48,6,wen);write_chinese(64,6,zhi);write_chinese(80,6,wei);wendu=ReadTemperature();//读取温度deal_4(wendu);aw=wendu/10;//分别把温度的十位与个位分离bw=(wendu%10)/1;write_english(96,6,shu[aw]);write_english(104,6,shu[bw]);write_english(112,6,dian);write_english(120,6,C);}}delay(1000);}}71n南京工程学院自动化学院本科毕业设计(论文)学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声明的法律结果由本人承担。学位论文作者(本人签名):年月日学位论文出版授权书本人及导师完全同意《中国博士学位论文全文数据库出版章程》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入CNKI《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按“章程”规定享受相关权益。论文密级:□公开□保密(___年__月至__年__月)(保密的学位论文在解密后应遵守此协议)作者签名:_______导师签名:______________年_____月_____日_______年_____月_____日71n南京工程学院自动化学院本科毕业设计(论文)独创声明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本声明的法律后果由本人承担。 作者签名:二〇一〇年九月二十日 毕业设计(论文)使用授权声明本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。(保密论文在解密后遵守此规定) 作者签名:二〇一〇年九月二十日71n南京工程学院自动化学院本科毕业设计(论文)致谢时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。首先,我要特别感谢我的知道郭谦功老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。最后,我要特别感谢我的导师赵达睿老师、和研究生助教熊伟丽老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够及时完成,这里一并表示真诚的感谢。71