一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种计算机散热风机调速系统及方法与流程

2021-12-13 00:18:00 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,具体是一种计算机散热风机调速系统及方法。


背景技术:

2.计算机俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备,计算机的内部具有散热风机,通过散热风机对计算机的在运行过程中产生的热量进行降温。
3.中国专利号201911163947.3涉及计算机设备领域,具体公开了一种安装在计算机机箱的计算机散热装置,包括其内具有计算机主板的机箱,所述机箱内一侧设有用于向所述计算机主板的表面进行均匀吹风的吹风部,与所述吹风部同侧的机箱的侧板上均布开设有若干散热进气孔,且与所述吹风部相对侧的机箱的侧板上等间距开设有若干散热出气孔,在吹风部的作用下,外部的空气通过散热进气孔进入机箱内之后通过通过散热出气孔排出。
4.现有技术的计算机的散热风机的散热效果较差,导致计算机的处理器容易因过热而损坏,且计算机的风机无法进行调速,导致计算机的散热风机在长期高速转动下容易损坏的缺点,现有技术的计算机不具有减震的效果,导致计算机在高频振动的地面上进行功能工作时容易损坏,因此亟需研发一种计算机散热风机调速系统及方法。


技术实现要素:

5.本发明的目的在于提供一种计算机散热风机调速系统及方法,以解决上述背景技术中提出的散热效果差、无法对散热风机进行调速、不具有缓冲的效果等问题。
6.本发明的技术方案是:一种计算机散热风机调速系统,包括主机箱,所述主机箱的内部设置有主控板,所述主控板包括电流检测模块、处理器模块、变速模块和温控模块,所述主机箱的一侧内壁通过螺栓连接有散热风扇一、散热风扇二、散热风扇三和散热风扇四,所述散热风扇一、散热风扇二、散热风扇三和散热风扇四与主控板的温控模块分别通过导线呈电性连接,所述主机箱的底部内壁通过螺旋连接有温度传感器一,所述主机箱的顶部内壁通过螺旋连接有温度传感器二,所述主机箱的一侧内壁通过螺旋连接有温度传感器三和温度传感器四,所述温度传感器一、温度传感器二、温度传感器三和温度传感器四分别通过导线与主控板的温控模块通过导线呈电性连接,所述主机箱的底部内壁通过螺栓连接有电源模块,所述电源模块与变速模块通过导线呈电性连接,所述主机箱的一侧外壁设置有显示模块,所述显示模块与主控板通过导线呈电性连接。
7.进一步地,所述变速模块包括档位模块一、档位模块二和档位模块三,所述,所述变速模块对散热风扇一、散热风扇二、散热风扇三和散热风扇四的转动进行调速。
8.进一步地,所述主机箱的一侧外壁设置有盖板,所述盖板的顶部内嵌有第二磁铁,所述主机箱的顶部外壁内嵌有第一磁铁,所述第一磁铁与第二磁铁相互靠近的一侧为异性
磁极。
9.进一步地,所述盖板的底部外壁一体成型有卡爪,所述主机箱的底部内壁开有卡槽,所述盖板通过卡爪与卡槽的配合与主机箱形成固定连接。
10.进一步地,所述盖板的一侧外壁开有均匀分布的进风孔,所述主机箱的一侧外壁开有均匀分布的出风口,所述出风口的内部设置有防尘网。
11.进一步地,所述主机箱的底部设置有底板,所述底板的底部外壁开有安装孔,所述主机箱和底板之间焊接有均匀分布的减震装置,所述主机箱通过减震装置进行缓冲。
12.进一步地,所述减震装置包括导套,所述导套的内部插接有导柱,所述导柱的外部套接有外弹簧,所述导套的内部设置有内弹簧,所述导套的底端与底板焊接,所述导柱的顶端与主机箱焊接。
13.进一步地,所述导套的一侧外壁插接有导柱,所述导柱的一侧外壁开有限位槽,所述销柱的一端延伸至限位槽的内部,所述销柱对导柱在导套内部的滑动进行限位。
14.一种计算机散热风机调速方法,包括以下步骤:s1.通过电流检测模块对处理器模块内部的电流进行检测,电流检测模块将检测处理器模块内部的电流反馈给温控模块;s2.温控模块通过电流检测模块反馈的信息控制散热风扇一、散热风扇二、散热风扇三和散热风扇四与电源模块进行接通,使得散热风扇一、散热风扇二、散热风扇三和散热风扇四进行工作;s3.通过温度传感器一对主机箱内部的温度进行检测,使得温度传感器一将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇一的电流进行改变;s4.通过温度传感器二对主机箱内部的温度进行检测,使得温度传感器二将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇二的电流进行改变;s5.通过温度传感器三对主机箱内部的温度进行检测,使得温度传感器三将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇三的电流进行改变;s6.通过温度传感器四对主机箱内部的温度进行检测,使得温度传感器四将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇四的电流进行改变;s7.通过显示模块对散热风扇一、散热风扇二、散热风扇三和散热风扇四工作状态进行显示。
15.进一步地,所述温控模块将温度传感器一、温度传感器二、温度传感器三和温度传感器四反馈的温度信号设置为10

