您的当前位置:首页正文

基于单片机的多功能台灯设计

2022-01-31 来源:好走旅游网


毕 业 设 计

题目 基于单片机的多功能台灯设计

院(系) 电子电气工程学院 指导教师 赵 波 职 称 讲 师 二O一二年 五 月 二十 日

淄博职业学院毕业设计 摘要

摘 要

随着时代的进步,科学技术的发展,单片机已经渗透到我们生活中的各个角落。伴随着人们生活水平的提高,人们对日常生活用品的功能和集成度的要求也越来越高,并且人们的低碳环保理念也越来越强。台灯是我们生活中的必需品,使用非常广泛,对此设计了多功能台灯。

该设计以51系列单片机AT89S52为控制核心,来实现集多种功能于一体的电子台灯,设计系统时采用模块化的设计方法,分别设计了各个功能的单元模块,系统的硬件部分主要包括八大部分。单片机最小系统选用AT89S52单片机;温度传感器电路主要由数字芯片DS18B20来完成;显示模块用LCD1602A来显示温度、时间和日期等内容;按键模块用来调整时间、日期,电位器来调整LED的亮度;闹钟模块选用时钟芯片DS1302完成,来产生时间和日期,当液晶显示的当前时间和闹钟设定的时间一致时,用蜂鸣器来报警。系统的软件部分用单片机C语言来编程,实现了该设计全部控制功能。该多功能台灯可以显示当前温度、时间和日期、调节灯泡的照明强度、可以设置闹钟时间、具有闹钟报警功能。整个系统结构清晰明了,功能齐全,操作简单,具有很强的实用价值。

关键字:单片机;芯片;多功能

I

淄博职业学院毕业设计 Abstract

Abstract

With the progress of the times, the development of science and technology, SCM has been infiltrated into our lives in every corner. With the improvement of people's living standard, people on the daily necessities, function and integration requirements are also getting higher and higher, and people of low carbon environmental protection concept is also getting stronger and stronger. The lamp is necessary in our life, is widely used, this design of the multifunctional desk lamp. The design of 51 series single-chip microcomputer AT89S52 as the control core, to realize the integration of multiple functions of electronic lamps, the design of the system uses a modular design method, respectively, design of each function module, system hardware consists of eight parts. The smallest single-chip system selects AT89S52microcontroller; temperature sensor circuit is mainly composed of a digital chip DS18B20 to complete; display module using LCD1602A to display the temperature, time and date content; key module is used to adjust the time, date, a potentiometer to adjust the brightness of LED; alarm module selects the clock chip DS1302completed, to generate a time and date, when the liquid crystal display the current time and alarm set time, buzzer alarm. The software of system MCU C language programming, realize the design of all control function. The multifunctional desk lamp can display the current temperature, time and date, adjust the bulb lighting intensity, can set the alarm clock time, with alarm clock function. The structure of the whole system is clear, complete functions, simple operation, and has a strong practical value.

Keywords: Single chip microcomputer ;Chip ;Multi-function

II

淄博职业学院毕业设计 目录

目 录

摘 要 ............................................................. I Abstract .......................................................... II 目 录 ........................................................... III 第一章 绪论 ........................................................ 1

1.1 课题的背景 .................................................. 1 1.2 课题的目的和意义 ............................................ 1 1.3 课题研究的内容 .............................................. 2 1.4 国内外研究现状 .............................................. 2 第二章 系统方案的设计 .............................................. 3

2.1系统方案的确定 .............................................. 3 2.2系统设计的主要元器件介绍 .................................... 5 2.2.1单片机的介绍 ............................................ 5 2.2.2时钟芯片DS1302的介绍 ................................... 8 2.2.3温度传感器DS18B20的介绍 ................................ 9 第三章 电路的硬件与软件的设计 ................................... 11

3.1单片机控制电路的设计 ....................................... 11 3.2时钟电路的设计 ............................................. 11 3.3显示电路的设计 ............................................. 13 3.4温度测试电路的设计 ......................................... 14 3.5闹钟电路的设计 ............................................. 14 3.6按键电路的设计 ............................................. 15 3.7电源电路的设计与电路原理图 ................................. 15 3.8程序设计框图 ............................................... 17 第四章 总结与展望 ................................................. 30 谢 辞 ............................................................ 31 参考文献 .......................................................... 32 ................................................................... 32

III

淄博职业学院毕业设计 第一章 绪论

第一章 绪 论

1.1课题的背景

台灯已是千家万户的必需生活电器。在我国,照明耗电占年发电总量的12% (超过100亿kw•h) , 现在的台灯绝大部分是采用普通的白炽灯、荧光灯、节能灯和螺旋节能灯 ,并且功能单一,与现在家电的智能化,人性化,低碳设计理念相违背。

