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

上传人:b****1 文档编号:5199564 上传时间:2023-05-04 格式:DOCX 页数:25 大小:517.60KB
下载 相关 举报
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第1页
第1页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第2页
第2页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第3页
第3页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第4页
第4页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第5页
第5页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第6页
第6页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第7页
第7页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第8页
第8页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第9页
第9页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第10页
第10页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第11页
第11页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第12页
第12页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第13页
第13页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第14页
第14页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第15页
第15页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第16页
第16页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第17页
第17页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第18页
第18页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第19页
第19页 / 共25页
基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度控制电机转速课程设计剖析Word文档下载推荐.docx(25页珍藏版)》请在冰点文库上搜索。

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

图1系统总体方框图

4硬件设计

4.1单片机系统

1.本设计采用STC89C52单片机作为控制器,完成所有功能的控制,包括:

●DS18B20数字温度传感器的初始化和读取温度值

●LCD显示驱动与控制

●L298电机驱动芯片驱动电机

●温度值的存储和读取

2.单片机系统电路原理图:

图2单片机系统原理图

4.2数字温度传感器模块

4.2.1DS18B20性能

●独特的单线接口仅需一个端口引脚进行通信

●简单的多点分布应用

●无需外部器件

●可通过数据线供电

●零待机功耗

●测温范围-55~+128℃,以1℃递增

●可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃

●温度数字量转换时间200ms,12位分辨率时最多在750ms内把温度转换为数字

●应用包括温度控制、工业系统、消费品、温度计和任何热感测系统

●负压特性:

电源极性接反时,传感器不会因发热而烧毁,但不能正常工作

4.2.2DS18B20外形及引脚说明

图3DS18B20外形及引脚

●GND:

●DQ:

单线运用的数据输入/输出引脚

●VD:

可选的电源引脚

4.2.3DS18B20接线原理图

单总线通常要求接一个约4.7K左右的上拉电阻,这样,当总线空闲时,其状态为高电平。

图4DS18B20接线原理图

4.2.4DS18B20时序图

主机使用时间隙来读写DS18B20的数据位和写命令字的位。

1.初始化时序如下图:

图5DS18B20初始化时序

2.DS18B20读写时序:

图6DS18B20读写时序

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℃的数字输出为07D0H,

实际温度=07D0H*0.0625=2000*0.0625=125℃。

例如-55℃的数字输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作运算),

实际温度=370H*0.0625=880*0.0625=55℃。

可见其中低四位为小数位。

图8DS18B20温度数据表

4.3关于L298电机驱动芯片的简介 

L298是ST公司生产的一种高电压、大电流电机驱动芯片。

该芯片的主要特点是:

工作电压高,最高工作电压可达46V;

输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;

内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器、线圈等感性负载;

采用标准TTL逻辑电平信号控制;

具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作;

有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;

可以外接检测电阻,将变化量反馈给控制电路。

4.4显示电路

LCD显示简单明了,可以直接读出温度值。

图9LCD驱动显示电路

5应用软件介绍 

5.1Proteus仿软真件的介绍 

Proteus是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。

该软件的特点:

(1)全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。

(2)具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS一232动态仿真、1 

C调试器、SPI调试器、键盘和LCD系统仿真的功能;

有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

③ 

目前支持的单片机类型有:

68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、 

PIC18系列、Z80系列、HC11系列以及各种外围芯片。

④ 

支持大量的存储器和外围芯片。

总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大 

,可仿真51、AVR、PIC。

5.2 

Keil软件 

Keil 

C51是美国Keil 

Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

用过汇编语言后再使用C来开发,体会更加深刻。

C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil 

C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

6软件设计

6.1主程序模块

主程序流程图:

主程序流程图

6.2读温度值模块

读温度值模块需要调用4个子程序,分别为:

●DS18B20初始化子程序:

让单片机知道DS18B20在总线上且已准备好操作

●DS18B20写字节子程序:

对DS18B20发出命令

●DS18B20读字节子程序:

读取DS18B20存储器的数据

●延时子程序:

对DS18B20操作时的时序控制

1.读温度值模块流

读温度值子程序流程图

2.DS18B20初始化子程序流程图:

N

Y

DS18B20初始化子程序流程图

3.DS18B20写字节和读字节子程序流程图:

DS18B20写字节子程序流程图DS18B20读字节子程序流程图

6.3中断模块

中断采用T0方式1,初始值定时为50ms。

