当前位置:文档之家› 万年历毕业设计

万年历毕业设计

常州轻工职业技术学院电子制作论文(设计)题目:基于51单片机的电子万年历的制作专业:电子信息工程作者:指导教师(职称):(副教授)二0一0年五月二十六日基于51单片机的电子万年历制作电子信息工程专业【关键词】单片机万年历温度传感器DS18B20 时钟芯片DS1302【绪论】万年历,就是记录一定时间范围内(比如100年或更多)的具体阳历与阴历的日期的年历,方便有需要的人查询使用。

万年只是一种象征,表示时间跨度大。

这次设计通过对万年历系统的设计,详细介绍了51 单片机应用中的按键处理、液晶、定时中断、温度传感器DS18B20原理。

该系统能够显示年、月、日、小时、分钟、秒、星期、农历、温度,通过按键可以修改时间和设定闹钟等功能。

此系统结构简单、功能齐全,具有一定的推广价值。

1.系统说明1.1方案选择●方案一:采用日历时钟芯片DS1302来产生时间,数据经单片机处理后送到液晶显示。

DS1302内部有晶体振荡器、振荡电路、充电电路和可充电锂电池。

此外,片内有114B的RAM。

●方案二:采用纯单片机制作。

方案一中因为有了日历时钟芯片,这就使得单片机的软件部分简单很多。

但是考虑到制作简单,因此采用方案一。

1.2 系统方框图:如图1-1所示:1.3 说明系统由51系列单片机stc89c52、按键、温度采集、液晶显示、闹钟报时,电源等部分构成。

单片机部分包括时钟电路、复位电路;按键部分能够实现对时间的调整和定时时间的设定。

四个按键的功能分别为:退出、闹钟、设置、修改。

温度采集部分包括温度传感器。

传感器采样进来的信号经自身A/D转换后送给单片机,经软件处理后送至液晶1602管显示。

2.电路模块说明2.1 单片机电路2.1.1 时钟电路时钟系统是单片机的心脏,在本次设计中,包括中央处理器在内的所有单片机都是时钟系统所提供的节拍工作的。

时钟电路由外接谐振器的时钟振荡器、时钟发生器及关断控制信号等组成。

时钟振荡器是单片机的时钟源,时钟发生器对振荡器的输出信号进行二分频。

CPU的时钟振荡信号有两个来源:一是采用内部振荡器,此时需要在XTAL1和XTAL2脚连接一只频率范围为0—33MHZ的晶体振荡或陶瓷振荡器及两只30pf电容。

二是采用外部振荡,此时应将外部振荡器的输出信号接至XTAL1脚,将XTAL2脚浮空。

利用单片机内部的定时功能来实现时钟的走时,通过编程实现每50毫秒产生一次中断,中断20次后,秒单元加1,秒单元加到60时,跳回到零再继续加,同时分单元加1。

以次类推,从而实现秒、分、小时、年的走时。

本次设计中采用的是内部振荡器,频率为12MHZ的晶体振荡器及30pf的瓷片电容。

如图2-1所示。

图2-1时钟电路2.1.2复位电路复位是指在规定的条件下,单片机自动将CPU以及与程序运行相关的主要功能部件、I/O口等设置为确定初始状态的过程。

如果电路参数不符合规定的条件或干扰导致单片机不能正确的复位,系统将无法进行正常的工作,因此,复位电路除了要符合厂家规定的参数外,还要滤除可能的干扰。

AT89S52单片机内部有一个由施密特触发器等组成的复位电路。

复位信号是从其9脚,即RST脚输入的。

AT89S52单片机规定,当其处于正常工作状态,且振荡器工作稳定后,在RST端有从高电平到低电平,且高电平时间大于两个机器周期的复位信号时,CPU将完成对系统的复位。

有两点需要注意:一、复位信号是高电平有效,二、高电平的保持时间必须大于两个机器周期,可见高电平保持时间与振荡频率有关。

本次设计中采用上电复位电路,上电复位是指在系统上电时,RST端自动产生复位所需要的信号将单片机复位,本次设计中的上电复位电路如图所示。

上电时,RST端高电平的维持时间取决于R(1k)和C(22uF)的值。

要使单片机可靠的复位,设计中使其维持的时间足够长。

如图2-2所示。

图2-2 复位电路2.2 温度采集电路2.1.DS18B20基本知识DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。

因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。

1、DS18B20产品的特点(1)、只要求一个端口即可实现通信。

(2)、在DS18B20中的每个器件上都有独一无二的序列号。

(3)、实际应用中不需要外部任何元器件即可实现测温。

(4)、测量温度范围在-55。

C到+125。

C之间。

(5)、数字温度计的分辨率用户可以从9位到12位选择。

(6)、内部有温度上、下限告警设置。

2、DS18B20的引脚介绍TO-92封装的DS18B20的引脚排列见图1,其引脚功能描述见表1。

3. DS18B20的使用方法由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。

由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。

DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。

该协议定义了几种信号的时序:初始化时序、读时序、写时序。

所有时序都是将主机作为主设备,单总线器件作为从设备。

而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。

数据和命令的传输都是低位在先。

DS18B20的复位时序DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。

对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。

DS18B20在完成一个读时序过程,至少需要60us才能完成。

DS18B20的写时序对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。

对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。

4.实验任务用一片DS18B20构成测温系统,测量的温度精度达到0.1度,测量的温度的范围在-20度到+100度之间。

2.3按键电路●方案一:采用阵列式键盘此类键盘是采用行列扫描方式,当按键较多时可以减少占用单片机的I/O口数目。

●方案二:采用独立式按键电路每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。

但是当按键较多时占用单片机的I/O数目较多。

本系统只需四个按键,因此选择方案二。

如果按键采用中断的话,可以使单片机工作更加灵活、效率更高。

由于该系统要用到4个按键,考虑到单片机的中断资源不够,所以就只用外部INT0和INT1中断,另外2个按键接P1.0和P1.1口。

电路如图2-8所示。

图2-8 按键电路2.4 显示电路1602采用标准的16脚接口,其中:第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15~16脚:空脚1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”1602液晶模块内部的控制器共有11条控制指令,如表2所示,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址00H指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。

高电平表示有效,低电平则无效指令4:显示开关控制。

D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符指令7:字符发生器RAM地址设置指令8:DDRAM地址设置指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:写数据指令11:读数据DM-162液晶显示模块可以和单片机AT89C51直接接口,电路如图1所示。

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。

要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表3是DM-162的内部显示地址.比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)程序在开始时对液晶模块功能进行了初始化设置,约定了显示格式。

注意显示字符时光标是自动右移的,无需人工干预,每次输入指令都先调用判断液晶模块是否忙的子程序DELAY,然后输入显示位置的地址0C0H,最后输入要显示的字符A的代码41H。

图2-9 显示电路2.6 闹钟电路●方案一:采用蜂鸣器声音指示。

蜂鸣器又分无源和有源两种。

前者需要输入声音频率信号才能正常发声,后者则需外加适当直流电源电压就可以了。

●方案二:采用发光二极管来代表闹钟闹铃。

●方案三:外接音乐芯片。

相关主题