LED被认为是21世纪的照明光源。LED发光器件是冷光源,光效高,工作电压低,而且能耗低,可控制好、无辐射,同样亮度下,LED能耗为白炽灯的10%,荧光灯的50%。LED寿命可达10万小时,是荧光灯的10倍,白炽灯的100倍。随着能源紧缺、电价越来越高、环保要求及LED的光效的提高,用LED替代现在台灯普遍使用的白炽灯或荧光灯,环保无污染。另外,LED的光谱几乎全部集中于可见光频段,其发光效率可达80~90%,并且传统的台灯中的光源体使用的是交流电,所以每秒钟会产生100-120次的频闪。LED灯是把交流电直接转换为直流电,不会产生闪烁现象,保护眼睛,可以获得“柔和”的灯光环境。

家用电器因为单片机的加入而走向多功能化,并且随着人们生活水平的提高日益走向平民化,我们的生活也随着家用电器的发展越来越方便和舒适。随着家用电器的发展,作为家用电器当中的小台灯也逐步适应科技发展的步伐走向多功能化。虽然按键式的台灯依旧是台灯市场上的主体。但是随着现代电子技术的发展和人们需求的提高,传统的台灯已经感受到产品更新换代的威胁。

1.2课题的目的和意义

台灯不仅在功能上日趋于多功能化,同时在外观上也逐步向组合化、装饰化、情趣化方向发展。组合化是随着人们生活节奏的加快,一些方便实用、新颖、美观的组合台灯正在市场上兴起,有闹钟与台灯组合的,有温度计与台灯组合的,有电子钟与台灯组合的,也有笔架、文具盒等与台灯组合的,是台灯更具实用性。同时,有些台灯不仅具有现代化工艺,而且样式多样,工艺精湛,造型别具匠心,材质各异,颜色多样。消费者可以按照房间装饰风格以及家具风格来选取不同款式、质料的台灯,使台灯与室内布置形成一个完善的艺术整体。

灯具作为人们日常生活的必需品,目的就是为人们提供一个最佳的视觉光照环境。一个好的灯具设计,应该是以人为本的,不止功能上有优越性,而且在造型上要领先时尚潮流,符合大众审美观,还要为生产节省成本,注意环保,而不好的灯具设计恰好反之。在造型方面,会根据现时符合潮流的设计,让这款台灯在功能上和装饰上都能最大限度地满足人们的生活需求。对此,我提出了基于单

1

淄博职业学院毕业设计 第一章 绪论

片机的多功能台灯的设计。因此,我们提出多功能台灯方案。

当今设计的灯具不仅要有最佳的内在质量,而且还要简洁、明快、美观大方和安全经济,以满足人们生活、生产和文化娱乐的要求 ,为人们提供一个最佳的视觉光照环境。多功能台灯的市场是面向普通的家庭用户,作为一件家居产品而具有多种用途,意味着能够让用户免去购买其它对应功能产品的开支和麻烦,切身为用户的利益着想。所以,这类集众多功能于一身的产品具有一定的市场占有率。

1.3课题研究的内容

通过多功能台灯控制器的设计,复习巩固单片机的应用,了解51单片机的功能及使用方法,学习时钟芯片DS1302和温度传感器DS18B20的使用。初步了解项目的实施流程,为将来步入社会做准备。

本课题涉及的知识面较广,既包涵了大部分课程所学内容,如:51单片机,模拟,数字电路等,又有新的知识需要学习,如:温度传感器DS18B20的应用。通过新的器件的应用,学会如何去使用从未接触过的器件,消除对未知器件的恐惧感。

主要功能要求利用51单片机,实现电子时钟,闹钟,温度显示等功能。具体可分为以下几种:

1) 显示当前时间(24进制的时、分、秒)。 2) 可更改时间的时、分、秒的显示状态。 3) 可显示当前的室内温度。 4) 可调整台灯的亮度。

5) 可设置闹钟时间和实现闹钟报警。

1.4国内外研究现状

灯具行业的发展与电光源的发展有着紧密的关系,同时也与国力及人民生活水平有很大的关系。顾名思义,灯饰是具有照明功能和装饰效果的灯具,有时候往往装饰性优于照明功能。“灯饰”的称呼起源于港台,在大陆出现是在我国改革开放后的20世纪80年代中后期,20世纪90年代已完全被业内和市场所接受。改革开放前,我国的民用灯具几乎没有任何装饰效果,人们只是为了照明而用之。改革开放带来了社会的巨大变革,人们的居住环境得到改善,生活水平迅速提高。在购买灯具时,人们已不仅仅要求照明功能,还对灯具的款式、造型、色彩有了一定的要求,灯具的装饰效果因而逐渐体现,一个巨大的市场逐渐形成,而这也带动了一个行业的蓬勃发展。目前在引进国外先进光源的基础上,我国已研制设计出了许多符合我国国情的电光源生产设备,使我国电光源装备水平不断提高。

2

淄博职业学院毕业设计 第二章 系统方案的设计 第二章 系统方案的设计

2.1系统方案的确定

根据本设计的要求,该多功能台灯的整体设计可以分为以下八大模块: 1)单片机控制模块 2)时钟模块 3)显示模块 4)温度模块 5)闹钟模块 6)按键模块 7)台灯模块 8)红外感应模块

