笔记本智能散热底座设计.doc

上传人:laozhun 文档编号:2883696 上传时间:2023-03-01 格式:DOC 页数:24 大小:269KB
返回 下载 相关 举报
笔记本智能散热底座设计.doc_第1页
第1页 / 共24页
笔记本智能散热底座设计.doc_第2页
第2页 / 共24页
笔记本智能散热底座设计.doc_第3页
第3页 / 共24页
笔记本智能散热底座设计.doc_第4页
第4页 / 共24页
笔记本智能散热底座设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《笔记本智能散热底座设计.doc》由会员分享,可在线阅读,更多相关《笔记本智能散热底座设计.doc(24页珍藏版)》请在三一办公上搜索。

1、笔记本电脑智能散热底座设计目录一、摘要1关键词:1二、笔记本散热底座的设计22.1、散热底座的材料22.2、散热底座的结构2三、系统方案设计33.1、系统框架图(如图3-1)33.2、各模块方案论证33.2.1、控制器的选择(STC89C52RC)33.2.2、温度传感器的选择(DS18B20)43.2.3、显示模块的选择(LCD1602)53.2.4、电机驱动芯片选择(ULN2003)6四、电路设计84.1、系统原理图8图4-1 系统原理图8五、程序设计95.1编程语言简介95.2程序流程图10六、系统调试与测试116.1调试过程和遇到的问题11七、总结12八、参考文献13附录:程序141D

2、S18B20.h142LCD1602.h173PWM.C19九、使用说明:23一、摘要笔记本电脑,便于携带,体积小,而且它的功能满足大多数人的需要,随着科学技术的近步带来的成本下降,笔记本的价格也为大多数人所接受。随着使用笔记本人数的增加,笔记本的各种问题也暴露出来,除了性价比之外,最关心的莫过于散热。笔记本在性能与便携性对抗中,散热成为最关键的因素,笔记本散热一直是笔记本核心技术中的瓶颈。有时笔记本电脑会意外的死机,一般就是系统温度过高导致。为了解决这个问题,人们设计了散热底座,可以使笔记本产生的热量尽快的扩散到电脑外部,不影响笔记本的使用功能,不会使电脑的线路出现腐蚀现象,保证笔记本电脑的

3、正常工作。好的底座可以很大的延长笔记本电脑使用寿命。本设计针对散热问题做了深入的探讨,并设计出一套基于单片机控制的智能散热底座,综合了成本和性能等相关因素,采用了宏晶公司的STC89C52RC为核心搭建了该系统。在本着成本控制和推向市场的前提下,文中的电路简约而易于批量生产,在完成散热功能和最少成本的前提下达到了节能和智能关键词:散热底座;单片机;智能控制二、笔记本散热底座的设计2.1、散热底座的材料当前市场主要产品使用的材料有两种:金属或者塑料。金属的导热性好,但现在任何一款笔记本的底部都有防滑胶垫,和金属散热底座不可能紧贴在一起,所以金属的导热性能不能完全发挥出来。当然,金属底座还是可以更

4、好地将笔记本内散发出来热量吸收并扩散出去。另外金属一般比较重,而且由于制造时工艺要求较高,一旦做工不够精细,极易伤人。塑料材质一般比较轻便,硬度也较高,很多工程塑料的强度甚至超过金属。出于成本及轻便的考虑,重量较轻、发热小的笔记本可以选用设计较好的塑料散热底座。但是如果是重量较大,发热较高的笔记本还是得使用金属材质的做工良好的散热底座。2.2、散热底座的结构风扇型的散热底座构造,一般是由金属或者塑料外壳加上内置的2-4个风扇构成,风扇的供电方案有通过笔记本USB接口供电以及外置电源供电两种。大多数笔记本电脑的散热底座的风扇均采用吸风式设计,因为这样可以最大限度的减少空气扰动造成的影响,提高散热

5、效率。散热底座风扇的数量和布局也非常重要,现在的笔记本后部往往是电池,而一些主要发热部件如:中央处理器和硬盘等位置相对靠中间,特别是硬盘,大多设计在手托下面,而这些部位很多散热底座往往没有设计风扇。所以在设计散热底座前,先弄清笔记本底座几个主要部件的位置,确定最热的几个位置。三、系统方案设计3.1、系统框架图(如图3-1) 图3-1 系统框架图3.2、各模块方案论证3.2.1、控制器的选择(STC89C52RC)STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟机器周期可以任意选择。主要特性如下:1

