基于51单片机设计的电子时钟万年历_第1页
基于51单片机设计的电子时钟万年历_第2页
基于51单片机设计的电子时钟万年历_第3页
基于51单片机设计的电子时钟万年历_第4页
基于51单片机设计的电子时钟万年历_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

福福 建建 师师 范范 大大 学学 应应 用用 科科 技技 学学 院院 学学 生生 论论 文文 论文题目:基于 51 单片机设计的电子时钟 指导教师: 吴允平 学 号: 120352010040 姓 名: 陈立镔 年 级: 2010 级 专 业: 电子信息工程 2014 年 4 月 20 日 第第一一章章 绪绪论论 1.11.1 电子时钟的研究背景电子时钟的研究背景 近些年来,电子技术得到了极速的发展,在其推动下,现代电子产品以及 各种高科技产品几乎渗透到了社会的各个领域。随着科技的发展社会的进步和 全球化竞争的日益激烈,人们对时间精度的要求也越来越高,传统的时钟已不 能满足人们的需求。多功能电子钟不管在性能还是在样式亦或是用途上都发生 了重大的变化,许多电子钟都已具备电子闹钟、电子秒表、温度检测等功能。 同时单片机在多功能数字钟中的应用已是非常普遍的。如今的多功能电子时钟 除了具有时钟的功能外还包含了对环境温度的检测功能。在一些行业生产及日 常生活中,对实时温度的测量及控制也非常的重要。数字电子时钟采用的是由 数字电路实现对时,分,秒数字精准显示的装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可或缺的必需品,由于数字集 成电路的发展和石英晶体振荡器的广泛应用,数字时钟的时间精度远远超过老 式钟表,数字化的时间显示也给人们生产生活带来了极大的方便,而且大大地 扩展了钟表原先所无法实现是的一些功能。例如定时自动报警、按时自动响铃、 时间程序自动控制、甚至各种定时电器的自动启用等,所有这些,都是以钟表 数字化为基础的。因此,研究数字时钟及扩大其应用,有着非常现实的意义。 1.21.2 设计的目的设计的目的 随着社会快速的发展,人们的生活节奏变得越来越快,人们对时间观念也愈 来愈重视。随着自动化、智能化技术的发展, 精密电子产品的智能度愈来愈高, 用到时间提示、定时控制的地方也会愈来愈多,因此,设计开发电子时钟具有 良好的应用前景。 由于单片机的成本较低、且高性能,在自动控制 化产品中得到了广泛的应用。 本文以 STC89C52为主控制芯片,时钟芯片采用 DS1302,温度传感器 DS18B20实 时采集温度参数,通过液晶显示器 LCD12864实时显示时间及温度,通过按键设 置年月日和星期以及定时闹钟,应用 C 语言进行软件编程,并用 Altium Designer Summer 09软件进行演示、验证。经过测试,系统可以正常完成预定 的功能 1.31.3 设计要求设计要求 设计一个可调电子时钟带万年历功能,其具体设计指标要求如下: 能够精准现实年、月、日、星期、时间、温度的信息,并可通过按键进 行时间的调试,以及设定闹钟的功能; 断电后时钟芯片正常运行,上电后能够精准走时; 设定闹钟时间,时间到时蜂鸣器响起,按任意键结束闹铃; 在此硬件设计时,要尽力做到硬件模块简单方便、性能稳定且易于实现, 促使整个系统电路简化。 软件设计流程清晰,且软件程序思维清晰,要做到以最为简单的程序实 现系统所需功能。 1.41.4 方案选择方案选择 1.4.1 主控芯片 STC89C52 STC89C52 的特点是:STC89C52 是 STC 公司生产的一种低功耗、高性能 CMOS8 位 微控制器,具有 8K 在系统可编程 Flash 存储器。STC89C52 是在经典的 MCS-51 内核的 基础上做出改进,使得拥有更多的功能。在单芯片上,拥有 8 位 CPU 和在系统可编程 Flash,使得 STC89C52 为众多嵌入式控制应用系统提供高灵活、较有效的解决方案, 受到了大多数项目工程师的青睐。 STC89C52 具有以下标准功能: 8k 字节 Flash,512 字节 RAM, 32 位 I/O 口线,MAX810 复位电路,看门狗定时器,内置 4KB EEPROM,4 个外部中断, 3 个 16 位定时器/计数器,一个 7 向量 4 级中断结构(兼容传统 51 的 5 向量 2 级中断结构),全双工串行口。另外 STC89C52 可降至 0Hz 静态逻辑操作, 支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数 器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机 一切工作停止,直到下一个中断或硬件复位为止。最高运作频率 35MHz,6T/12T 可选, 我们所设计的电子时钟所需要的资源采用 STC89C52 完全足够,也是最好的选择。所以 我们的主控芯片就用 STC89C52。如图 1-1 为 STC89C52 的引脚图 图 1-1 STC89C52 管脚图 1.4.2 实时时钟芯片 开始我们的时钟芯片有两个方案:方案一:采用DS1302 ,DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路,它可以对年、 月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V5.5V。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送 多个字节的时钟信号或 RAM 数据。DS1302 内部有一个 318 的用于临时性存放 数据的 RAM 寄存器。DS1302 是 DS1202 的升级产品,与 DS1202 兼容,但增加了 主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。 而 DS1302 存在时钟精度不高,易受环境影响,出现时钟混乱等缺点;方案二: 采用 DS12C887,DS 的特性有: 1、可计算到 2100 年前的秒、分、小时、星期、日期、月、年七种日历 信息并带闰年补偿; 2、自带晶体振荡器和锂电池。在没有外部电源的情况下可工作 10 年; 3、对于一天内的时间记录,有 12 小时制和 24 小时制两种模式。在 12 小时制模式中,用 AM 和 PM 区分上午和下午; 4、可选用夏令时模式 5、时间表示方法有两种:一种用二进制数表示,一种用 BCD 码表示; 6、DS12C887 中带有 128 字节 RAM,其中 11 字节用来存储时间信息,4 字节 RAM 用来存储 DS12C887 的控制信息,称为控制寄存器,113 字节 RAM 供用户使用; 7、数据/地址总线复用; 8、用户可编程以实现多种方波输出; 9、可应用于 MOTOROLA 和 INTEL 两种种线; 10、三种可编程中断:定闹中断、时钟更新结束中断、周期性中断。 由于我们所做的万年历对于时间精度的要求较高、功能特性要求也较多,所以 我们采用 DS12C887 作为我们的时钟芯片。 图 1-2 DS12C887 封装图 1.4.3 液晶显示模块 由于我们所设计的电子时钟所需要的显示的内容较复杂,所以我们直接排 除晶体管显示的方案而考虑使用液晶屏最为显示模块,而其中显示的内容又较 少,所以我们直接采用 LCD1602 作为我们的最终方案。 LCD1602 是工业字符型液晶,能够同时显示 32 个字符。(16 列 2 行) 1602 液晶也叫 1602 字符型液晶,它是一种专门用来显示字母、数字、符 号等的点阵型液晶模块。它由若干个 5X7 或者 5X11 等点阵字符位组成,每个点 阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间 隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。 1602LCD 是指显示的内容为 16X2,即可以显示两行,每行 16 个字符液晶模块(显 示字符和数字) 第第二二章章 硬硬件件设设计计 2.12.1 系统硬件的总体设计系统硬件的总体设计 本系统设计的电子时钟万年历模块设计框图如图 2-1 所示,采用 STC89C52 为系统主控芯片,电源电路、复位电路、时钟电路、按键控制电路、蜂鸣器电 路、LCD 液晶驱动电路/液晶显示器所组成。整机供电采用 5 号电池供电,运用 按键来调整时间参数。系统框图如下图 2-1 所示: S ST TC C8 89 9C C5 52 2 单单片片机机 电源电路 复位电路 时钟电路 蜂鸣器电路 按键控制电路 LCD 液晶驱动 12864 液晶模块 图 1-1 电路设计流程图 2.22.2 系统各模块介绍系统各模块介绍 2.2.1 电源电路 图 2-2-1 电源电路模块 2.2.2 复位电路模块 图 2-2-2 复位电路模块 2.2.3 按键电路模块 键盘模块电路采用行列式矩阵键盘组。因为该项目中应用到的键盘较多, 而单片机 Io 口的资源又很宝贵,所以为了减少主控 IO 口的占用,我们选择采 用 4X4 矩阵键盘。代码实现应用常用的键盘扫描法进行扫描键盘。 图 2-2-3 矩阵键盘模块 2.2.4 蜂鸣器模块 图 2-2-4 蜂鸣器驱动电路 2.2.5 LCD1602 驱动模块 图 2-2-5 1602 驱动电路 第第三三章章 软软件件设设计计 3.13.1 软件开发程序软件开发程序 keilkeil C51C51 Keil C51 是美国 Keil Software 公司研发的 51 系列兼容单片机 C 语言软件 开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明 显的优势,因而易学易用。Keil 提供了包括 C 编译器、宏汇编、连接器、库管 理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环 境(uVision)将这些部分组合在一起。运行 Keil 软件可以在 WIN98、NT、WIN2000、WINXP 等操作系统下运行。其方便易用的集成环境、强 大的软件仿真调试工具也令程序开发的程序编译更加便捷。下面是比较典型的 keil uvision4 的介绍。 图 3-1 keil uvision4 的运行界面 keil uvision4 软件的操作步骤: 1、建立源文件,使用菜单“file-new”,在新的文本编辑窗口内编写源程序。 2、建立工程文件点击“Project-New Project ”菜单,并给将要建立的工程编 辑文件名(不需要扩展名),点击“保存”按钮,会出现第二个对话框,选 择目标单片机,Keil 支持的单片机的种类很多,在这边我们选择 STC 公司的 STC89C52 芯片,按“确定”即可。 3、在新建的工程中加入之前编辑的源程序。对工程进行详细设置,在这边我们 主要设置单片机的晶振频率为 12,同时设置对话框中的 OutPut 页面,其中 Creat Hex file 用于生成可执行代码文件(可以用编程器写入单片机芯片的 HEX 格式文件,文件的扩展名为.HEX),因为我们做的是硬件实验所以必须 选中该项。 4、进行编译、连接。 5、在程序编译完成并且没有出现错误,把生成的 HEX 格式的文件,将该文件下 载到单片机内。界面显示如下图: 图 3-2 程序下载 3.13.1 软件系统路程图软件系统路程图 开始 初始化程序 显示子程序 延时子程序 闹铃子程序 DS1302 子程 序 按键扫描子程序 图 3-1-1 程序流程图 3.23.2 系统子程序运行系统子程序运行 3.2.1 LCD1602 液晶显示驱动初始化 图 3-2-1 LCD12864 驱动流程图 液晶初 始化 按键扫描 液晶显示 上电 结束 LCD1602 液晶初始化程序如下: Uchar code zf=“current stade:“; void init() /液晶初始化 lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(m=0;m=1;/右移一位 CLK=1; /* * * 函数: 写数据 *- - * 参数: add: 地址 dat: 数据 * 返回: NONE * * 作者: ChenLB * */ void Write_1302(uint8 add,uint8 dat) /.启动 RST=0; /_nop_(); CLK=0; /_nop_(); RST=1; /_nop_(); /开始发送数据. Write_1302_byte(add); /发送地址 Write_1302_byte(dat); /发送数据 /数据发送结束. RST=0; /_nop_(); SDA=1; CLK=1; /* * * 函数: 写保护 *- - * 参数: flag为 1 时进入写保护,为 0 时去除写保护 * 返回: * * 作者: ChenLB * */ void DS1302_SetProtect(bit flag) if(flag) Write_1302(0x8e,0x80); else Write_1302(0x8e,0x00); /* * * 函数: 读一个字节数据 *- - * 参数: add 要读取的时间量的地址 * 返回:value读到的一个字节数据 * * 作者: ChenLB * */ uint8 Read_1302_byte(uint8 add) uchar i,value; RST=0; /_nop_(); CLK=0; /_nop_(); RST=1; /_nop_(); Write_1302_byte(add); for(i=0;i1; if(SDA) value|=0x80; _nop_(); CLK=1; /以下为 DS1302 复位的稳定时间. RST=0; _nop_();_nop_(); RST=0; CLK=0; _nop_();_nop_();_nop_();_nop_(); CLK=1; _nop_();_nop_(); SDA=0; _nop_();_nop_(); SDA=1; _nop_();_nop_(); return value; /* * * 函数: 设置 RTC 时钟 *- - * 参数: NONE * 返回:NONE * * 作者: ChenLB * */ void Set_Rtc( void ) uint8 i,j; for(i=0;i7;i+) /BCD 处理,将十六进制转换成十进制 j=Time_datai/10; Time_datai=Time_datai%10; Time_datai=Time_datai+j*16; DS1302_SetProtect(0);/去除写保护 for(i=0;i7;i+) Write_1302(Write_addi,Time_datai); DS1302_SetProtect(1); /加写保护 /* * * 函数: 读取 RTC 时间 *- - * 参数: NONE * 返回:NONE * * 作者: ChenLB * */ void Read_Rtc( void ) uint8 i; for(i=0;i7;i+) Time_datai=Read_1302_byte(Read_addi); /* * * 函数: 数据转换处理,将 16 进制的数码转换成 10 进制 *- - * 参数: NONE * 返回:NONE * * 作者: ChenLB * */ void Time_pros( void ) Year =Time_data0/16*10+Time_data0%16; Week =Time_data1/16*10+Time_data1%16; Mon =Time_data2/16*10+Time_data2%16; Day =Time_data3/16*10+Time_data3%16; Hour =Time_data4/16*10+Time_data4%16; Min =Time_data5/16*10+Time_data5%16; Sec =Time_data6/16*10+Time_data6%16; uint8 change(uint8 x) uint8 temp,y; y=x; temp=y/16; y=y%16; y=y+temp*10; return y; 第第四四章章 仿仿真真软软件件 P PR RO OT TE EU US S 4.14.1 ProteusProteus 软件介绍软件介绍 Proteus 软件是英国 Lab Center Electronics 公司出版的 EDA 工具软件。它不仅 具有其它 EDA 工具软件的仿真功能,还能还原出真实的单片机及外围器件的运行状态。 它是目前最好的仿真单片机及外围器件的工具。虽然目前在国内刚开始推广,但已受 到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的认 可与肯定。 图 4-1 Proteus 软件运行界面 Proteus 软件具有其它 EDA 工具软件(例:multisim)的功能。这些功能是: (1)原理布图 (2)PCB 人工或自动布线 (3)SPICE 电路仿真 革命性的特点 (1)互动的电路仿真:用户甚至可以实时调用诸如,Led,键盘,马达,AD/DA,部 分 SPI 器件,部分 IIC 器件; (2)仿真处理器及其外围电路可以仿真 51 系列、AVR、ARM、等主流单片机。还可 以直接在基于原理图的虚拟原型上编程,再配合显示及输出,就能模拟运行后输入输 出的效果。 具有 4 大功能模块 (1)智能原理图设计(ISIS) (2)完善的电路仿真功能(Prospice) (3)独特的单片机协同仿真功能(VSM) (4)实用的 PCB 设计平台 4-24-2 ProteusProteus 仿真模拟运行仿真模拟运行 将程序经 keil 编译后所生成的 HEX 文件下载到Proteus 软件中,点击开始运 行,开始模拟该程序的运行状态及各功能按键的使用情况。 图 4-2 Proteus 模拟程序运行结果 在开始的调试中碰到了很多问题,第一次是 proteus 仿真一直不能打开, 后来发现是因为联调步骤有错误,重新联调之后就能仿真了,但是在仿真中又 发现可以仿真,但是显示器没有显示东西,经过分析发现是程序和电路上的 IO 口不符合的原因,改过程序之后再次运行,发现还是有问题,就是不显示日期, 只有时间显示,日期显示处是空白的,后来仔细研究发现是 LCD 的问题,换了 一个还是不行,最后还是修改了一下程序就好了。 最后的硬件调试中还是出 现了很多问题,比如显示器不亮、蜂鸣器一直响等。分析原因:1、可能是程序 错误;2、可能是板子上的电路老化出现问题;3、可能是单片机出现了问题; 4、可能是电路图和实际的开发板图不一样;5、可能是显示器或蜂鸣器有问题。 经过一一排查,最后终于能够正常显示。 第第五五章章 组组装装与与调调试试 5.1 制作所需的元器件 单片机 STC89C52、蜂鸣器、LCD1602 液晶显示屏、实时时钟芯片 Ds1302、电阻、 电位器、排阻、电容、12M 晶振、插针、按键、杜邦线。 5.2 硬件制作与调试中遇到的问题及解决方法 (1)由于在写程序时所对应的 IO 口位置与硬件上的位置不相符,照成调试数据 时一直出错,在查找原因的时候也遇到较多的困难,所以写程序时一定要依照硬件上 面的实际连线来编写 (2)在焊接的时候要防止铜板铜面氧化,操作过程中最好带上手套,其次是需要 合适的助焊剂通常是采用松香作为助焊剂,最后是焊件要将烙铁的温度加热到合适的 温度在进行焊接。在我的焊接过程中,常常会因为焊头被氧化了,导致在焊接的过程 中比较困难。 (3)制作后首先应该用万用表检查一下电路是否存在断短路的问题,确定没问题 后再上电使用。 5.3 软件调试时遇到的问题以及解决方法 (1)在程序的编写中,由于自己的粗心大意,出现了很多细节上的问题,比如标 点符号用了中文的格式,IO 口的编写没有与硬件上的对应上,这些都给后面的调试带 来了麻烦 (2)把程序加载到单片机,上电调试后发现,用按键调试时间会乱跳,后来经过 观察发现是按键程序里面没有加上消抖程序,填上去之后就恢复正常; 第第六六张张 总总结结 本次毕业设计主要是电子时钟的显示,虽然成功了,但由于自身的能力问题, 并没有实现闹钟和报警的功能,暴露出我们对 C 语言的掌握还有一定的欠缺。 由于对 protel 掌握的还不熟练,经常出错,有的元件也找不到,所以画原理图 的时候耽误了点儿时间。开始的时候虽然有一个明确的方向,但也是无从下手。 实验被分为显示模块、时钟模块、温度模块和按键模块,在搭建这些模块的过 程中,也遇到了麻烦,不得不到处查资料,发现自己的很多知识点都很欠缺。 Comment 1: 参考文献要罗列出来 通过这次动手,锻炼了我在设计、制作和调试应用系统等各方面的能力,深入 领会了单片机项目的软

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论