这七大模块以单片机控制系统为核心,来实现多功能台灯的各项要求,需要外接5V的直流电源,图2.1为单片机控制系统的结构框图。

显示模块 温度模块 台灯模块 单片机控制模块 闹钟模块 按键模块 时钟模块 红外感应 模块 图2.1单片机控制系统的结构框图

关于各个模块方案的设计如下: 1)单片机控制模块方案设计:

单片机的选择有以下几种方案:

方案一:采用AT89S51;方案二:采用AT89S52;方案三采用STC89S52。 方案一优点:价格便宜,可以基本实现全部功能,缺点:程序存储空间较小只有4K。

3

淄博职业学院毕业设计 第二章 系统方案的设计

方案二优点:程序存储空间相对较大,8K的程序存储器空间,后续扩展较为方便,缺点:需要采用并口下载,目前电脑没有并口。

方案三优点:采用串口方式下载,缺点:电子市场货源比较紧张。 本设计本是选择方案三,但是因为购置器件时,未买到SCT89S52,因此在设计中采用的是方案二。 2)时钟模块方案设计

该多功能台灯要求能够显示24进制的时、分、秒,可以有两种方案: 方案一:是利用单片机内部的定时器,采用软件编程的方法来实现时钟的功能;

方案二:是采用专门的时钟芯片DS1302来实现时钟的计时功能。 方案一优点:充分利用单片机内部资源,不需要外接电路,只需要通过程序来实现,成本较低;缺点:单片机断电后,数据随之丢失。

方案二优点:时钟准确,精度更高,系统断点之后数据可以保存并且时钟继续工作,重新上电之后,可以显示出当前时间。缺点:需要外接电路,成本较高。

从实际应用和需求出发,选择了第二种方案,采用DS1302时钟芯片。 3)显示模块方案设计

本设计需要显示出时间温度,需要显示芯片,有两种方案可供选择: 方案一:采用12864芯片。 方案二:采用常用的1602A。 方案三:采用数码管。

方案一优点:可以显示汉字,屏幕更大,可以显示更多内容。 缺点:芯片较贵,成本较高。

方案二优点:相对于12864成本较低,32个字符已足以显示所需要内容。 缺点:只能显示字符型数据。

方案三优点:成本最低,亮度最大,字体最大最清晰。

缺点:需要驱动芯片,例如ZLG7289,本设计显示需要较多字符,数码管需求较多,总的成本较高。

综合比较,采用了第二种方案,第二种方案中,仍有可供选择绿光黑底的1602和蓝光白底的1602A,其中两者指令相同,只是背景光和字体颜色不同,出于美观和清楚角度,本设计采用1602A。 4)温度模块方案设计

本设计需要显示当前室内温度,有两种常见方案可供选择: 方案一:采用热敏电阻器;方案二:采用DS18B20。

方案一优点:温度范围更广,价格便宜;缺点:需要进行AD转换

4

淄博职业学院毕业设计 第二章 系统方案的设计

方案二优点:封装简单,实用方便;缺点:价格较高。 经过综合比较,采用DS18B20更为实用方便。 5)闹钟模块设计

闹钟模块采用最简单的蜂鸣器,既节约成本又能实现功能。 6)按键模块设计

本设计需要采用按键调节时间和设置闹钟,按键可采用两种方案: 方案一:直接接IO口方式;方案二:采用矩阵式键盘接外部中端口。 方案一优点:简单,不用接外围电路,缺点:直接接IO口反应不是很灵敏。 方案二优点:反应灵敏,缺点需要接外围电路以及驱动芯片或者是外接门电路。

因为按键比较少,并未采用矩阵式键盘,IO口仍有富余,所以键盘采用的是直接接IO口的方式,但较少按键灵敏度影响不是很大。但是通过实践证明,采用矩阵式键盘接外部中断的方式比接IO口的处理速度和反应要快。 7)台灯模块设计

台灯供电模块可采用两种两种方案,方案一:是普通的白炽灯。方案二:是采用高亮度的LED灯。从环保节能,高效率出发,采用的是高亮度的LED灯。

2.2系统设计的主要元器件介绍

2.2.1单片机的介绍

AT89S52单片机是一块集成了CPU RAM ROM 定时器∕计数器和多功能I/O口等,一台计算机所需的基本功能部件。

AT89S52单片机的内部结构图如图2.2

振荡器及时钟 8KB程序存储空间 256B数据存储器 3*16位定时∕计数AT89S52 CPU 中断系统 64KB总线扩展控制全双工串行I∕O口 可编程串行口

图2.2 AT89S52单片机的内部结构图

5

淄博职业学院毕业设计 第二章 系统方案的设计

AT89S52的工作频率可以是0~33MHZ,有8K字节的Flash,256字节的RAM,32位的I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

AT89S52有40个管脚,如图2.3所示:

图2.3 AT89S52结构图

该芯片一共有32个I/O口,包括P0、P1、P2、P3口,以及几个特殊的管脚。 第9管脚:RST,复位引脚,通过外接复位电路实现复位。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