30℃、31

40℃、41

60℃三个温度区间,三个所述温度区间分别与变速模块的档位模块一、档位模块二和档位模块三相对应,在所述s7中,显示模块显示的内容为0

12之间的任意整数,所述显示模块显示的结果作为计算机散热等级。
16.本发明通过改进在此提供一种计算机散热风机调速系统及方法,与现有技术相比,具有如下改进及优点:(1)本发明利用散热风扇一、散热风扇二、散热风扇三和散热风扇四对计算机的处
理器模块进行散热,使得计算机能够达到良好的散热效果,防止计算机的处理器模块因过热而损坏。
17.(2)本发明利用变速模块的三个档位模块对四个散热风扇进行调速,使得计算机具有十二个级别的散热档位,并且四个散热风扇能够根据四个温度传感器进行独立的自动调节转速,避免散热风扇长期高速运转而损坏。
18.(3)本发明利用电流检测模块对处理器模块内部的电流进行检测,使得只有在处理器模块工作时,四个散热风扇才能进行工作,进而减少了散热风扇无效工作时间,进而节约了电能。
19.(4)本发明利用减震装置对计算机的主机箱起到很好的减震效果,使得计算机在地面震动较大的环境中能够实现自我缓冲的效果,进而避免计算机因长期震动而损坏。
附图说明
20.下面结合附图和实施例对本发明作进一步解释:图1是本发明的整体结构示意图;图2是本发明的盖板结构示意图;图3是本发明的壳体结构示意图;图4是本发明的减震装置结构示意图;图5是本发明的导柱结构示意图;图6是本发明的主控板框图;图7是本发明的控制流程图;图8是本发明的变速模块框图。
21.附图标记说明:1主机箱、2减震装置、3底板、4安装孔、5导套、6导柱、7外弹簧、8内弹簧、9出风口、10防尘网、11第一磁铁、12盖板、13第二磁铁、14进风孔、15卡爪、16卡槽、17主控板、18温度传感器一、19温度传感器二、20温度传感器三、21温度传感器四、22散热风扇一、23散热风扇二、24散热风扇三、25散热风扇四、26电源模块、27销柱、28限位槽、29显示模块。
具体实施方式
22.下面将结合附图1

8对本发明进行详细说明,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
23.一种计算机散热风机调速系统,包括主机箱1,主机箱1为计算机的主机外壳,主机箱1的内部设置有主控板17,主控板17为计算机的控制主板,主控板17包括电流检测模块、处理器模块、变速模块和温控模块,电流检测模块用于检测处理器模块内部是否有电流,进而确定处理器模块是否工作,主机箱1的一侧内壁通过螺栓连接有散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25,散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25的型号均为g

