职场文秘网

首页 > 心得体会 > 会议发言 / 正文

基于单片机的智能温控风扇设计毕业设计

2020-08-19 10:10:31

XX职业技术学院 毕业设计论文 作者 学号 系部 电子信息学院 专业 物联网应用技术 题目 基于单片机的智能温控风扇设计 指导教师 评阅教师 完成时间:2014年X月 X日 摘要:本次设计的单片机系统是基于单片机的智能电风扇设计。使用的控制芯片是AT89C51,用数字温度传感器DS18B20检测温度并通过数码管显示,通过继电器来实现小电流的单片机控制大电流的电风扇电机工作,利用单片机内部定时器实现电风扇定时时间的设定。本套系统的软件程序思想主要是通过实时温度与设定的温度上下限值进行比较后,控制电风扇启停、强弱挡,最终使环境维持让人舒适的温度。

用户可以根据自身需求自行设定温度上下限值、电风扇启停及工作时间。用户设定的温度上下限值通过软件程序自动保存在数字温度传感器DS18B20内部的EPPROM内存单元中,掉电后数据不会丢失,不必劳烦用户每次启动风扇反复重新设定温度上下限值。

【关键词】:智能,传感器,温控,风扇 ABSTRACT The design is based on single-chip control thermostat fan designed to sensitive sensing temperature sensing and display, the design AT89C51 control center, as the temperature sensor DS18B20 sensor senses the temperature of the internal timer set time set the length to control the intensity and wind speed fan switch The design of single chip microcomputer system is based on single chip microcomputer intelligent temperature control fan design. Through the relay to achieve small current SCM control large current of the electric fan motor work, realize electric fan timing time of internal microcontroller timer setting.This set of system software program thought mainly through real-time temperature and setting temperature upper and lower limit value after comparison, strong or weak and eventually make the environment to maintain a comfortable temperature . The user can according to their own needs to set temperature upper and lower limit, electric fan start-stop and working time.Users to set the temperature of the upper and lower limit value automatically by the software program stored in the digital temperature sensor DS18B20 the internal EPPROM memory unit, don't need to bother the user with each fan launched again and again to reset temperature limit up and down. 【KEY WORD】: Intelligence, sensors, temperature, fan 目 录 1、引言 1 2、总体设计 1 3、硬件设计 2 3.1 AT89C51单片机概述 2 3.1.1 AT89C51单片机组成 3 3.1.2.AT89C51单片机的引脚结构 4 3.2 DS18B20 单线数字温度传感器 5 4、系统电路设计 6 4.1 单片机最小系统电路设计 6 4.1.1 AT89C51单片机的最小系统 6 4.2 按键电路设计 7 4.3 控制电路设计 8 4.3.1温度控制电路设计 8 4.3.2声响控制电路设计 8 4.4 温控自动电路设计 9 4.4.1 双向晶闸管介绍 9 4.4.2 继电器介绍 9 4.4.3 电路设计 9 4.5 数码显示电路设计 10 4.6 电源电路设计 11 4.6.1 LM7805集成稳压器介绍 11 4.6.2电路设计 11 5、软件设计 12 5.1 总体设计思想 12 5.2 各部分的软件框图和程序 12 5.2.1 主程序流程图 12 5.2.2 温度显示子程序流程图 13 总结 13 附录 14 附录一 电路原理图 14 附录二 源程序 15 致谢 31 参考文献 32 1、引言 电扇是人们日常生活中常用的降温工具,从开始的吊扇到现在的USB风扇,无处不见电扇的踪迹。虽然如今空调已经走进千家万户,但是电扇的低位还是无可取代,作为一种节能环保,并且廉价简单的降温工具,电扇还在很多人家发挥着自己独特的作用。顺应时代潮流,各种多功能的风扇逐渐在取代传统风扇。单片机作为一种智能化程度高,控制精度高,操作简单,廉价易得,抗干扰能力强等特点,越来越多的应用于智能化产品之中。  市场上智能风扇产品相继问世,制作方法也多种多样,功能也逐渐完善,普遍都具有了手动变速和定时关闭等功能,相对而言,具备人性化,智能化的风扇还是很少,使用也并不广泛,而且在电子工艺高度发展的今天,智能化的步伐也越来越快,尤其是中国这个高速发展的国家,电扇的智能化也该向前迈进一个步伐。在中国市场上风扇还是有一定的市场份额的,几乎每个家庭都有风扇,具备价格便宜,摆放轻便,体积灵巧等特点,使得风扇在中小城市以及乡村将来一段时间内仍然会占有市场的大部分份额,为提高风扇的市场竞争力,使之在技术含量上有所提高,满足智能化的要求,智能风扇很具竞争力。大学四年即将结束,为了检验自己的学习情况,我决定使用之前所学习到的硬件只是结合相关的软件基础来制作一个基于单片机的智能温控风扇。  基于对人性化与智能化相结合的考虑,同时基于对价格的考虑,本设计决定制作一个基于51单片机的智能温控风扇,该风扇具有随温度自动调节风速的功能,并且在无人时可以自动关闭,而且可以根据每个人的不同情况来设定基准温度,从而实现了人性化与智能化的双重目标。