第18、19管脚:XTAL1和XTAL2是用来接122M晶振和微调电容

1)P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位以吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组端口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

2)P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1口的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

另外,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)

6

淄博职业学院毕业设计 第二章 系统方案的设计

和输入(P1.1/T2EX)

3)P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P2端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。

4)P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。

P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表2-1所示:

表2-1 P3口的第二功能 端口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能 RXD(串行输入口) TXD(串行输出口) INT0(外中断0) INT1(外中断1) T0(定时/计数器0) T1(定时/计数器1) WR(外部数据存储器写选通) RD(外部数据存储器读选通) 5)第29管脚(PSEN):程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次RSEN信号。

6)第30管脚(ALE/PROG):当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。

7

淄博职业学院毕业设计 第二章 系统方案的设计

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。

7)第31管脚(EA/VPP):外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。 2.2.2时钟芯片DS1302的介绍

DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。

1)DS1302引脚功能及结构如图2.4

VCC2 X1 X2 GND 1 2 3 4 8 7 6 5 VCC1 SCLK I/O RST 图2.4 DS1302引脚结构

第一脚:VCC2备用电源正。

第二和第三脚:X1、X2 32.768K晶振的介入引脚。 第四脚:GND 电源地。

第五脚:/RST 复位引脚,低电平有效。 第六脚:I/O 数据输入输出引脚。 第七脚:SCLK 串行时钟输入引脚。 第八脚:VCC1 工作电源正极 2) DS1302的寄存器

DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字见表2-2

8

淄博职业学院毕业设计 第二章 系统方案的设计

表2-2 DS1302的寄存器 寄存器 名称 秒寄存器 分寄存器 时寄存器 日寄存器 月寄存器 周寄存器 年寄存器

命令字 写操作 80H 82H 84H 86H 88H 8AH 8CH 读操作 81H 83H 85H 87H 89H 8BH 8DH 取值范围 7 6 5 0—59 0—59 0—23或 0—12 0—28,29,30,31 1—12 1—7 0—99 CH 0 各位内容 4 3 2 1 0 秒十位 分十位 AP 秒个位 分个位 时个位 日个位 月个位 0 星期 年个位 T 0 10 时 0 0 日十位 0 0 0 月 0 0 0 年十位 0 2.2.3温度传感器DS18B20的介绍

DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。

DS18B20主要由三部分组成:64位的只读存储器;温度传感器;高速暂存寄存器和非易失性的可电擦除的EEPRAM,后者包括高温度和低温度触发器 TH、TL、结构寄存器和配置寄存器,其中8位的配置寄存器的第6和第7位来设置分辨率。

图2.5实物图及引脚

9

淄博职业学院毕业设计 第二章 系统方案的设计

芯片的封装主要有3个引脚: GND:接地。

I/O:数据输入/输出引脚。 VDD:外接电源输入端。

图2.6 DS18B20内部结构图

低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。

10

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

第三章 电路的硬件与软件设计

3.1单片机控制电路的设计

AT89S52单片机为主控芯片。AT89S52单片机由微处理器,存储器,I/O口以及特殊功能寄存器SFR等部分构成。图3.1为单片机控制电路

图3.1单片机控制电路

这里选用的单片机为AT89S52,晶振采用12M晶振。在这里需要指出的是并且需要注意的是,AT89S52的EA必须接高电平,单片机才能正常工作。

3.2时钟电路的设计

11

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

图3.2时钟电路

AT89S52系列的单片机的时钟方式分为内部方式和外部方式。内部方式就是在单片机的XTAL1和XTAL2的两引脚外接晶振,就够成了自激振荡器在单片机内部产生时钟脉冲信号。外部时钟方式是把外部已经有的时钟信号引入到单片机内部。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片系统工作的快慢;二是指系统的标准定时时钟,即定时时间。

在本设计中采用的是外部时钟方式,用一个32.768MHz晶振和两个0.1uf瓷片电容组成,为单片机提供标准时钟,其中两个瓷片电容起微调作用.图3.2为时钟电路

若时钟芯片DS1302采用的晶振是32.768K,与单片机不同的是,其晶振不用接电容和地。其中2.3脚接晶振。1脚接主电源,8脚接备用电源,4脚接地。为了使电源稳定,在主电源处并接一个0.1uf的电容。DS1302有涓电流功能,能够在主电源和备用电源同时工作时给备用电源充电,在实际工作中,这样会使得芯片发烫发热,为了防止芯片损坏,在备用电源处串接一个稳压二极管4148,也可以选择在程序里面关闭涓电流充电功能。在这里需要指出的是,如果备用电池能够充电,建议开启充电功能,并且不串接二极管。备用电池无法充电,强烈建议关闭涓电流充电功能,或者在备用电池正极串接一个二极管。在本次设计中为了双重保险,在程序里面既关闭了涓电流充电功能并且在备用电池正极端当串上了二极管。主电源高于备用电源0.2V时,芯片有主电源供电,当备用电源高于主电源时,芯片由备用电源供电。采用备用电源,这样使得当不使用台灯时,关闭电源后,时钟芯片仍然继续工作,同步并保存时间,使得任何时候打开台灯都能看到准确的时间。5,6,7脚接单片机IO口P1.2, P1.3,P1.4。因为AT89S52除了P0口内部用上拉电阻之外其他I/O口均没有,所以在5,6,7脚上要接上10k的上拉电阻。

