版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 课程设计说明书 设计题目:CPU智能散热监控系统设计学 院:专 业:班 级:学 号:姓 名: 指导教师: 目 录1. 课程设计要求12. 系统功能分析与方案确定13. 系统主要硬件电路模块设计23.1温度检测电路模块23.2矩阵按键电路模块33.3 蜂鸣器电路模块43.4 液晶显示电路模块43.5 存储器电路模块53.6 直流电机输出电路模块53.7 继电器软硬件模块63.8 单片机CPU 最小系统73.9 单片机硬件端口分配74. 程序软件设计与分析84.1系统软件分析及详细技术文件设计84.2 系统软件主程序设计94.3 定时中断程序设计114.4 按键检测及处理模块程序设计114.5其
2、他程序的设计125. 后续有待完善和提高的工作12参考文献13附录14431. 课程设计要求设计一个温度检测及提醒智能控制系统,要求具有1. 可设定和存储预置温度数值(20-32摄氏度)2. 可设定和存储报警温度数值(33-50摄氏度)3. 系统工作时能实时检测温度,当超过预置温度数值时启动直流电机吹风散热,温度超出越高使电机转速越快,以加强散热效果。4. 系统启动时,接通继电器控制电路使CPU工作,当温度超过设定的报警温度时,系统通过继电器电路切断CPU电源以作保护,同时蜂鸣器使鸣叫报警10秒钟。5. 液晶显示6. 其他功能细节以及按键功能可以根据自己设定的要求拟定。提高:使用遥控器(选作)
3、。2. 系统功能分析与方案确定 系统要求能够实时检测温度,且检测的温度范围是检测温度范围是0-50摄氏度,我们可以选用开发板附件18B20 数字温度传感器完成温度检测,根据相关18B20的使用资料说明,其检测温度范围在-55+125 摄氏度,完全满足本系统的设计和使用需要;考虑到系统温度检测实时性的要求,可以将检测温度的动作安排在定时中断中进行,由于本系统主程序循环的任务不多,对于温度的检测也可以放在主程序循环中进行,本次课程设计拟将这项工作采用后面的方案,以便后续功能提高提供更多的CPU 硬件资源。 该系统是一个智能报警调节系统,也就是可以人为的修改设定报警温度和与之温度的温度阈值,以便该系
4、统可以灵活适应多种温度阈值报警提醒的场合,其本质就是输入设置参数,也就是需要按键输入的硬件和软件模块。通过规划其余硬件模块的端口资源,使用开发板上40 引脚的STC89c52,端口够用,兼顾到还需其他功能按键的设置,故本系统采用4*4 矩阵按键来满足按键输入的要求:其中安排0-9 等10 个字按键,另外安排“报警设置”、“清零”、“取消”、“确定”、“预置设置”等五个按键,分别用于进入报警设置状态、在设置状态中对设置的数值清零、取消本次设置操作或者对本次设置值确认输入并返回到检测工作状态、进入预置设置状态。由于设定的结果需要保存,以便下一次上电启动系统后直接延续上次设置的温度设置阈值,这也是本
5、系统体现出“智能”的另一个方面。完成数值的存储可以多种方案,其一是使用CPU 芯片内部的EEPROM(这需要CPU 本身具有这个功能),其二是向片外扩展存储芯片。虽然本系统选用的CPU 具有1k 字节的EEPROM,但由于使用内部存储器的操作比较简单,出于本次课程设计训练的目的,我还是倾向于使用扩展一片外部I2C 总线的24C08 存储器,让自己在I2C 总线硬件接口及软件设计等方面得到较多的设计体会。为便于人机交互,检测的温度值及设定温度阈值的过程必须直观的显现出来,显示的内容包括当前检测到的温度值,已设定的温度值或者正在设定状态的输入温度数值,由于显示的信息比较简单,可以利用开发板附件中的
6、1602 液晶显示屏完成输出显示。出于本次课程设计训练的目的,直流电机吹风散热用直流输出电机代替。Cpu电源保护用开发板自带继电器。最后剩下的就是蜂鸣器输出报警模块,这个功能模块可以使用定时器输出一定频率的方波信号来获得蜂鸣器发出一定频率的声音。根据上述分析,由硬件功能可以将本系统分解为如下7 个功能模块:1.温度检测软硬件模块,采用18B20 数字温度传感器及其接口电路;2.蜂鸣器发音软硬件模块,采用蜂鸣器及其接口电路;3.按键输入软硬件模块,采用4*4 矩阵按键及其接口电路;4.存储器软硬件模块,采用I2C 总线的24C08 存储器及其接口电路;5.液晶显示软硬件模块,采用1602 液晶显
7、示屏及其接口电路;6.直流电机输出软硬件模块,采用NCV7B直流电机;7.继电器软硬件模块,采用开发板自带的继电器;8.系统CPU 模块,采用STC89c52 最小系统。3. 系统主要硬件电路模块设计 根据上述分析确定的设计方案,本系统主要设计和使用了温度检测电路模块、矩阵按键电路模块、蜂鸣器电路模块、液晶显示电路模块、直流电机转动软硬件模块以及存储器电路模块,前两个属于信号输入模块,后四者属于输出模块。下面就这六个模块的设计分别论述。3.1温度检测电路模块 根据18B20 数字温度传感器的性能及电气参数特性,设计接口电路如图3.1 所示。18B20 数字温度传感器属于单总线数据通讯器件,即只
8、有一根数据线,系统中的数据交换、控制都由这根线完成。为了通讯的需要,在设计电路中,在该传感器的数据I/O 引脚上外接一个约为 4.7K 的上拉电阻,以保证当该总线闲置时其状态为高电平。图3.1温度传感器18B20接口电路图3.2矩阵按键电路模块 如前所述,本系统采用4*4矩阵按键,电路如图3.2所示。图中的四条行线和四条列线可接入一个8位的端口,该端口各位都上拉一个1k的电阻。 图3.2 矩阵按键接口电路图3.3 蜂鸣器电路模块 本系统的报警提醒采用蜂鸣器发音鸣叫来实现,蜂鸣器控制电路如图 3.3 所示。 图3.3 蜂鸣器接口电路图 在 PNP 型三极管8550 的基极通以一定频率TTL 电平
9、的方波信号,使三极管产生同样频率的开关动作,从而引发蜂鸣器发出对应频率的声音。 3.4 液晶显示电路模块 本系统采用1602 液晶显示集成电路模块,它与单片机的接口如图3.4 所示。 图3.4 液晶显示电路模块 对于该集成电路模块,其控制端(4-14 号引脚)可以直接接入CPU 端口。图中设计有一个10K 的可调电阻,其中心抽头联至该模块的3 号引脚,其2 号引脚接5V电源正极一并联至可调电阻的一侧,另一侧接至5V 地,调节可调电阻的大小可以调整液晶显示字符的对比度。液晶显示背屏光的电路接口由15 及16 号脚分别接5V 电源正极和5V 地来实现。3.5 存储器电路模块 本系统采用具有 I2C
10、 总线的24C08 存储器,组成系统结构简单,占用空间小,芯片管脚的数量少,无需片选信号,价格低,应用比较广泛,传送速度可达400kbps,标准速率为100kbps。 器件引脚地址是由I2C 总线外围器件的地址引脚(A2,A1,A0)决定,由于本系统只扩展一片1K 字节的24C08 存储器,故引脚(A2,A1,A0)直接共地,其地址代码相对应信号为0。该存储器的SDA, SCL 引脚联至CPU 端口并分别外接10K 的上拉电阻。电路如图3.5 所示。 图3.5 存储器接口电路3.6 直流电机输出电路模块本系统采用NCV7B直流电动机代替cpu风扇转动。电机用P3.0和P3.1口控制。 图3.6
11、 直流电机控制原理 本系统采用由达林顿管组成的H型PWM电路。用单片机控制达林顿管使之工作在占空比可调的开关状态,精确调整电动机转速。这种电路由于工作在管子的饱和截止模式下,效率非常高;H型电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也极佳,是一种广泛采用的PWM调速技术。3.7 继电器软硬件模块 本系统采用开发板自带继电器。继电器为P3.7口控制。正常情况下单片机的P3.6、P3.7都被程序初始化时置“1” ,继电器处于吸合状态。 图3.7 继电器电路3.8 单片机CPU 最小系统 本系统 CPU 采用宏晶科技推出的STC89S52RC,它是一款高速、低功耗、超强抗干
12、扰的单片机,指定代码 完全兼容传统8051 单片机,有E2PROM 功能,内部集成MAX810 专用复位电路,外部晶体20M 以下时可以省略外部复位电路,本系统便充分利用该CPU 的特点,省去了传统的晶振和复位电路。具有为便于后续端口的扩展和使用,本系统已对全部I/O 端口做了上拉电阻设计,考虑到程序代码总量不到2K 字节,完全可以使用片内ROM 空间,故而将EA 引脚接高点位。如图3.6 所示。 图3.6 单片机最小系统3.9 单片机硬件端口分配 为合理利用单片机的端口资源,并且兼顾程序设计的便利,将系统的输出和输入端口作如表3.1配置。 表3.1 单片机端口配置表单片机端口外围接口电路硬件
13、模块单片机端口外围接口电路硬件模块P3.318B20温度传感器模块P3.7继电器软硬件模块P2.0-P2.5,P0.0-P0.7液晶显示集成电路模块P3.0-P3.1直流电机输出模块P1.0-P1.7按键电路模块P3.4,P3.5存储器电路模块P3.6蜂鸣器电路模块4. 程序软件设计与分析4.1系统软件分析及详细技术文件设计 作为一个完整的智能测温报警调节系统,其每一个动作细节都是确定和符合设计要求的,这些动作细节就是软件的设计过程和任务,如同设计一个更为详细的产品使用说明书,这个工作必须由系统研发者设计、完成。 根据本次课程设计的提出的功能要求,整个系统功能可以分为两种状态:报警提醒的“正常
14、工作状态”以及设置报警阈值并存储的“设置工作状态”。在“正常工作状态”完成温度比较并根据比较结果确定蜂鸣器鸣叫、电机转动和继电器的吸合。当检测到“设置”按键按下,系统就进入“设置工作状态”,这时可以按下数字键设置报警阈值,在这个过程中如果按下“清零”键,则将已输入设置温度阈值都清零,用户可以在此基础上继续输入数字键;当温度阈值数字输入完成后,按下“确定”按键,则将该输入数值保存到存储器,并作设置温度的更新显示,然后系统状态切换到“正常工作状态”;如果这时按下的是“取消”键,就不保存设置的数值,系统直接切换到“正常工作状态”。 由此可见,上述两种状态是由用户通过按键的选择来决定的。所以,可以在按
15、键处理软件模块中设置状态标志位,以便于在主循环程序中进行个别处理。另外,不论系统处于上述何种工作状态,系统都要检测和显示当前温度,所以系统的主循环应该安排完成如下三个方面的工作:(1) 检测、显示温度;(2)查有没有按键按下,如果有按键按下,就完成按键键值处理和设置选择状态;(3)根据状态选择,确定是显示设置的过程,或是比较设置温度与当前温度,决定是否报警提醒输出,确定电机转动及转动的快慢,确定继电器的吸合。 通过以上的设计和分析,本系统操作主要通过按键进行,按键有数字键0-9,还有“警告设置”“清零”“取消”“确定”“预置设置”等五个功能按键。详细技术文件设计如下: 上电后,首先完成系统初始
16、化和硬件自检:初始化液晶显示模块、存储器和定时器,自检动作为: 蜂鸣器鸣叫10 秒,同时液晶屏显示内部保留的与之温度和警告温度,电机转动。(自检的目的是测试输入和输出硬件的状态,通过输出系统(如显示器或喇叭)告知操作者关于系统的状态。) 自检完成后,系统进入工作状态:读取24C08 存储器的已设置温度阈值,检测当前温度值;液晶显示,从第1 行第1 列显示“yuz:” ,在该行第5 列显示三位的预置温度值;在该行第8列显示“dq:”,在该行第11列显示三位当前温度值;从第2 行第1 列显示“set:”,在该行第5 列显示三位的已设置警告温度值; 当有“设置”键按下,系统就进入“设置工作状态”,从
17、第1 行第14列显示“SET”或“YUZ”字符,从第2 行第14 列显示初始的“000”字符。当检测到数字键按下,从低位到高位更新显示设置的字符,这个过程中如果按下“清零”键,则将已输入设置都做清零显示,继续更新显示后续按下的数字键;当检测到 “确定”按键按下,将该输入数值保存到存储器,并作设置温度阈值的更新显示,把“SET”或“YUZ”字符和设置过程的数字作消隐处理,然后系统状态切换到“正常工作状态”;如果检测按下的是“取消”键,就不保存设置的数值,同样做消隐处理,然后系统直接切换到“正常工作状态”。4.2 系统软件主程序设计 系统软件的主程序包括初始化、自检和主循环。初始化主要针对定时器、
18、液晶显示模块、存储器等硬件进行初始化。 系统使用定时器0 的定时中断输出获得蜂鸣器一定频率鸣叫,使用定时器1的定时中断输出一定频率电机转动。使用定时器方式1,以定时方式工作,通过 TR0、TR1 启动。故TMOD 值为0x11,TH0 、TL0 和TH1、TL1分别是:TH0=0XF5,TL0=0XAA;TH1= 0XFF ,TL1= 0XF6 ; 初始化液晶显示模块通过调用1602LcD.H头文件的初始化函数完成。 存储器初始化只需使得存储器引脚SDA 和SCL 信号都为1,使设备处于空闲状态即可。 与此同时,还要对系统工作的标志位和全局变量做初始化,部分标志位和变量的设置及其功能将在各软件
19、模块中详细说明;系统的设置的全局变量和标志位如表4.2所示。 表4.2 系统软件全局变量及标志位说明 全局变量及标志位 属性 功能说明input_luchar按键输入数值的低位input_muchar按键输入数值的中位input_huchar按键输入数值的高位temp_dquchar当前温度值temp_setuchar警告温度值temp_yuzuchar预置温度值fmq_onbit蜂鸣器开启标志wenbiaobit温度检测标志位statusbit系统状态位 =1:设置参数=0:系统运行开机后默认运行状态 本系统自检工作设计比较简单,主要完成液晶模块、蜂鸣器及电机的输出动作,以供操作者观察设备是
20、否完好; 主循环完成上述分析中述及的三个方面的工作,前2 项工作在本文有专门模块进行说明,此处对第三个工作进行阐述。 如果系统当前状态是设置工作态,那么系统在指定位置完成对设置输入数值的更新显示;而且由于系统在设置态,所以蜂鸣器定时中断输出必须关闭,蜂鸣器也必须关闭,电机输出也关闭。 另外,如果系统处于正常工作状态,那就需要判断设置报警温度阈值、预置温度值和检测温度的关系。程序分两个语句块进行警告温度和当前温度的判断,一个是当警告温度阈值小于当前温度时,蜂鸣器开启,定时中断0开启,同时设置蜂鸣器开启标志位,这样做的目的是:当蜂鸣器开启后就不必重复进入到这个语句块中去开定时中断,以免影响定时输出
21、蜂鸣器的声音效果。另一个是当警告温度阈值大于当前温度时,蜂鸣器关闭,定时中断0关闭,这时就要把蜂鸣器开启标志位清零,以便于温度重新升高后,能进入上一个语句块开启蜂鸣器和中断。程序分两个语句块进行预置温度和当前温度的判断,一个是当预置温度值小于当前温度时,定时中断1开启,当前温度在中断中进行。另一个是当预置温度值大于当前温度时,定时中断1关闭,当前温度检测在主程序中进行。具体流程图如图4.2 所示,该模块程序见附录main()函数。开始 存储器、lcd显示器定时器初始化 读取24C08数值送显示温度标志位置0读取当前温度送显示 按键检测及键值处理处于设置状态?更新显示按键输入值关定时中断0、1及
22、关蜂鸣器当前温度大于预置温度值?开定时中断1,温度检测中断中进行,温度标志位置1关定时中断1,温度标志位置0开定时中断0,置蜂鸣器鸣叫标志位当前温度大于警告温度值?关定时中断0,关蜂鸣器,清蜂鸣器鸣叫标志位 图4.2 主程序流程图4.3 定时中断程序设计 系统使用定时器 0 的定时中断输出获得蜂鸣器以一定频率鸣叫,故在定时中断程序中只需完成蜂鸣器输出取反,然后重新定义定时初始值,最后启动定时器TR0即可,该模块程序见附录void intt0() interrupt 1 函数。系统使用定时器 1 的定时中断输出获得电机转动的快慢调节,故在定时中断程序中只需定时初始化,然后当小于占空比值时输出低电
23、平,高于时是高电平,从而实现占空比的调整,最后启动定时器TR1即可,该模块程序见附录void timer1(void) interrupt 3 using 2 函数。4.4 按键检测及处理模块程序设计 在该软件模块中主要做两件事,其一:检测有没有按键按下并获取按键键值;其二:根据按下的键值设置状态标志或对按下的值做进一步数据处理。 对于第一件事,本系统专门设计了一个头文件函数key_value.h来完成这个功能,当系统没有按键按下,函数返回键值为0xff,如果有按键按下,则返回该按键的键值。本系统设计的数字键的键值就为数字键的本身的数字值,另外四个功能键的键值分别是:“警告设置”为0x0a,“
24、清零”为0x0b,“取消”为0x0c,“确定”为0x0d,“预置设置”为0x0e。 下面说明第二件事情。当有按键按下,这时就要结合当前的状态进行处理。比如在正常工作状态下,就不响应数字按键的处理。但如果当前是设置工作状态,那就可以对数字按键进行响应和处理了。 首先说明对四个功能按键的处理。 如果用户按下了“设置”按键,系统即进入“设置工作状态”,使标志位status置1,表示当前进入设置状态。按键输入的3 个公共变量做初始化清零,在LCD 上相应位置显示“SET”或“YUZ”字型,输出FMQ 控制端口信号为1,把蜂鸣器关掉,使在设置温度阈值的时候不做蜂鸣器输出。 当前系统如果在“设置工作状态”
25、,这时用户按下了“清零”按键,那么系统将按键输入的3 个公共变量重做初始化清零,其功能很明确:将用户之前按下的数字一次性全部清零,以便于重新数字输入新值。 当前系统如果在“设置工作状态”,这时用户按下了“确定”按键,系统就将之前用户输入的三个数字键键值进行个位、十位、百位的数据计算得到一个数值,判断该值是否在系统要求的“2032 摄氏度”预置范围和“3350摄氏度”警告范围,如果是就把这个数值放入变量yuz和set,并调用函数WriteSet(n,temp_set)保存到存储器中指定的存储单元中;如果不属于该范围,则不做保存。上述过程结束后,由于系统即将要切换到正常工作状态去,所以必须对屏幕显
26、示做消隐,也就是把设置状态的显示字符和数字隐去。然后把系统状态标志位status 清零。 当前系统如果在“设置工作状态”,这时用户按下了“取消”按键,也就是不想保存设置的数值,直接返回“正常工作状态”。系统直接对屏幕显示做消隐,也就是把设置状态的显示字符和数字隐去,然后把系统状态标志位status 清零即可。 当前系统如果在“设置工作状态”,这时用户按下了数字按键,只需完成对输入数值的低、中、高三位依次更新,即把中间位的数值 input_m 赋值给input_h,然后把原来最低位的数值input_l 赋值给input_m,把当前输入的数值给最低位input_l。该模块程序详见附录 void r
27、un_key()函数。4.5其他程序的设计4.5.1温度检测程序模块设计 程序中设计了2个变量TH和TL,分别用于存储从18B20传感器分两次读取的温度数据,其中,先读的是温度值低位存入放入TL,接着读的是温度值高位放入TH。然后进行温度数据的处理,把温度数据的整数部分提取出来,结果放入变量temp_now中,整数提取的算法是: TH*16+TL/16。该模块程序详见附录void get_temp()函数。4.5.2温度显示程序模块设计该程序软件模块完成温度值的数据处理并进行显示。程序入口参数为无符号字符型,在程序中对该参数进行个位十位百位的拆解并转换成对应的ASCII码,并输出显示。该模块程
28、序详见附录void disp_temp(uchar temp)函数。 (4.1)5. 后续有待完善和提高的工作本系统设计了一套温度检测及智能报警系统,完成了本次课程设计给出的基本要求,随着设计的逐步推进,我对该系统的功能也有了更加深入的理解,我认为可以在以下几个方面更进一步提高和完善: 1.温度提醒阈值的保存状态可以使用声音或显示提醒,以告知操作者对本操作成功与否。 2. 温度检测报警提醒实现进一步的智能化,采用不同频率的声音来区别温度超出的程度。比如温度超出2 度范围内播放一种频率的声音,超出3-5 度范围则播放另一种频率的声音,其余依此类同。 3. 为了能够进一步体现“以人为本”设计思想,
29、可以使用播放音乐来替代单调的鸣叫声音。 4. 为了使显示更加具有动感,在工作状态可以用滚动方式来显示当前的温度,比如温度每发生变化,则通过滚屏的方式显示1 次或多次。参考文献1 刘祖京. 实用接口技术M. 北京:北京工业大学出版社,1999.2 王彤. C语言在测量与控制中的应用M. 北京:机械工业出版社,2009.3 徐煜明. C51单片机及应用系统设计M. 北京:电子工业出版社,2009.24 谢维成,杨加国. 单片机原理及应用及C51程序设计. 北京:清华大学出版社,2009.附录/*系统软件源程序*/CPU智能散热监控系统设计/ 主要功能:/ 1可设定和存储预置温度数值(20-32摄氏
30、度)/ 2可设定和存储报警温度数值(33-50摄氏度)/ 3系统工作时能实时检测温度,当超过预置温度数值时启动直流电机吹风散热,温度超出越高使电机转速越快,以加强散热效果。/ 4系统启动时,接通继电器控制电路使CPU工作,当温度超过设定的报警温度时,系统通过继电器电路切断CPU电源以作保护,同时蜂鸣器使鸣叫报警10秒钟。/ 5液晶显示/ 其他功能细节以及按键功能可以根据自己设定的要求拟定。/ 提高:使用遥控器(选作)。#include#include1602LcD.H#includekey_value.h#include18b20.h#include24c08.h#define unit un
31、signed int #define uchar unsigned char uchar input_l;/按键输入的高中低三位定义uchar input_m;uchar input_h;uchar key_zhi;uchar disp_set;uchar disp_yuz;uchar temp_dq;/当前温度值uchar temp_yuz;/预置温度值uchar temp_set;/警告温度值sbit JDQ=P37; /继电器sbit fmq=P36; /蜂鸣器unsigned int t1 ;unsigned int t2 ;bit fmq_on; /蜂鸣器开启标志bit status
32、=0; /定义一个状态位 1:设置参数 0:系统运行,开机后默认运行状态bit wenbiao=1; /定义一个状态位void delay(uint); /申明一个延时函数位 void disp_inilcd();/液晶屏初始化显示void disp_temp(uchar); /显示给定温度数值void get_temp(); /获取温度值void intt0(); /蜂鸣器定时中断void run_key(); /按键处理函数;void timer1() ; /电机定时中断#define V_TH0 0XFF #define V_TL0 0XF6 void main() SDA = 1; /
33、 SDA=1,SCL=1,存储器初始化,使主从设备处于空闲状态 SCL = 1; lcd_init(); / 液晶初始化 delay(100); disp_inilcd();/ 液晶显示初始值 lcd_pos(2,5);/开机后,从存储器中读取并在指定位置显示原先设定的温度数值; temp_set=ReadSet(0x08); disp_temp(temp_set); lcd_pos(1,5); temp_yuz=ReadSet(0x0c); disp_temp(temp_yuz); TMOD=0x11; /定时器0初始化,设定蜂鸣器的鸣叫频率 EA=1; ET0=1; TH0=0Xf5; T
34、L0=0Xaa; TH1=V_TH0; /*恢复定时器T1初始值*/ TL1=V_TL0; while(1) P3_0=1; lcd_pos(1,5); /更新显示当前的温度数值; disp_temp(temp_yuz); delay(50); run_key(); /查询按键并作键值处理 lcd_pos(2,5); disp_temp(temp_set); delay(50); run_key(); if(wenbiao=0) lcd_pos(1,11); get_temp(); disp_temp(temp_dq); delay(50); run_key(); if(status=1) /
35、如果是在设置状态,更新显示设置后的数值 lcd_pos(2,14); /显示输入的设定温度数值;lcd_write(1,input_h+0X30);lcd_write(1,input_m+0X30);lcd_write(1,input_l+0X30);TR0=0;TR1=0;fmq=1; if(temp_dqtemp_yuz&status=0)/T1ms占空比调速,总共为100份,每升高1度增加2占空比 P3_0=0; wenbiao=1; lcd_pos(1,11); get_temp(); disp_temp(temp_dq); delay(50); run_key(); t1=(temp
36、_dq-temp_yuz)*2+40; t2=(100-t1); if (t199) t1=1; /对占空比值限定范围 if (t11) t1=99; TR1=1; elsewenbiao=0; if(status=0&temp_settemp_dq)/如果温度没达到设定数值,关掉蜂鸣器定时中断,关蜂鸣器, /清fmq_on位 TR0=0; fmq=1; fmq_on=0; if(status=0&temp_settemp_dq) JDQ=1; /* * 子程序*/void timer1(void) interrupt 3 using 2 static uchar click=0; TMOD=
37、0x11; EA=1; ET1=1;TH1=V_TH0; /*定时器T1初始值*/ TL1=V_TL0; TR1=1;+click; if (click=100) click=0; if (click=t1) /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/ P3_0=0; else P3_0=1; if (click=t2) P3_1=0; else P3_1=1; void intt0() interrupt 1/蜂鸣器 fmq=fmq; TH0=0Xf5; TL0=0Xaa; TR0=1;void delay(uint ms) /延时函数 uchar t; whi
38、le(ms-) for(t = 0; t 120; t+); void disp_inilcd() /液晶显示 lcd_pos(1,1); lcd_write(1, y); lcd_write(1, u); lcd_write(1, z); lcd_write(1, :); lcd_pos(1,8); lcd_write(1, D); lcd_write(1, Q); lcd_write(1, :); lcd_pos(2,1); lcd_write(1, s); lcd_write(1, e); lcd_write(1, t); lcd_write(1, :); void disp_temp(
39、uchar temp)/温度转换 lcd_write(1,(temp/100)+0x30); lcd_write(1, (temp%100)/10+0x30); lcd_write(1, (temp%10)+0x30) ;void get_temp() uchar TL, TH;ReadyReadTemp(); /读温度准备TL=ReadOneChar(); /先读的是温度值低位TH=ReadOneChar(); /接着读的是温度值高位temp_dq=TH*16+TL/16; /实际温度值=(TH*256+TL)/16,即:TH*16+TL/16 /这样得出的是温度的整数部分,小数部分被丢弃了
40、 /* 按键 */ void run_key() unsigned int i; unsigned int j; uchar key_zhi; key_zhi=scankey(); /查询按键,如果没有按键按下,键值为0xff,否则就是0-f的键值 if(key_zhi!=0xff) if(key_zhi=0x0a) /按下了“警告设置”功能键 status=1; input_l=0;/按键输入的高中低三位定义 input_m=0; input_h=0; lcd_pos(1,14); /显示SET,表示进入设定状态; lcd_write(1, S); lcd_write(1, E); lcd_
41、write(1, T); fmq=1; /在设置状态关掉蜂鸣器 i=1; if(key_zhi=0x0d&status=1&i=1)/按下了“警告确定”功能键,对刚才的设置不做保存 status=0;/使系统回到工作状态 if(input_h*100+input_m*10+input_l)=33) /如果输入的值小于51大于33就保存该值 SDA = 1; / SDA=1,SCL=1,使主从设备处于空闲状态 SCL = 1; temp_set=(input_h*100+input_m*10+input_l); WriteSet(8,temp_set);/保存设定的温度数值 lcd_pos(1,
42、14); /消隐字符; lcd_write(1, ); lcd_write(1, ); lcd_write(1, ); lcd_write(1, ); lcd_pos(2,14); /消隐字符; lcd_write(1, ); lcd_write(1, ); lcd_write(1, ); lcd_write(1, ); lcd_pos(2,5); /显示之前存储的温度数值; disp_temp(ReadSet(0x08); fmq=1; i=0; if(key_zhi=0x0e) /按下了“预置设置”功能键 status=1; input_l=0; input_m=0; input_h=0;
43、 lcd_pos(1,14); /显示YUZ,表示进入设定状态; lcd_write(1, Y); lcd_write(1, U); lcd_write(1, Z); fmq=1; /在设置状态关掉蜂鸣器 j=1; if(key_zhi=0x0d&status=1&j=1)/按下了“预置确定”功能键,对刚才的设置不做保存 status=0; /使系统回到工作状态 if(input_h*100+input_m*10+input_l)=20) /如果输入的值大于20小于33就保存该值 SDA = 1; / SDA=1,SCL=1,使主从设备处于空闲状态 SCL = 1; temp_yuz=(input_h*100+input_m*10+input_l); WriteSet(12,temp_yuz);/保存设定的温度数值 lcd_pos(1,14); /消隐字符; lcd_writ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025赤峰市林西县招聘14名专职消防员模拟笔试试题及答案解析
- 深度解析(2026)《GBT 26831.5-2017社区能源计量抄收系统规范 第5部分:无线中继》(2026年)深度解析
- 深度解析(2026)《GBT 26020-2010金废料分类和技术条件》(2026年)深度解析
- 2025云南昆明市第三人民医院“凤凰引进计划”高层次人才招引考试笔试备考题库及答案解析
- 2025年12月江苏南京江北新区教育局所属部分事业单位招聘教师20人参考考试试题及答案解析
- 2025甘肃中兰能投有限公司贵州分公司招聘备考考试试题及答案解析
- 2025天津市西青经开区投资促进有限公司第二批次招聘工作人员3人考试笔试备考题库及答案解析
- 锦江区新兴领域党建工作专员招募(20人)参考考试题库及答案解析
- 2025安徽淮北濉溪县龙华高级中学教师招聘20人备考笔试题库及答案解析
- 2025重庆大学高端装备机械传动全国重点实验室科研团队劳务派遣技术人员招聘考试参考试题及答案解析
- 2025中原农业保险股份有限公司招聘67人笔试备考重点试题及答案解析
- 2025中原农业保险股份有限公司招聘67人备考考试试题及答案解析
- 2025年度河北省机关事业单位技术工人晋升高级工考试练习题附正确答案
- 交通运输布局及其对区域发展的影响课时教案
- 2025年中医院护理核心制度理论知识考核试题及答案
- GB/T 17981-2025空气调节系统经济运行
- 比亚迪储能项目介绍
- 2025 年高职酒店管理与数字化运营(智能服务)试题及答案
- 2025年9月广东深圳市福田区事业单位选聘博士11人备考题库附答案
- 糖尿病足溃疡VSD治疗创面氧自由基清除方案
- 《公司治理》期末考试复习题库(含答案)
评论
0/150
提交评论