100,散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25与主控板17的温控模块分别通过导线呈电性连接,利用温控模块控制散热风扇一22、散热
风扇二23、散热风扇三24和散热风扇四25进行工作,主机箱1的底部内壁通过螺旋连接有温度传感器一18,主机箱1的顶部内壁通过螺旋连接有温度传感器二19,主机箱1的一侧内壁通过螺旋连接有温度传感器三20和温度传感器四21,温控模块将温度传感器一18、温度传感器二19、温度传感器三20和温度传感器四21的型号均为bm10,温度传感器一18、温度传感器二19、温度传感器三20和温度传感器四21分别通过导线与主控板17的温控模块通过导线呈电性连接,主机箱1的底部内壁通过螺栓连接有电源模块26,电源模块26用于提供适配的电压,电源模块26与变速模块通过导线呈电性连接,主机箱1的一侧外壁设置有显示模块29,显示模块29用于显示计算机风机调速的散热等级,显示模块29与主控板17通过导线呈电性连接。
24.进一步地,变速模块包括档位模块一、档位模块二和档位模块三,档位模块一、档位模块二和档位模块三为控制散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25转速的作用,档位模块一、档位模块二和档位模块三控制的转速依次增高,变速模块对散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25的转动进行调速。
25.进一步地,主机箱1的一侧外壁设置有盖板12,盖板12的顶部内嵌有第二磁铁13,主机箱1的顶部外壁内嵌有第一磁铁11,第一磁铁11与第二磁铁13相互靠近的一侧为异性磁极,利用第一磁铁11与第二磁铁13相互吸引使得盖板12与主机箱1之间进行固定。
26.进一步地,盖板12的底部外壁一体成型有卡爪15,主机箱1的底部内壁开有卡槽16,盖板12通过卡爪15与卡槽16的配合与主机箱1形成固定连接,利用卡爪15与卡槽16的配合使得盖板12便于进行拆卸。
27.进一步地,盖板12的一侧外壁开有均匀分布的进风孔14,主机箱1的一侧外壁开有均匀分布的出风口9,出风口9的内部设置有防尘网10,出风口9为风机的排风出口,防尘网10起到防尘的作用。
28.进一步地,主机箱1的底部设置有底板3,底板3的底部外壁开有安装孔4,主机箱1和底板3之间焊接有均匀分布的减震装置2,主机箱1通过减震装置2进行缓冲,进而使得计算机能够在高频震动的环境中进行工作。
29.进一步地,减震装置2包括导套5,导套5的内部插接有导柱6,导柱6的外部套接有外弹簧7,导套5的内部设置有内弹簧8,导套5的底端与底板3焊接,导柱6的顶端与主机箱1焊接,通过外弹簧7和内弹簧8实现减震的作用。
30.进一步地,导套5的一侧外壁插接有导柱6,导柱6的一侧外壁开有限位槽28,销柱27的一端延伸至限位槽28的内部,销柱27对导柱6在导套5内部的滑动进行限位,销柱27对导柱27起到限位的作用。
31.实施例一一种计算机散热风机调速方法,包括以下步骤:s1.通过电流检测模块对处理器模块内部的电流进行检测,电流检测模块将检测处理器模块内部的电流反馈给温控模块;s2.温控模块通过电流检测模块反馈的信息控制散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25与电源模块26进行接通,使得散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25进行工作,温控模块将温度传感器一18、温度传感器二19、温度传感器三20和温度传感器四21反馈的温度信号设置为10

30℃、31

40℃、41

60℃三个温度
区间,三个温度区间分别与变速模块的档位模块一、档位模块二和档位模块三相对应;s3.通过温度传感器一18对主机箱1内部的温度进行检测,温度传感器一18检测的温度为25℃,使得温度传感器一18将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇一22的电流进行改变,使得档位模块一控制散热风扇一22进行转动;s4.通过温度传感器二19对主机箱1内部的温度进行检测,温度传感器二19检测的温度为26℃,使得温度传感器二19将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇二23的电流进行改变,使得档位模块一控制散热风扇二23进行转动;s5.通过温度传感器三20对主机箱1内部的温度进行检测,温度传感器三20检测的温度为26℃,使得温度传感器三20将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇三24的电流进行改变,档位模块一控制散热风扇三24进行转动;s6.通过温度传感器四21对主机箱1内部的温度进行检测,温度传感器四21检测的温度为25℃,使得温度传感器四21将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇四25的电流进行改变,档位模块一控制散热风扇四25进行转动;s7.通过显示模块29对散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25工作状态进行显示,显示模块29显示的内容为4,显示模块29显示的结果作为计算机散热等级。
32.实施例二一种计算机散热风机调速系统及方法,包括以下步骤:s1.通过电流检测模块对处理器模块内部的电流进行检测,电流检测模块将检测处理器模块内部的电流反馈给温控模块;s2.温控模块通过电流检测模块反馈的信息控制散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25与电源模块26进行接通,使得散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25进行工作,温控模块将温度传感器一18、温度传感器二19、温度传感器三20和温度传感器四21反馈的温度信号设置为10