6、增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。2 工作电压:5.5V4.5V(5V单片机)/ 3.8V2.8V(3.3V单片机) 。3 工作频率范围:040MHZ,相当于普通8051的080MHZ,实际工作频率可达48MHZ。4 用户应用程序空间为8K。5 片上集成512字节RAM。6 无需专用编程器,无需专用仿真器,可通过串口直接下载用户程序。7 具有EEPROM功能和看门狗功能。8 工作温度-40+80(工业级)/075(商业级)(本系统中使用的单片机如图3-1所示)图3-1 STC89C52RC3.2.2、温度传感器的选择(DS18

7、B20)DS18B20是DALLAS公司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、搞干扰能力强、易配处理器等优点,特别适用于构成多点温度测控系统,可直接将温度转化成串行数字信号(提供9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片。它具有3引脚TO92小体积封装形式,温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生,多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端

8、口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。引脚定义图如图3-2所示:图3-2 DS18B20引脚定义图在TO-92和SO-8的封装中引脚有所不同,具体差别请查阅PDF手册,在TO-92封装中引脚分配如下: 1(GND):地2(DQ):单线运用的数据输入输出引脚3(VDD):可选的电源引脚DS18B20工作过程一般遵循以下协议:初始化ROM操作命令存储器操作命令处理数据这个命令读取暂存器的内容。读取将从字节0开始,一直进行下去,直到第9(字节8,CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。3.2.3、显示

9、模块的选择(LCD1602)1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形 n1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。引脚图如图3-3所示: 图3-3 LCD1602引脚图1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VDD接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱

10、,接地电源时对比度最高(对比度过高时会 产生“鬼影”,可以通过串联一个电阻来调整亮度)。 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。 第6脚:E(或EN)端为使能(enable)端。 第714脚:D0D7为8位双向数据端。 第1516脚:空116脚背光负极。3.2.4、电机驱动芯片选择(ULN2003)ULN2003是高电压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。ULN2003A电路是美国Texas Inst

11、ruments公司和Sprague公司开发的高电压大电流达林斯顿晶体管阵列电路。ULN2003内部结构图如图3-4所示。图3-4 ULN2003内部结构图本系统中使用的是DIP16封装的,引脚说明如下:第17脚: 输入端第8脚: 接地第9脚: 接电源第1016脚:输出端,对应17脚的输入四、电路设计4.1、系统原理图图4-1 系统原理图五、程序设计5.1编程语言简介C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。C语言对操作系统和系统使用

12、程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。其特点为:1.语言简洁、紧凑、使用方便、灵活。2.运算符丰富。3.数据结构丰富,具有现代化语言的各种数据结构。4.具有现代化的控制语句。5.语法限制不太严格,程序设计自由度大。6.能实现汇编语言的大部分功能,可以直接对硬件进行操作。7.生成目标代码质量高,程序执行效率高。8.程序可移植性好。5.2程序流程图图5-1 程序流程图六、系统调试与测试6.1调试过程和遇到

13、的问题系统的调试主要分为硬件调试、软件调试等两大部分。经过初步的分析设计后,在制作硬件电路的同时,调试也在穿插进行。这样有利于问题的分析和解决,不会造成问题的积累,而且不会因为一个小问题而进行整体电路的检查,从而可以节约大量的调试时间。软件编程中,首先完成单元功能模块的调试,然后进行系统调试,整体上与硬件调试的方法差不多。在调试的过程中遇到了很多的麻烦,电机驱动第一次没有驱动上,因为P1.0没有接上拉电阻,在软件调试时也遇到很多问题,温度读取出错,电机驱动无效,进入死循环等等,但是我没有泄气,在指导老师的建议下,不断的改进,最终完成了这项设计。七、总结经过一个寒假的努力和指导老师的意见,终于完

14、成了此次任务,这个设计不仅可以用于散热底座系统,还可以用于小型的USB电风扇,非常的实用,制作成本也很低,可以大批量的生产。八、参考文献1 谭浩强C程序设计(第三版)清华大学出版社2 贾金玲、姚娅川单片机原理及应用电子科技大学出版社3 田立、马鸣鹤51系列单片机开发实例精解中国电力出版社4 赵辉、渠丽岩Protel DXP电路设计与应用教程清华大学出版社5阎石数字电子技术基础 高等教育出版社附录:程序1DS18B20.h#ifndef _DS18B20_H_#define _DS18B20_H_#define uchar unsigned char#define uint unsigned i

15、nt/*IO引脚定义*/sbit DS=P23; /定义DS18B20接口/*延时子函数 */void delayb(uint count) uint i; while(count) i=200; while(i0) i-; count-; /*DS18B20初始化*/void dsreset(void) uint i; DS=0; i=103; while(i0)i-; DS=1; i=4; while(i0)i-;/*读一位*/bit tmpreadbit(void) uint i; bit dat; DS=0; i+; /小延时一下 DS=1; i+;i+; dat=DS; i=8; w

16、hile(i0)i-; return (dat);/*读一个字节*/uchar tmpread(void) uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好/一个字节在DAT里 return(dat); /将一个字节数据返回 /*写一个字节*/void tmpwritebyte(uchar dat) uint i; uchar j; bit testb; for(j=1;j1; if(testb) / 写1部分 DS=0; i+;i+; DS=1; i=8; while(i0)i

17、-; else DS=0; /写0部分 i=8; while(i0)i-; DS=1; i+;i+; /*发送温度转换命令*/void tmpchange(void) dsreset(); /初始化DS18B20 delayb(1); /延时 tmpwritebyte(0xcc); / 跳过序列号命令 tmpwritebyte(0x44); /发送温度转换命令/*获得温度*/int tmp() int temp; uchar a,b; dsreset(); delayb(1); tmpwritebyte(0xcc); tmpwritebyte(0xbe); /发送读取数据命令 a=tmprea

18、d(); /连续读两个字节数据 b=tmpread(); temp=b; temp=8; temp=temp|a; /两字节合成一个整型变量。 return temp; /返回温度值#endif2LCD1602.h#ifndef _lcd1602_H_#define _lcd1602_H_#include#define uchar unsigned char#define uint unsigned intsbit E=P25;/1602使能引脚sbit RW=P26;/1602读写引脚sbit RS=P27;/1602数据/命令选择引脚/*延时,延时时间大概5US*/void delay_5

19、()_nop_();_nop_();_nop_();_nop_();_nop_();/*这个是一个读状态函数,读出函数是否处在忙状态*/bit Busy(void)bit busy_flag = 0;RS = 0;RW = 1;E = 1;delay_5();busy_flag = (bit)(P0 & 0x80);E = 0;return busy_flag;/*1602命令函数*/void wcmd(uchar del)while(Busy();RS = 0;RW = 0;E = 0;delay_5();P0 = del;delay_5();E = 1;delay_5();E = 0;/*

20、1602写数据函数*/void wdata(uchar del)while(Busy();RS = 1;RW = 0;E = 0;delay_5();P0 = del; delay_5();E = 1;delay_5();E = 0;/*1602初始化*/void L1602_init(void)wcmd(0x38);wcmd(0x0c);wcmd(0x06);wcmd(0x01);/*改变液晶中某位的值,如果要让第一行,第五个字符显示b ,调用该函数如下L1602_char(1,5,b)*/void L1602_char(uchar hang,uchar lie,char sign)ucha

21、r a;if(hang = 1) a = 0x80;if(hang = 2) a = 0xc0;a = a + lie - 1;wcmd(a);wdata(sign);/*改变液晶中某位的值*/void L1602_string(uchar hang,uchar lie,uchar *p)uchar a,b=0;if(hang = 1) a = 0x80;if(hang = 2) a = 0xc0;a = a + lie - 1;while(1)wcmd(a+);b+;if(*p = 0)|(b=16) break;wdata(*p);p+;#endif3PWM.C#include#inclu

22、deLCD1602.h#includeDS18B20.H#define uchar unsigned char#define uint unsigned intfloat warm = 40;/高于此温度报警float high = 36;/高温float low = 33; /低温sbit KEY0 = P32; /手动自动切换sbit KEY1 = P35; /调速按键sbit KEY2 = P33; /sbit KEY3 = P34; /sbit PWM = P10; /直流电机控制端口uchar CYCLE; /定义周期PWM_ON; /定义低电平时长bit change1; /切换变

23、量 void delay(uint del) /延时del毫秒uchar x,j;for(x=0;xdel;x+)for(j=0;j148;j+);void time_init() /定时器0初始化TMOD = 0X01; /选用方式TH0 = (65536-1000)/256; /赋高八位 定时1msTL0 = (65536-1000)%256; /低八位EA = 1;/开总中断ET0 = 1;/开定时器0中断TR0 = 1;/启动定时器0void handmove()float temp; int ltemp;time_init(); /定时器初始化PWM = 0;CYCLE =10;L1

24、602_string(1,1,temp:); /第一行第一个字符开始显示L1602_string(1,9,.); /小数点位置L1602_string(1,12,C); /摄氏度的符号CL1602_string(1,16,H); /手动标志L1602_string(2,1,gear:); /第二行开始显示的,暂时不用L1602_string(2,6,1);PWM_ON = 0;while(1) if(change1)break;EA = 0;tmpchange(); /温度转换 temp = tmp()*0.0625; /获取温度十进制值ltemp = 10*temp+0.5; /扩大10倍温

25、度值,L1602_char(1,6,ltemp/1000+48);ltemp = ltemp%1000;L1602_char(1,7,ltemp/100+48);ltemp = ltemp%100;L1602_char(1,8,ltemp/10+48);L1602_char(1,10,ltemp%10+48);wdata(0xdf); /摄氏温度的小圆圈 EA = 1;time_init1(); if(KEY1 = 0)delay(10);if(KEY1 = 0)PWM_ON = 0;L1602_string(2,6,1); if(KEY2 = 0) delay(10);if(KEY2 = 0

26、)PWM_ON = 3;L1602_string(2,6,2); if(KEY3 = 0) delay(10);if(KEY3 = 0)PWM_ON =5;L1602_string(2,6,3); if(temp=warm)L1602_string(2,10,WARMING); void autom()float temp; int ltemp;time_init(); /定时器初始化PWM = 0;CYCLE =10; /液晶屏初始化L1602_string(1,1,temp:); /第一行第一个字符开始显示L1602_string(1,9,.); /小数点位置L1602_string(1,

27、12,C); /摄氏度的符号CL1602_string(1,16,A); /自动标志L1602_string(2,1,gear:); /第二行开始显示的,暂时不用while(1) if(!change1) break;EA = 0;tmpchange(); /温度转换 temp = tmp()*0.0625; /获取温度十进制值ltemp = 10*temp+0.5; /扩大10倍温度值,L1602_char(1,6,ltemp/1000+48);ltemp = ltemp%1000;L1602_char(1,7,ltemp/100+48);ltemp = ltemp%100;L1602_ch

28、ar(1,8,ltemp/10+48);L1602_char(1,10,ltemp%10+48);wdata(0xdf); /摄氏温度的小圆圈 EA = 1;time_init1();if(tempwarm)PWM_ON = 0;L1602_string(2,6,1);L1602_string(2,10,WARMING);if(temp=high&temp=low & temphigh)PWM_ON = 3;L1602_string(2,6,2);L1602_string(2,10, );if(templow)PWM_ON = 5;L1602_string(2,6,3);L1602_strin

29、g(2,10, );void main() EA = 1; EX0 = 1; /开外中断0 IT0 = 1; /低电平触发speak = 0;L1602_init();while(1)handmove();autom();void time_int() interrupt 1 /定时器0中断static uchar count;TH0 = (65536-1000)/256;TL0 = (65536-1000)%256;if(count = PWM_ON)PWM = 1;count+;if(count = CYCLE)count = 0;if(PWM_ON!=0)PWM = 0;void change() interrupt 0 if(KEY0 = 0) delay(10);if(KEY0 = 0)change1 = change1; 九、使用说明:1、开机为手动状态。2、按下复位按钮则系统复位到手动状态。3、按下切换按钮系统在手动和自动状态之间切换,统统屏幕右上角显示H(手动)A(自动)。3、3个档位按钮分别为1档,2档,3档,分别为不同的速度,1档最快。4、当温度超过40度时,屏幕上显示WARING。5、自动状态下手动调速按钮无效,转速只受温度控制;手动状态下速度只受调速按键控制,不受温度控制。

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号