2、总体设计 本设计的整体思路是:利用温度传感器DS18B20来检测环境温度,并直接输出数字温度给51单片机进行处理,并将实时温度、设置温度、风速显示在液晶12864上。设置温度辅以2个可调按键,一个提高设置温度,一个降低设置温度,设置温度只能是整数型式,检测到的环境温度可以精确到小数点后一位。本系统还配备一个红外探头,探测出风范围内是否有人,若无人则自动关闭风扇。

如图2-1所示。

图2-1 硬件总体框图 3、硬件设计 3.1 AT89C51单片机概述 在20世纪70年代时,当时的微电子技术正处在一个发展阶段,集成电路也属于中规模的发展时期,对于新材料新工艺尚未进入成熟阶段,单片机也是如此,仍处在一个初级的发展阶段,元件集成规模还比较小,功能也比较简单,一般包括CPU、RAM,有的还包括了一些比较简单的I/O口,将I/O口集成到芯片上,单片机还组要将一些外围的其他处理电路共同构成一个完整的计算系统。类似的单片机还有Z80微处理器。  1976年由INTEL公司推出的MCS-48单片机,这个时期的单片机才是真正的8位单片微型计算机,因此逐渐推向了市场。MCS-48单片机由于它的体积小,功能全,价格低在市场上得到了广泛的应用,这为单片机的发展奠定了基础,在单片机的发展史上增添了亮丽的一笔,一个重要的里程碑。  其后单片机进入多功能强大的发展阶段,由若干但公司研发约有几十个品种,将近300多个系列,此时才算是真正进入单片机时代,普遍的单片机均集成CPU、RAM、ROM、I/O接口也很多、中断系统相当丰富,并且部分单片机还自带A/D转换器,功能性很强大强大,RAM和ROM的容量也日趋增长,寻址空间可达64kB,此时的单片机发展到了一个新纪元,应用领域也日趋广泛,单片机控制的智能化的电器也便走上了发展道路。    上个世纪90年代单片机如雨后春笋一般,MOTOROLA公司推出MC68HC系列单片机, 随后NTEL公司推出了80960超级32位单片机并且将相关产品投放市场,成为单片机发展历史上的一个里程碑。

3.1.1 AT89C51单片机组成 如图3-1所示 图3-1 AT89C51单片机组成结构图 目前使用较为广泛的主要是89C5X系列的单片机,都采用了标准的MCS-51控制内核,并且此系列单片机品种齐全、性能可靠、小体积、价格便宜、供货充足、调试和编程都十分方便,所以应用比较广泛。

AT89C51是CMOS 结构8位单片机,具有低功耗、电压低、性能好等优点,该单片机内部具有一个内存大小为8KB的FLASH EPPROM,可反复擦除程序10000次,设计时采用了CMOS和ATMEL公司的高集成度、数据不易丢失的存储器技术,片内FLASH存储器可以使用常规的非易失性存储编程器进行编写。因此,STC89C52是一种功能强大,使用灵活并且价格低廉的单片机,可广泛应用于各个控制领域。

AT89C51单片机的主要特性如下:
1.8KB可反复擦写程序的FLASH存储器;

2.全表态工作 :0~24HZ;

3.256x8字节的内部RAM;

4.32个外部双向输入、输出IO口;

3.1.2.AT89C51单片机的引脚结构。

如图3-2所示。

图3-2 AT89C51单片机的管脚分布 表3-1 AT89C51单片机的引脚功能 引脚 引脚功能 VCC 电源电压 GND 接地 P0口 P0口是双向8位三态IO口,每个IO口都可以独立控制,它不带上拉电路,主要用作数据和地址的输入输出。