程序设计思路

首先对DS1302进行初始化,禁止写入保护,允许写入,设置二十四小时格

12

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

式。设计对DS1302进行字操作函数,进行字读操作和写读操作,进行字操作通常是通过移位的方式写入或读出数据。然后设根据字操作函数计对DS1302进行指定地址的操作函数,采用对指定地址进行读数据和写数据。其中DS1302里面的数据是以BCD码形式存储的,在进行读数据和写入数据时要进行转换,这样才能最后显示出正确的时间。然后设计显示函数,把读出的数据经过转换在液晶上显示。其中里面的时间日期均采用数组的形式保存,但是显示时时一位一位显示,将还要将数组中的数据进行取余或取整,得出时间每一位的数据,才能方便的写入1602.在这里还需要指出的是因为DS1302里面有涓电流功能,为了防止芯片在工作时发热发烫,最好是在程序中加上禁止涓电流功能。也可以在备用电源处串联一个二极管,防止电流倒流。

3.3显示电路的设计

液晶显示部分,采用的是1602A,其接法与普通的1602接法相同。1,2脚接电源和地,3脚接电位器来调节液晶显示器的亮度,4,5,6脚接P2.3,P2.4,P2.5。7-14脚接P0口。15脚接背光电源,16脚接地。需要注意的时,在测试过程中,有时候发现液晶不亮,没有显示,其中多半原因在于遗漏了背光电源。

程序设计思路

首先设计对1602检测是否为忙子函数,然后设计对1602进行写命令指令子函数和对1602进行写数据子函数。并对其设计初始化函数。并且为了更好的为之后时钟调节和闹钟设置服务,并设计一个反白子函数,对指定地方进行两位进行写空格,由于指令和按键的延时原因,反白的效果将会是闪烁效果。虽然也可以直接调用液晶1602里面的开光标和开闪烁指令来实现指定地方闪烁,但是由于开了光标之后,1602上面的数据显示就会不清晰,再加上闪烁,从实际测试中得到的效果数据将会很模糊不清,无法辨认,从而在按键调节时无法看到当前实际数据,对时间修正和闹钟设置带来不便。图3.3为显示电路

图3.3显示电路

13

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

3.4温度测试电路的设计

图3.4温度测试电路

由于DS18B20温度传感器集成度很高,封装简单,1脚接电源,2脚数据线接P1.0,3脚接地。

程序设计思路

首先设计初始化函数,然后设计读DS18B20数据和对DS18B20写数据的子函数,再写出从DS18B20读取温度并转换为十进制的函数,最后设计出显示温度的函数。

3.5闹钟电路的设计

图3.5闹钟电路

闹钟模块比较简单,采用普通的蜂鸣器有三极管来驱动,为了使工作功率更高一点,这里的三极管采用的是8550。后面的LED灯得驱动也是采用的8550。

关于蜂鸣器对其所接IO口进行写0就能实现其蜂鸣,但程序中往往需要对其写0和1并在其中加一段延时,制作成闹钟的铃声。关于闹钟,首先设置闹钟的函数,由数组来存储闹钟的值,当闹钟里面的小时和分钟与当前DS1302里面的时间相对应的时候,调用闹钟函数,闹钟的精确位为分钟,闹钟铃声也为一分钟。

这里的闹钟也有两种方案,方案一:采用单片机音乐;方案二:采用普通的滴滴闹铃声。

方案一优点:音乐声更悦耳 缺点:需要更多的程序编程,单片机播放音乐

14

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

时,是每一个音符一个一个播放,音乐存储形式是数组形式,进入播放之后,比较难以跳出,除非采用中断,可能造成1602A刷新延时,造成数据无法及时更新。

方案二优点:程序实现简单,可以从任何时间跳出 缺点:铃声单一,不悦耳。

综合比较采用方案二更为简单实用,本设计采用方案二。

3.6按键电路的设计

图3.6按键电路

S3,S4,S5按键是用来调节时钟和闹钟。按键均采用低电平有效连接方式。 程序设计思路

按键中用来设置闹钟时间和修正时间。S3和S4用来设置修正时间,S4和S5用来设置闹钟。当检测到S3有按键按下时,设置一个计数count,每当有有效按键按下时,count就加1,一直加到6,因为有年月日时分秒六个需要调节的参数,一个count的值对应调节一个时间单位,当在一个count下时,如有检测到S4按键有效值,将对对应的时间单位进行加一操作,并调用LCD里面的反白函数,因为存在一定的指令的延时,所以反白为闪烁效果,这样能够清楚地看到调节的是哪一个时间单位。设置闹钟时,也需设置一个count1,当检测到S5有有效键值时,,count1加一,一直到2,因为只有时分两个时间单位需要操作;在count1的有效值下,若检测到S4有有效键值,调用指定地方反白函数,对对应的时间单位进行加一操作。 为了有效的读取键值,防止键盘抖动,需要在程序中加入去抖动,即加入一个10ms左右的延时。