30℃、31

40℃、41

60℃三个温度区间,三个温度区间分别与变速模块的档位模块一、档位模块二和档位模块三相对应;s3.通过温度传感器一18对主机箱1内部的温度进行检测,温度传感器一18检测的温度为37℃,使得温度传感器一18将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇一22的电流进行改变,使得档位模块二控制散热风扇一22进行转动;s4.通过温度传感器二19对主机箱1内部的温度进行检测,温度传感器二19检测的温度为38℃,使得温度传感器二19将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇二23的电流进行改变,使得档位模块二控制散热风扇二23进行转动;s5.通过温度传感器三20对主机箱1内部的温度进行检测,温度传感器三20检测的温度为39℃,使得温度传感器三20将检测的结果通过电信号反馈给温控模块,温控模块通
过变速模块将流入散热风扇三24的电流进行改变,档位模块二控制散热风扇三24进行转动;s6.通过温度传感器四21对主机箱1内部的温度进行检测,温度传感器四21检测的温度为38℃,使得温度传感器四21将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇四25的电流进行改变,档位模块二控制散热风扇四25进行转动;s7.通过显示模块29对散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25工作状态进行显示,显示模块29显示的内容为8,显示模块29显示的结果作为计算机散热等级。
33.实施例三一种计算机散热风机调速系统及方法,包括以下步骤:s1.通过电流检测模块对处理器模块内部的电流进行检测,电流检测模块将检测处理器模块内部的电流反馈给温控模块;s2.温控模块通过电流检测模块反馈的信息控制散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25与电源模块26进行接通,使得散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25进行工作,温控模块将温度传感器一18、温度传感器二19、温度传感器三20和温度传感器四21反馈的温度信号设置为10

30℃、31

40℃、41

