ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:517.60KB ,
资源ID:5199564      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5199564.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx

1、图1 系统总体方框图4 硬件设计 4.1 单片机系统1.本设计采用STC89C52单片机作为控制器,完成所有功能的控制,包括:DS18B20数字温度传感器的初始化和读取温度值LCD显示驱动与控制L298电机驱动芯片驱动电机温度值的存储和读取2.单片机系统电路原理图:图2 单片机系统原理图 4.2 数字温度传感器模块 4.2.1 DS18B20性能独特的单线接口仅需一个端口引脚进行通信简单的多点分布应用无需外部器件可通过数据线供电零待机功耗测温范围-55+128,以1递增可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625温度数字量转换时间200ms,12位

2、分辨率时最多在750ms内把温度转换为数字应用包括温度控制、工业系统、消费品、温度计和任何热感测系统负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作 4.2.2 DS18B20外形及引脚说明图3 DS18B20外形及引脚GND:地DQ:单线运用的数据输入/输出引脚VD:可选的电源引脚 4.2.3 DS18B20接线原理图单总线通常要求接一个约4.7K左右的上拉电阻,这样,当总线空闲时,其状态为高电平。图4 DS18B20接线原理图 4.2.4 DS18B20时序图 主机使用时间隙来读写DS18B20的数据位和写命令字的位。1.初始化时序如下图:图5 DS18B20初始化时序2.

3、DS18B20读写时序:图6 DS18B20读写时序 4.2.5 数据处理 高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在 高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。图7 字节分配下表为12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0, 这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际 温度。 例如+125的数字输出为0

4、7D0H,实际温度=07D0H*0.0625=2000*0.0625=125。例如-55的数字输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作运算), 实际温度=370H*0.0625=880*0.0625=55。可见其中低四位为小数位。图8 DS18B20温度数据表 4.3关于L298电机驱动芯片的简介L298是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片的主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器、线圈等感性负载;

5、采用标准TTL逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作;有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。 4.4 显示电路 LCD显示简单明了,可以直接读出温度值。图9 LCD驱动显示电路5应用软件介绍 5.1Proteus仿软真件的介绍Proteus是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。该软件的特点:(1)全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。(2)具有模拟

6、电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS一232动态仿真、1C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。支持大量的存储器和外围芯片。总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大,可仿真51、AVR、PIC。5.2Keil软件KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言

7、在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。6 软件设计6.1 主程序模块主程序流程图:主程序流程图6.2 读温度值模块 读温度值模块需要调用4个子程序,分别为:DS18B20初始化子程序:让单片机知道DS18B20在总线上且已准备好操作DS18B20写字节子程序:对DS18B

8、20发出命令DS18B20读字节子程序:读取DS18B20存储器的数据延时子程序:对DS18B20操作时的时序控制1.读温度值模块流 读温度值子程序流程图 2.DS18B20初始化子程序流程图: NY DS18B20初始化子程序流程图3.DS18B20写字节和读字节子程序流程图: DS18B20写字节子程序流程图 DS18B20读字节子程序流程图6.3 中断模块 中断采用T0方式1,初始值定时为50ms。中断模块需调用两个子程序:读温度值子程序:定时读取温度值,实时更新温度值记录温度值子程序:定时记录温度值,供查询使用把这两个子程序放在中断的原因是,不会因为调整报警温度或查询历史温度值而停止更

9、新温度值和记录温度值。中断模块流程图: Y中断模块流程图 仿真图65 - 125 0 - 6535 - 07 源程序#includeintrins.hstdio.h#define INT8U unsigned char#define INT16U unsigned intextern INT8U Temp_Value;extern INT8U read_Temperature();extern void delay_ms(INT16U x);extern void LCD_Initialise();extern void LCD_ShowString(INT8U,INT8U,INT8U*) r

10、eentrant;sbit MA=P10;sbit MB=P11;sbit PWM1=P12;INT8U Back_Temp_Value=0xFF,0XFF;char Temp_Disp_Buff17;float f_Temp=35.0;void T0_INT() interrupt 1 static INT8U t_Count=0; TH0=(INT16U)(-11.0592/12*500)/256; TL0=(INT16U)(-11.0592/12*500)%256; if(+t_Count=100) t_Count=0; if(Read_Temperature() ) if(Temp_V

11、alue0!=Back_Temp_Value0|Temp_Value1=Back_Temp_Value1) Back_Temp_Value0=Temp_Value0; Back_Temp_Value1=Temp_Value1; f_Temp=(int)(Temp_Value1=75) f_Temp=75; if (f_Temp=45) MA=1;MB=0; #include0)i-; return (dat); uchar tmpread(void) uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); return(d

12、at); void tmpwritebyte(uchar dat) uchar j; bit testb; for(j=1;j1; if(testb) /write 1 i+; else/write 0 if(f_Temp=45) PWM1=0;delay_ms(30);return; if(f_Temp=75) PWM1=1; PWM1=1;delay_ms(f_Temp-45); PWM1=0;delay_ms(75-f_Temp);else if(f_Temp=10) MA=0;MB=1; if (f_Temp=10) PWM1=0;delay_ms(10); else if(f_Tem

13、p=0) PWM1=1;delay_ms(10-f_Temp);delay_ms(f_Temp); else MA=0;void main() LCD_Initialise(); LCD_ShowString(0,0,Curren Temp:); Read_Temperature();delay_ms(800); TMOD=0x01; IE=0x82; TR0=1; while(1);8 总结此次课程设计中,难点在于DS18B20的使用,即对它的时序控制、初始化以及字节读写方法,任何一个环节出错或是时序控制不到位的话就不能得到正确的数据。一旦学会了正确的使用方法,就能感觉到它带来的便利是热电偶

14、不能比拟的,以后再次使用的话就能很快上手了。 软件设计中,把程序按功能分模块的话能提高编程效率,把问题一一解决,同时画流程图能帮助理清思路,使问题简单化。另一方面,取变量名时也要讲究技巧,应尽量使其见名知意,同样地,写程序时加注释确是非常必要的,否则隔一段时间后,想再改进或做扩展的话就比较困难了,因为即使是自己写的程序也变得难读难懂了。参考文献:1.徐玮. C51单片机高效入门(第2版). 北京:机械工业出版社,2010.2.龙脉工作室,刘鲲,孙春亮(修订版). 北京:人们邮电出版社,2010.3.彭伟,单片机C语言程序设计实训100例(第二版)。北京:电子工业出版社,2012.4.朱清慧,Proteus教程电子线路设计,制版与仿真. 北京:清华大学出版社,2008.5.江世明,基于Proteus的单片机应用技术. 北京:电子工业出版社,2009.

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2