找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2211|回复: 0
收起左侧

笔记本电脑的智能底座设计论文(基于51单片机和vb上位机)

[复制链接]
ID:290170 发表于 2018-9-17 10:14 | 显示全部楼层 |阅读模式

笔记本电脑,便于携带,体积小,而且它的功能满足大多数人的需要,随着科学技术的近步带来的成本下降,笔记本的价格也为大多数人所接受。随着使用笔记本人数的增加,笔记本的各种问题也暴露出来,除了性价比之外,最关心的莫过于散热。笔记本在性能与便携性对抗中,散热成为最关键的因素,笔记本散热一直是笔记本核心技术中的瓶颈。有时笔记本电脑会意外的死机,一般就是系统温度过高导致。为了解决这个问题,人们设计了散热底座,可以使笔记本产生的热量尽快的扩散到电脑外部,不影响笔记本的使用功能,不会使电脑的线路出现腐蚀现象,保证笔记本电脑的正常工作。好的底座可以很大的延长笔记本电脑使用寿命。
本设计针对散热问题做了深入的探讨,并设计出一套基于单片机控制的智能散热底座,综合了成本和性能等相关因素,采用了Atmel公司的AT89S52为核心搭建了该系统。在本着成本控制和推向市场的前提下,文中的电路简约而易于批量生产,在完成散热功能和最少成本的前提下达到了节能和智能。

目录


1              引言
1.1              系统研究背景
1.2              散热原理和方式
1.3              笔记本散热底座设计
1.3.1              散热底座的材料
1.3.2              散热底座的结构
1.3.3              散热底座的性能
2              系统方案论证
2.1              系统框图
2.2              各模块方案论证
2.2.1              控制器的选择
2.2.2              温度采集器件的选择
2.2.3              电机及其驱动器的选择
3              系统硬件设计
3.1              单片机AT89S52
3.1.1              芯片介绍
3.1.2              系统时钟电路
3.1.3              复位电路
3.2              温度传感器电路
3.2.1              芯片DS18B20介绍
3.2.2              传感器连接电路
3.3              直流电机驱动电路
3.3.1              三极管简介
3.3.2              直流电机简介
3.3.3              直流电机驱动电路
3.4              串口通信电路
3.4.1              串口通信介绍
3.4.2              芯片MAX232介绍
3.4.3              MAX232电路连接图
3.5              电源电路
3.5.1              电源芯片介绍
3.5.2              电源芯片连接电路
4              系统软件设计
4.1              编程语言简介
4.2              单片机程序设计
4.2.1              主程序设计
4.2.2              温度采集子程序
4.3              VB上位机程序设计
4.3.1              VB6.0软件介绍
4.3.2              主程序设计
4.3.3              交互式界面设计
5              系统集成与调试
5.1              硬件调试
5.2              软件调试
5.3              调试问题及解决方法
结    论
参考文献
附录1: 单片机程序
附录2: VB6.0程序
附录3: 英文资料及中文翻译
致    谢





  • 引言
    • 系统研究背景
笔记本电脑,便于携带,而且它的功能满足大多数人的需要,随着技术的近步带来的成本下降,笔记本的价格也为大多数人所接受。随着使用笔记本人数的增加,笔记本的各种问题也暴露出来,其中散热问题至关重要,它不仅关系着能耗更关系着笔记本的使用寿命。因此散热成为最关键的因素,笔记本散热一直是笔记本核心技术中的瓶颈。有时笔记本电脑会莫名奇妙的死机,一般就是系统温度过高导致。为了解决这个问题,人们设计了散热底座,可以使笔记本产生的热量尽快的扩散到电脑外部,不影响笔记本的使用功能,保证笔记本电脑的正常工作。而目前市场上仅仅有的是单开关式的散热器,且操作不方便,经常开关,还没有根据温度变化来进行控制的智能散热底座。





    • 散热原理和方式