60℃三个温度区间,三个温度区间分别与变速模块的档位模块一、档位模块二和档位模块三相对应;s3.通过温度传感器一18对主机箱1内部的温度进行检测,温度传感器一18检测的温度为47℃,使得温度传感器一18将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇一22的电流进行改变,使得档位模块二控制散热风扇一22进行转动;s4.通过温度传感器二19对主机箱1内部的温度进行检测,温度传感器二19检测的温度为48℃,使得温度传感器二19将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇二23的电流进行改变,使得档位模块二控制散热风扇二23进行转动;s5.通过温度传感器三20对主机箱1内部的温度进行检测,温度传感器三20检测的温度为49℃,使得温度传感器三20将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇三24的电流进行改变,档位模块二控制散热风扇三24进行转动;s6.通过温度传感器四21对主机箱1内部的温度进行检测,温度传感器四21检测的温度为48℃,使得温度传感器四21将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇四25的电流进行改变,档位模块三控制散热风扇四25进行转动;s7.通过显示模块29对散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25工作状态进行显示,显示模块29显示的内容为12,显示模块29显示的结果作为计算机散热等级。
34.实施例一、实施例二和实施例三中采用的温控模块将温度传感器一18、温度传感器二19、温度传感器三20和温度传感器四21检测出的温度不同,其余参数一致,进而显示模
块29显示的散热等级也不同,散热等级越高,计算机的主机箱1的散热功能越强大。
35.温控模块的程序如下:#include
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//调用单片机头文件#define uchar unsigned char
ꢀꢀ
//无符号字符型 宏定义
ꢀꢀꢀꢀꢀꢀꢀꢀ
变量范围0~255#define uint
ꢀꢀ
unsigned int
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//无符号整型 宏定义
ꢀꢀꢀꢀꢀꢀꢀꢀ
变量范围0~65535//显示模块段选定义
ꢀꢀ0ꢀꢀꢀ1ꢀꢀ2ꢀꢀ3ꢀꢀ4ꢀꢀꢀ5ꢀꢀꢀ6ꢀꢀ7ꢀꢀꢀ8ꢀꢀꢀ
9uchar code smg_du[]={0x28,0xee,0x42,0x72,0xe5,0xa8,0x41,0x77,0x20,0xa0,0x60,0x25,0x39,0x26,0x31,0x71,0xff};
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//断码//显示模块位选定义uchar code smg_we[]={0xef,0xdf,0xbf,0x7f};uchar dis_smg[4] = {0};uchar smg_i = 3;
ꢀꢀꢀꢀ
//显示显示模块的个位数sbit dq
ꢀꢀꢀ
= p2^4;
ꢀꢀꢀꢀꢀꢀꢀꢀ
//18b20 io口的定义bit flag_lj_en;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//按键连加使能bit flag_lj_3_en;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//按键连3次连加后使能
ꢀꢀ
加的数就越大了uchar key_time,key_value;
ꢀꢀꢀꢀꢀꢀ
//用做连加的中间变量bit key_500ms
ꢀꢀ
;sbit pwm = p2^3;uchar f_pwm_l ;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//uint temperature ;
ꢀꢀ
//bit flag_300ms ;uchar menu_1;
ꢀꢀꢀꢀꢀꢀꢀ
//菜单设计的变量uint t_high = 300,t_low = 230;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//温度上下限值void delay_1ms(uint q){
ꢀꢀꢀꢀꢀꢀꢀꢀ
uint i,j;
ꢀꢀꢀꢀꢀꢀꢀꢀ
for(i=0;i<8;i ) ;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
for(j=0;j<120;j );}void delay_uint(uint q){
ꢀꢀꢀꢀꢀꢀꢀꢀ
while(q
‑‑
);}void display(){
ꢀꢀꢀꢀꢀꢀꢀꢀ
static uchar i;
ꢀꢀꢀꢀꢀꢀꢀꢀ
i ;
ꢀꢀꢀꢀꢀꢀꢀꢀ
if(i >= smg_i)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
i = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀ
p1 = 0xff;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//消隐
ꢀꢀꢀꢀꢀꢀꢀꢀ
p3 = smg_we[i];
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//位选
ꢀꢀꢀꢀꢀꢀꢀꢀ
p1 = dis_smg[i];
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//段选}void init_18b20(){
ꢀꢀꢀꢀꢀꢀꢀꢀ
bit q;
ꢀꢀꢀꢀꢀꢀꢀꢀ
dq = 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//把总线拿高
ꢀꢀꢀꢀꢀꢀꢀꢀ
delay_uint(1);
ꢀꢀꢀꢀꢀꢀꢀꢀ
dq = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//给复位脉冲
ꢀꢀꢀꢀꢀꢀꢀꢀ
delay_uint(80);
ꢀꢀꢀꢀꢀꢀꢀꢀ
dq = 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//把总线拿高 等待
ꢀꢀꢀꢀꢀꢀꢀꢀ
delay_uint(10);
ꢀꢀꢀꢀꢀꢀꢀꢀ
q = dq;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//读取18b20初始化信号
ꢀꢀꢀꢀꢀꢀꢀꢀ
delay_uint(20);
ꢀꢀꢀꢀꢀꢀꢀꢀ
dq = 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//把总线拿高 释放总线}void write_18b20(uchar dat){
ꢀꢀꢀꢀꢀꢀꢀꢀ
uchar i;
ꢀꢀꢀꢀꢀꢀꢀꢀ
for(i=0;i<8;i )
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//写数据是低位开始
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dq = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//把总线拿低写时间隙开始
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dq = dat & 0x01; //向18b20总线写数据了
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
delay_uint(5);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dq = 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//释放总线
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dat >>= 1;
ꢀꢀꢀꢀꢀꢀꢀꢀ
}}uchar read_18b20(){
ꢀꢀꢀꢀꢀꢀꢀꢀ
uchar i,value;
ꢀꢀꢀꢀꢀꢀꢀꢀ
for(i=0;i<8;i )
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dq = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//把总线拿低读时间隙开始
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
value >>= 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//读数据是低位开始
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dq = 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//释放总线
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(dq == 1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//开始读写数据
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
value |= 0x80;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
delay_uint(5);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
// 读一个时间隙
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
return value;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//返回数据}uint read_temp(){
ꢀꢀꢀꢀꢀꢀꢀꢀ
uint value;
ꢀꢀꢀꢀꢀꢀꢀꢀ
uchar low;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序
ꢀꢀꢀꢀꢀꢀꢀꢀ
init_18b20();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//初始化18b20
ꢀꢀꢀꢀꢀꢀꢀꢀ
write_18b20(0xcc);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//跳过64位rom
ꢀꢀꢀꢀꢀꢀꢀꢀ
write_18b20(0x44);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//启动一次温度转换命令
ꢀꢀꢀꢀꢀꢀꢀꢀ
delay_uint(50);
ꢀꢀꢀꢀꢀꢀꢀꢀ
init_18b20();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//初始化18b20
ꢀꢀꢀꢀꢀꢀꢀꢀ
write_18b20(0xcc);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//跳过64位rom
ꢀꢀꢀꢀꢀꢀꢀꢀ
write_18b20(0xbe);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//发出读取暂存器命令
ꢀꢀꢀꢀꢀꢀꢀꢀ
low = read_18b20();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//读温度低字节
ꢀꢀꢀꢀꢀꢀꢀꢀ
value = read_18b20();
ꢀꢀ
//读温度高字节
ꢀꢀꢀꢀꢀꢀꢀꢀ
value <<= 8;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//把温度的高位左移8位
ꢀꢀꢀꢀꢀꢀꢀꢀ
value |= low;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//把读出的温度低位放到value的低八位中
ꢀꢀꢀꢀꢀꢀꢀꢀ
value *= 0.625;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//转换到温度值 小数
ꢀꢀꢀꢀꢀꢀꢀꢀ
return value;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//返回读出的温度 带小数}void time_init(){
ꢀꢀꢀꢀꢀꢀꢀꢀ
ea
ꢀꢀꢀ
= 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//开总中断
ꢀꢀꢀꢀꢀꢀꢀꢀ
tmod = 0x21;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//定时器0、定时器1工作方式1
ꢀꢀꢀꢀꢀꢀꢀꢀ
et0
ꢀꢀ
= 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//开定时器0中断
ꢀꢀꢀꢀꢀꢀꢀꢀ
tr0
ꢀꢀ
= 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//允许定时器0定时
ꢀꢀꢀꢀꢀꢀꢀꢀ
et1
ꢀꢀ
= 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//开定时器0中断
ꢀꢀꢀꢀꢀꢀꢀꢀ
tr1
ꢀꢀ
= 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//允许定时器0定时}uchar key_can;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//按键值void key()
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//独立按键程序{
ꢀꢀꢀꢀꢀꢀꢀꢀ
uchar key_new;
ꢀꢀꢀꢀꢀꢀꢀꢀ
key_can = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//按键值还原
ꢀꢀꢀꢀꢀꢀꢀꢀ
p2 |= 0x07;
ꢀꢀꢀꢀꢀꢀꢀꢀ
if((p2 & 0x07) != 0x07)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//按键按下
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(key_500ms == 1)
ꢀꢀꢀꢀꢀꢀꢀꢀ
//连加
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
key_500ms = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
key_new = 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
delay_1ms(1);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//按键消抖动
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(((p2 & 0x07) != 0x07) && (key_new == 1))
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//确认是按键按下 key_new = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
switch(p2 & 0x07)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
case 0x06: key_can = 3; break;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//得到k2键值
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
case 0x05: key_can = 2; break;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//得到k3键值
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
case 0x02: key_can = 1; break;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//得到k4键值
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
flag_lj_en = 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//连加使能
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
else
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
key_new = 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
flag_lj_en = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//关闭连加使能
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
flag_lj_3_en = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀ
//关闭3秒后使能
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
key_value = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//清零
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
key_time = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
key_500ms = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}}/****************按键处理显示模块显示函数***************/void key_with(){
ꢀꢀꢀꢀꢀꢀꢀꢀ
if(key_can == 1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//设置键
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
menu_1 ;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(menu_1 >= 3)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
menu_1 = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
smg_i = 3;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//显示模块显示3位
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
if(menu_1 == 1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//设置高温
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
smg_i = 4;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//显示模块显示4位
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(key_can == 2)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(flag_lj_3_en == 0)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
t_high ;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//按键按下未松开自动加三次
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
else
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
t_high = 10;
ꢀꢀꢀꢀꢀꢀꢀꢀ
//按键按下未松开自动加三次之后每次自动加10
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(t_high > 990)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
t_high = 990;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(key_can == 3)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(flag_lj_3_en == 0)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
t_high
ꢀ‑‑ꢀ
;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//按键按下未松开自动减三次
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
else
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
t_high
ꢀ‑
= 10;
ꢀꢀꢀꢀꢀꢀꢀꢀ
//按键按下未松开自动减三次之后每次自动减10
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(t_high <= t_low)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
t_high = t_low 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dis_smg[0] = smg_du[t_high % 10];
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//取小数显示
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dis_smg[1] = smg_du[t_high / 10 % 10] & 0xdf;
ꢀꢀ
//取个位显示
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dis_smg[2] = smg_du[t_high / 100 % 10] ;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//
取十位显示
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dis_smg[3] = 0x64;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//h
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
if(menu_1 == 2)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//设置低温
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
smg_i = 4;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//显示模块显示4位
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(key_can == 2)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(flag_lj_3_en == 0)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
t_low ;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//按键按下未松开自动加三次
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
else
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
t_low = 10;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//按键按下未松开自动加三次之后每次自动加10
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(t_low >= t_high)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
t_low = t_high
ꢀ‑ꢀ
1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(key_can == 3)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(flag_lj_3_en == 0)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
t_low
ꢀ‑‑ꢀ
;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//按键按下未松开自动减三次
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
else
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
t_low
ꢀ‑
= 10;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//按键按下未松开自动加三次之后每次自动加10
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(t_low <= 10)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
t_low = 10;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dis_smg[0] = smg_du[t_low % 10];
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//取小数显示
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dis_smg[1] = smg_du[t_low / 10 % 10] & 0xdf;
ꢀꢀꢀ
//取个位显示
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dis_smg[2] = smg_du[t_low / 100 % 10] ;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//取十位显示
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dis_smg[3] = 0x3d;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//l
ꢀꢀꢀꢀꢀꢀꢀꢀ
}}/****************风扇控制函数***************/void fengshan_kz()
{
ꢀꢀꢀꢀꢀꢀꢀꢀ
if(temperature >= t_high)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//风扇全开
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
tr1 = 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
pwm = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
else if((temperature < t_high)
ꢀꢀꢀꢀꢀꢀꢀꢀ
&& (temperature >= t_low))
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//风扇缓慢
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
f_pwm_l = 60;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
tr1 = 1;
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
else if(temperature < t_low)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//关闭风扇
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
tr1 = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
pwm = 1;
ꢀꢀꢀꢀꢀꢀꢀꢀ
}}/****************主函数***************/void main(){
ꢀꢀꢀꢀꢀꢀꢀꢀ
time_init();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//初始化定时器
ꢀꢀ
while(1)
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
key();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//按键程序
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
key_with();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//设置温度
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(flag_300ms == 1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//300ms 处理一次温度程序
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
flag_300ms = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
temperature = read_temp();
ꢀꢀꢀꢀꢀꢀꢀꢀ
//先读出温度的值
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
smg_i = 3;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dis_smg[0] = smg_du[temperature % 10];
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//取温度的小数显示
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dis_smg[1] = smg_du[temperature / 10 % 10] & 0xdf; //取温度的个位显示
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
dis_smg[2] = smg_du[temperature / 100 % 10] ;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//取温度的十位显示
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
fengshan_kz();
ꢀꢀꢀꢀꢀꢀꢀꢀ
//风扇控制函数
ꢀꢀꢀꢀꢀꢀꢀꢀ
}}/*************定时器0中断服务程序***************/void time0_int() interrupt 1{
ꢀꢀꢀꢀꢀꢀꢀꢀ
static uchar value;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//定时2ms中断一次
ꢀꢀꢀꢀꢀꢀꢀꢀ
th0 = 0xf8;
ꢀꢀꢀꢀꢀꢀꢀꢀ
tl0 = 0x30;
ꢀꢀꢀꢀꢀ
//2ms
ꢀꢀꢀꢀꢀꢀꢀꢀ
display();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//显示模块显示函数
ꢀꢀꢀꢀꢀꢀꢀꢀ
value ;
ꢀꢀꢀꢀꢀꢀꢀꢀ
if(value >= 150)
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
value = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
flag_300ms = 1;
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
if(flag_lj_en == 1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//按下按键使能
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
key_time ;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(key_time >= 250) //500ms
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
key_time = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
key_500ms = 1; //500ms
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
key_value ;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(key_value > 3)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
key_value = 10;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
flag_lj_3_en = 1; //3次后1.5秒连加大些
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
}}/*******************定时器1用做单片机模拟pwm 调节***********************/void timer1() interrupt 3
ꢀꢀ
//调用定时器1{
ꢀꢀꢀꢀꢀꢀꢀꢀ
static uchar value_l;
ꢀꢀꢀꢀꢀꢀꢀꢀ
th1=0x0f;
ꢀꢀꢀꢀ
//
ꢀꢀꢀꢀ
定时中断一次
ꢀꢀꢀꢀꢀꢀꢀꢀ
tl1=0xec;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//
ꢀꢀꢀꢀꢀꢀꢀꢀ
if(pwm==1)
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
value_l =3;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(value_l > f_pwm_l)
ꢀꢀꢀ
//高电平
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
value_l=0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
pwm=0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
else
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
value_l =3;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(value_l
ꢀꢀ
> 100
ꢀ‑ꢀ
f_pwm_l)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//低电平
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
value_l=0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
pwm=1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
}}工作原理:s1.通过电流检测模块对处理器模块内部的电流进行检测,电流检测模块将检测处理器模块内部的电流反馈给温控模块;s2.温控模块通过电流检测模块反馈的信息控制散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25与电源模块26进行接通,使得散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25进行工作,温控模块将温度传感器一18、温度传感器二19、温度传感器三20和温度传感器四21反馈的温度信号设置为10

