数码管显示的温控电动机设计_第1页
数码管显示的温控电动机设计_第2页
数码管显示的温控电动机设计_第3页
数码管显示的温控电动机设计_第4页
数码管显示的温控电动机设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE..数码管显示的温控电动机设计目录TOC\o"1-4"\h\z\u1绪论11.1课题研究的内容及要求11.2功能的实现12单片机简介22.1单片机的发展概况22.2单片机的定义33Keil软件和Proteus软件简介43.1Keil软件简介33.1.1Keil软件系统概述33.1.2KeilC51单片机软件开发系统的整体结构43.2Proteus软件简介53.2.1Proteus软件的构成53.2.2Proteus的主要特征54DS18B20的软件设计65数码管显示的温控电动机65.1设计要求65.2设计过程65.2.1设计程序及编写65.2.2电路绘制及调试96结论14附录15参考文献24致谢25..1绪论1.1课题研究的内容及要求我本次的课程设计的题目是数码管显示的温控电动机。它是多种技术知识的结合,不仅涉及到软件的设计,而且还将应用电子技术与单片机的应用技术有机结合,使其具有精度高、测量误差小、稳定性好等特点。电路板的设计技术和机械加工工艺的巧妙结合,使其具备了显示直观、体积做工精细等特点,能为它在其它领域的广泛应用打下良好的基础。因为经过我们调查发现许多应用场合原来就有测温控温仪器,只是随着对生产质量与生产需要的要求在不断地提高,以往的那些测温控温的仪器根本不能满足现在的要求。其中,有部分应用场合对精度提高的幅度要求也不是特别高。因此,为了提高性价比,我所设计的系统提出在原有系统的基础上进行一些简单的改良,以此为出发点,主要阐述的是一种数码管显示的温控电动机的实现方法。现代各种家用电器以及生产机械都广泛应用电动机来驱动,电动机的作用是将电能转换为机械能,但是传统的电动机只是机械的按照其工作原理来工作,需要依靠人手动操作电动机的运行、停止、反向等操作,这样需要消耗大量的人力资源,在操作过程中也有很多不便,有时会因为外界环境和温度的因素使电动机造成不必要的损坏。所以,为了减少这种不必要的损失,在电动机上添加温控装置,可以通过温控装置来监控当前温度,当温度达到要求的温度时,电动机产生相应的操作,以达到工程机械或家用电器的功能要求,而添加数码管可以更加直观的监测当前温度。1.2功能的实现本设计就是从改善这一弊端出发,以AT89C51单片机为核心,使用4位集成式数码管显示当前温度,使用DS18B20温度传感器来设计一个用4位集成式数码管显示当前温度,当温度在范围之外时,使直流电动机开始旋转的程序并仿真调试,验证该设计可行性。2单片机简介2.1单片机的发展概况1970年微型计算机研制成功之后,随之即出现了单片机〔即单片微型计算机—美国Intel公司1971年生产的4位单片机4004和1972年生产的雏形8位单片机8008,这也算是单片机的第一次公众亮相。1976年Intel公司首先推出能称为单片机的MCS-48系列单片微型计算机。它以体积小、功能全、价格低等特点,赢得了广泛的应用,同时一些与单片机有关公司都争相推出各自的单片机。1978年下半年Motorola公司推出M6800系列单片机,Zilog公司相继推出Z8单片机系列。1980年Intel公司在MCS-48系列基础上又推出高性能的MCS-51系列单片机。这类单片机均带有串行I/O口,定时器/计数器为16位,片内存储容量〔RAM,ROM都相应增大,并有优先级中断处理功能,单片机的功能、寻址范围都比早期的扩大了,它们是当时单片机应用的主流产品。1982年Mostek公司和Intel公司先后又推出了性能更高的16位单片机MK68200和MCS-96系列,NS公司和NEC公司也分别在原有8位单片机的基础上推出了16位单片机HPC16040和μPD783××系列。1987年Intel公司又宣布了性能比8096高两倍的CMOS型80C196,1988年推出带EPROM的87C196单片机。由于16位单片机推出的时间较迟、价格昂贵、开发设备有限等多种原因,至今还未得到广泛应用。而8位单片机已能满足大部分应用的需要,因此,在推出16位单片机的同时,高性能的新型8位单片机也不断问世。纵观这短短的20年,经历了4次更新换代,单片机正朝着集成化、多功能、多选择、高速度、低功耗、扩大存储容量和加强I/O功能及结构兼容的方向发展。新一代的80C51系列单片机除了上述的结构特性外,其最主要的技特点是向外部接口电路扩展,以实现微控制器〔microcontroller完善的控制功能为己任。这一系列单片机为外部提供了相当完善的总线结构,为系统的扩展和配置打下了良好的基础。由于80C51系列单片机所具有的一系列优越的特点,获得广泛使用指日可待。2.2单片机的定义单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能〔可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路集成到一块硅片上构成的一个小而完善的计算机系统。3Keil软件和Proteus软件简介3.1Keil软件简介单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境〔uVision将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选〔目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。3.1.1Keil软件系统概述KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍KeilC51开发系统各部分功能和使用。3.1.2KeilC51单片机软件开发系统的整体结构C51工具包的整体结构中uVision与Ishell分别是C51forWindows和forDos的集成开发环境<IDE>,可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件<.OBJ>。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件<.ABS>。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。使用独立的Keil仿真器时,注意事项:<1>仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。<2>仿真器上的复位按钮只复位仿真芯片,不复位目标系统。<3>仿真芯片的31脚〔/EA已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM〔其CPU的/EA引脚接至低电平的目标系统中使用。3.2Proteus软件简介Proteus软件是来自英国Labcenterelectronics公司的EDA工具软件,Proteus软件有近20年的历史,在全球广泛使用。它除了具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,它的电路仿真是交互的,可视化的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,可以测量仿真的波形及记录仿真数据。在不需要硬件设备投入的情况下,Proteus软件可以建立完整的电子学习设计开发环境,缩短研发周期,并且降低开发成本。3.2.1Proteus软件的构成Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于多年来的持续开发,被《电子世界》在其对PCB设计系统的比较文章中评为最好产品—"TheRoutetoPCBCAD"。Proteus产品系列也包含了我们革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。其功能模块:—个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真;ARESPCB设计。PROSPICE仿真器的一个扩展PROTEUSVSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LED甚至LCD显示CPU模型。3.2.2Proteus的主要特征<1>支持许多通用的微控制器,如ARM、PIC、AVR、以及8051。<2>交互的装置模型包括:LED和LCD显示、RS232终端、通用键盘。<3>强大的调试工具,包括寄存器和存储器、断点和单步模式。<4>IARC-SPY和KeiluVision2等开发工具的源层调试。<5>应用特殊模型的DLL界面-提供有关元件库的全部文件。4DS18B20的软件设计4.1单片机实现温度转换流程图单片机实现温度转换读取温度数值程序的流程如图4.1所示开始开始初始化DS18B20初始化DS18B20否应答脉冲否应答脉冲发起skiprom的命令发起skiprom的命令发起ConvertT的命令发起ConvertT的命令延时1s等待温度转换完成延时1s等待温度转换完成初始化DS18B20初始化DS18B20否应答脉冲否应答脉冲是是发起readscratchpad命令发起readscratchpad命令读取第一二字节即为温度数据读取第一二字节即为温度数据是是5数码管显示的温控电动机5.1设计要求〔1使用AT89C51单片机为核心,使用4位集成式数码管显示当前温度,温度传感器使用DS18B20。〔2用4位集成式数码管显示当前温度,当温度在范围之外时,直流电动机开始旋转。5.2设计过程5.2.1设计程序及编写先建立一个新的工程,保存到一个位置,如图5.1所示:图5.1新建工程接下来会弹出如下对话框,选择处理器,这里选择AT89S51或AT89S52。图5.2选择处理器接下来对话框提示是否把StartupCode加入到工程,选否即可。工程就建立完了。图5.3对话框提示接下来可以新建一个文档用来编辑程序。图5.4新建文档将数码管显示的温控电动机的程序输入到新建文档中,编辑完存为.asm〔汇编源文件或.h〔C语言头文件或.c〔C语言实现文件即可。图5.5编辑程序接下来把保存的.asm,.c或.h文件加入到工程里即可。如图5.6所示:图5.6将文件加入工程下面进行工程配置。点击Project菜单下的OptionsforTarget‘Target1’。在弹出对话框的Target项里输入晶振为12M,然后勾上UseOn-chipROM。图5.7工程配置〔1在Output项里勾上CreateHEXFile。这就是产生要烧写的.hex文件。图5.8工程配置〔2然后点击Project菜单里的buildtarget或Rebuildalltargetfiles以编译要烧写的.hex文件。编译完会在下面OutputWindow里显示编译成功与否的信息和错误提示。图5.9程序编译5.2.2电路绘制及调试添加元件,单击"P"按钮,在对话框的KEYWORDS中输入AT89C51,得到以下结果:图5.10查找元件单击OK,关闭对话框,这时元件列表中列出AT89C51,用同样的方法找出其他元件。如图5.11所示:图5.11所需元件放置元件,在元件列表中左键选取AT89C51,在原理图编辑窗口中单击左键,这样AT89C51就被放到原理图编辑窗口中了,用同样的方法放置其他元件,如图5.12所示:图5.12放置元件按照数码管显示的温控电动机的原理连接电路,如图5.13所示:图5.13电路原理图完成控制电路的绘制,将Proteus与Keil开发工具结合,搭建单片机开发平台,实现二者的联调,然后仿真出控制电路,如图5.14所示:图5.13电路原理图6结论本课程设计阐述了以AT89C51单片机为核心,使用DS18B20温度传感器以及4位集成式数码管显示温度的数码管显示的温控电动机。实现了通过数码管监测温度,当温度在范围之外时,直流电动机开始旋转的要求。本设计着重运用单片机原理设计数码管显示的温控电动机的程序,并用Keil软件编写程序,用Proteus软件进行控制电路的仿真操作。在课程设计过程中,遇到一些问题,例如:从网上查找到相关程序和本设计题目一样,但是用到这个程序是出现错误,自己查找不出错误所在,最后经过问老师得到了解决。设计过程中由于对单片机理论知识的欠缺,使得对一些指令不是很了解,导致程序编写错误,期间花费了大量时间找资料和同学探讨调试,最终编写出正确的程序;此外,由于初次接触Proteus软件,对其使用不是很熟悉,又查阅了大量该软件的资料和使用教程来完成控制电路的绘制;在进行控制电路仿真过程中最重要的就是Keil软件和Proteus软件的联调,对此我也查阅了很多相关资料,以保证该课程设计的正确性和可行性。课程设计虽然结束了,但我们的学习还没有结束,只有不断学习,用知识充实自己的头脑,才能在未来社会有一席之地,才能为社会的发展做出应有的贡献,一句话:学无止境。附录#include<AT89X52.h>#include"DS18B20.h"#defineuintunsignedint#defineucharunsignedchar//宏定义#defineSETP3_1//定义调整键#defineDECP3_2//定义减少键#defineADDP3_3//定义增加键#defineBEEPP3_7//定义蜂鸣器#defineJDQP3_5bitshanshuo_st;//闪烁间隔标志bitbeep_st;//蜂鸣器间隔标志sbitDIAN=P2^7;//小数点ucharx=0;//计数器signedcharm;//温度值全局变量ucharn;//温度值全局变量ucharset_st=0;//状态标志signedcharshangxian=70;//上限报警温度,默认值为70signedcharxiaxian=0;//下限报警温度,默认值为0ucharcodeLEDData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};/*****延时子程序*****/voidDelay<uintnum>{while<--num>;}voidshortdelay<void>//误差0us{unsignedchara,b,c;for<c=165;c>0;c-->for<b=100;b>0;b-->for<a=150;a>0;a-->;_nop_;//ifKeil,requireuseintrins.h_nop_;//ifKeil,requireuseintrins.h}/*****初始化定时器0*****/voidInitTimer<void>{TMOD=0x1;TH0=0x3c;TL0=0xb0;//50ms〔晶振12M}/*****定时器0中断服务程序*****/voidtimer0<void>interrupt1{TH0=0x3c;TL0=0xb0;x++;}/*****外部中断0服务程序*****/voidint0<void>interrupt0{EX0=0;//关外部中断0if<DEC==0&&set_st==1>{shangxian--;if<shangxian<xiaxian>shangxian=xiaxian;}elseif<DEC==0&&set_st==2>{xiaxian--;if<xiaxian<0>xiaxian=0;}}/*****外部中断1服务程序*****/voidint1<void>interrupt2{EX1=0;//关外部中断1if<ADD==0&&set_st==1>{shangxian++;if<shangxian>99>shangxian=99;}elseif<ADD==0&&set_st==2>{xiaxian++;if<xiaxian>shangxian>xiaxian=shangxian;}}/*****读取温度*****/voidcheck_wendu<void>{uinta,b,c;c=ReadTemperature<>-5;//获取温度值并减去DS18B20的温漂误差a=c/100;//计算得到十位数字b=c/10-a*10;//计算得到个位数字m=c/10;//计算得到整数位n=c-a*100-b*10;//计算得到小数位if<m<0>{m=0;n=0;}//设置温度显示上限if<m>99>{m=99;n=9;}//设置温度显示上限}/*****显示开机初始化等待画面*****/Disp_init<>{P2=0xbf;//显示-P1=0xf7;Delay<200>;P1=0xfb;Delay<200>;P1=0xfd;Delay<200>;P1=0xfe;Delay<200>;P1=0xff;//关闭显示}/*****显示温度子程序*****/Disp_Temperature<>//显示温度{P2=0xc6;//显示CP1=0xf7;Delay<300>;P2=LEDData[n];//显示个位P1=0xfb;Delay<300>;P2=LEDData[m%10];//显示十位DIAN=0;//显示小数点P1=0xfd;Delay<300>;P2=LEDData[m/10];//显示百位P1=0xfe;Delay<300>;P1=0xff;//关闭显示}/*****显示报警温度子程序*****/Disp_alarm<ucharbaojing>{P2=0xc6;//显示CP1=0xf7;Delay<200>;P2=LEDData[baojing%10];//显示十位P1=0xfb;Delay<200>;P2=LEDData[baojing/10];//显示百位P1=0xfd;Delay<200>;if<set_st==1>P2=0x89;elseif<set_st==2>P2=0xc7;//上限H、下限L标示P1=0xfe;Delay<200>;P1=0xff;//关闭显示}/*****报警子程序*****/voidAlarm<>{if<x>=10>{beep_st=~beep_st;x=0;}if<<m>=shangxian&&beep_st==1>||<m<xiaxian&&beep_st==1>>BEEP=0;elseBEEP=1;if<<m>=shangxian>||<m<xiaxian>>{shortdelay<>;JDQ=0;}elseJDQ=1;}/*****主函数*****/voidmain<void>{uintz;InitTimer<>;//初始化定时器EA=1;//全局中断开关TR0=1;ET0=1;//开启定时器0IT0=1;IT1=1;check_wendu<>;check_wendu<>;for<z=0;z<300;z++>{Disp_init<>;}while<1>{if<SET==0>{Delay<2000>;do{}while<SET==0>;set_st++;x=0;shanshuo_st=1;if<set_st>2>set_st=0;}if<set_st==0>{EX0=0;//关闭外部中断0EX1=0;//关闭外部中断1check_wendu<>;Disp_Temperature<>;Alarm<>;//报警检测}elseif<set_st==1>{BEEP=1;//关闭蜂鸣器EX0=1;//开启外部中断0EX1=1;//开启外部中断1if<x>=10>{shanshuo_st=~shanshuo_st;x=0;}if<shanshuo_st>{Disp_alarm<shangxian>;}}elseif<set_st==2>{BEEP=1;//关闭蜂鸣器EX0=1;//开启外部中断0EX1=1;//开启外部中断1if<x>=10>{shanshuo_st=~shanshuo_st;x=0;}if<shanshuo_st>{Disp_alarm<xiaxian>;}}}}/*****END*****/DS18B20.h:#include<AT89X52.h>#defineDQP3_6//定义DS18B20总线I/O/*****延时子程序*****/voidDelay_DS18B20<intnum>{while<num-->;}/*****初始化DS18B20*****/voidInit_DS18B20<void>{unsignedcharx=0;DQ=1;//DQ复位Delay_DS18B20<8>;//稍做延时DQ=0;//单片机将DQ拉低Delay_DS18B20<80>;//精确延时,大于480usDQ=1;//拉高总线Delay_DS18B20<14>;x=DQ;//稍做延时后,如果x=0则初始化成功,x=1则初始化失败Delay_DS18B20<20>;}/*****读一个字节*****/unsignedcharReadOneChar<void>{unsignedchari=0;unsignedchardat=0;for<i=8;i>0;i-->{DQ=0;//给脉冲信号dat>>=1;DQ=1;//给脉冲信号if<DQ>dat|=0x80;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论