3.7电源电路的设计与电路原理图

电源部分是将220V的交流电通过变压器转换成9V交流电,再通过整流桥转

15

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

换成5V直流电(因为计算机工作需要5V直流电)。此时5V直流电很不稳定,不符合计算机工作的需求。因此还须将电流通过电解电容和集成稳压块7805,逐步达到稳压、滤波的作用

C13、C14、C15、C16为滤波电容。

图3.7电源电路

图3.8 电路整体原理图

16

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

3.8程序设计框图与源程序

Y 修正时间 设置闹钟 开始 LCD初始化 1302初始化 启动台灯 显示温度 读取时间 显示时间 有键按下? While(1) 循 环 N

N 闹钟和时间匹配 Y 闹钟

图3.9程序主框图

结束 17

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

图3.10中断流程图

源程序:

# include # include \"1602.h\" # include \"led1.h\" #include \"1820.h\" #include \"1302.h\" void main()//主函数 {

unsigned char a=210,b=210,i=0,k;

init_lcd(); ds1302_init(); while(1)

{

for(i=0;i18

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

for(i=b;iLed_Off;

k=keyscan(); if(k==1) {

b=(b>=180?210:b+30); }

else if(k==2) {

b=(b<=30)?0:b-30; } {

unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0;

Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0x44); Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0xBE); a=ReadOneChar();

b=ReadOneChar(); t=b; t=t<<8;

display_temp();//显示温度 ds1302();//读取时间

set_time();//设置时间 display_time();//显示时间 set_clock();//设置闹钟

baoshi();//闹钟报警

}

unsigned int Readtemp()//读取温度

19

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

}

t=t|a; tt=t*0.0625; t= tt*100+0.5; return(t);

void display_temp()//显示温度 { } //1602

#include

#define uchar unsigned char #define uint unsigned int sbit lcdrs=P2^4; sbit lcdrw=P2^3; sbit lcden=P2^2; uchar code t0[]=\"T:\"; uchar code t1[]=\"Date:\";

unsigned int num; unsigned int shi,ge,xiaoshu1,xiaoshu2; num=Readtemp(); shi=num/1000; ge=num%1000/100; xiaoshu1=num%100/10; xiaoshu2=num%10; lcd_wcmd(0x80+2); lcd_wdat(wendu[shi]); lcd_wcmd(0x80+3); lcd_wdat(wendu[ge]); lcd_wcmd(0x80+4); lcd_wdat(0x2e); lcd_wcmd(0x80+5);

lcd_wdat(wendu[xiaoshu1]); lcd_wcmd(0x80+6);

lcd_wdat(wendu[xiaoshu2]);

20

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

void Delayms(uint ms)//延时------------ { uchar i;

while(ms--)for(i=0;i<120;i++);

} { bit result; lcdrs = 0; lcdrw = 1; lcden = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0&0x80); lcden = 0; return result; } void calculate(void)//计算时间 {

second[0]=tab_1302[0]/10+0x30 ; second[1]=tab_1302[0]%10+0x30 ; minute[0]=tab_1302[1]/10+0x30 ; minute[1]=tab_1302[1]%10+0x30 ; hour[0]=tab_1302[2]/10+0x30 ; hour[1]=tab_1302[2]%10+0x30 ; day[0]=tab_1302[3]/10+0x30 ; day[1]=tab_1302[3]%10+0x30 ; month[0]=tab_1302[4]/10+0x30 ; month[1]=tab_1302[4]%10+0x30 ; year[0]=2+0x30 ;

year[1]=tab_1302[6]/100%10+0x30 ; year[2]=tab_1302[6]/10%10 +0x30;

bit lcd_busy() //检测LCD是否为忙

21

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

year[3]=tab_1302[6]%10 +0x30; }

/******************************************************************/

void ds1302_init()//初始化LCD {

writeds_add(0x8e,0x00);

writeds_add(0x90,0xa0);//shut off charge writeds_add(0x8c,0x0b); writeds_add(0x8e,0x80); }

/******************************************************************/

void ds1302()//设置1302 {

uchar i,add=0x81;

writeds_add(0x8e,0x00); for(i=0;i<7;i++) {

tab_1302[i]=readds_add(add); add+=2; }

writeds_add(0x8e,0x80); }

/************************************************************/ void display_time(void)//显示时间 { int i; calculate();

lcd_wcmd(0x80+0x0d); lcd_wdat(':'); lcd_wcmd(0x80+0x0a); lcd_wdat(':'); for(i=0;i<4;i++) {

22

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

}

lcd_wcmd(0x80+0x45+i); }

for(i=0;i<2;i++) {

lcd_wcmd(0x80+0x40+i+0x0a); }

