与单片机1位I/O线相连,且单片机的1位I/O线可挂接多个DS18B20,就可实现单点或多点温度检测[7]。在本设计中将DS18B20接在P1.7口实现温度的采集。其与单片机的连接如图2.2.4。
图2.2.4 温度采集电路
2.2.5 风扇电机驱动与调速电路
本设计中由单片机的I/O口输出PWM脉冲,通过一个达林顿反向驱动器ULN2803驱动12V直流无刷风扇电机以及实现风扇电机速度的调节。
键盘控制设置温度,通过软件向单片机输入相应控制指令,由单片机通过P1.7口输出与转速相应的PWM脉冲,经过ULN2803驱动风扇直流电机控制电路,实现电机转速与启停的自动控制[8]。当环境温度升高时,直流电机的转速会相应按照设定的等级有所提高;当环境温度下降时,电机的转速会相应的下降;当环境温度低于设置温度时,电机停止转动,而环境温度又高于预设温度时,电机重新启动。
电路如图2.2.5所示,风扇电机的一端接12V电源,另一端接ULN2803的OUT7
[7]
马云峰.单片机与数字温度传感器DS18B20的接口设计[J].计算机测量与控制,2007,10(4):278—280. [8]
王会明,侯加林. 智能电风扇控制器的研制[J]. 电子与自动化,1998,5(4):25—26.
12
引脚,ULN2803的IN7引脚与单片机的P3.1引脚相连,通过控制单片机的P3.1引脚输出PWM信号,由此控制风扇直流电机的速度与启停。
图2.2.5 风扇电机驱动与调速电
系统选用的风扇电机为12V直流无刷电机,单达林顿反向驱动器ULN2803输入
TTL信号为5V或CMOS信号为6~15V时,输出的最大电压为50V,最大电流为500mA,工作温度范围为0~70℃。本系统中单片机I/O口输出的TTL信号为5V,因此此风扇电机可以用ULN2803来驱动。
13
第三章 软件设计
3.1 程序设置
程序设计部分主要包括主程序、DS18B20初始化函数、DS18B20温度转换函数、温度读取函数、键盘扫描函数、数码管显示函数、温度处理函数以及风扇电机控制函数。DS18B20初始化函数完成对DS18B20的初始化;DS18B20温度转换函数完成对环境温度的实时采集;温度读取函数完成主机对温度传感器数据的读取及数据换算,键盘扫描函数则根据需要完成初值的加减设定;温度处理函数对采集到的温度进行分析出理,为电机转速的变化提供条件;风扇电机控制函数则根据温度的数值完成对电机转速及启停的控制。
主程序流程图如图3.1.1: 调用温度读 取函数 图3.1.1 主程序流程图 结束 调用DS18B20 温度转换函数 调用风扇电 机控制函数 调用DS18B20 初始化函数 调用温度处 理函数 程序初始化 调用数码管 显示函数 主程序开始 调用键盘扫 描函数 3.2 用Keil C51编写程序 14
Keil C51是美国Keil Software公司开发的51系列兼容单片机C语言的软件开发系统,与单片机汇编语言相比,C语言在不仅语句简单灵活,而且编写的函数模块可移植性强[9],因而易学易用,效率高。随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前使用较多的MCS-51系列单片机开发的软件。
Keil C51软件不仅提供了丰富的库函数,而且它强大的集成开发调试工具为程序编辑调试带来便利,在开发大型软件时更能体现高级语言的优势。在使用时要先建立一个工程,然后添加文件并编写程序,编写好后再编辑调试。
Keil C51的使用界面如图3.2.1。
图3.2.1 Keil C51的使用界面
3.3 用Proteus进行仿真
3.3.1 Proteus简介
[9]
谭浩强.C程序设计[M](第三版).北京:清华大学出版社.2005.37—65.
15
Proteus软件是来自英国Labcenter electronics公司的EDA工具软件。
Proteus软件有十多年的历史,在全球广泛使用,它不仅和其它EDA工具一样有原理布图、PCB自动或人工布线及电路仿真的功能,而且更重要的功能是,他的电路仿真是互动的,可以根据仿真实时观察到得现象验证设计的正确性及准确性并及时改变程序代码、原理图连接以及元件属性等。它还能配合系统配置的虚拟仪器来显示和输出,如示波器、逻辑分析仪等[10],效果很好。
Proteus有4个功能模块:智能原理图设计、完善的电路仿真功能、独特的单片机协同仿真功能以及实用的PCB设计平台。其内部元件库含有丰富的元件,支持总线结构以及智能化的连线功能;支持主流CPU(如ARM、8051/52、AVR)及其通用外设模型的实时仿真等,为单片机的开发应用等带来极大的便利。
软件使用的主界面如图3.3.1。
图3.3.1 Proteus使用界面
3.3.2 本设计基于Proteus的仿真
首先启动Proteus软件并建立一工程,然后根据原理图调出相应的原件,再根据要
[10]
孙号.Proteus软件在设计电子电路中的应用[J] .仪表技术,2009,8:74—75
16