散热,其实就是一个热量传递过程通过传导、对流、辐射等几种方式。通常在台式机中主要是风冷技术,这包括中央处理器、显卡、电源及机箱的散热风扇等,在笔记本电脑中,风冷依旧的主要的散热方式,绝大数的散热方式是:风扇、热管、散热板的组合。目前很多笔记本电脑采用铝镁合金的外壳,对散热也起到了一定的作用。在笔记本电脑底部一般都有散热通风口,或吸入或吹出,对笔记本电脑的散热都非常重要。笔记本电脑在设计的时候也考虑到散热问题,往往会用垫脚将机身抬高,但是在温度过高的时候,就显得比较勉强。笔记本的散热底座的散热原理主要有两种:1.单纯通过物理学上的导热原理实现散热功能。将塑料或金属制成的散热底座放在笔记本的底部,抬高笔记本以促进空气流通和热量辐射,可以达到散热效果。2.在散热底座上面再安装若干个散热风扇来提高散热性能。这种风冷散热方式包括吸风和吹风两种。两种送风形式的差别在于气流形式的不同,吹风时产生的是紊流,属于主动散热,风压大但容易受到阻力损失,例如我们日常夏天用的电风扇;吸风时产生的是层流,属于被动散热,风压小但气流稳定,例如机箱风扇。
理论上说,开放环境中,紊流的换热效率比层流大,但是笔记本底部和散热底座实际组成了一个封闭空间,所以一般吸风散热方式更符合风流设计规范。市场上的散热底座多数是有内置吸风式风扇的。





    • 笔记本散热底座设计
1.3.1 散热底座的材料
当前市场主要产品使用的材料有两种:金属或者塑料。金属的导热性好,但现在任何一款笔记本的底部都有防滑胶垫,和金属散热底座不可能紧贴在一起,所以金属的导热性能不能完全发挥出来。当然,金属底座还是可以更好地将笔记本内散发出来热量吸收并扩散出去。另外金属一般比较重,而且由于制造时工艺要求较高,一旦做工不够精细,极易伤人。塑料材质一般比较轻便,硬度也较高,很多工程塑料的强度甚至超过金属。出于成本及轻便的考虑,重量较轻、发热小的笔记本可以选用设计较好的塑料散热底座。但是如果是重量较大,发热较高的笔记本还是得使用金属材质的做工良好的散热底座。

1.3.2 散热底座的结构
风扇型的散热底座构造,一般是由金属或者塑料外壳加上内置的2--4个风扇构成,风扇的供电方案有通过笔记本USB接口供电以及外置电源供电两种。大多数笔记本电脑的散热底座的风扇均采用吸风式设计,因为这样可以最大限度的减少空气扰动造成的影响,提高散热效率。
散热底座风扇的数量和布局也非常重要,现在的笔记本后部往往是电池,而一些主要发热部件如:中央处理器和硬盘等位置相对靠中间,特别是硬盘,大多设计在手托下面,而这些部位很多散热底座往往没有设计风扇。所以在设计散热底座前,先弄清笔记本底座几个主要部件的位置,确定最热的几个位置。

1.3.3 散热底座的性能
性能判定方法:同等环境下,使用散热底座和不使用,分别记录开机五分钟和开机一小时后的系统主要温度参数,可以大概确定该散热底座的散热性能。还需要特别注意的是散热底座的噪音和振动问题,风扇的数量和质量是决定因素。风扇多固然增加散热效果,但是相应的耗电及噪音振动也增加了,所以一般以2~3个为宜。所以底座测试的时候需要留心判断下其噪音是否能够接受,是否会有振动影响电脑硬盘。

  • 系统方案论证
本系统的结构主要包括对外界温度信息的采集电路,控制器电路,散热风扇控制电路,上位机串口通信电路。选择合理的电路方案,能实现好系统的功能,降低设计的成本,而且有利于后继添加的扩展功能。下面先给出系统组成框图,然后对可能的各方案进行比较说明。





    • 系统框图
图2-1 系统框图





    • 各模块方案论证
2.2.1 控制器的选择
方案一:采用可编程逻辑器件CPLD作为控制器。CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高。且从使用及经济的角度考虑放弃了此方案。
方案二:采用凌阳公司的16位单片机,它是16位控制器,具有体积小、驱动能力高、集成度高、易扩展、可靠性高、功耗低、结构简单、中断处理能力强等特点。处理速度高,尤其适用于语音处理和识别等领域。但是当凌阳单片机在语音处理和辨识时,由于其占用的CPU资源较多而使得处理其它任务的速度和能力降低。
方案三:采用Atmel公司的AT89S52单片机作为主控制器。AT89S52是一种低功耗、高性能CMOS微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
因此,本设计采用方案三。