P1 P1口试一个普通的输入输出口,其内部带有上拉电阻,也就是说不需要外接上拉电阻。在对其进行数据读写操作时方法同P0口。

P2 P2口与P1口功能相同,在使用时除像P1口做驱动口外还与P0口构成地址的高8位,与P0口形成16位地址的输入输出数据操作。

P3 P3端口除普通IO口功能外,还有第二功能。

RST 单片机复位引脚,当RST复位引脚上出现两个或两个以上机器周期高电平再变为低电平,单片机将完成复位动作。

表3-2 P3口的第二功能表 端口引脚 第二功能 P3.0 RXD(串行输出口) P3.1 TXD(串行输入口) P3.2 INT0(外部中断0) P3.3 INT1(外部中断1) P3.4 T0(定时/计数器0) P3.5 T1(定时/计数器1) P3.6 WR(外部数据写) P3.7 RD(外部数据读) XTAL1:外接时钟引脚。单片机外接晶振电路的输入端。片内震荡电路的输入端。

XTAL2:外接时钟引脚。单片机外接晶振电路的输出端。片内震荡电路的输出端。

3.2 DS18B20 单线数字温度传感器 温度传感器介绍 DS18B20 是数字温度传感器。其主要优点是体积小、价格低、精度高。用它做温度测量系统的设计时,可以使电路更简单,在一根通信线以上,可以挂很多的DS18B20温度传感器,使用非常方便。

数字温度传感器DS18B20的实物图。

如图3-3所示 图3-3 DS18B20 实物图 DS18B20 数字温度传感器主要由4 部分组成:64 位的ROM、温度传感器、非挥发的温度报警触发器TH 和TL及配置寄存器。

数字温度传感器DS18B20的内部结构。

如图3-4所示。

图3-4 DS18B20 内部结构图 表3-3 DS18B20传感器引脚图 序号 名称 DS18B20引脚功能说明 1 GND 地信号 2 DQ 数据输入/输出引脚,单总线接口。

3 VDD 可选择的VDD引脚。

4、系统电路设计 4.1 单片机最小系统电路设计 4.1.1 AT89C51单片机的最小系统。

如图4-1所示。

图4-1 AT89C51单片机的组成结构图 (1) 时钟电路 时钟电路是能够为AT89C51单片机产生工作所必须的时钟信号,AT89C51单片机本身就是一个复杂的同步时序电路。AT89C51单片机在唯一的时钟信号的严格控制下按时序执行指令 ,MCU时钟频率会影响速度和稳定性。通常时钟有两种:外部时钟和内部时钟。

本系统使用的内部时钟系统提供时钟信号。AT89C51单片机内部自带的震荡器是一个高增益反向放大器,XTAL1和XTAL2分别为芯片外部时钟的输入输出端口,它们跨接在晶体振荡器和微调电容之间使用。

对于晶振电路电容的选择,如果所选电容太小,就会影响系统的快速性、稳定性及振荡的频率,所以C1、C2电容一般选在30pf左右。晶振一般选用范围为1.2MHZ到12MHZ,单片机使用越高的晶振频率就可以得到越高的运行速度,但是这对存储器的存储速度提出了更高的要求。为了提升晶振电路的稳定性,一般选用温度稳定性好的瓷片电容及频率为12MHZ的晶振。

时钟电路图如图4-2所示。

图4-2时钟电路图 (2) 复位电路 AT89C51单片机可以通过RST复位引脚进行初始化操作,其原理是让单片机程序从指定初始化地址开始执行程序。只要让AT89C51单片机的RST复位引脚上出现两个或两个以上机器周期的高电平,就可以使单片机程序复位,但是如果保持RST复位引脚一直是高电平,那么AT89C51单片机就一直循环复位,一旦RST复位引脚由高电平变为低电平后,单片机便复位成功。

复位电路如图4-3所示。

图4-3 复位电路图 4.2 按键电路设计 K1 是功能键,第一次按下时,可以对下限温度进行设置 第二次按下时,可以对上限温度进行设置 第三次按下时,恢复温度显示。

K2 是加一键,可以对上下限温度进行加一调整,长按时执行快速加一操作。

K3 是减一键,可以对上下限温度进行减一调整,长按时执行快速减一操作。

按键电路如图4-4所示。