for(i=0;i<2;i++) {

lcd_wcmd(0x80+0x40+i+0x0d); }

for(i=0;i<2;i++) {

lcd_wcmd(0x80+0X08+i); }

for(i=0;i<2;i++) {

lcd_wcmd(0x80+0X0b+i); }

for(i=0;i<2;i++) {

lcd_wcmd(0x80+0X0e+i); }

lcd_wdat(year[i]);

lcd_wdat(month[i]);

lcd_wdat(day[i]);

lcd_wdat(hour[i]);

lcd_wdat(minute[i]);

lcd_wdat(second[i]);

/************************************************************/ void display_clk(void)//显示闹钟 { int i;

hour_clk_h=hour_clk/10; hour_clk_l=hour_clk%10;

23

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

minute_clk_h=minute_clk/10; minute_clk_l=minute_clk%10; lcd_wcmd(0x80+0x08); }

/************************************************************/ void set_clock(void)//设置闹钟 {

//int count1=0; while(1) {

if(K3==0) Delayms(100); if(!K3) {count1++; flag=1; }

if(count1>2) switch(count1) {

case 0x00: break;

case 0x01: cursor_flash(0,0x0b);

count1=0;

lcd_wdat(0x30+hour_clk_h); lcd_wcmd(0x80+0x09); lcd_wdat(0x30+hour_clk_l); lcd_wcmd(0x80+0x0a); lcd_wdat(':'); lcd_wcmd(0x80+0x0b); lcd_wdat(0x30+minute_clk_h); lcd_wcmd(0x80+0x0c); lcd_wdat(0x30+minute_clk_l); for(i=0;i<3;i++) {

lcd_wcmd(0x80+0x0d+i); lcd_wdat(' '); }

24

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

if(K2==0) Delayms(100);

if(!K2)

{ minute_clk++; if(minute_clk>59) minute_clk=0; // Delayms(2); } break;

case 0x02: cursor_flash(0,0x08); if(K2==0) Delayms(100); }

lcd_wcmd(0x80+0x07); lcd_wdat(0x30+count1);

if((count==0)&&(flag==1))display_clk(); if( } }

/************************************************************/

/************************************************************/ void set_time()//设置时间 {

uchar Data,NowData; //uchar count=0;

count1==0) { flag=0;break;}

//Delayms(300);

if(!K2)