30℃、31

40℃、41

60℃三个温度区间,三个温度区间分别与变速模块的档位模块一、档位模块二和档位模块三相对应;s3.通过温度传感器一18对主机箱1内部的温度进行检测,温度传感器一18检测的温度为57℃,使得温度传感器一18将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇一22的电流进行改变,使得档位模块二控制散热风扇一22进行转动;s4.通过温度传感器二19对主机箱1内部的温度进行检测,温度传感器二19检测的温度为58℃,使得温度传感器二19将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇二23的电流进行改变,使得档位模块二控制散热风扇二23进行转动;s5.通过温度传感器三20对主机箱1内部的温度进行检测,温度传感器三20检测的温度为61℃,使得温度传感器三20将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇三24的电流进行改变,档位模块三控制散热风扇三24进行转动;s6.通过温度传感器四21对主机箱1内部的温度进行检测,
温度传感器四21检测的温度为61℃,使得温度传感器四21将检测的结果通过电信号反馈给温控模块,温控模块通过变速模块将流入散热风扇四25的电流进行改变,档位模块三控制散热风扇四25进行转动;s7.通过显示模块29对散热风扇一22、散热风扇二23、散热风扇三24和散热风扇四25工作状态进行显示,显示模块29显示的内容为10,显示模块29显示的结果作为计算机散热等级。
[0036]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献