图4-4 按键电路图 4.3 控制电路设计 4.3.1温度控制电路设计 温度采集电路主要是由数字温度传感器DS18B20组成的。它能够把采集的温度数据转化成二进制数,经过单片机处理后变为十进制,最后通过数码管显示。

如图4-5温控传感器电路 图4-5传感器电路图 4.3.2声响控制电路设计 该电路主要由数字温度传感器DS18B20、三个按键、一个PNP型三极管和一个蜂鸣器等组成的。

声响电路在每按下按键时会响一声,当没DS18B20数字温度传感器数值超过或低于温度上下限时,单片机就会通过蜂鸣器发出警报声音。

声音电路会在每个按键的按下时响一声,当数字温度传感器DS18B20没有温度数据输出时,单片机将通过蜂鸣器发出报警声音。

上下限温度值主要是通过按键K1、K2、K3来设定。按键K1、K2、K3分别接入单片机 的P1.4、P1.5、P1.6脚。

电路如图4-6所示 图4-6 声响控制电路图 4.4 温控自动电路 4.4.1 双向晶闸管介绍 双向晶闸管,具有对称性的特点,使它能够在两个方向上导通,是一种理想的交流开关装置。

双向晶闸管由N-P-N-P-N五层半导体制成的,从中引出了三个电极。双向晶闸管也可以视为两个单向晶闸管反向并联,但它只有一个控制极。

4.4.2 继电器介绍 继电器是一种电气控制器件。它具有控制系统和被控制系统。经常用在自动控制电路中,它的基本原理是用小电流控制大电流运作,相当于一种“自动开关”。因此继电器在电路中得到了广泛应用,如用于自动调节、安全保护、转换电路等。

4.4.3 电路设计 该电路的主要功能是根据单片机给出的信号来控制继电器,从而控制电风扇。正常情况下,电风扇工作状态默认为弱风挡,当实时温度低于温度下限TL时,继电器1吸合,关闭风扇;
当实时温度高于温度上限时,继电器2吸合,切换到强风档。

电路如图4-7所示。

图4-7温控自动电路 4.5 数码显示电路 显示电路部分包括5个共阳极八段数码管,PNP型晶体管,电阻器等。用单片机的P0端口连接共阳极数码管的8位数据端用来提供段选数据,用单片机的P2端口的P2.3—P2.7连接数码管的片选端用来提供片选信号输,用8550(PNP型)三极管搭建驱动电路驱动来驱动数码管显示。因为P0口内部没有上拉电阻,所以在P0接一个10K的排阻到电源。为防止对数码管的损坏,在P0端口各加一个300欧姆的限流电阻。过P0口把要显示的数据通送给数码管,并且通过P2.7—P2.3五个端口轮流打开数码管的位选通,由于每位数码管刷新显示的时间十分短(扫描周期在20ms左右)和人眼视觉暂留,所以我们基本看不出它的闪烁,而是固定同步显示各数据。

电路如图4-8所示。

图4-8数码管显示电路 4.6 电源电路 4.6.1 LM7805集成稳压器介绍 三端稳压器LM7805是常见的,可以提供5V直流输出电压,其应用范围非常广泛,包含的调节器的过流保护电路和过载保护电路。如果使用散热器,可以继续提供1A的输出电流,如果使用周边设备相互配合,可以提供不同的电压和电流。

电路如图4-9所示。

图4-9LM7805引脚图 4.6.2电路设计 本系统设计的电源电路采用9V变压器将220V交流电变为9V交流电,然后经过整流电路、2200uf电解电容滤波后变为较平稳的直流电,再送给LM7805稳压器变为平整的直流电,最后通过220uf电解电容、104pf瓷片电容滤去电压中的毛刺电压,最后得到5V稳压电源。

电路如图4-10所示。

图4-10 电源电路图 5、软件设计 5.1 总体设计思想 本系统是基于AT89C51单片机设计的。

首先是软件检测数字温度传感器DS18B20工作是否正常,如果发现系统检测不到数字温度传感器DS18B20采集的温度数据时,蜂鸣器发出报警信息,提示用户检查系统或更换数字温度传感器DS18B20。系统检测正常时,通过3个功能按键K1、K2、K3来设定好系统温度上下限值后,按确认键,系统进入正常运行状态。通过对数字温度传感器DS18B20进行数据采集,用数码管显示实时温度。当实时温度低于或高于设定温度上下限时,通过单片机输出信号控制继电器关断从而控制电风扇启停、强弱风挡的切换,从而达到环境温度的调控目的。

