资源描述
第 o 页 西华大学电气信息学院智能化电子系统设计报告 目录 1 前言 . 1 2、 总体方案设计 . 2 2.1 设计内容 . 2 2.2 方案比较 . 2 2.3 方案论证 . 3 2.4 方案选择 . 3 3、 单元模块电路简介与设计 . 4 3.1 本系统部分器件介绍 . 4 3.1.1 DS18B20 温度传感器简介 . 4 3.1.2 STC89C52RO 单片机简介. 4 3.1.3 ULN2003 芯片简介 . 5 3.2 单元模块电路设计 . 6 3.2.1 电源电路 . 6 3.2.2 单片机主芯片电路 . 7 3.2.3 时钟电路 . 7 3.2.4 复位电路 . 8 3.2.5 显示电路 . 8 3.2.6 温度检测电路 . 9 3.2.7 按键控制电路 . 9 3.2.8 报警及电机电路 . 9 3.3 模块连接总电路 . 10 4、 软件设计 . 11 4.1 程序设计原理及所用工具 . 11 4.2 主程序设计 . 11 4.3 主要模块主程序设计 . 12 5、 系统调试 . 15 6、 系统功能、指标参数 . 18 7、 结论 . 19 &总结与体会 . 20 第 o 页 9、参考文献 . 21 附录 1: ISIS 仿真图、PCB 板图、实物图 附录 2:程序源代码第 1 页 西华大学电气信息学院智能化电子系统设计报告 / 、八 1 前言 现代生活,电脑已经成为人们生活中不可缺少的一部分。无论笔记本电脑还是台式 电脑,人们在选择的时候都会考虑到它的散热性能, 一个好的散热系统能够保证电脑的 高速正常运行,给 CPU 足够的空间进行高负载的活动,才能享受计算机技术给我们生 活带来的无穷魅力,可见一个好的散热系统,对电脑而言是多么的重要。但是,计算机 部件中大量使用的是集成电路,而众所周知,高温是集成电路的大敌。高温不但会导致 系统运行不稳,使用寿命缩短,甚至有可能使某些部件烧毁。导致高温的热量不是来自 计算机外,而是计算机内部,或者说是集成电路内部。散热器的作用就是将这些热量吸 收,然后发散到机箱内或者机箱外,保证计算机部件的温度正常。多数散热器通过和发 热部件表面接触,吸收热量,再通过各种方法将热量传递到远处, 比如机箱内的空气中, 然后机箱将这些热空气传到机箱外,完成计算机的散热。 说到计算机的散热器,我们最常接触的就是 CPU 的散热器。散热器通常分为主动 散热和被动散热两种;前者以风冷散热器较为常见,而后者多为散热片。细分散热方式, 又可分为风冷,液冷,半导体制冷,压缩机制冷等等。其中,液冷 半导体制冷及压缩 机制冷要么技术不成熟,要求高,能耗大;要么体积受限,价格昂贵。 风冷散热器作为区别于水冷散热器的一个主流产品类别,不断的引领着整个 IT 散 热市场的前进和创新因此,风冷是最常见,性价比最高的散热方式,我们设计的 智能 电脑散热系统”就是利用温度传感器实现对外界温度的感知,再利用单片机编程控制风 扇的转速,从而实现温度的自动调节,以达到散热目的。正是因为融合了温度传感器技 术和单片机技术,使得本作品兼智能化和自动化于一体。而温控调速技术的优点在于其 能有效地提高散热器的的工作效率,节约能源,性价比高,适用范围广泛。且本设计比 较人性化,由于不同的电脑的散热能力不同,对于散热能力很差的电脑而言,只凭借温 控可能无法实现正常降温,就需要人为控制来调节适合电脑的散热,因此我们增加了手 控模式。 本设计中增加了实时温度显示,让我们随时看着 CPU 的具体温度,从而消除忧虑, 并且,在这基础之上, 还增加了高温报警功能, 避免你的电脑因为温度过高烧毁一些部 件甚至是 CPU。因此,我们的设计更加人性化,更加舒适。第 2 页 西华大学电气信息学院智能化电子系统设计报告 2 总体方案设计 2.1 设计内容 根据对环境温度的测量控制小风扇的转速,并用数码管显示当前温度数值,温度升 高风扇转速提高,温度降低风扇转速下降。同时配备按键实现控制风扇的启、停,温控 模式、手控模式、手控档位加,手控档位减,另外还要实现温度过高自动报警,以及按 键按下时发声,提醒操作成功。 2.2 方案比较 方案一:选用热敏电阻作为感测温度的核心元件,通过运算放大器放大由于温度变 化引起热敏电阻电阻的变化、进而导至的输出电压变化的微弱电压变化信号,再用 AD 转换芯片 ADC0809 将模拟信号转化为数字信号输入 STC89C52RC 单片机处理。采用液 晶显示屏 LCD 显示温度,电机采用数模转换芯片 AD0832 控制,由单片机根据当前温度 值送出相应数字量到 AD0832 由 AD0832 产生模拟信号产生 PWM 波,控制直流电机转速。 如图 2.1 LED 显示 7S- 图 2.1 系统总体框图 方案二:采用数字式集成温度传感器 DS18B20 乍为感测温度的核心元件,直接输出 数字温度信号输入 STC89C52RC 单片机处理,采用四位共阳数码管显示温度,采用动 态扫描显示方式,并且采用对单片机编程输出 PWM 调制波形经 ULN2003 驱动后直接控制 电机转速。如图 2.2 热 八、 、 敏 器 件 I - 89C52 单片机 0 控制电机 报警装置 按 键 控 制 V 第 3 页 图 22 系统总体框图 2.3 方案论证 方案一:此方案能够实现设计的功能,采用热敏电阻有价格便宜、元件易购的优点, 但热敏电阻对温度的细微变化不敏感,在信号采集、放大、转换过程中还会产生失真和 误差,并且由于热敏电阻的 R-T 关系的非线性,其本身电阻对温度的变化存在较大误差, 虽然可以通过一定电路予以纠正,但不仅将使电路复杂稳定性降低,而且在人体所处温 度环境温度变化中难以检测到小的温度变化。但是液晶显示模块价格昂贵,驱动程序复 杂。虽然用 DA 转化芯片产生PWMS 制波能够实现,但是 D/A 转换芯片价格较高,与其 温控状态下单片机直接编程相比性价比不高。 方案二:本方案也能正常实现设计的功能,并且由于数字式集成温度传感器 DS18B20 的高度集成化,大大降低了外接放大转换等电路的误差因素,温度误差很小,并且由于 其感测温度的原理与上述方案的原理有着本质的不同,使得其温度分辨力极高。温度值 在器件内部转换成数字量直接输出,简化了系统程序设计,又由于该传感器采用先进的 单总线技术,与单片机的接口变的非常简洁,抗干扰能力强。 LED 数码管显示,成本低 廉,显示温度明确醒目,在夜间也能看见,功耗极低,显示驱动程序的编写也相对简单, 这种显示方式得到广泛应用。 2.4 方案选择 通过上面两种方案的论证比较,中和性价比和复杂度,我们选择第二种方案第 4 页 3.单兀模块电路简介与设计 3.1 本系统部分器件介绍 3.1.1 DS18B20 温度传感器简介 DS18B20 单线数字温度传感器是 Dallas 半导体公司开发的世界上第一片支持“一 线总线”接口的温度传感器。它具有 3 引脚 TO 92 小体积封装形式。温度测量范围为 -55 C +125C,可编程为 9 位 12 位 A/D 转换精度,测温分辨率可达 0.0625 C。 被测温度用符号扩展的 16 位数字量方式串行输出。工作电压支持 3V5.5V 的电压范 围,既可在远端引入,也可采用寄生电源方式产生。DS18B20 还支持“一线总线”接口, 多个 DS18B2 可以并联到 3 根或2 根线上,CPU 只需一根端口线就能与诸多 DS18B20 通 信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。它还有存储用户定义报 警温度等功能。 其管脚排列如图 3.1 所示,DQ 为数字信号端,GND 为电源地,VDD 为电源输入端。 图 3.1 DS18B20 外形及管脚 3.1.2 STC89C52RC 单片机简介 STC89C52R (是一种带 4K 字节闪存可编程可擦除只读存储器 (FPERO) 256B 片内 RAM 的低电压, 高性能 CMOS 啦微处理器。 该器件采用 ATMEL 高密度非易失存储器制造技术 制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁 存储器组合在单个芯片中,STC 的 STC89C52R(是 一种高效微控制器,为很多嵌入式控 制系统提供了一种灵活性高且价廉的方案。 西华大学电气信息学院智能化电子系统设计报告 .J-I - -VI II -曲: TC 2 | J I I 第 5 页 STC89C52F 单片机管脚如图 3.2 所示: P id - J - vcc F 1 1 r ? ” PQ D IAOQI P 1 2 ” 4 审 H i Fl 1 fl IF 2 AD 3 3 F 1 4 5 ” 二 PO 3 H!AD3) 9 Hi j R t F ” :5 P 1 T Kat : 3-Z r吒劇口事】 韶* P V Ci O p F 乂 w T P3 1 1V 1 0 口 ALEr PROG I HTO li 3 Z ; Pt 29 ; iIHT1 串事 E 1 f 讣 1 P3 I 42 0 1 1 WW* r 3 匚| ft :1 4 15V PJ F r ” T 3 1 I X1AL1 PJ 工 1A1 l 事常H 1 孙 PJ 1 C N- & 30 Li pa a 图 3.2 STC89C52RC 单片机管脚 各管脚功能: VCC 供电电压。 GND 接地。 P0 口: P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1 口 的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以 被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行 校验时,P0 俞出原码,此时 P0 外部必须被拉高。 P1 口: P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输 出 4TTL门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉 为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口 作为第八位地接 收。 P2 口: P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL门电流,当 P2 口被写“ 1”时,其管脚被内部上拉电阻拉高,且作为输入。并因 此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口 当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八 位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读 写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地 址信号和控制信号。 P3 口: P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电 流。当 P3 口写入“ 1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外 部下拉为低电平,P3 口将输出电流(ILL )这是由于上拉的缘故。P3 口也可作为 AT89C51 的一些特殊功能口。 3.1.3 ULN2003 芯片简介 ULN2003 是大电流驱动阵列,多用于单片机、智能仪表、PLC 数字量输出卡等控制 第 5页西华大学电气信息学院智能化电子系统设计报告 图 3.4 电源电路图 第 6 页 电路中。可直接驱动继电器等负载。 输入 5VTTL 电平,输出可达 500mA/50V ULN2003 是高耐压、大电流达林顿陈列 ,由七个硅 NPN 达林顿管组成。 该电路的特点如下: ULN2003的每一对达林顿都串联一个 2.7K 的基极电阻,在 5V 的工作电压下它能与 TTL 和 CMO 电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。 ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、 温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统其管脚图如 图 3.3 J V. IL; 1.1 图 3.3 ULN2003 芯片引脚图 3.2 单元模块电路设计 3.2.1 电源电路 电源电路主要是为系统提供电源,在本设计中,为了使电路简单,我们直接用 USB 接口提供 5V 直流电源为电路供电。下图中的第 2 个图是电源指示灯电路,指示是否给 系统加电,第 3 个图是滤波电路,第 4 个图是为其余芯片供电电路。电路如图 3.4 : 1 电源模块电路西华大学电气信息学院智能化电子系统设计报告 ifF HL; J I i9 mi 7 匚亡 匚 LJ 匚 I I J J 4 4 S S匚 315 out r H 1U + l.1 Jll 卜 .TC 第 7 页 322 单片机主芯片电路 芯片 STC89C52RC 是带 2K 字节快闪存储器的 8 位单片机。P0-P3 口都是并行 I/O 口, 都可用于数据的输入和输出。其中 P1 的 P1.4,P1.5 P1.6, P1.7 口用于 LED 显示的位选 控制;P1.2 高温报警;P1.3 用于控制直流电机的转速。P2 口用于 LED 数码管的段选信号 输出,P3.4 用于 DS18B20 温度检测值的输入,而 P0.0-P0.4 用于按键的输入检测,同时 P0 口加上拉电阻。电路如图 3.5。 IC1 STC12C5A6OS2 单片机主芯片电略 图 3.5 单片机芯片 STC89C52 的电路图 3.2.3 时钟电路 单片机的晶振电路,即时钟电路。单片机的工作流程,就是在系统时钟的作用下, 一条一条地执行存储器中的程序。单片机的时钟电路由外接的一只晶振和两只起振电容, 以及单片机内部的时钟电路组成,晶振的频率越高,单片机处理数据的速度越快,系统 功耗也会相应增加,稳定性也会下降。单片机系统常用的晶振频率有 6MHz 11. 0592MHz 12MHz 本系统采用 11. 0592MHz 晶振,电容选 30pF,电路如图 3.6 西华大学电气信息学院智能化电子系统设计报告 C1L AIM71 3*4 .1 PAA-I 1 讣12 Weil WeLZ Wd? RST RXD r-.i: iff: L r Tfl. TV1 T1 订 PtJO 円11 T5T W PW WT P2 0 P2 1 F2_2 P7 5 F2.4 P2.5 P26 M.7 P?1 P22 P?4 F2? 酣沪vcc Ik AXX4 5 A F4 - PM ADOJ CLCK2 PL1ADCI Pl Pl Pl 5 ADC5 MOSI Pie ADC4MISO PWgChECLK P3.CRXD P3 I TXD P3.2 INTO JINTT PJ JTaCLKO P3 5 TL CLKJ Pl 6 WR 円.7目 LkYl cil pOpF 图 3.6 晶振电路图 图 3.8 显示模块电路图 第 8 页 324 复位电路 系统刚上电时,单片机内部的程序还没有开始执行,需要一段准备时间,也就是复 位时间。一个稳定的单片机系统必须设计复位电路。当程序跑飞或死机时,也需要进行 系统复位。复位电路有很多种,有上电复位,手动复位等,电路如图 3.7 : 西华大学电气信息学院智能化电子系统设计报告 第 9 页 复位电路复位电路 图 3.7 复位电路图 3.2.5 显示电路 LED 采用共阳极数码管,利用单片机的 I/O 口驱动 LED 数码管的亮灭。设计中为了 简化电路,直接用 P1.5-P1.7 四位来作为数码管的片选信号,P2 口来作为其段码控制 LED 数值显示。其电路如图 3.8: 图 3.8 显示模块电路图 第 10 页 掀科暮模块 第 11 页 326 温度检测电路 设计中利用 DS18B20 作为温度检测,并且它能自动将温度信号转换成数字信号输入 给单片机的 P3.4 口,检测灵敏,速度较快。模块电路如图 3.9: vet - HZZI- R6 = 18BZ0 吩吩 温度传感器模块温度传感器模块 图 3.9 温度检测电路 327 按键控制电路 设计中利用五个按键控制,系统的启、停,模式选择,以及手控模式下的风扇转速 增减(默认为温控模式),分别通过单片机 I/O 口的 P0.0-P0.4 输入,并且 P0 口加上拉 电阻。电路如图 3.10 : Wei PTO11 ADC1 上拉电阻 GND 图 3.10 按键控制电路 3.2.8 报警及电机电路 西华大学电气信息学院智能化电子系统设计报告 KPI VCC 图 3.8 显示模块电路图 第 12 页 高温报警和按键发声采用同一电路, 通过单片机的 P1.2 输出信号经 ULN2003 后控制 此部分,而电机的控制则由单片机 P1.3 输出调制后的波形经 ULN2003 后驱动电机。电 路如图 3.11图 3.12 模块连接总电路 第 13 页 图 3.11 报警及电机电路 3.3 模块联接总电路 根据以上各个部分的介绍,最后联接成整体,实现从 DS18B20 中采集温度,将温度 值一数字信号送入单片机中经过处理后控制显示以及风扇转速,随着温度的变化,显示 和电机的转速也会发生变化, 并且进入手控模式后, 通过按键也可以人为控制转速, 其 联接总图如 3.12 : THE 西华大学电气信息学院智能化电子系统设计报告 m uamhMh 一“ - L . W FTL?:J 生别机棋Mt 电源舉块电r-l-te 图 3.12 模块连接总电路 第 14 页 XI 沁 *= 33 Tim wF 第 15 页 西华大学电气信息学院智能化电子系统设计报告 4.软件设计 图 4.1 程序设计流程图 本设计采用 51 单片机 C 语言进行编程,采用模块化思想,即将其分为很多个模块, 有DS18B20 莫块,显示模块,PWM 调制模块,高温报警模块,按键控制模块,编程所用 的软件是 Keil 4,下载程序用到了 STC_ISP_V488 软件,程序调试时仿真用到 Proteus 7.7。 4.2 主程序设计 主程序中主要完成将各模块程序联接起来,并且不断循环进行,达到连续工作,并 且会进行状态查询,当开启后才能执行程序,否则不断待机查询,最后进行是否关闭查 询,若没有关闭,正常执行,若关闭则进入待机查询开启键状态。流程框图见图 4.1 西华大学电气信息学院智能化电子系统设计报告 第 16 页 4.3 主要模块子程序设计 4.3.1 DS18B20 复位与检测子程序 本子程序中首先进行 DS18B20 的复位并查询是否准备好,然后写入控制,读出温 度: void DS18b20_reset(void)/复位 bit flag=1; while (flag) while (flag) DQ = 1; delay(1); DQ = 0; delay(50); / 550us DQ = 1; delay(6); / 66us flag = DQ; delay(45); 延时 500us flag = DQ; DQ=1; 从 DS18B20 中读取温度的程序如下: int read_temp(void) u8 temp_data2; /读出温度暂放 int temp; DS18b20_reset(); / 复位第 17 页 write_byte(OxCC); / 发 Skip ROM 命令 write_byte(OxBE); / 发读命令 temp_dataO=read_byte(); 温度低 8 位 temp_data1=read_byte(); 温度高 8 位 temp = temp_data1; temp = 4; 精度 0.0625 所以除以 16 return temp; 4.3.2 显示子程序 将温度读出转换后的温度数据分别存在 70H-73H 中,在本子程序中将其读出从 输出控制数码管显示。 代码如下 if(get_flag) TH0 = 0 xfc; / 装入初值 1MS TL0 = 0 x17; start_temp_se nsor(); delay(5); temperature = (i nt)read_temp(); str0 = tab1temperature%10; str1 = tabtemperature/10%10; get_flag=0; 4.3.4 按键扫描子程序 本子程序是进行控制模式选择按键查询,并且进入手控模式时的档位调节查询,并且伴 有按键发声,按键扫描子程序代码: 西华大学电气信息学院智能化电子系统设计报告 西华大学电气信息学院智能化电子系统设计报告 P0 口 第 18 页 void key() if(!P1O)开电机 while(!P10); M_OPEN = 1; if(!P11)关电机 while(!P11); M_OPEN = 0; if(!P12)电机加速 while(!P12); if(PWM_VALUE0) PWM_V ALUE-; if(!P15) 温控 while(!P15); T_CONTRL = 1; if(!P16)不温控 while(!P16); T_CONTRL = 0; 西华大学电气信息学院智能化电子系统设计报告 第 19 页 5 系统调试 5.1 硬件调试 在完成电路图的仿真之后,进入了实物设计,实物设计主要是对自己所设计的电 路图进去焊接,用到自己电路图上的所用器件,如果实在没有的,可以用功能相似的器 件来代替。在完成第一部分的焊接后, 要对一些部件进行电压的测量, 第一部分的焊接 主要焊接电阻, 电源,USB 接 口,发光二极管等,焊接完成后,我们接上 USB 接 口,发 现电路板上的 USB 接口处的发光二极管不亮,开始并不明确问题所在,之后我们使用万 用表对 USP 接口,稳压二极管,电源进行电压的测量,最后我们发现时总控制开关安反, 最后我们只好将按键取下重新安装,然后再加电测量测量出来的电压值均在 +5.00V 左 右,并且发光二极管发亮,说明之后焊接的电路正确,之前存在问题。 之后我们断开电源再将电路素所需要的芯片的连接板和电容等器件焊接到电路 板上,焊接时必须注意芯片和电容的正负极,例如电容的正负极判断为“长正短负” , 就是电容所接的长的那根导线接正极,短的那根接负极。在焊接完成之后,我们再次接 通电源和 USP 接 口的电源,按下开关电源,USB 接 口处的发光二极管再次发亮,此时再 次用万用表对电路板的电源,稳压二极管, USB 接口及其各个芯片和单片机进行电压的 测量,测量出来的全部都在+5.00 V,说明电路正确,此时我们将所用的芯片包括单片机 接上电路板,然后开启电源,将程序载入单片机运行整个电路,我们发现 LED 数码管显 示存在问题,主要是第二位位选可能存在问题,并且显示较暗,后来我们总结发现是 LED 直接由单片机接出负载,而单片机的接负载能力很差,所以很暗,并且 LED 存在问题, 最后在老师的指导下,根据原理图,灵活做一些变动,添加了电阻、三极管驱动,另外, 更换了 LED 显示屏,使其显示非常正常和明亮。 由于老师给的外部电路是万用板,所以我们必须自己焊接电路,并且要自己连接导 线,焊接完成后,将程序下载到单片机中运行,发现电机不能正常转动,而且报警器不 断报警,最后我们检测发现,ULN2003 的公共端我们没有接地,因此我们将其接地后在 进行调试,发现一切都正常。总结本次自己动手焊接和调试电路发现自己在动手能力方 面还有很多不足,但是能够自己在老师的指导下找出问题解决问题,自己觉得这是一个 很大的进步。 5.2 软件调试 软件调试是一个漫长的过程,一个小的疏忽就可能造成软硬件结合时出现错误。我 们在本次调试中主要出现了一个错误,就是中断程序处理不当,导致整个系统瘫痪,经 西华大学电气信息学院智能化电子系统设计报告 第 20 页 过仔细整理后,才找出问题: 最初的程序段: mai n() un sig ned char TempH,TempL; TMOD=0 x01;定时器设置 THO=Oxef; TL0=0 xf0; IE=0 x82; TR0=1; P2=0 x00; coun t=0; while(1) str2=tab(temp%1000)/100; /十位温度 str3=tab1(temp%100)/10; /个位温度,带小数点 str4=tabtemp%10; 小数 if(flag_get=1) /定时读取当前温度 temp=ReadTemperature(); flag_get=0; 改进后的程序段: mai n (void) /TMOD=0 x11; /T0 方式 1 计数 T1 方式 1 计数 TMOD |= 0 x01; TH0 = 0 xfc; 装入初值 1MS第 21 页 P2 = 0 x00; LED = 1; PWM = 0; DS18B20nit(); while(1) key(); if(get_flag) TH0 = 0 xfc; / 装入初值 1MS TL0 = 0 x17; start_temp_se nsor(); delay(5); temperature = (in t)read_temp(); str0 = tab1temperature%10; str1 = tabtemperature/10%10; get_flag=0; 西华大学电气信息学院智能化电子系统设计报告 TR0 = 1; ET0 = 1; EA = 1; /启动 to 西华大学电气信息学院智能化电子系统设计报告 TLO = 0 x17; 第 22 页 6 系统功能、指标参数 6.1 系统功能 该系统是针对电脑散热而设计,能够及时监测机箱内的实时温度,并自动将温度值 转换成数字信号送入单片机,然后在 LED 显示频上准确无误的显示;通过对送入温度 进行分析,判断温度有无达到最大温度,如果达到就进行报警,给人们警示。当我们选 择温控模式时,就将送入的温度值参与 PWM 调制,当温度不断增大时,风扇转速不断 增加,反知,随着温度减小,风扇转速也减小;当进入手控模式时,我们可以任意增大 减小风扇的转速,同时当我们对按键进行操作时,报警模块 LED 点亮提醒操作成功, 从而设计显得人性化,舒适化。 6.2 指标参数 在主电路板中需要测量出的参数:电源电压,各个芯片的电压以及单片机的电压, 以下为各电压的值: 1. 电源电压的测量值为 5.00V 3. 芯片的电压值:ULN2003 勺电压测量值为 5.02V,MAX232 勺电压测量值为 5.00V, 4. 单片机的电压值为 4.98V 5. 电机运行时其两端的电压是 5.00V 所以对于电源为 5V 电路来说,以上参数都是正确的。 其余的参数如下: 1. 电路板中单片机的晶振电路中晶振元件 12MHZ 2. 高温报警电路中的限流电阻的大小为 100 3. 显示模块中的电阻大小为 4.7K 并且在系统正常工作状态下,各个模块的电压,电阻等参数均正常。 西华大学电气信息学院智能化电子系统设计报告 7 结论 本设计通过硬件焊接,软件编程以及重要的软硬件调试之后,实现了最初预想的各 项功能,虽不说一帆风顺,但完成了要求。并且除了要求的温度读取、显示、控制电机 等基本功能外,第 23 页 我们还增加了手控模式,高温报警,按键发声提醒等功能,使设计更加 人性化。 智能化的电脑散热系统不仅能够用于电脑的散热, 其实也可以用于普通风扇的设计 之中,本设计可以说是多方面的考虑。而增加手控模式的好处在于,不同电脑的性能和 CPU产热量也不太一样,而本设计对温度控制电机的灵敏度相当高,对于温度过高的电 脑或者温度变化很快的电脑而言,比较适宜。对于一些电脑散热不是很多,温度变化比 较稳定的电脑,可以采用手控设定档位,减小能耗,使散热系统寿命更长。对于很多用 按键控制的系统没有添加按键提醒部件,虽说可以减小能耗,但是对于操作不是很明确, 当你按下时,如果变化不大的情况下,你不能确定操作是否成功;倘若有了提醒装置, 每次操作成功都有提醒,既能给人们带来方便,也能方便检修。 设计虽然成功了,但是并没有正在用于电脑内部散热,若条件允许便能真正检测出 系统设计的有效性和安全性。本系统的设计集中的对我们数模电电路知识,C 语言学习, 以及实际动手能力进行了综合性的考察,由于我们对一些器件的了解程度不是很高,所 以,对于我们的设计还有很多改进的地方,比如:直流电机可以改成效率更高,能耗更 低的电机等。第 24 页 西华大学电气信息学院智能化电子系统设计报告 8 总结与体会 通过本次课程设计对很多学科有了深入的学习和理解,对电路也有了新的体会,在 设计过程中,主要做了两方面的设计:一就是软件的设计。二是硬件电路的设计。在软 件设计中本系统的软件部分主要是利用 C 语言来设计的,更加深入的巩固了我们的 C 语 言知识,增加了我们的编程能力和经验。 简单仪器原理与设计的课程是通信工程专业学生所要掌握的, 是实践教学不可缺少 的重要环节。通过课程设计,不仅能提高学生学习智能仪器的兴趣,加深对智能仪器的 理解,开阔视野,也能为毕业设计打下良好的基础。学生基本上经历了单片机应用系统 开发的全过程,扩大了学生实践的内容,从而取得了较好的教学实践效果。任何收获都 要付出巨大的努力,我们思考,阅读,动手,这让我们受益匪浅,其乐无穷。 经过一个星期的努力,我们终于成功的完成了本次课程设计。再设计过程中我们又 很多收获当然也遇到很多困难。譬如说不能把书本上的知识与实践相结合。还有当我们 第一次把硬件电路做出来以后就在调试时发现 LED 工作不正常,原来是我们没有按照管 脚的正确顺序连接电路来驱动 LED 显示,在这个过程中培养了我们发现问题,思考问题, 解决问题的能力,也增加了我们实际动手实践的能力。 在这次设计的软件部分是使用 C 语言,考虑到刚刚学过,并且想通过本次设计加深 对 C语言的理解和熟悉,增强编程能力。C 语言执行效率较高,代码精简;它的可读性 较好,容易理解。通过设计也能大大加深对软硬件的结合掌握和学习。 本次设计增强了我们查阅资料的方法和技巧,更是大大的提高了我们自学的能力, 同时也增强了我们的动手能力。 通过本次课程设计,我们在对这门技术上有了更深刻的认识,也从实践中去感受到 了技术给我们设计带来的改变与进步。我们不仅基本掌握了软件的使用,还对电子设计 的思路有了更多的认识。 在这一个星期的课程设计过程中,我们三个人一起查资料、一起讨论、一起交流, 最终我们决定了设计方案并成功完成设计,这些都培养了我们的团结合作精神,这次设 计让我们受益匪浅。 西华大学电气信息学院智能化电子系统设计报告 第 25 页 9 参考文献 1 谭浩强 C 语言程序设计(第三版)J.北京:清华大学出版社,2005 2 张毅刚、彭喜元单片机原理及应用M.北京:高等教育出版社,2003 3 张海兵、李敏.PROTEL 电路设计实例与分析J.北京:人民邮电出版社, 2005 4 李春葆、金晶.C 语言程序设计辅导M.北京:清华大学出版社,2007 杨将新、李华军单片机程序设计及应用(第三版) M.北京:电子工业出版社,2006 鲁捷、焦振宇.PROTEL 2004 电路设计M.北京:清华大学出版社, 2006 7 康光华陈大钦 电子技术基础模拟部分(第四版) M.高等教育出版社.1987 8 谢自美 主编电子线路设计实验.测试(第二版)M.华中理工大学出版社, 2005 9 王为青,邱文勋 51 单片机开发案例精选J.人民邮电出版社,2001 , (5) : 45-47 10 边海龙,孙永奎单片机开发与典型工程项目实例详解 J.电子工业出版社,2008 11 康光华、邹寿彬电子技术基础数字部分(第五版) M.北京:高等教育出版社,2006 12 谢维成,刘勇微机原理与接口技术M.华中科技大学出版社,2009 13 张毅刚单片机原理及应用M.高等教育出版社,2003第 26 页 西华大学电气信息学院智能化电子系统设计报告 附录 1: ISIS 仿真图、PCB 板图、实物图 I I Tbl Vrt cr Qr qr pr or ? * / * : * * 3 ? + r r F * r r 附图 1、ISIS 仿真图 在单片机最小系统的搭建上采用了 12MHZ 的晶振作为晶振电路核心,复位选用按 键复位方式,温度检测模块使用 P3.4 来接收数据,按键模块选用 P1 口来控制,数码管 选用P0 口发送段码,用 P2 口发送位码,P3.0 口用于报警电路,实际上还有大把的 IO 口资源可以使用,还可以实现更多的功能。仿真的时候最大的问题是 ULN2003 模块的 搭建以及使用,由于之前没有对它理解透彻,导致出了许多问题,但是最后在细心查资 料之后终于将它调试成功。 1? MALI 旳加U PD1AC1 旳 酗 出 FnjAL.l PIUMI4 心諦茵 fO5ftE6 M.E 巨 P2.UCS F22AD P23ftfl I2U12 P2SA0 IKAH *刘利铮 ra.i/ra F33i MMHT pi.rn FI伫 P7J&JW 132. k;亡 kE RFl; RI;inQ irn liH jm kW 训 IIU trUl J IMH IUJ J1 :TEC .XTA12 P1M2 11 !30一 13 -LT ULKira,忑 15 4 3期丄上工g g!c!c丈兀C5C8C1CC5C8C1C 第 27 页 附图 2、实物图 在实物调试上面按键模块,电机模块算是比较顺利的,但是在数码管显示温度模块 上面一直有问题,调试了很久都没有进展,在上网查了许多资料后才知道原因是中断干 扰了数码管扫描,还有一个问题是数码管的管脚排列, ABCDEFGH DP 必须对应管脚 第 28 页 11、7、4、2、1、10、5、3 来依次连接 P0.0 P0.7 。第 29 页 西华大学电气信息学院智能化电子系统设计报告 附图 3、PCB 图 此 PCB 图是用 AD09 画的,AD09 相对于 PROTEL 来说,库更多,且更容易与电脑兼 容,操作简便。把原理图连接好之后,剩下的就是布线了,总的来说还是比较顺利的, 并不麻烦。茅 BQ 白岛Big 00X00 QOOQOQOOOOO0QOO0OQ 第 30 页 附录 2:程序源代码 #in elude #in elude #in elude vintrin s.h typedef un sig ned int u16; typedef un sig ned char u8; un sig ned char code tab= 0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8, 0 x80,0 x90;/ 数码管段码表共阳 un sig ned char code tab1= 0 x40,0 x79,0 x24,0 x30,0 x19,0 x12,0 x02,0 x78, 0 x00,0 x10; #defi ne no ps(); _no p_(); _n op_(); _nop_(); _ nop_();/ 定义空指令 #defi ne PWM_MAX 20 #defi ne TEMP_MIN : 20 #defi ne TEMP_MAX 80 u16 str2; int temperature; /温度值 u8 PWM_VALUE=0; /PWM 值 bit M_OPEN=0; / 默认电机关 bit T_CONTRL=1; / 默认温控 bit get_flag=1; / 温度采集 sbit DQ =P1A7; / 温度 DS18B20 sbit LED=P3A0; / 报警 sbit PWM=P3A7; /PWM 输出 sbit P10=P1A0; / 开 sbit P1 仁 P1; / 关 sbit P12=P1A2; / 加速 sbit P14=P1A4; / 减速 sbit P15=P1A5; / 温控 sbit P16=P6; / 不温控 void delay (un sig ned int i)/ 延时函数 while(i-); void DS18b20_reset(void) 复位 bit flag=1; while (flag) while (flag) DQ = 1; delay(1); DQ = 0; delay(50); / 550us DQ = 1; delay(6); / 66us flag = DQ; delay(45); / 延时 500us flag = DQ; DQ=1; /*18B20 写 1 个字节函数,向 1-WIRE 总线上写 个字节*/ void write_byte(u8 val) u8 i; for (i=0; i= 1; / 右移一位 DQ = 1; delay(1); /*18B20 读 1 个字节函数,从 1-WIRE 总线上读取 一个字节*/ u8 read_byte(void) u8 i, value=0; for (i=0; i= 1; DQ = 0; no ps(); /4us DQ = 1; no ps(); /4us if (DQ) value|=0 x80; delay(6); /66us DQ=1; return(value); /*启动温度转换*/ void start_temp_se nsor(void) DS18b20_reset(); write_byte(0 xCC); / 发 Skip ROM 命令 write_byte(0 x44); / 发转换命令 /*读出温度*/ int read_temp(void) u8 temp_data2; / int temp; DS18b20_reset(); / write_byte(0 xCC); / write_byte(0 xBE); / temp_data0=read_byte(); / 温度低 8 位 temp_data1=read_byte(); / 温度高 8 位 temp = temp_data1; temp = 4; / 精度 0.0625, 所以除以 16 return temp; /*18B20 初始化 void DS18B20nit() DS18b20_reset(); write_byte(0 xCC);/ write_byte(0 x4E);/ write_byte(0 x7F); 为 12 位精度 write_byte(0 x7d);/ 9 位精度 write_byte(0 x1);/ 9 位精度 write_byte(0 x1F);/读出温度暂放 复位 发 Skip ROM 命令 发读命令 *刘 跳过 ROM 与奇存器 将配置寄存器配置 将配置寄存器配置为 将配置寄存器配置为 将配置寄存器配置为 西华大学电气信息学院智能化电子系统设计报告 第 32 页 西华大学电气信息学院智能化电子系统设计报告 DS18b20_reset(); * 按键扫描 * */ void key() if(!P1O) 开电机 while(!P10); M_OPEN = 1; if(!P11) 关电机 while(!P11); M_OPEN = 0; if(!P12) 电机加速 while(!P12); if(PWM_VALUE0) PWM_VALUE-; if(!P15) 温控 while(!P15); T_CONTRL = 1; if(!P16) 不温控 while(!P16); T_CONTRL = 0; /* */ mai n (void) TMOD=Ox11; /TO 式 1 计数 TMOD |= 0 x01; TH0 = 0 xfc; / TL0 = 0 x17; TR0 = 1; / 主 函 数 方式 1 计数 T1 方 装入初值 1MS 启动 t0 ET0 = 1; EA = 1; P2 = 0 x00; LED = 1; PWM = 0; DS18B20_I nit(); while(1) key(); if(get_flag) TH0 = 0 xfc; / 装入初值 1MS TL0 = 0 x17; start_temp_se nsor(); delay(5); temperature (in t)read_temp(); str0 = tab1temperature%10; str1 = tabtemperature/10%10; get_flag=0; 第 33 页 u16 cou nt=O; / 定时次数,每次 1ms u16 cou nt1=0; u8 temp_value=O; void t0() in terrupt 1 using 2 TH0=0 xfc; / 重装 t0 TL0=0 x17; if(cou nt=PWM_MAX) cou nt=O; else coun t+; /* 电机控制*/ if(T_CONTRL) 温控 if(temperatureTEMP_MAX) temp_value = PWM_MAX; LED = 0; else if(temperatureTEMP_MIN) temp_value (temperature-TEMP_MIN)*PWM_MAX/ (TEMP_MAX-TEMP_MIN); LED = 1; else temp_value = 0; LED = 1; if(M_OPEN)/ 电机开 if(cou nt=O) PWM = 1; if(cou nt=temp_value) PWM=0; else PWM=0; else if(M_OPEN)/ 电机开 if(cou nt=O) PWM = 1; if(cou nt=PWM_VALUE) PWM=0; else PWM=0; /* 数码管扫描和温度检测*/ if(cou nt%10=0)/10ms if(cou nt1=50) cou nt 仁 0; else coun t1+; if(cou nt1=0) get_flag=1; if(cou nt1%2=0) P2=0 x80;*to 定时*中断函数*/ 西华大学电气信息学院智能化电子系统设计报告 第 34 页 P0=str1; else P2=0 x40; PO=strO; 西华大学电气信息学院智能化电子系统设计报告
展开阅读全文