2.2.2 温度采集器件的选择
方案一:使用模数转换芯片和模拟温度器件组成,其温度感知器件一般为温度的线性器件,然后通过模拟转数字芯片把模拟量转换为数字量送入控制器加以识别和判断,其优点是,其通过选择合适的转换芯片和模拟温度器件可已达到很高的精度,一般的模数转换有8位、10位、12位等,在一般的系统中都采用此种方案。但对于本设计中会产生更多的电路,一是增加了体积不易于安装,二是本系统不需要很高的精度。
方案二:采用“一线总线”数字化温度传感器DS18B20,DS18B20支持“一线总线”接口,测量温度范围为 -55℃~125℃,在-10℃~85℃范围内,精度为±0.5℃。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。适用于对性能要求不高,成本控制严格的应用,是经济型产品。
因此,本设计采用方案二。
2.2.3 电机及其驱动器的选择
方案一:采用直流电机加模拟电路,通过电位器调节电机两端电压进行控制。达林顿管串联在直流电机回路上,通过调节电位器改变电机回路的电流的大小,从而达到控制电机的目的。此方案的优点在,电路简单,通过一个电位器就可以达到调节电机速度的目的,但它也存在明显的不足,三极管工作在放大区时在电机回路上将产生一个压降,会产生很多的热量,效率很低。
方案二:采用PWM控制步进电机。PWM控制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。PWM对半导体器件的导通和关断进行控制,是输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需要的波形。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也改变输出频率。对于本设计的不足之处也很明显,步进电机适用于精确控制,本电路不需要非常精确。而且电路过于复杂,成本过高。
方案三:采用三级管直接驱动直流电机,电路使三级管工作在饱和和截止区,三极管处于很低的功耗状态,发挥简单的开关作用来控制电机两端电流的通断,从而达到控制电机的目的。此设计简单,成本低,易于实现,
因此,本设计采用方案三。

  • 系统硬件设计
硬件系统的主要包括对外界温度信息的采集电路,控制器电路,散热风扇控制电路,上位机串口通信电路,电源电路。下面就具体的电路进行阐述。





    • 单片机AT89S52
3.1.1 芯片介绍
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程 Flash 存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
主要性能
1.与 MCS-51单片机产品兼容
2.8K字节在系统可编程Flash存储器
3.1000次擦写周期
4.全静态操作:0Hz~33Hz
5.三级加密程序存储器
6.32个可编程I/O口线
7.三个16位定时器/计数器
8.八个中断源
9.全双工UART串行通道
10.低功耗空闲和掉电模式
11.掉电后中断可唤醒
12.看门狗定时器
13.双数据指针
14.掉电标识符

AT89S52方框图
图3-1 AT89S52方框图

引脚结构:

                        
图3-2 AT89S52引脚图

引脚功能描述:
VCC:电源。
GND:地。
P0口:P0口是一个8位漏极开路的双向I/O 口。作为输出口,每位能驱动 8 个 TTL 逻辑电平。对 P0 端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0 口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在 flash 编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。
P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。此外,P1.0 和 P1.2 分别作定时器/计数器 2 的外部计数输入(P1.0/T2)和时器/计数器 2的触发输入(P1.1/T2EX)。在 flash 编程和校验时,P1 口接收低 8 位地址字节。
P2口:P2 口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2              端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送 “1”。在使用8位地址访问外部数据存储器时,P2 口输出P2锁存器的内容。在flash编程和校验时,P2 口也接收高8位地址字节和一些控制信号。
P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。P3口亦作为AT89S52特殊功能(第二功能)使用。在flash编程和校验时,P3口也接收一些控制信号。
RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。
ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在 flash 编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE 脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位的设置对微控制器处于外部执行模式下无效。
PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当 AT89S52 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活。
EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA 应该接VCC。在 flash 编程期间,EA也接收12V电压。
XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:振荡器反相放大器的输出端。

3.1.2 系统时钟电路
时钟电路是用来产生89S52单片机工作时所必须的时钟信号,89S52本身就是一个复杂的同步时序电路,为保证工作方式的实现,89S52在唯一的时钟信号的控制下严格的按时序执行指令进行工作,时钟的频率影响单片机的速度和稳定性。通常时钟由于两种形式:内部时钟和外部时钟。
我们系统采用内部时钟方式来为系统提供时钟信号。89S52内部有一个用于构成振荡器的高增益反向放大器,该放大器的输入输出引脚为XTAL1和XTAL2,它们跨接在晶体振荡器和用于微调的电容,便构成了一个自激励振荡器电路中的C1、C2的选择在30PF左右,但电容太小会影响振荡的频率、稳定性和快速性。晶振频率为在1.2MHZ~12MHZ之间,频率越高单片机的速度就越快,但对存储器速度要求就高。为了提高稳定性我们采用温度稳定性好的瓷片电容,采用的晶振频率为11.0592MHZ。

图3-3 时钟电路