5.2 各部分的软件框图和程序 5.2.1 主程序流程图 主程序流程图如图5-1所示。

图5-1 主程序流程图 5.2.2 温度显示子程序流程图 数码管显示子程序流程图如图5-2所示。

图5-2 DS18B20复位与检测子程序流程图总 结 到目前为止,我的论文基本完成。从最初的无从下手,毫无头绪,再到对思路的清晰,整个设计过程都是对我的考验。

因为我对电路一直都挺感兴趣的,我开始思考我的论文题目,从定下论文题目后,我开始收集材料,尽量让我的资料更加完整,在之后在写作的过程中,我也遇到了许多的问题,多亏了老师的指导和同学们的帮助,我才能把论文慢慢成形。当我终于完成了所有的任务之后,看着我的论文,我觉得一切都是值得的。这次毕业论文的制作过程让我更加了解了自己,知道了独立思考的重要性。

我不会忘记这次在毕业设计中所感受到的一切,这让我知道今后无论遇到任何事,都需要脚踏实地、认真谨慎,更要有不怕困难,坚持不懈的精神。

附 录 附录一 电路原理图 附录二 源程序 ;******************************************************************** ;精准温度显示温控自动风扇系统 * ;*说明: ;* 1、K1 → 按第一次进入设定低温动作温度值 TL 状态: ;* 2、K1 → 按第二次进入设定高温动作温度值 TH 状态: ;* 3、K1 → 按第三次显示当前温度值 ;* 4、设定过程:
K2 →加键, K3 →减键,可快速调 ; 5、当实时温度值在TL和TH之间时,开启弱风档;
当实时温度低于TL时,关闭 风扇;
当实时温度高于TH时,开启大风档。每次设置的TH和TL均被保存在 DS18B20的ROM ; 内,掉不需重新设置. * ;******************************************************************** TIMER_L DATA 23H TIMER_H DATA 24H TIMER_COUN DATA 25H TEMPL DATA 26H TEMPH DATA 27H TEMP_TH DATA 28H TEMP_TL DATA 29H TEMPHC DATA 2AH TEMPLC DATA 2BH TEMP_ZH DATA 2CH BEEP EQU P3.7 DATA_LINE EQU P3.3 C1 EQU P3.4 ;C1控制口,接继电器1 C2 EQU P3.5 ;C2控制口,接继电器2 FLAG1 EQU 20H.0 FLAG2 EQU 20H.1 ;------------------------------------------------- K1 EQU P1.4 K2 EQU P1.5 K3 EQU P1.6 ;================================================= ORG 0000H JMP MAIN ORG 000BH AJMP INT_T0 ;-------------------------------------------------- MAIN: MOV SP,#30H MOV TMOD,#01H ;T0,方式1 MOV TIMER_L,#00H ;50ms定时值 MOV TIMER_H,#4CH MOV TIMER_COUN,#00H ;中断计数 MOV IE,#82H ;EA=1,ET0=1 LCALL READ_E2 MOV 20H,#00H SETB BEEP SETB C1 setb C2 MOV 7FH,#0AH ;熄灭符 CALL RESET ;复位与检测DS18B20 JNB FLAG1,MAIN1 JMP START MAIN1: CALL RESET JB FLAG1,START LCALL BEEP_BL JMP MAIN1 START: MOV A,#0CCH ; 跳过ROM匹配 CALL WRITE MOV A,#044H ; 发出温度转换命令 CALL WRITE CALL RESET MOV A,#0CCH ; 跳过ROM匹配 CALL WRITE MOV A,#0BEH ; 发出读温度命令 CALL WRITE CALL READ ;读温度数据 CALL CONVTEMP CALL DISPBCD CALL DISP1 CALL SCANKEY LCALL TEMP_COMP JMP MAIN1 ;==================================================== ;功能键扫描子程序 ;==================================================== SCANKEY: MOV P1,#0F0H JB K1,SCAN_K2 CALL BEEP_BL SCAN_K1: CALL ALERT_TL CALL ALERT_PLAY JB K1,SCAN_K1 CALL BEEP_BL SCAN_K11: CALL ALERT_TH CALL ALERT_PLAY JB K1,SCAN_K11 CALL BEEP_BL SCAN_K2: JB K2,SCAN_K3 CALL BEEP_BL SCAN_K3: JB K3,SCAN_END CALL BEEP_BL LCALL RESET_ALERT LCALL RE_18B20 LCALL WRITE_E2 SCAN_END: RET ;================================================ ;设置动作温度值TL,TH ;================================================ RESET_ALERT: CALL ALERT_TL CALL ALERT_PLAY JNB K3,$ ;K3为位移键 SETB TR0 RESET_TL: CALL ALERT_PLAY JNB FLAG2,R_TL01 mov 75H,7fh ;消影 mov 76H,7fh CALL ALERT_PLAY JMP R_TL02 R_TL01: CALL ALERT_TL mov 75h,7Eh ;送设定值 mov 76h,7Dh CALL ALERT_PLAY R_TL02: JNB K1,K011A JNB K2,K011B JNB K3,RESET_TH JMP RESET_TL K011A: INC TEMP_TL MOV A,TEMP_TL CJNE A,#120,K012A ;没有到设定上限值,转 MOV TEMP_TL,#0 K012A: CALL TL_DEL JMP RESET_TL K011B: MOV A,TEMP_TL CJNE A,#00H,K ;没有到设定下限值,转 MOV TEMP_TL,#120 K: DEC TEMP_TL K012B: CALL TL_DEL JMP RESET_TL ;------------------------------------------------------- RESET_TH: CALL BEEP_BL JNB K3,$ RESET_TH1: CALL ALERT_PLAY JNB FLAG2,R_TH01 mov 75H,7fh ;消影 mov 76H,7fh CALL ALERT_PLAY JMP R_TH02 R_TH01: CALL ALERT_TH mov 75h,7Eh ; mov 76h,7Dh CALL ALERT_PLAY R_TH02: JNB K1,K021A JNB K2,K021B JNB K3,K002 JMP RESET_TH1 K021A: INC TEMP_TH MOV A,TEMP_TH CJNE A,#120,K022A ;没有到设定上限值,转 MOV TEMP_TH,#0 K022A: CALL TH_DEL JMP RESET_TH1 K021B: MOV A,TEMP_TH CJNE A,#00H,K023B ;没有到设定下限值,转 MOV TEMP_TH,#120 K023B: DEC TEMP_TH K022B: CALL TH_DEL JMP RESET_TH1 K002: CALL BEEP_BL CLR TR0 ;关闭中断 RET ;----------------------------------------------------- ;键延时子程序 ;----------------------------------------------------- TL_DEL: ;设定温度低值TL延时 MOV R2,#0AH TL_DEL1: CALL ALERT_TL CALL ALERT_PLAY DJNZ R2,TL_DEL1 RET TH_DEL: ;设定温度高值TH延时 MOV R2,#0AH TH_DEL1: CALL ALERT_TH CALL ALERT_PLAY DJNZ R2,TH_DEL1 RET ;==================================================== ;闪动显示标记符 H、L、O ;==================================================== TEMP_COMP: SETB TR0 ;启动中断 MOV A,TEMP_TH SUBB A,#01H SUBB A,TEMP_ZH JC CHULI1 MOV A,TEMP_ZH SUBB A,TEMP_TL JC CHULI2 JNB FLAG2,T_COMP1 ;FLAG2=0,显示标记字符 MOV 74H,#0AH ;熄灭符 LCALL DISP1 JMP T_COMP2 T_COMP1: MOV 74H,#00H LCALL DISP1 ;显示“O“ T_COMP2: SETB C1 ;继电器1断开 SETB C2 ;继电器2断开 CLR TR0 ;关闭中断 RET ;--------------------------------------------- ;超温处理 ;--------------------------------------------- CHULI1: CLR C1 CLR C2 ;继电器2吸合 JNB FLAG2,CHULI10 MOV 74H,#0AH ;熄灭符 LCALL DISP1 JMP CHULI11 CHULI10: MOV 74H,#0DH LCALL DISP1 ;显示“H“ CHULI11: CLR TR0 ;关闭中断 RET ;--------------------------------------------- ;欠温处理 ;--------------------------------------------- CHULI2: CLR C1 SETB C2 ;继电器2断开 JNB FLAG2,CHULI20 MOV 74H,#0AH ;熄灭符 LCALL DISP1 JMP CHULI21 CHULI20: MOV 74H,#0CH LCALL DISP1 ;显示“L“ CHULI21: CLR TR0 RET ;------------------------------------------------------------ WRITE_E2: CALL RESET MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE MOV A,#48H ;动作温度设定值拷贝到EEROM LCALL WRITE RET ;------------------------------------------------------------- READ_E2: CALL RESET MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE MOV A,#0B8H ;动作温度值拷贝回暂存器 CALL WRITE RET ;***************************************************** ; 处理温度 BCD 码子程序 ;**************************************************** CONVTEMP: MOV A,TEMPH ANL A,#80H JZ TEMPC1 ;温度零上转 CLR C MOV A,TEMPL ;二进制数求补(双字节) CPL A ;取反加1 ADD A,#01H MOV TEMPL,A MOV A,TEMPH ;- CPL A ADDC A,#00H MOV TEMPH,A ;TEMPHC HI =符号位 MOV TEMPHC,#0BH SJMP TEMPC11 TEMPC1: MOV TEMPHC,#0AH ; TEMPC11: MOV A,TEMPHC SWAP A MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH ;乘0.0625 MOV DPTR,#TEMPDOTTAB MOVC A,@A+DPTR MOV TEMPLC,A MOV A,TEMPL ;整数部分 ANL A,#0F0H SWAP A MOV TEMPL,A MOV A,TEMPH ANL A,#0FH SWAP A ORL A,TEMPL MOV TEMP_ZH,A ;组合后的值存入TEMP_ZH LCALL HEX2BCD1 MOV TEMPL,A ANL A,#0F0H SWAP A ORL A,TEMPHC MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH SWAP A ;TEMPLC HI = 个位数 BCD ORL A,TEMPLC MOV TEMPLC,A MOV A,R7 JZ TEMPC12 ANL A,#0FH SWAP A MOV R7,A MOV A,TEMPHC ANL A,#0FH ORL A,R7 MOV TEMPHC,A TEMPC12: RET ;----------------------------------------------------------- ; 小数部分码表 ;----------------------------------------------------------- TEMPDOTTAB: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H DB 06H,07H,08H,08H,09H,09H ;=========================================================== DISPBCD: MOV A,TEMPLC ANL A,#0FH MOV 70H,A ;小数位 MOV A,TEMPLC SWAP A ANL A,#0FH MOV 71H,A ;个位 MOV A,TEMPHC ANL A,#0FH MOV 72H,A ;十位 MOV A,TEMPHC SWAP A ANL A,#0FH MOV 73H,A ;百位 MOV A,TEMPHC ANL A,#0F0H CJNE A,#010H,DISPBCD0 SJMP DISPBCD2 DISPBCD0: MOV A,TEMPHC ANL A,#0FH JNZ DISPBCD2 ;十位数是0 MOV A,TEMPHC SWAP A ANL A,#0FH MOV 73H,#0AH ;符号位不显示 MOV 72H,A ;十位数显示符号 DISPBCD2: RET ;*************************************************************** ; 温度显示子程序 ;*************************************************************** DISP1: MOV R1,#70H ;指向显示数据首址 MOV R5,#7FH ;扫描控制字初值 PLAY: MOV P0,#0FFH MOV A,R5 MOV P2,A MOV A,@R1 ;取显示数据到A MOV DPTR,#TAB ;取段码表地址 MOVC A,@A+DPTR ;查显示数据对应段码 MOV P0,A ;段码放入P0口 MOV A,R5 JB ACC.6,LOOP5 CLR P0.7 LOOP5: LCALL DL_MS INC R1 ;指向下一个地址 MOV A,R5 ;放回 R5 内 JNB ACC.3,ENDOUT RR A ;A 中数据循环左移 MOV R5,A ;放入 R5 中 AJMP PLAY ;跳回 PLAY 循环 ENDOUT: MOV P0,#0FFH ;一次显示结束,P0口复位 MOV P2,#0FFH ;P2口复位 RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0C7H,89H DL_MS: MOV R6,#0AH DL1: MOV R7,#64H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET ;****************************************************** ;单字节十六进制转 BCD ;****************************************************** HEX2BCD1: MOV B,#064H DIV AB MOV R7,A MOV A,#0AH XCH A,B DIV AB SWAP A ORL A,B RET ;=============================================== ;报警值 TH、TL 数据转换 ;=============================================== ALERT_TL: MOV 79H,#0CH MOV 78H,#0BH MOV A,TEMP_TL MOV R0,#77H MOV B,#064H DIV AB CJNE A,#01H,ALERT_TL1 MOV @R0,A JMP ALERT_TL2 ALERT_TL1: MOV A,#0BH ;显示“-” MOV @R0,A ALERT_TL2: MOV A,#0AH XCH A,B DIV AB DEC R0 MOV @R0,A MOV 7DH,A DEC R0 MOV @R0,B MOV 7EH,B RET ;----------------------------------------------- ALERT_TH: MOV 79H,#0DH MOV 78H,#0BH MOV A,TEMP_TH MOV R0,#77H MOV B,#064H DIV AB CJNE A,#01H,ALERT_TH1 MOV @R0,A JMP ALERT_TH2 ALERT_TH1: MOV A,#0BH ;显示“-” MOV @R0,A ALERT_TH2: MOV A,#0AH XCH A,B DIV AB DEC R0 MOV @R0,A MOV 7DH,A DEC R0 MOV @R0,B MOV 7EH,B RET ;=============================================== ;动作温度设定值显示子程序 ;=============================================== ALERT_PLAY: MOV R1,#75H ;指向显示数据首址 MOV R5,#7FH ;扫描控制字初值 A_PLAY: MOV P0,#0FFH MOV A,R5 ;扫描字放入A MOV P2,A MOV A,@R1 ;取显示数据到A MOV DPTR,#ALERT_TAB ;取段码表地址 MOVC A,@A+DPTR ;查显示数据对应段码 MOV P0,A ;段码放入P0口 LCALL DL_MS1 INC R1 ;指向下一个地址 MOV A,R5 JNB ACC.3,ENDOUT1 RR A ;A 中数据循环左移 MOV R5,A ;放入 R5 中 AJMP A_PLAY ;跳回 PLAY 循环 ENDOUT1: MOV P0,#0FFH ;一次显示结束,P0口复位 MOV P2,#0FFH ;P2口复位 RET ALERT_TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0C7H,89H ;共阳段码表 “0“ “1“ “2“ “3“ “4““5““6““7““8““9““灭“ “-“ DL_MS1: MOV R6,#0AH ADL1: MOV R7,#64H ADL2: DJNZ R7,ADL2 DJNZ R6,ADL1 RET ;=============================================== 致 谢 在本次制作毕业设计的过程中,通过实践,我学到了很多实用的专业知识技能,充分实现了理论与实践的结合,这也使我对于单片机的知识及应用有了更深层次的了解。这次的毕业设计不仅锻炼了我的实践能力,而且也让我知道做任何事都需要理论结合实际,通过实践来验证自己的观点,对于专业知识的积累也有很大的帮助。