{/* cursor_flash(0,0x0b);*/ hour_clk++;

if(hour_clk>23) hour_clk=0; //Delayms(2); }

//hour_clk

break;

default: break;

25

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

while(1) { if(K1==0) {

Delayms(100); { if(!K1) count++;

if(count>6) count=0; } }

switch(count) {

case 0x00: break;

case 0x01: cursor_flash(0,0x0e); if(K2==0) {

Delayms(90);

if(!K2)

{ writeds_add(0x80,0x01); writeds_add(0x8e,0x00); Data=readds_add(0x81); if(NowData>=60) NowData=0; writeds_add(0x80,NowData); writeds_add(0x8e,0x80); } // second }

NowData=Data+1;

break;

case 0x02: cursor_flash(0,0x0b); if(K2==0) {Delayms(90);

if(!K2)

{/*cursor_flash(0,0x0e);*/

26

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

writeds_add(0x80,0x01); writeds_add(0x8e,0x00); Data=readds_add(0x83); if(NowData>=60) NowData=0; writeds_add(0x82,NowData); writeds_add(0x8e,0x80); } }

NowData=Data+1;

break; //minute

case 0x03: cursor_flash(0,0x08); if(K2==0) { Delayms(90);

if(!K2)

{/*cursor_flash(0,0x0b);*/ writeds_add(0x80,0x01); writeds_add(0x8e,0x00); Data=readds_add(0x85); if(NowData>=24) NowData=0; writeds_add(0x84,NowData); writeds_add(0x8e,0x80); } }

//hour

NowData=Data+1;

break;

case 0x04: cursor_flash(1,0x0d); if(K2==0) {Delayms(90);

if(!K2)

{/*cursor_flash(0,0x08);*/ writeds_add(0x80,0x01); writeds_add(0x8e,0x00); Data=readds_add(0x87);

NowData=Data+1;

27

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

if(NowData>=32) NowData=0;

writeds_add(0x86,NowData); writeds_add(0x8e,0x80); } } break;

//date

case 0x05: cursor_flash(1,0x0a); if(K2==0) { Delayms(90);

if(!K2)

{/*cursor_flash(1,0x0d);*/ writeds_add(0x80,0x01); writeds_add(0x8e,0x00); Data=readds_add(0x89); if(NowData>=13) NowData=0;

writeds_add(0x88,NowData); writeds_add(0x8e,0x80); } }

// month

NowData=Data+1;

break;

case 0x06: cursor_flash(1,0x05); if(K2==0) {Delayms(90);

if(!K2)

{ /*cursor_flash(1,0x0a);*/ writeds_add(0x80,0x01);

writeds_add(0x8e,0x00);

Data=readds_add(0x8d); //year writeds_add(0x8c,NowData); writeds_add(0x8e,0x80);

NowData=Data+1;

28

淄博职业学院毕业设计 第三章 电路的硬件与软件设计

}

}

}

break;

default: break; //write_com(0x80+0xa); //write_date(count+0x30); ds1302();

if((count1==0)&&(flag==0)) display_time(); if(count==0) break; //Delayms(300); } }

/************************************************************/ void baoshi(void)//闹钟报警 {

if((tab_1302[2]==hour_clk)&&(tab_1302[1]==minute_clk) )

buzzer=0; Delayms(50) ;buzzer=1; Delayms(50) ;

}

29

淄博职业学院毕业设计 第四章 总结与展望

第四章 总结与展望

在本次毕业设计中,我经历的点点滴滴让我感触良多:

第一点我觉得多人的协作交流很重要。要学会倾听同组同学的意见,也许他提到的正是你没有注意到的,其次也要将自己的想法向组员表达清晰透彻,这样可以提高双方的默契程度,防止出现一个人孤军奋斗的局面。

第二点我觉得必须有三心:信心,细心,耐心;以前做做课题设计时也有类似的体会,但是这一次电路信号的调试给我的印象尤为深刻。首先做电路我们必须相信自己的能力完全可以解决暂时摆在我们面前的问题;其次在接电路的时候我们要保持高度的细心,只有这样才会避免不必要的失误,提高设计电路的效率和成功率;在观察电路信号的时候我们要有耐心,特别是在观察电路的脉冲规律的时候要有耐心,不能仅仅观察了一两分钟就对电路的特点下结论,这样是不妥的。

第三点我也认为很重要,一方面要海纳百川,学会和老师同学交流,积极采纳他们的意见和建议,另一方面要学会独立思考,积极探索,不要生搬硬套,电路设计要灵活自主,因地制宜,优化选择。

在这个多功能台灯的设计中,最后基本完成的所需要的功能,时钟功能,实时温度检测,LED可调,还有闹钟功能。但在设计细节中仍有需要改进的地方,按键部分采用矩阵式键盘接外部中断口,按键会更加灵敏。最后按键调光部分,最后没有调出理想效果而采用了电位器代替,本人认为有时并不需要刻意采用复杂的方式来实现一个简单的功能,从成本,简约出发,可用简单的没有技术含量的方式也能实现效果。PWM用来调节,用在一些自动的模块中更加合适,而手动的用起来则有点不必要。若采用自动调光,则采用PWM,或者在机器人大赛中,自动避障也应采用此方式来调节。关于这次多功能台灯的设计,有许多展望的空间,可在电源方面创新,例如采用多电源供电,使用USB供电,或者加上充电电池功能;或者采用太阳能电池板,但如此会增加成本。也可以在自动方面着手创新,自动开关或自动调光。其中液晶模块也可以采用12864,12864能显示中文汉字,更便于中国人的习惯。多功能台灯的实用价值,可作为单独台灯产品推向市场,也可以作为附载品整合到各个领域之中。

30

淄博职业学院毕业设计 谢辞

谢 辞

在论文完成之际,我要特别感谢我的指导老师赵老师的热情关怀和悉心指导。在我撰写论文的过程中,赵老师倾注了大量的心血和汗水,无论是在论文的选题、构思和资料的收集方面,还是在论文的研究方法以及成文定稿方面,我都得到了赵老师悉心细致的教诲和无私的帮助,特别是他广博的学识、深厚的学术素养、严谨的治学精神和一丝不苟的工作作风使我终生受益,在此表示真诚地感谢和深深的谢意。

在论文的写作过程中,也得到了许多同学的宝贵建议,同时还到许多在工作过程中许多同事的支持和帮助,在此一并致以诚挚的谢意。

感谢所有关心、支持、帮助过我的良师益友。最后,向在百忙中抽出时间对本文进行评审并提出宝贵意见的各位专家表示衷心地感谢!

31

淄博职业学院毕业设计 参考文献

参考文献

[1] 胡学海.单片机原理及应用系统设计(M).电子工业出版社, 2005

[2] 李华.MCS-51系统单片机实用接口技术(M).北京航空航天大学出版社,1993 [3] 赵继文.传感器与应用电路设计(M).科学出版社, 2002 [4] 余永全.单片机在控制系统中的应用(M).电子工业出版社,2003

[5] 何立民.单片机中级教程—原理与应用(M).北京航空航天大学出版社,2000 [6] 黄继昌.电子元器件应用手册(M).人民邮电出版社, 2004

[7] 戴仙金,51单片机及其C语言程序开发实例,北京:清华大学出版社,2008 [8] 王守中等,51单片机开发入门与典型实例,北京:人民邮电出版社,2009 [9] 来清民,传感器与单片机接口及实例,北京:北京航空航天大学,2008 [10] 何希才等,实用传感器接口电路实例,北京:中国电力出版社,2007

32

因篇幅问题不能全部显示,请点此查看更多更全内容