3.1.3 复位电路
复位电路是影响单片机系统运行稳定性的主要内部因素之一。单片机的复位操作有手动复位和加电复位两中方式。加电复位是任何单片机都具有的功能。它通过专用的复位电路产生复位信号,是系统的原始复位方式,发生在开机加电时,是系统自动完成的。单片机系统在调试程序时,有可能出现死机、死循环、程序“跑飞”等情况,手动复位是解决这一情形的最好方式 。
单片机系统中用到的复位方式有四种,它们是:积分型、微分型、比较器型和看门狗型。前三种是在芯片外面用分立元件或集成电路芯片搭建完成,最后一种位于芯片内部,属于芯片的一部分。单片机系统中用到的复位电路有上电复位、按键电平复位和按键脉冲复位三种。
本设计中,为了简便设计采用的上电复位电路如下图所示:

图3-4 复位电路





    • 温度传感器电路
3.2.1 芯片DS18B20介绍
Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
DS18B20支持“一线总线”接口,测量温度范围为 -55℃~125℃,在-10℃~85℃范围内,精度为±0.5℃。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V 的电压范围,使系统设计更灵活、方便。DS18B20 可以程序设定9~12位的分辨率,精度为±0.5℃。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。
DS1822与DS18B20 软件兼容,是DS18B20 的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2℃,适用于对性能要求不高,成本控制严格的应用,是经济型产品。继“一线总线”的早期产品后,DS1820 开辟了温度传感器技术的新概念。DS18B20 和DS1822 使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。
18B20管脚图

图3-5 18B20管脚图

3.2.2 传感器连接电路
图3-6 传感器连接电路




    • 直流电机驱动电路
3.3.1 三极管简介
三极管,全称应为半导体三极管,也称双极型晶体管,晶体三极管,是一种电流控制电流的半导体器件。其作用是把微弱信号放大成幅值较大的电信号,也用作无触点开关。三极管分类:按材质分:硅管、锗管。按结构分:NPN、PNP。按功能分:开关管、功率管、达林顿管、光敏管等。按功率分:小功率管、中功率管、大功率管。按工作频率分:低频管、高频管、超频管。按结构工艺分:合金管、平面管。
晶体管促进并带来了“固态革命”,进而推动了全球范围内的半导体电子工业。作为主要部件,它及时、普遍地首先在通讯工具方面得到应用,并产生了巨大的经济效益。由于晶体管彻底改变了电子线路的结构,集成电路以及大规模集成电路应运而生,这样制造像高速电子计算机之类的高精密装置就变成了现实。

3.3.2 直流电机简介
输出或输入为直流电能的旋转电机,称为直流电机,它是能实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。直流电机的结构应由定子和转子两大部分组成。直流电机运行时静止不动的部分称为定子,定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等组成。随着人们生活水平的提高,产品质量、精度、性能、自动化程度、功能以及功耗、价格问题已经是选择家用电器的主要因素。永磁直流电机既具有结构简单、 运行可靠、维护方便等优点,又具备良好的调速特性,现已广泛应用于各种场合。

3.3.3 直流电机驱动电路
采用三级管直接驱动直流电机,电路使三级管工作在饱和或截止区,三极管处于很低的功耗状态,发挥简单的开关作用来控制电机两端电流的通断,从而达到控制电机的目的。对于电路的保护采用二极管续流方式并联在电机两端。

图3-7 直流电机驱动电路





    • 串口通信电路
3.4.1 串口通信介绍
RS-232已经成为PC机与通信工业中应用最广泛的串行通信接口之一,尽管近年来随着USB技术的成熟与发展,RS-232串口的地位将逐步被USB接口协议取代,但是在工业控制与嵌入式系统中,RS-232串口通信以其低廉的实现价格,较长的通信距离,优异的抗干扰能力,仍然占有十分大的应用比例。
RS-232是一种在低速率串行通信中增加通信距离的单端标准,其采用了不平衡的传输方式,典型的RS-232信号在正负电平之间摆动,数据传输时,发送端驱动器的输出正电平范围在+5~+15V之间,负电平范围在-5~-15V之间,与TTL电平相对应时,逻辑1对应RS-232通信的负电平,逻辑0对应RS-232通信的正电平。
9针串口功能一览表:1.载波检测(DCD)2.接收数据(RXD)3.发送数据(TXD)4.数据终端准备好(DTR)5.信号地(GND)6.数据准备好(DSR)7.发送请求(RTS)  8.发送清除(CTS)9.振铃指示(RI)数据连接线主要在设备中起桥梁的作用,使PC机与单片机,PC机与PC机之间进行数据通信,串口间通信只要连接三条线就可以了。即接收数据线,发射数据线和信息地线。在某时刻,对一台机来说是发送数据,对另一台机就是接收数据。所以接收数据线与发射数据线要换接。