最后感谢我的老师,并感谢一路陪伴我走来的同学们,是他们的帮助成就了我今天的成绩。经过这段时间的努力及老师同学们的帮助,毕业设计也将近尾声了。我相信通过这次的设计,以及在这个过程中老师的点拨和帮助,在今后的过程中我一定努力做到更好。

在此感谢老师的指导和建议,同时也感谢在设计过程中同学的帮助。

参考文献 [1] 胡汉才.单片机原理及其接口技术.北京:清华大学出版社,2004 [2] 刘国钧,陈绍业,王凤翥.图书馆目录.第1版.北京:高等教育出版社,1957 [3] 求是科技.单片机典型模块设计实例导航.北京:人民邮电出版社,2004 [4] 王化详,张淑英.传感器原理.天津:天津大学出版社,2002 [5] 荣俊昌.新型电风扇原理与维修.北京:高等教育出版社,2004 [6] 王港元.电工电子实践指导.江西:江西科学技术出版社,2005 [7] 余小平,奚大顺.电子系统设计[M].北京:航空航天大学出版社,2007.37-53 [8] 来清民.传感器与单片机接口及实例[M].北京:航空航天大学出版社,2008.90-92 [9] 刘健,徐炜,伊均萍,刘良成.电路分析[M].北京:电子工业出版社,2005.75-79 [10] 郑海春、姜月.智能无线防盗报警系统.西化:微计算机信息, 2009(2).21-43 [11] 童诗白、华成英.模拟电子技术基础(第三版).北京:高等教育出版社,2007.12

Tags: 毕业设计   单片机   风扇  

搜索
网站分类
标签列表