中断模块需调用两个子程序:

●读温度值子程序:

定时读取温度值,实时更新温度值

●记录温度值子程序:

定时记录温度值,供查询使用

把这两个子程序放在中断的原因是,不会因为调整报警温度或查询历史温度值而停止更新温度值和记录温度值。

中断模块流程图:

Y

中断模块流程图

仿真图

65℃-125℃

0℃-65℃

35℃-0℃

7源程序

#include<

reg51.h>

intrins.h>

stdio.h>

#defineINT8Uunsignedchar

#defineINT16Uunsignedint

externINT8UTemp_Value[];

externINT8Uread_Temperature();

externvoiddelay_ms(INT16Ux);

externvoidLCD_Initialise();

externvoidLCD_ShowString(INT8U,INT8U,INT8U*)reentrant;

sbitMA=P1^0;

sbitMB=P1^1;

sbitPWM1=P1^2;

INT8UBack_Temp_Value[]={0xFF,0XFF};

charTemp_Disp_Buff[17];

floatf_Temp=35.0;

voidT0_INT()interrupt1

{

staticINT8Ut_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_Value[0]!

=Back_Temp_Value[0]||Temp_Value[1]=Back_Temp_Value[1])

Back_Temp_Value[0]=Temp_Value[0];

Back_Temp_Value[1]=Temp_Value[1];

f_Temp=(int)(Temp_Value[1]<

<

8|Temp_Value[0]*0.0625;

sprintf(Temp_Disp_Buff,"

TEMP:

%5.1f\xDF\x43"

f_Temp);

LCD_ShowString(1,0,Temp_Disp_Buff);

}

}

if(f_Temp>

=75)f_Temp=75;

if(f_Temp<

=0)f_Temp=0;

if(f_Temp>

=45)

MA=1;

MB=0;

#include<

if(Read_Temperature())

=Back_Temp_Value[0]||Temp_Value[1]!

=Back_Temp_Value[1])

8|Temp_Value[0])*0.0625;

bittmpreadbit(void)

uinti;

bitdat;

DS=1;

DS=0;

i++;

dat=DS;

i=8;

while(i>

0)i--;

return(dat);

uchartmpread(void)

uchari,j,dat;

dat=0;

for(i=1;

i<

=8;

i++)

j=tmpreadbit();

dat=(j<

7)|(dat>

>

1);

return(dat);

voidtmpwritebyte(uchardat)

ucharj;

bittestb;

for(j=1;

j<

j++)

testb=dat&

0x01;

dat=dat>

1;

if(testb)//write1

i++;

else

//write0

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);

elseif(f_Temp<

=10)

MA=0;

MB=1;

if(f_Temp==10)

{PWM1=0;

delay_ms(10);

else

if(f_Temp==0)

{PWM1=1;

delay_ms(10-f_Temp);

delay_ms(f_Temp);

else{MA=0;

voidmain()

LCD_Initialise();

LCD_ShowString(0,0,"

CurrenTemp:

"

);

Read_Temperature();

delay_ms(800);

TMOD=0x01;

IE=0x82;

TR0=1;

while

(1);

8总结

此次课程设计中,难点在于DS18B20的使用,即对它的时序控制、初始化以及字节读写方法,任何一个环节出错或是时序控制不到位的话就不能得到正确的数据。

一旦学会了正确的使用方法,就能感觉到它带来的便利是热电偶不能比拟的,以后再次使用的话就能很快上手了。

软件设计中,把程序按功能分模块的话能提高编程效率,把问题一一解决,同时画流程图能帮助理清思路,使问题简单化。

另一方面,取变量名时也要讲究技巧,应尽量使其见名知意,同样地,写程序时加注释确是非常必要的,否则隔一段时间后,想再改进或做扩展的话就比较困难了,因为即使是自己写的程序也变得难读难懂了。

参考文献:

1.徐玮.C51单片机高效入门(第2版).北京:

机械工业出版社,2010.

2.龙脉工作室,刘鲲,孙春亮(修订版).北京:

人们邮电出版社,2010.

3.彭伟,单片机C语言程序设计实训100例(第二版)。

北京:

电子工业出版社,2012.

4.朱清慧,Proteus教程—电子线路设计,制版与仿真.北京:

清华大学出版社,2008.

5.江世明,基于Proteus的单片机应用技术.北京:

电子工业出版社,2009.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

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

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