3.4.2 芯片MAX232介绍
MAX232产品是由美国Maxim公司推出的一款兼容RS-232标准的芯片,该器件包含两个驱动器、两个接收器和一个电压发生器电路提供TIA/EIA-232-F电平,该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5TTL/CMOS电平,每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平,有从贴片到直插等不同的封装类。

图3-8 MAX232芯片内部结构图

3.4.3 MAX232电路连接图
MAX232采用单5V供电,内部有两个电荷泵,通过充电电容的作用将+5V电压转换为+10V的电压,第一个电荷泵利用充电电容C1将+5V电压加倍提升到+10V,第二个电荷泵利用充电电容C2和C4将+10V电压变换为-10V的电压,为RS-232通信提供工作电平。对于MAX232来说,推荐采用10uF的电解电容。

图3-9  MAX232与电脑连接





    • 电源电路
3.5.1 电源芯片介绍
电源电路主要运用到7805稳压芯片,输出电压为5V,加散热片时驱动电流可达1A,输出电流200~300mA时,7805温度在50度左右,并且有过温切断输出起到保护功能。该系列芯片技术成熟,所需的外围器件少,性价比高,运用的非常广泛,其内部原理图如图3-10所示。
图3-10为7805的引脚图:
1.INPUT 电源输入端,最大可达35V
2.GROUND电源地
3.OUTPUT +5V输出端

图3-10 7805内部原理图

图3-11 7805的引脚图

3.5.2 电源芯片连接电路
由变压器出来的交流信号经过桥式整流和电容滤波之后送给LM7805,稳压5V输出,它的输出单独供给单片机。在三端稳压管的输入输出端与地之间连接大容量的滤波电容,使滤掉纹波的效果更好,输出的直流电压更稳定。接小容量高频电容以抑制芯片自激,输出引脚端连接高频电容以减小高频噪声,使单片机工作在一个良好的电源环境中,提高系统稳定性。

图3-12电源电路原理

  • 系统软件设计
软件部分也是整个系统的核心部分之一,硬件制作成功后,加上软件部分才能使整个系统得以运行。本系统的软件部分主要包括主程序和系统初始化子程序、电机控制程序、温度采集程序、串口通信程序。





    • 编程语言简介
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。
C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。
其特点为:
1.语言简洁、紧凑、使用方便、灵活。
2.运算符丰富。
3.数据结构丰富,具有现代化语言的各种数据结构。
4.具有现代化的控制语句。
5.语法限制不太严格,程序设计自由度大。
6.能实现汇编语言的大部分功能,可以直接对硬件进行操作。
7.生成目标代码质量高,程序执行效率高。
8.程序可移植性好。
汇编语言是面向机器的程序设计语言。汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。“汇编语言”作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。
汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。
其特点为:
1.面向机器的低级语言,通常是为特定的计算机专门设计的。
2.保持了机器语言的优点,具有直接和简捷的特点。
3.可有效地控制计算机的各种硬件设备,如存储器、CPU、I/O端口等。
4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。5.经常与高级语言配合使用,应用广泛。





    • 单片机程序设计
4.2.1 主程序设计
图4-1 主程序流程图

4.2.2 温度采集子程序

图4-2 温度采集子程序





    • VB上位机程序设计
