简易万年历设计报告.docx
《简易万年历设计报告.docx》由会员分享,可在线阅读,更多相关《简易万年历设计报告.docx(19页珍藏版)》请在冰豆网上搜索。
简易万年历设计报告
福建三明学院
课程设计(论文)
题目:
简易万年历设计
学生姓名:
王前程
学号:
20090662130
系别:
物理与机电工程学院
专业:
电子信息工程
(1)班
指导教师:
林榕
完成日期:
2011年12月18日
摘要
本次的设计是以采用STC89C52单片机为核心,通过使用时钟芯片DS1302来实现时钟和日历的功能,同时利用DS18B20数字温度传感器来测量环境温度,并通过蜂鸣器来实现温度的报警功能,最后通过LCD1602液晶显示器来把这些数据显示出来,同时利用按键来实现数据的修改功能。
这样的设计理念带来了许多好处,电路设计简单化,抗干扰能力强,时间和温度的精度高,数据清晰度高,而且提供了良好的人机界面。
当前温度和时间的现场采集和显示系统已有广泛的使用,所以电子钟的应用范围非常的广,比如家里,公共场所还有一些特定的地方,如在电力,工业,农业等领域也有很多应用。
关键字:
STC89C52DS1302DS18B20LCD1602按键控制蜂鸣器
ABSTRACT
ThegraduationprojectisusingSTC89C52microcontrollerasthecore,byusingtheclockchipDS1302toachievetheclockandcalendarfunctions,whileusingDS18B20digitaltemperaturesensortomeasureambienttemperature,andfinallythroughtheLCD1602LCDmonitortobringthedatadisplayed,atthesametimeusingkeysisachievingthealarmclockanddatamodificationfunctionandtemperaturealarm.Thisdesignhasbroughtmanybenefits,simplifiedcircuitdesign,anti-interferenceability,timeandtemperaturewithhighaccuracy,highresolutiondata,butalsoprovideagooduserinterface.Thecurrenttemperatureandtimeofsiteacquisitionanddisplaysystemshadbeenwidelyused,sotheelectronicclockofthewiderangeofapplications,likehousehold,publicplacestherearesomespecificplaces,suchasinpower,industry,agricultureandotherfieldshavemanyapplications.
目录
摘要................................................................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.2STC89C52单片机的最小系统................................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倍。
考虑到本设计的特点,该单片机占用的资源也相对多一些。
从成本上来讲,不划算。
方案二:
STC89C52是低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大STC89C52单片机适合于许多较为复杂控制应用场合,且价格便宜。
综合考虑,选择方案二。
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液晶显示模块的论证与选择
方案一:
采用串行液晶显示模块12864大屏幕显示,性能好,价格低廉,能够达到需要的效果,具有多种功能:
光标显示、画面移位、睡眠模式等。
而且其内部带有国标字库,容易编程实现。
但此设计不需要显示太多内容。
方案二:
LCD1602液晶显示模块是一种用于显示字母,数字,符号等点阵式LCD。
它具有体积小,功耗低,成本低于12864,显示内容丰富等特点。
LCD1602液晶显示模块可以显示两行,每行16个字符。
采用+5V电源供电。
综合考虑,选择方案二。
二.电路与程序设计
2.1电路的设计
2.1.1系统的总体框图
图1
图1是系统的基本组成框图。
主要有单片机控制电路,温度采集电路,时钟电路,液晶显示电路,按键设置电路,温度报警电路和电源部分组成。
2.1.2STC89C52单片机的最小系统
STC89C52是低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大STC89C52单片机适合于许多较为复杂控制应用场合。
STC89C52单片机为40引脚双列直插芯片,有四个I/O口P0、P1、P2、P3,每一条I/O线都能独立地作输出或输入。
图2单片机的最小系统
2.1.3DS18b20温度采集电路
●DS18B20的外形和内部结构
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS1820通过一个单线接口发送或接收信息,因此在中央微处理器和DS1820之间仅需一条连接线(加上地线)。
用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。
因为每个DS1820都有一个独特的片序列号,所以多只DS1820可以同时连在一根单线总线上,这样就可以把温度传感器放在许多不同的地方。
这一特性在HVAC环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。
DS18B20的外形及管脚排列如下图3所示。
图3DS18B20外形及引脚排列图
引脚说明:
1
GND
接地。
2
DQ
数据输入/输出脚。
3
VDD
可选的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的引脚排列,其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc≥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接口信号说明:
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
DataI/O
2
VDD
电源正极
10
D3
DataI/O
3
VL
液晶显示偏压信号
11
D4
DataI/O
4
RS
数据/命令选择端(H/L)
12
D5
DataI/O
5
R/W
读/写选择端(H/L)
13
D6
DataI/O
6
E
使能信号
14
D7
DataI/O
7
D0
DataI/O
15
BLA
背光源正极
8
D1
DataI/O
16
BLK
背光源负极
表6
●LCD1602与单片机连接:
图13
D0~D7为1602的数据线,它与单片机的P0口相连,RES9为上拉电阻,R14为LCD对比度调节电阻。
RS、R/W、EN为控制口线,分别与STC89C52的P1.7、P1.6、P2.4相连接,实时显示温度与时间。
2.1.6按键设置电路设计
本次设计采用按键要实现的功能是:
模式和校对选择键,加1操作键,减1操作键,数据修改确认键。
为了不相互影响,采用独立按键的形式,每一个按键连接一个STC89C52的接口,从而使每个按键有特定的功能。
本次设计采用了3个独立按键。
按键电路如图14
图14按键电路
K1按键主要选择那种模式与实现数据修改确认操作。
K2按键主要实现对K1所选模式的数据进行加1操作。
K3按键主要实现对K1所选模式的数据进行减1操作。
2.1.7报警电路设计
报警电路使用了最简单的方法来实现,通过把蜂鸣器的一个端口与STC89C52单片机一个口相连,同时中间连几个电阻和一个PNP型三级管。
如图15:
图15蜂鸣器的连接电路
2.2程序的设计
51单片机的程序可以用汇编语言和C语言编写,本次设计的程序全部是有C语言编写的。
用C语言编写程序阅读起来比较方便,易于理解。
2.2.1主程序设计
图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进行操作。
图17温度数据采集子程序流程图
程序见附录1
●显示子程序
本设计的显示部分通过采用LCD1602液晶显示模块来实现数据的显示。
它一共可以显示两行32个字符。
同时执行每一条指令之前一定要确认模块的忙标志位为低电平,否则指令无效,还有自定义字符必须要先装入LCD1602的CGRAM中从而可以正常使用。
流程图如右图18:
程序见附录1
三.系统调试
●测试仪器:
直流电源、数字万用表、秒表、示波器、温度计、测试环境为室内。
●调试过程:
本设计的硬件验证电路完全由按照上述理论进行焊接。
由于电路比较简单在焊接中遇到的问题不是很多。
主要遇到的问题有电路焊接时地线和电源线的排布,由于电路中的电源线和地线的连接点比较多,在实际的印刷电路板中,地线一般是环绕板子而且比较粗的铜线,鉴于这个思路,我将电源线和地线分别布置在电路板的两个边上。
硬件焊接好后需要测试是否都连接好了,本设计采用的测试方法是用万用表来测量,用万用表的两个表笔分别接连线的两端,测试是否电阻为零,如果电阻为零说明连接正确,如果有电阻说明没有连接好。
由于实验板上的有些焊点离的比较近,在焊接时可能由于不小心将焊锡滴落在两个焊点之间造成短路,短路是对电路板最大的危害之一,因此要细心的检查每两个相邻的焊点之间是否有短路发生。
在电路通电状态下,用示波器测量电路板上晶振频率,用数字万用表测量工作电压,在显示时钟的状态下用秒表看自制时钟显示是否正常。
在电路通路的情况下,用示波器测量电路板上晶振频率,用数字万用表测量工作电压,在显示的温度状态下用温度计测得室温是否一致,误差为多少。
●测试结果:
如表7所示。
测试题目
电路测试结果
按键调整
实现
蜂鸣器报警
实现
显示时间
实现
显示年、月、日
实现
显示温度
实现
●感想:
通过对简易万年历的应用、特点及工作特性等方面的研究,并对简易万年历接口电路进行了设计,在电路框图中充实了各个部分的内容。
首先采用STC89C52单片机为核心,通过使用时钟芯片DS1302来实现时钟和日历的功能,同时利用DS18B20数字温度传感器来测量环境温度,并通过蜂鸣器来实现温度的报警功能,最后通过LCD1602液晶显示器来把这些数据显示出来,同时利用按键来实现数据的修改功能。
此次课程设计软件与硬件相结合,考察了我们的焊接水平与编程能力.因为以前做过关于焊接的电工实习,所以对于我们电信专业的学生而言焊接是不成问题,也很顺利;可到了编程时就出现了很大的障碍,在全组人竭尽全力,老师的精心指导下,程序基本编写成功,再仔细修改程序之后,终于一步步地达到效果了。
尽量做到硬件电路简单稳定,充分发挥软件编程的优点,减小因元器件精度不够引起的误差。
在享受我们成果之时,不得不感慨单片机的重要性与高难度性。
由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。
设计过程,好比是我们人的类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。
通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
这也激