图3-7 风扇电机驱动与调速电路
系统选用的风扇电机为12直流无刷电机,达林顿反向驱动器ULN2803输入TTL信号为5V或CMOS信号为6~15V时,输出的最大电压为50V,最大电流为500mA,工作温度范围为0~70℃。本系统中单片机I/O口输出的TTL信号为5V,因此此风扇电机可以用ULN2803来驱动。 3.2.6 电路总图
电路总图主要包括系统复位与晶振电路、独立按键连接电路、LCD1602液晶显示电路、温度采集电路、风扇电机驱动与调速电路等,如图3-8所示。
15
图3-8 电路总图
16
第四章 软件设计
4.1 程序设置
程序设计部分主要包括主程序、DS18B20初始化函数、DS18B20温度转换函数、温度读取函数、按键扫描函数、数码管显示函数、温度处理函数以及风扇电机控制函数。DS18B20初始化函数完成对DS18B20的初始化;DS18B20温度转换函数完成对环境温度的实时采集;温度读取函数完成主机对温度传感器数据的读取及数据换算,按键扫描函数则根据需要完成初值的加减设定;温度处理函数对采集到的温度进行分析处理,为电机转速的变化提供条件;风扇电机控制函数则根据温度的数值完成对电机转速及启停的控制。主程序流程图如图4-1所示。
开始 调用按键扫描函数 程序初始化 调用LCD1602显示函数 调用DS18B20初始化函数 调用温度处理函数 调用DS18B20温度转换函数 调用风扇电机控制函数 调用温度读取函数 结束 图4-1 主程序图
17
第五章 系统调试
4.1.1 程序代码
C51 COMPILER V9.01 温控风扇程序 05/02/2016 13:13:23 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE 蝊控风扇程序 OBJECT MODULE PLACED IN 温控风扇程序.OBJ
COMPILER INVOKED BY: D:\\Keil uVision4\\C51\\BIN\\C51.EXE 温控风扇程序.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include
3 #include
7 sbit dj=P1^0;//电机控制端接口
8 sbit DQ=P1^6;//温度传感器接口P1^6 9 //////////按键接口///////////////////////////////// 10 sbit key1=P3^5;//设置温度 11 sbit key2=P3^6;//温度加
12 sbit key3=P3^7;//温度减 P3^7 13
14 sbit Beep=P1^1; //蜂鸣器 15
16 uint wen_du; 17 uchar gao,di;//pwm
18 uint shang,xia; //对比温度暂存变量 19 uchar dang;//档位显示 20 uchar flag;
21 uchar d1,d2,d3;//显示数据暂存变量 22
23 uchar xianshi[6]={0}; 24
25 void delay(uint ms) 26 {
27 1 uchar x;
28 1 for(ms;ms>0;ms--)
29 1 for(x=10;x>0;x--); 30 1 }
31 /***********ds18b20延迟子函数(晶振12MHz )*******/
18
32 void delay_18B20(uint i) 33 {
34 1 while(i--); 35 1 }
36 /**********ds18b20初始化函数**********************/ 37 void Init_DS18B20(void) 38 {
39 1 uchar x=0;
40 1 DQ=1; //DQ复位 41 1 delay_18B20(8); //稍做延时
42 1 DQ=0; //单片机将DQ拉低 43 1 delay_18B20(80); //精确延时 大于 480us 44 1 DQ=1; //拉高总线 45 1 delay_18B20(14);
46 1 x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
47 1 delay_18B20(20); 48 1 }
49 /***********ds18b20读一个字节**************/ 50 uchar ReadOneChar(void) 51 {
52 1 uchar i=0; 53 1 uchar dat=0; 54 1 for (i=8;i>0;i--) 55 1 {
19