4.3.1 VB6.0软件介绍
Visual basic 是在Basic语言的基础上发展起来的,因此它有Basic语言简单而又不贫乏的优点。
1.Basic语言的发展历史
Basic相对于其他的计算机编程语言来说,可以成为古老的编程语言了。它最初由美国计算机科学家John kemeny和Thomas Kurtz设计,诞生于1964年,迄今为止经历了40多年。其间经历了GW-Basic、True Basic、Turbo Basic、Quick Basic C等很多版本。随着Windows 的流行,微软的工程师们着眼于未来在改进QuickBasic的基础上开发了Visual Basic的第一个版本。其后,Visual Basic 一发不可收拾,被世界各地的许多程序员所爱。微软在1991年推出Visual Basic 1.0以后,于1992年、1993年、1995年、1997年、1998年接连发布了Visual Basic 2.0 、3.0、 4.0、5.0、6.0版本。
2.Visual Basic的特点
Visual Basic是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。
(1)可视化编程
与传统程序化设计语言相比,Visual Basic提供了可视化设计工具,程序员再也不用为编写大量的界面代码而犯愁,取而代之的是只需要按屏幕布局的设计要求,用系统提供的工具,在屏幕上面画出各种图形对象,并设置这些图形对象的属性之后,Visual Basic会自动产生界面代码,从而大大提高程序设计的效果。
(2)面向对象的程序设计
Visual Basic 4.0 以后的版本都支持面向对象的程序设计,但它与一般的面向对象的程序设计语言,与C++又完全不一样。在设计对象时,不必编写建立和描述每个对象的程序代码,而是用工具把它们画在界面上,由Visual Basic自动生成对象的程序代码并封装起来。每个对象以图形方式显示在界面上,都是可视的。
(3)结构化程序设计语言
Visual Basic由于是在Quick Basic的基础上发展而来的,所以具有高级程序设计语言的语句结构,接近于自然语言和人类的逻辑思维方式,其语言简单易懂。Visual Basic是解释型语言,在输入代码的同时,解释系统将高级语言分解翻译成计算机可以识别的机器指令,并判断每个语句的语法错误。在设计VisualBasic程序的过程中,随时可以运行程序,而在整个应用程序设计好之后,可比编译生成可执行文件,脱离Visual Basic环境,直接在Windows环境下运行。
(4)事件驱动编程机制
Visual Basic通过事件来执行对象的操作。一个对象可能会有多个事件。例如,用鼠标单击窗体,鼠标在窗体上移动,改变窗体的大小等。Visual basic事件驱动的思想是如果用户单击了窗体,就会触发窗体的单击事件。而这个事件被编程人员写入的代码也会随之执行。如果不单击窗体,窗体单击事件就永远不会被触发,里面的程序也不会被执行。因此,开发大型软件时,不必建立具有明显开始和结束的程序,而是编写若干微小的子程序,即过程,这些过程分别面向不同的对象,由用户操作触发某个事件来驱动执行某种特定的功能,或者由事件驱动程序调用通用过程来执行指定的操作。这样可以方便编程人员提高工作效率。
(5)数据库访问
Visual Basic具有很强的数据库管理功能。利用数据控件和可视化数据管理器窗口直接建立活处理Microsoft Access格式的数据库,同时黑可以访问FoxPro、Paradox等其他外部数据库。

4.3.2 主程序设计
主要包括串口通信控制和温度显示。单片机实时监测数据的图形显示一般都借助于数据处理能力强大的上位PC机。VB6.0具有强大的图形处理功能和良好的界面设计功能并且可以利用MSComm控件方便地实现和单片机的串行数据通信。介绍利用VB6.0的窗体对象、命令按钮控件对象、微软的MSComm控件对象、数组和用户自定义坐标系动态、连续、数字、波形地显示单片机实时检测数据。 该显示方法的坐标系符合人们看图习惯,显示的实时波形随时间动态变化并从左向右平移,视觉效果好且数值显示精确。如图4-3所示。

4.3.3 交互式界面设计
可以通过界面来显示温度,显示当前系统时间,并监控实时温度,可以绘制出温度曲线。还可以直接对散热器进行控制。如图4-4所示。

图4-3 绘制的窗口界面

   图4-4 设计后生成的界面
  • 系统调试与测试
本系统的调试主要分为硬件调试、软件调试等两大部分。经过初步的分析设计后,在制作硬件电路的同时,调试也在穿插进行。这样有利于问题的分析和解决,不会造成问题的积累,而且不会因为一个小问题而进行整体电路的检查,从而可以节约大量的调试时间。软件编程中,首先完成单元功能模块的调试,然后进行系统调试,整体上与硬件调试的方法差不多。联机调试是最重要的一部分,同时也是本设计成功的关键。





    • 硬件调试
静态调试,静态调试是用户系统未工作前的硬件检查过程。
首先应对表面进行检查,即对焊接后的电路板的所有连接线仔细检查。通过目测查出一些明显的安装及连接错误并及时排除。其次用万用表测量,主要是测量目测是怀疑通断的情况,尤其是要测量电源与地之间是否短路。最后是加电检查。开启电源后,检查芯片的电源电压是否正确,也可用手触摸,是否有明显发烫,所遇芯片均未发现异常,可进入下一步调试。如图5-1所示。

图5-1硬件电路




    • 软件调试
将系统软件按照模块化程序设计方法编写出来,然后输入到KEIL编译器编程模拟调试中,在编译器的支持下,将经过初步调试的程序加载到主模块中,按照以下方法调试:
1.单步:一次只执行一条指令,在每步执行后,返回监控调试程序。
2.行:可以从程序的任何一条地址处启动,然后全速运行。
3.点运行:可以在程序任何位置设置断点,当程序执行到断点时,控制返回到监控调试程序。
4.查和修改存储器单元的内容。
5.查和修改寄存器的内容。
程序调试可以一个一个模块进行,一个一个子程序的调试,从中可以发现程序中的死循环、机器码错误及转移地址错误,也可以发现待测系统中软件算法和硬件设计错误。如图5-2,图5-3所示。

