题目:简易万年历设计
学生姓名:王前程
学号:20090662130
系别:物理与机电工程学院
专业:电子信息工程(1)班
指导教师:林榕
完成日期:2011年12月18日摘要
本次的设计是以采用STCC52单片机为核心,通过使用时钟芯片DS1302来实现时钟和日历的功能,同时利用DS18B20数字温度传感器来测量环境温度,并通过蜂鸣器来实现温度的报警功能,最后通过LCD1602液晶显示器来把这些数据显示出来,同时利用按键来实现数据的修改功能。这样的设计理念带来了许多好处,电路设计简单化,抗干扰能力强,时间和温度的精度高,数据清晰度高,而且提供了良好的人机界面。当前温度和时间的现场采集和显示系统已有广泛的使用,所以电子钟的应用范围非常的广,比如家里,公共场所还有一些特定的地方,如在电力,工业,农业等领域也有很多应用。
关键字:STCC52DS1302DS18B20LCD1602按键控制蜂鸣器
ABSTRACT
The graduation project is using STCC52microcontroller as the core,by using the clock chip DS1302to achieve the clock and calendar functions,while using DS18B20 digital temperature sensor to measure ambient temperature,and finally through the LCD1602LCD monitor to bring the data displayed,at the same time using keys is achieving the alarm clock and data modification function and temperature alarm.This design has brought many benefits,simplified circuit design,anti-interference ability,time and temperature with high accuracy,high resolution data,but also provide a good user interface.The current temperature and time of site acquisition and display systems had been widely used,so the electronic clock of the wide range of applications,like household, public places there are some specific places,such as in power,industry,agriculture and other fields have many applications.目录
摘要 (2)
ABSTRACT (2)
1.系统方案 (4)
1.1主控制模块的论证与选择 (4)
1.2温度采集模块的论证与选择 (4)
1.3时钟控制模块的论证与选择 (4)
1.4LCD1602液晶显示模块的论证与选择。 (4)
2.电路与程序设计 (5)
2.1电路的设计 (5)
2.1.1系统的总体框图 (5)
2.1.2STCC52单片机的最小系统 (5)
2.1.3DS18b20温度采集电路 (6)
2.1.4DS1302实时时钟电路 (7)
2.1.5LCD1602液晶显示部分 (8)
2.1.6按键设置电路设计 (10)
2.1.7报警电路设计 (10)
2.2程序的设计 (11)
2.2.1主程序设计 (12)
2.2.2子程序设计 (12)
(1).按键扫描子程序 (12)
(2).温度数据采集子程序 (12)
(3).显示子程序 (13)
3.系统调试 (14)
(1).测试仪器 (14)
(2).调试过程 (14)
(3).测试结果 (14)
4.参考文献 (15)
附录 (16)一.系统方案
本系统主要由主控制模块、温度采集模块、时钟控制模块、LCD液晶显示模块、电源模块组成,下面分别论证这几个模块的选择。
1.1主控制模块的论证与选择
方案一:STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。考虑到本设计的特点,该单片机占用的资源也相对多一些。从成本上来讲,不划算。
方案二:STCC52是低电压,高性能CMOS8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位处理器(CPU)和Flash存储单元,功能强大STCC52单片机适合于许多较为复杂控制应用场合,且价格便宜。
综合考虑,选择方案二。
1.2温度采集模块的论证与选择
方案一:采用LM135,测量范围为-55~+150℃,测量精度为1℃,但连接电路较为复杂,不易控制。
方案二:采用DS18B20,测量范围为-55~125℃,测量分辨率可通过程序设定9~12位,在-10~85℃范围内,精度为±0.5℃,且连接电路与软件控制都简单方便。新的"一线器件"DS18B20体积更小、适用电压更宽、更经济。
综合考虑,选择方案二。
1.3时钟控制模块的论证与选择
方案一:采用单片机内部计数器,能够实现简单的计数,但精确度低。
方案二:采用ds1302时钟芯片,因为ds1302采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
综合考虑,选择方案二。
1.4LCD液晶显示模块的论证与选择
方案一:采用串行液晶显示模块12屏幕显示,性能好,价格低廉,能够达到需要的效果,具有多种功能:光标显示、画面移位、睡眠模式等。而且其内部带有国标字库,容易编程实现。但此设计不需要显示太多内容。
方案二:LCD1602液晶显示模块是一种用于显示字母,数字,符号等点阵式LCD。它具有体积小,功耗低,成本低于128,显示内容丰富等特点。LCD1602液晶显示模块可以显示两行,每行16个字符。采用+5V电源供电。
综合考虑,选择方案二。
二.电路与程序设计
2.1电路的设计
2.1.1系统的总体框图
图1
图1是系统的基本组成框图。主要有单片机控制电路,温度采集电路,时钟电路,液晶显示电路,按键设置电路,温度报警电路和电源部分组成。
2.1.2STCC52单片机的最小系统
STCC52是低电压,高性能CMOS 8位单片机,片内含8k bytes 的可反复擦写的Flash 只读程序存储器和256bytes 的随机存取数据存储器(RAM),器件采用高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位处理器(CPU)和Flash 存储单元,功能强大STCC52单片机适合于许多较为复杂控制应用场合。STCC52单片机为40引脚双列直插芯片,有四个I/O 口P0、P1、P2、P3,每一条I/O
线都能地作输出或输入。
图2单片机的最小系统LCD1602显示电路蜂鸣器超温报警
按键调整时
间、日期
DS1302
时钟电路
电源DS18B20温度采集电路STCC52
单
片
机
●DS18B20的外形和内部结构
DS18B20内部结构主要由四部分组成:位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS1820通过一个单线接口发送或接收信息,因此在微处理器和DS1820之间仅需一条连接线(加上地线)。用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。因为每个DS1820都有一个独特的片序列号,所以多只DS1820可以同时连在一根单线总线上,这样就可以把温度传感器放在许多不同的地方。这一特性在HVAC环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。DS18B20的外形及管脚排列如下图3所示。
图3DS18B20外形及引脚排列图
引脚说明:
1GND接地。
2DQ数据输入/输出脚。
3VDD可选的VDD引脚。
●DS18B20的工作原理
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。DS18B20测温原理如图3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图5中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
●DS18B20与单片机的连接电路
2.1.4DS1302实时时钟电路
●DS1302的结构和工作原理
图7示出DS1302的引脚排列,其中V
cc1为后备电源,V
CC2
为主电源。在主电源关
闭的情况下,也能保持时钟的连续运行。DS1302由V
cc1或V
cc2
两者中的较大者供电。
当V
cc2大于V
cc1
+0.2V时,V
cc2
给DS1302供电。当V
cc2
小于V
cc1
时,DS1302由V
cc1
供电。
X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在V
cc
≥2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK 始终是输入端。
图7DS1302引脚图●DS1302的控制字节
DS1302的控制字如图8所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
●数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
●DS1302电路的连接
图10DS1302与单片机接口
2.1.5LCD1602液晶显示部分
选用1602字符型液晶模块,它是目前功控系统中使用最为广泛的液晶屏之一。1602字符型液晶模块是点阵型液晶,驱动方便,经编码后显示内容多样化。液晶显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点,在袖珍式仪表和低功耗应用系统中得到广泛的应用。目前字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件。LCD1602液晶显示模块可以显示两行,每16个字符,采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。
表3LCD1602的主要技术参数:显示容量16×2个字符
芯片工作电压 4.5~5.5V
工作电流 2.0mA(5.0V)
模块最佳工作电压 5.0V
字符尺寸 2.95×4.35(WXH)mm
●LCD1602接口信号说明:
编号符号引脚说明编号符号引脚说明
1VSS电源地9D2Data I/O
2VDD电源正极10D3Data I/O
3VL液晶显示偏压信号11D4Data I/O
4RS数据/命令选择端(H/L)12D5Data I/O
5R/W读/写选择端(H/L)13D6Data I/O
6E使能信号14D7Data I/O
7D0Data I/O15BLA背光源正极8D1Data I/O16BLK背光源负极
表6
●LCD1602与单片机连接:图13
D0~D7为1602的数据线,它与单片机的P0口相连,RES9为上拉电阻,R14为LCD对比度调节电阻。RS、R/W、EN为控制口线,分别与STCC52的P1.7、P1.6、P2.4相连接,实时显示温度与时间。
2.1.6按键设置电路设计
本次设计采用按键要实现的功能是:模式和校对选择键,加1操作键,减1操作键,数据修改确认键。为了不相互影响,采用按键的形式,每一个按键连接一个STCC52的接口,从而使每个按键有特定的功能。本次设计采用了3个按键。按键电路如图14
图14按键电路
K1按键主要选择那种模式与实现数据修改确认操作。
K2按键主要实现对K1所选模式的数据进行加1操作。
K3按键主要实现对K1所选模式的数据进行减1操作。
2.1.7报警电路设计
报警电路使用了最简单的方法来实现,通过把蜂鸣器的一个端口与STCC52单片机一个口相连,同时中间连几个电阻和一个PNP型三级管。如图15:图15蜂鸣器的连接电路
2.2程序的设计
51单片机的程序可以用汇编语言和C语言编写,本次设计的程序全部是有C语言编写的。用C语言编写程序阅读起来比较方便,易于理解。
2.2.1主程序设计
开始
初始化
按键扫描子程序
DS18B20子程序
DS1302子程序
显示子程序
温度报警检测
图16电子钟主程序流程图
如图16所示,单片机初始化后依次调用按键扫描子程序,DS18B20子程序,DS1302子程序和数据更新和显示程序。
2.2.2子程序设计
●按键扫描子程序
本次设计中使用按键的功能主要是实现对年,月,日,星期,小时,分钟,秒的校对,以及进行温度报警设置并对修改数据做确认。所以具体的流程是:首先51单片机扫描K1按键,判断按键是否按下,当每次确定按下后,模式计数变量每次加1,根据模式计数变量的值来把光标移动到相应的模式操作地方并停止执行中断程序。然后当K1按键确定按下后,51单片机就会扫描K2,K3按键,确定有那个按键按下,如果确认到K2按键按下后,会先读取相应模式的数据(如计数变量为1时,读取年的数据)然后在读取数据的基础上加1,K2按键每按下一下,读取的数据就加1一次同时显示出结果在液晶显示器上;如果确认到K3按键按下后,会先读取相应模式的数据(如计数变量为1时,读取年的数据)然后在读取数据的基础上减1,K3按键每按下一下,读取的数据就减1一次,同时显示出结果在液晶显示器上。程序见附录1
●温度数据采集子程序
本次设计中温度采集采用的DS18B20数字温度传感器,它通过一根和51单片机连接的数据线来实现数据和指令的传输,它是一种单总线器件,所有的单总线器件都要遵循严格的通信协议,以保证数据的完整性,所以对读写时序的要求比较严格。
因此51单片机要想对DS18B20传感器进行正常的读写操作,必须满足相应的读写时序规则,否则最后将无法读取正确的温度值。
DS18B20在通讯前必须进行初始化,初始化包括一个主机发送的复位脉冲紧跟着一个DS18B20发送的存在脉冲。一旦DS18B20发送存在脉冲回应主机的复位脉冲,就表示总线上存在DS18B20并准备好进行操作。在初始化期间,主机发送复位脉冲,要拉低总线在(480us~960us之间),主机随后应被释放总线并进入接收模式。一旦总线被释放,4.7k的上拉电阻将总线拉高。DS18B20探测到上升沿时,将等待15-60us,随后发出存在脉冲(拉低总线60-240us)。
在对DS18B20完成相应的初始化后才可以对DS18B20内部的ROM和RAM进行操作。
开始
初始化
跳过读ROM
启动温度转换
初始化
跳过读ROM
读取温度值低位和高
温度正负判断
数据显示
将高位和低位或运算
温度值转化为十进制数
图17温度数据采集子程序流程图
程序见附录1
●显示子程序
本设计的显示部分通过采用LCD1602液晶显示
模块来实现数据的显示。它一共可以显示两行32个
字符。同时执行每一条指令之前一定要确认模块的忙
标志位为低电平,否则指令无效,还有自定义字符必
须要先装入LCD1602的CGRAM 中从而可以正常使用。
流程图如右图18:程序见附录1开始初始化装入自定义字符
忙检测设置第一行显示位置
显示第一行内容
设置第二行显示位置
显示第二行内容
●测试仪器:直流电源、数字万用表、秒表、示波器、温度计、测试环境为室内。
●调试过程:
本设计的硬件验证电路完全由按照上述理论进行焊接。由于电路比较简单在焊接中遇到的问题不是很多。主要遇到的问题有电路焊接时地线和电源线的排布,由于电路中的电源线和地线的连接点比较多,在实际的印刷电路板中,地线一般是环绕板子而且比较粗的铜线,鉴于这个思路,我将电源线和地线分别布置在电路板的两个边上。
硬件焊接好后需要测试是否都连接好了,本设计采用的测试方法是用万用表来测量,用万用表的两个表笔分别接连线的两端,测试是否电阻为零,如果电阻为零说明连接正确,如果有电阻说明没有连接好。由于实验板上的有些焊点离的比较近,在焊接时可能由于不小心将焊锡滴落在两个焊点之间造成短路,短路是对电路板最大的危害之一,因此要细心的检查每两个相邻的焊点之间是否有短路发生。
在电路通电状态下,用示波器测量电路板上晶振频率,用数字万用表测量工作电压,在显示时钟的状态下用秒表看自制时钟显示是否正常。
在电路通路的情况下,用示波器测量电路板上晶振频率,用数字万用表测量工作电压,在显示的温度状态下用温度计测得室温是否一致,误差为多少。
●测试结果:如表7所示。
测试题目电路测试结果
按键调整实现
蜂鸣器报警实现
显示时间实现
显示年、月、日实现
显示温度实现
●感想:
通过对简易万年历的应用、特点及工作特性等方面的研究,并对简易万年历接口电路进行了设计,在电路框图中充实了各个部分的内容。首先采用STCC52单片机为核心,通过使用时钟芯片DS1302来实现时钟和日历的功能,同时利用DS18B20数字温度传感器来测量环境温度,并通过蜂鸣器来实现温度的报警功能,最后通过LCD1602液晶显示器来把这些数据显示出来,同时利用按键来实现数据的修改功能。
此次课程设计软件与硬件相结合,考察了我们的焊接水平与编程能力.因为以前做过关于焊接的电工实习,所以对于我们电信专业的学生而言焊接是不成问题,也很顺利;可到了编程时就出现了很大的障碍,在全组人竭尽全力,老师的精心指导下,程序基本编写成功,再仔细修改程序之后,终于一步步地达到效果了。尽量做到硬件电路简单稳定,充分发挥软件编程的优点,减小因元器件精度不够引起的误差。在享受我们成果之时,不得不感慨单片机的重要性与高难度性。由于时间有限和本身知识水平的,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。
设计过程,好比是我们人的类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。
四.参考文献
●单片机中级教程——原理与应用(第二版)。主编:何立民。出版社:2006年北京航空航天大学出版社。
●电工电子实践指导。主编:王港元。出版社:江西科学技术出版社2003.1
●单片机原理及接口技术。主编:李朝青。北京:北京航空航天大学出版社,2005。
●数字温度传感器DS18B20及其应用(自然科学版)[J]。主编:刘新民。南京工程学院学报,2003,(8)。
●数字电子技术基础。主编:阎石。北京:高等教育出版社,1998.12
●C语言程序设计(第二版)。主编:谭浩强。北京:清华大学出版社1999。
●单片机C语言应用程序设计。主编:马忠梅,张凯。北京:北京航空航天大学出版社,2007.1。
附录1.总电路连接图
2.设计主程序
详见蒲祖立部分。