图5-2 VB6.0程序调试

图5-3 单片机程序调试





    • 调试问题及解决方法
在硬件无故障和软件模块调试完成的情况下,还要对系统进行联机调试。在系统调试时,应将全部硬件电路都接上,应用程序模块也都组合好,进行全系统软硬件调试。系统调试是排除软硬件中的残留错误,使整个系统能够完成预定的工作任务,达到要求的技术性能指标。如图5-4所示。
1、调试中检查元器件失效。造成这种情况的原因有两个:一个是元器件买来时就已坏了;另一个是由于安装错误,造成器件烧坏。可以采取检查元器件与设计要求的型号、规格和安装是否一致。
2、电源故障。在通电前,一定要检查电源电压的幅值和极性,否则很容易造成集成块损坏。加电后检查各插件上引脚的电位,一般先检查VCC与GND之间电位,若在5V~4.8V之间属正常。
3、当判断单片机不工作时候,需要进行联机仿真调试。联机仿真必须借助单片机开发的最基本工具如仿真开发装置、示波器、万用表等。

图5-4 集成调试





    • 测试结果
测试使用的笔记本为联想昭阳E290G。联想昭阳系列笔记本不仅是政府采购机型而且也是目前市场使用数量最多的,有一定代表性。测试时的室内温度为27℃。数据整理如图5-5所示。表明使用本设计能很好的降低温度,辅助笔记本散热,延长笔记本使用寿命,达到随温度而控制的要求。

图5-5 笔记本底部温度

在选择毕业设计课题上面,对笔记本散热问题非常的感兴趣,本设计课题是用传感器、直流电机和单片机来实现,鉴于目前对电路的设计,由于很多相关知识片都没有接触过,所以在这次毕业设计中学到了很多。在这个设计中不仅需要对芯片进行硬件设计还要进行软件设计,在软件编程过程中遇到了很多问题,后来翻阅了大量有关单片机方面的书籍、上网查阅资料才真正根据设计要求设计硬件电路,逐步完成了软件方面的编程。
本系统实现了电脑底座温度数据的测量和监控,本设计很好的完成了对笔记本的温度监控和散热设备的运行,可以将数据上传至电脑进行后期分析处理。可以被广泛的应用到生产和生活中,如带有温度控制的场合、工业温度测量仪表等。由于温度监控是一个实践应用性很强的课题,要使其产品化,能够经受住实际应用的严格考验,还需要很多细致的改进。

大学的学习已接近尾声,毕业设计是一次检验我大学学习成果的机会,这次毕业设计不仅把四年来所学知识融会贯通,而且提高了我的动手创造能力,同时在指导教师的悉心帮助下,我的专业技术水平有了很大进步。从开始加入这个项目的设计到现在项目的完成,我们真正经历了一次自己参与并设计的过程。我感觉收获非常大,我们获得的不仅是理论上的收获,还有实践中的丰收。这次毕业设计一定会为我们在不久的将来踏上工作岗位打下了良好的实践基础。
在毕业设计及我的大学学习生活即将结束的时候,心中有很多感触,首先我要对我的毕业设计指导老师张根柱老师及所有大学教授过我的老师表示诚心的真挚的感谢。同时张老师严谨的治学态度和为人给了我们很大的教育,这将使我终身受益。同时我还要感谢我的母校,为我提供了这个学习机会,为我提供了良好的毕业设计场所和试验条件。最后,祝愿我校日后蓬勃发展,发展成为一所独具风格的国际性综合大学。

单片机源程序如下:
  1. #include<reg52.h>
  2. sbit aa=P2^3;                            //电机中
  3. sbit bb=P2^7;                            //电机侧
  4. void Delay(unsigned int tc) //显示延时程序
  5. {while( tc != 0 )
  6. {unsigned int i;
  7. for(i=0; i<100; i++);
  8. tc--;}
  9. }
  10. //////////////////////////////////////////////////////////////
  11. sbit TMDAT =P0^5; //DS18B20 的数据输入/输出脚DQ,根据情况设定              0.3
  12. unsigned char sdata;//测量到的温度的整数部分
  13. unsigned char xiaoshu1;//小数第一位
  14. unsigned char xiaoshu2;//小数第二位
  15. unsigned char xiaoshu;//两位小数
  16. void dmsec (unsigned int count) //延时部分
  17. {
  18. unsigned char i;
  19. while(count--)
  20. {for(i=0;i<115;i++);}
  21. }
  22. void tmreset (void)            //发送复位
  23. {
  24. unsigned char i;
  25. TMDAT=0; for(i=0;i<103;i++);
  26. TMDAT = 1; for(i=0;i<4;i++);
  27. }
  28. //////////////////////////////////
  29. bit tmrbit (void) //读一位//
  30. {                     
  31. unsigned int i;
  32. bit dat;
  33. TMDAT = 0;
  34. i++;
  35. TMDAT = 1;
  36. i++; i++; //微量延时 //
  37. dat = TMDAT;
  38. for(i=0;i<8;i++);
  39. return (dat);
  40. }
  41. unsigned char tmrbyte (void) //读一个字节
  42. {
  43. unsigned char i,j,dat;
  44. dat = 0;
  45. for (i=1;i<=8;i++)
  46. { j = tmrbit(); dat = (j << 7) | (dat >> 1); }
  47. return (dat);
  48. }
  49. void tmwbyte (unsigned char dat) //写一个字节
  50. {
  51. unsigned char j,i;
  52. bit testb;
  53. for (j=1;j<=8;j++)
  54. { testb = dat & 0x01;
  55. dat = dat >> 1;
  56. if (testb)
  57. { TMDAT = 0; //写0
  58. i++; i++;
  59. TMDAT = 1;
  60. for(i=0;i<8;i++); }
  61. else
  62. { TMDAT = 0; //写0
  63. for(i=0;i<8;i++);
  64. TMDAT = 1;
  65. i++; i++;}
  66. }
  67. }
  68. /////////////////////////////////
  69. void tmstart (void) //发送ds1820 开始转换
  70. { tmreset(); //复位
  71. dmsec(1); //延时
  72. tmwbyte(0xcc); //跳过序列号命令
  73. tmwbyte(0x44); //发转换命令 44H,
  74. }                  
  75. void tmrtemp (void) //读取温度
  76. {
  77. unsigned char a,b;
  78. tmreset (); //复位
  79. dmsec (1); //延时
  80. tmwbyte (0xcc); //跳过序列号命令
  81. tmwbyte (0xbe); //发送读取命令
  82. a = tmrbyte (); //读取低位温度
  83. b = tmrbyte (); //读取高位温度
  84.               a=a>>4;             //低位右移4位,舍弃小数部分
  85.               sdata=b<<4;             //高位左移4位,舍弃符号位
  86.               sdata=sdata|a;
  87. }
  88. void DS18B20PRO(void)
  89. { tmstart();
  90. //dmsec(5); //如果是不断地读取的话可以不延
  91. tmrtemp(); //读取温度,执行完毕温度将存于
  92. }
  93. void initUart(void)
  94. {
  95. TMOD|=0x20;
  96. SCON=0x50;
  97. TH1=0xfd;
  98. TL1=0xfd;
  99. TR1=1;
  100. }
  101. void uart(void) interrupt 4
  102. {
  103. if(RI)
  104. {    RI=0;
  105. if(SBUF==1) {aa=0;bb=1;}
  106. if(SBUF==2)              {aa=1;bb=0;}
  107. if(SBUF==3)              {aa=0;bb=0;}
  108. if(SBUF==0)              {aa=1;bb=1;}
  109. }else
  110. RI=0;}
  111. dianjipro()
  112. {
  113. if(sdata>=27){aa=0;bb=1;}
  114. if(sdata>=30){bb=0;aa=1;}
  115. if(sdata>=32){aa=0;bb=0;}
  116. if(sdata<=26){aa=1;bb=1;}
  117. }
  118. main()
  119.               {
  120. initUart();
  121. EA=1;
  122. ES=1;
  123. while(1)
  124. { ES=0;
  125. DS18B20PRO();
  126. SBUF=sdata;
  127. while(!TI);TI=0;
  128. Delay(400) ;
  129.   ES=1;
  130. dianjipro();
  131. }
  132. }
复制代码

完整的Word格式文档51黑下载地址:

毕业设计封皮.doc

26 KB, 下载次数: 6, 下载积分: 黑币 -5

毕业设计任务书.doc

38 KB, 下载次数: 5, 下载积分: 黑币 -5

开题报告.doc

50.5 KB, 下载次数: 5, 下载积分: 黑币 -5

论文正文.doc

2.86 MB, 下载次数: 9, 下载积分: 黑币 -5

目录.doc

69 KB, 下载次数: 5, 下载积分: 黑币 -5

新论文.doc

2.92 MB, 下载次数: 8, 下载积分: 黑币 -5

中期报告.doc

32.5 KB, 下载次数: 5, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表