基于单片机的数字时钟加闹钟的设计与制作毕业设计.doc_第1页
基于单片机的数字时钟加闹钟的设计与制作毕业设计.doc_第2页
基于单片机的数字时钟加闹钟的设计与制作毕业设计.doc_第3页
基于单片机的数字时钟加闹钟的设计与制作毕业设计.doc_第4页
基于单片机的数字时钟加闹钟的设计与制作毕业设计.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的数字时钟加闹钟的设计与制作 题 目 基于单片机的数字时钟加闹钟的设计与制作 1 绪论绪论2 1.1 引言.2 1.2 研究目的.2 1.3 系统基本方案选择和论证.2 1.3.1 单片机芯片的选择方案和论证: .2 1.3.2 显示模块选择方案和论证: .2 1.3.3 时钟芯片的选择方案和论证: .2 1.3.4 电路设计最终方案确定 .3 1.4 硬件系统框图3 2 主要元件介绍主要元件介绍.4 2.1 stc89c52 以及最小系统介绍4 2.1.1 st89c52 单片机:.4 2.1.2 计时芯片 ds1302:5 2.1.3 字符液晶显示屏 lcd1602 资料: .6 2.1.4 电源模块: 8 3. 硬件电路连接图:硬件电路连接图:8 3.1 单片机的连接图.8 3.2 ds1302 计时模块.9 3.3 lcd1602 液晶显示模块9 3.4 按键模块9 4. 系统的软件设计:系统的软件设计:10 4.1 软件设计流程图:10 5. 系统的调试:系统的调试:11 6. 总结:总结:12 参考文献参考文献.13 附录一:附录一:.14 附录二:附录二:.15 附录三:附录三:.29 嵌入式综合课程设计嵌入式综合课程设计 iiiiii 基于单片机的数字时钟加闹钟的设计与制作 (基于单片机的数字时钟加闹钟的设计与制作) 任务提出: 随着单片机技术的飞速发展,在其推动下,现代的电子产品几乎渗透到了社会的各个领域,有 力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能 进一步提高。 时间就是金钱、时间就是生命、时间就是胜利,准确的掌握时间和分配时间对人们来说至 关重要,时钟是我们生活中必不可少的工具。电子钟的设计方法有很多种,但是基于单片机并通过 lcd 显示的电子时钟具有编程灵活、精确度高、便于携带、显示直观等特点。利用 stc89c52 单片 机对 ds1302 时钟芯片进行读写操作并通过 lcd1602 字符液晶显示实时时钟信息,这样便构成了一 个单片机电子时钟。 设计要求: 利用单片机作为核心控制器件,制作一个数字时钟。要求其具有如下功能: 具有年、月、日、星期、时、分、秒显示功能; 具备年、月、日、星期、时、分、秒校准功能; 具有闹钟显示、调节设定、鸣叫功能; 计时器模块能够准确计时; 显示模块能够清晰、稳定显示,不出现乱码; 输入模块能够正确输入指令; 控制模块能够正确控制输入、输出显示; 整个系统能够正常、稳定工作。 陕西理工学院课程设计论文 第 1 页 共 29 页 摘 要 随着单片机技术的飞速发展,在其推动下,现代的电子产品几乎渗透到了社会的各个领域,有 力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高。 时间就是金钱、时间就是生命、时间就是胜利,准确的掌握时间和分配时间对人们来说至 关重要,时钟是我们生活中必不可少的工具。电子钟的设计方法有很多种,但是基于单片机并通过 lcd 显示的电子时钟具有编程灵活、精确度高、便于携带、显示直观等特点。利用 stc89c52 单片 机对 ds1302 时钟芯片进行读写操作并通过 lcd1602 字符液晶显示实时时钟信息,这样便构成了一 个单片机电子时钟。 【关键词关键词】:单片机,电子时钟,stc89c52,蜂鸣器 陕西理工学院课程设计论文 第 2 页 共 29 页 1 绪论 1.1 引言引言 时间,对人们来说是非常宝贵的,准确的掌握时间和分配时间对人们来说至关重要。因此自从 时钟发明的那刻起,就成为人类的好朋友。随着时间的流逝,科学技术的不断发展和提高,人们对 时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好、更方便、更精确的显示时间,这 就要求人们不断设计研发出新型的时钟。 高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石 英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校。数字式电子钟用集成电路计时 时,译码代替机械式传动,用 led 显示器代替指针进而显示时间,减小了计时误差,这种表具有 时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。时钟电路在计算机系统 中起着非常重要的作用,是保证系统正常工作的基础。在单片机的应用系统中,时钟有两个方面的 含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的 大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现 方法:一是用软件实现,即用单片机内部的 可编程定时器计数器来实现;二是用专门的时钟芯片实现。 1.2 研究目的研究目的 通过利用 stc89c52 单片机和 ds1302 芯片以及外围的按键和 lcd 显示器等部件,设计一个 基于单片机的电子时钟。设计的电子时钟通过液晶显示器显示,并能通过按键对时间以及闹钟进行 置。 1.3 系统基本方案选择和论证系统基本方案选择和论证 1.3.1 单片机芯片的选择方案和论证: 方案一: 采用 stc89c52 芯片作为硬件核心。 stc89c52 内部具有 8kb rom 存储空间,512 字节数据存储空间,带有 2k 字节的 eeprom 存储空间,与 mcs-51 系列单片机完全兼容,stc89c52 可以通过串口下载。 方案二: 采用 at89s52。 at89s52 片内具有 8k 字节程序存储空间,256 字节的数据存储空间没有 eeprom 存储空间, 也与 mcs-51 系列单片机完全兼容,具有在线编程可擦除技术。两种单片机都完全能够满足设计需 要,stc89c52 相对 ats89c52 价格便宜,且抗干扰能力强。考虑到成本因素,因此选 stc89c52。 1.3.2 显示模块选择方案和论证: 方案一:采用点阵式数码管显示。 点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显 得太浪费,且也相对较高,所以不用此种作为显示。 方案二:采用 led 数码管动态扫描。 led 数码管价格便宜,对于显示数字最合适,但功耗较大,且显示容量不够,所以也不用此种方 案。 方案三:采用 lcd 液晶显示屏。 液晶显示屏的显示功能强大,可显示大量文字,显示多样,清晰可见,且价格适中,所以采用 lcd 数码管作为显示。 1.3.3 时钟芯片的选择方案和论证: 方案一: 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。 采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。 陕西理工学院课程设计论文 第 3 页 共 29 页 方案二: 采用 ds1302 时钟芯片实现时钟,ds1302 芯片是一种高性能的时钟芯片,可自动对秒、分、 时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,工作电压 2.5v5.5v 范围内,2.5v 时耗电小于 300na. 1.3.4 电路设计最终方案确定 综上各方案所述,对此次作品的方案选定:采用 stc89c52 单片机作为主控制系统;采用 ds1302 作为时钟芯片;采用 lcd1602 液晶作为显示器件。 1.4 硬件系统框图硬件系统框图 该系统采用单片机 89c52 作为控制芯片,把 ds1302 计时模块传来的信息和键盘输入的指令进 行处理,控制着液晶屏 lcd1602 的显示和蜂鸣器的驱动。 单 片 机 ds1302 计时模块 键盘输入模块 lcd1602 显示模块 蜂鸣器 陕西理工学院课程设计论文 第 4 页 共 29 页 2 主要元件介绍 2.1 stc89c52 以及最小系统介绍以及最小系统介绍 2.1.1 st89c52 单片机: 1. 主要性能参数: 与 mcs-51 产品指令和引脚完全兼容。 8 字节可重擦写 flash 闪速存储器 1000 次擦写周期 全静态操作:0hz-24mhz 三级加密程序存储器 256x8 字节内部 ram 32 个可编程 i/0 口线 3 个 16 位定时计数器 8 个中断源 可编程串行 uart 通道、低功耗空闲和掉电模式。 2. 功能特性: stc89c52 提供以下标准功能:8 字节 flash 闪速存储器,256 字节内部 ram , 32 个 i/o 口 线,3 个 16 位定时计数器,一个 6 向量两级中断结构,一个全双工串行通信口,片内振荡器 及时钟电路。同时,at89c52 可降至 0hz 的静态逻辑操作,并支持两种软件可选的节电上作模 式。空闲方式停止 cpu 的工作,但允许 ram,定时计数器串行通信口及中断系统继续工 作。掉电方式保存 ram 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件 复位. 3. 管脚图: stc89c52 引脚介绍: 主电源引脚(2 根) vcc(pin40):电源输入,接5v 电源 gnd(pin20):接地线 外接晶振引脚(2 根) xtal1(pin19):片内振荡电路的输入端 xtal2(pin20):片内振荡电路的输出端 控制引脚(4 根) rst/vpp(pin9):复位引脚,引脚上出现 2 个机器周期的高电平将使单片 机复位。 ale/prog(pin30):地址锁存允许信号 psen(pin29):外部存储器读选通信号 ea/vpp(pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平 则从内部程序存储器读指令。 可编程输入/输出引脚(32 根) stc89c52 单片机有 4 组 8 位的可编程 i/o 口,分别位 p0、p1、p2、p3 口,每个口有 8 位(8 根 引脚) ,共 32 根。 p0 口(pin39pin32):8 位双向 i/o 口线,名称为 p0.0p0.7 p1 口(pin1pin8):8 位准双向 i/o 口线,名称为 p1.0p1.7 p2 口(pin21pin28):8 位准双向 i/o 口线,名称为 p2.0p2.7 p3 口(pin10pin17):8 位准双向 i/o 口线,名称为 p3.0p3.7 陕西理工学院课程设计论文 第 5 页 共 29 页 2.1.2 计时芯片 ds1302: 1.概述: ds1302 是 dallas 公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和 31 字节静态 ram 通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒、分、时、日、日期、月、 年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过 am/pm 指示决定采用 24 或 12 小时格式。ds1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线 res 复位 i/o 数据线 sclk 串行时钟。ram 的读/写数据以一个字节或多达 31 个字节的 字符组方式通信。ds1302 工作时功耗很低保持数据和时钟信息时功率小于 1mw。 2. ds1302 功能特性: 双电源管脚用于主电源和备份电源供应 vcc1 为可编程涓流充电电源;附加七个字节的存储 器;实时时钟具有能计算 2100 年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰 年调整的能力 31*8 位暂存数据存储 ram;串行 i/o 口方式使得管脚数量最少;宽范围工作电压 2.05.5v;工作电流 2.0v 时,小于 300na;读/写时钟或 ram 数据时有两种传送方式:单字节传 送和多字节传送字符组方式;8 脚 dip 封装或可选的 8 脚 soic 封装;简单 3 线接口;与 ttl 兼 容(vcc=5v) ;可选工业级温度范围:-40+85。 3. 管脚描述: x1、x232.768khz 晶振管脚 gnd地 rst复位脚 i/o数据输入/输出引脚 sclk串行时钟 vcc1、vcc2电源供电管脚 4. ds1302 的控制字如表所示。 控制字节最高有效位(位 7)必须是逻辑 1,如果它为 0, 则不能把数据写入 ds1302 中,位 6 如果 0,则表示存取日历时钟数据,为 1 表示存取 ram 数据; 位 5 至位 1 指示操作单元的地址;最低有效位(位 0)如为 0 表示要进行写操作,为 1 表示进 行读操作,控制字节总是从最低位开始传输。 数据输入输出(i/o)在控制指令字输入后的下一个 sclk 时钟的上升沿时,数据被写入 ds1302, 数据输入从低位即位 0 开始。同样,在紧跟 8 位的控制指令字后的下一个 sclk 冲的下降沿读出 ds1302 的数据,读出数据时从低位 0 位到高位 7。其读写时序如图示: ds1302 控制字 陕西理工学院课程设计论文 第 6 页 共 29 页 2.1.3 字符液晶显示屏 lcd1602 资料: 1. 概述: 工业字符型液晶,1602 是指显示的内容为 16*2,即能够同时显示两行,每行 16 个符。常见的 1602 字符液晶有两种,一种显示的是绿色背光黑色字体,另一种显示蓝色背光白色字体,目前市 面上字符液晶绝大多数是基于 hd44780 液晶芯片的,控制原理是完全相同的。本课题所用 1602 液 晶模块,显示屏是蓝色背光白色字体。如图 2.引脚功能说明: 第 1 脚:gnd 为地电源。 第 2 脚:vcc 接 5v 正电源。 第 3 脚:vo 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高, 对比度过高时会产生重影,使用一个 10k 的电位器调 整对比度。 第 4 脚:rs 为寄存器选择,高电平时选择数据寄存器, 低电平时选择指令寄存器。 第 5 脚:r/w 为读写信号线,高电平时进行读操作, 低电平时进行写操作。 第 6 脚:e 端为使能端,当 e 端由高电平跳变成低电 平时,液晶模块执行命令。 第 714 脚:db0db7 为 8 位双向数据线。 第 1516 脚:背光灯电源。 ds1302 读写时序 陕西理工学院课程设计论文 第 7 页 共 29 页 3. lcd1602 液晶屏的使用时序: 4. lcd1602 存储器 ram: 1602 液晶控制器芯片内部带有 80 个 8 位的 ram 缓冲区,其地址和屏幕的对应关系如图示: ds1302 读写时序 lcd1602 写时序 lcd1602 读时序 陕西理工学院课程设计论文 第 8 页 共 29 页 2.1.4 电源模块: 系统的供电采用 5v 供电,具体的连接如图示: 变压器采用的是:ac220ac9v,稳压芯片是 lm7805。 3. 硬件电路连接图: 以 stc89c52 单片机最小系统为核心控制,时钟电路由 ds1302 芯片提供,采用三线与单片机 进行通信,用四个独立的按键进行年、月、日、时间、星期等调整,最终的结果通过 lcd1602 液 晶显示屏显示出来。 3.1 单片机的连接图单片机的连接图 其中 xtal1 和 xtal2 接 11.0592mhz 的晶振,rst 经开关接+5v,控制系统的复位。p1 口与 ds1302 计时模块连接,进行通信与对其控制。p2 口与 lcd1602 液晶显示模块连接,控制着 lcd1602 的显示。p3 口与按键连接,通过 p3 口输入控制信号。 陕西理工学院课程设计论文 第 9 页 共 29 页 3.2 ds1302 计时模块计时模块 其中 x1、x2 接晶振 32.768khz,vcc1、vcc2 接电源 i/o 接单片机的 p1.1,,进行数据的交 换,sclk 接单片机的 p1.0,rst 接单片机的 p1.2 引脚,进行指令的接收。 3.3 lcd1602 液晶显示模块液晶显示模块 其中 db0db7 分别接单片机的 p2.0p2.7,进行数据的传输,vo 接电阻进行背光亮度的调节, rs、rw 和 en 分别接单片机的 p1.3p1.5,用于单片机的指令接收。 3.4 按键模块按键模块 开关一端接地,另一端接 p3.0p3.3,单片机用检测 p3.0p3.3 引脚的电位判断是否有键按下。 陕西理工学院课程设计论文 第 10 页 共 29 页 4. 系统的软件设计: 4.1 软件设计流程图:软件设计流程图: 首先,编写主程序,对计时模块 ds1302 和显示模块 lcd1602 进行初始化,同时定义计时模 块、显示模块和按键模块的控制程序,之后读取 ds1302 计时模块预先设定数据,显示模块 lcd1602 进行显示。按键检测程序一直在检测是否有键按下,如果 s1 键按下一次,主函数调用计 时控制和显示控制的函数对秒进行操作,此时秒闪烁,如果此时按下 s2、s3 可对其进行加减调整; 按下如果 s1 按下两次,主函数调用计时控制和显示控制的函数对分进行操作,此时分闪烁,如果 此时按下 s2、s3 可对其进行加减调整;按下如果 s1 按下三次,主函数调用计时控制和显示控制的 函数对时进行操作,此时时闪烁,如果此时按下 s2、s3 可对其进行加减调整;按下如果 s1 按下四 次,主函数调用计时控制和显示控制的函数对年进行操作,此时年闪烁,如果此时按下 s2、s3 可 对其进行加减调整;按下如果 s1 按下五次,主函数调用计时控制和显示控制的函数对月进行操作, 此时月闪烁,如果此时按下 s2、s3 可对其进行加减调整;按下如果 s1 按下六次,主函数调用计时 控制和显示控制的函数对日进行操作,此时日闪烁,如果此时按下 s2、s3 可对其进行加减调整; 按下如果 s1 按下七次,主函数调用计时控制和显示控制的函数对周进行操作,此时周闪烁,如果 此时按下 s2、s3 可对其进行加减调整;按下如果 s1 按下八次,程序进入主函数。 陕西理工学院课程设计论文 第 11 页 共 29 页 5. 系统的调试: 将系统的电源、计时模块、按键模块、显示模块、控制模块,按照附录一的电路做成 pcb 电 路板,把元器件焊接在板子上。进行硬件的搭建。搭建好硬件之后,将编译好的软件程序下载到 stc89c52 中。检查无误后,接通电源,看是否能够实现预期的功能。在单个的模块调试中,各个 模块均能够正常稳定的工作,但是在将它们装配在一块,进行整体的调试时,就出现了其他一些问 题,不能实现预期的功能。经过仔细的检查和查阅资料、询问老师同学等方式,进行解决。现在系 统能够稳定、正常的工作。 调试过程:检查各个器件完好,连接正常之后,接通电源,此时电源指示灯亮,液晶显示屏 lcd1602 同时亮,依次出现开机画面;数秒之后,显示初始的年、月、日、星期、时、分、秒。 通过模式选择键可以在时间显示模式和闹钟模式之间切换,通过移位键可以使液晶屏上的光标 依次移位,将光标移位在想要的调节的位置,按加、减键可以进行该位置的数字的调整。加、 减键可以在按下移位键之后,调节光标闪烁位置的数字。将模式切换到闹钟模式,依次调整时、 分,当时间到预设的时间,蜂鸣器发出”滴滴” 声。 陕西理工学院课程设计论文 第 12 页 共 29 页 6. 总结: 通过本次课程设计,使我加深了对单片机的认识,并且掌握了单片机系统的设计、制作流程, 收获丰硕。功能上基本达标:时钟与闹钟的显示,调时间和闹钟功能以及闹钟鸣叫功能。时钟与闹 钟显示功能,精确度完全可以满足日常生活显示时间的需要;调时间与闹钟功能,方便快捷。硬件 设施基本合乎要求,软件设计可以配合硬件实现其功能。 技术在不断进步,机械式时钟已经被淘汰,取而代之的是具有高度准确性和直观性且无机械装 置,具有更长的使用寿命等优点的电子时钟。电子时钟更具人性化,更能提高人们的生活质量,更 受人们欢迎。机械时代已经远去,电子时代已经到来。做为新时代的我们,更应该提高自身能力, 适应新时代的发展。知识来自实践,多从生活中探寻所需要的。 从这次的课程设计中,我真正的体会到,知识的重要性,特别是要理论联系实际,把我们所学 的理论知识运用到实际生活当中,学以致用。 陕西理工学院课程设计论文 第 13 页 共 29 页 参考文献 1李广第,朱月秀,冷租祁.单片机基础第三版.北京:北京航空航天大学出版社(1259) 。 2李庆亮.c 语言程序设计实用教程.北京:机械工业出版社,2005.3(1100) 。 3康华光.电子技术基础数字部分.北京:高等教育出版社,2008(1560) 。 3康华光.电子技术基础模拟部分.北京:高等教育出版社,2008(1560) 。 4杨志忠.数字电子技术.北京:高等教育出版社,2003.12(30100) 。 5及力.protel 99 se 原理图与 pcb 设计教程.北京:电子工业出版社,2007.8(48100) 。 6杨欣电子设计从零开始.北京:清华大学出版社,2005(10200) 。12邢小杰.单片机电子时钟 设计.中国科技博览,2009。 陕西理工学院课程设计论文 第 14 页 共 29 页 附录一: 整体电路连接图: 陕西理工学院课程设计论文 第 15 页 共 29 页 附录二: 源程序代码: #include #include #define uchar unsigned char #define uint unsigned int bit flag; uchar s1num; char nian,yue,ri,shi,fen,miao,week; char a_fen=10,a_shi=10;/初始值年周月时分秒 uchar kaiji=“-welcome!-“;/开机画面显示 uchar kaiji1=“*good luck!*“; /123456789abcdefg uchar alarm_table=“ alarm:“; uchar write_add7=0x8c,0x8a,0x88,0x86,0x84,0x82,0x80; uchar read_add7=0x8d,0x8b,0x89,0x87,0x85,0x83,0x81; sbit rs=p15; /1602 定义 sbit rw=p14; sbit e=p13; sbit sck=p10;/1302 定义 sbit io=p11; sbit rst=p12; sbit s1=p32; /调整按键 sbit s2=p31;/加 1 sbit s3=p30;/减 1 sbit s4=p33;/模式选择 sbit dd=p34;/蜂鸣器 陕西理工学院课程设计论文 第 16 页 共 29 页 void delay_1ms(uchar m) /延时函数 uchar i,j; for(j=0;j1; sck=1; void write_ds1302(uchar add,uchar dat) rst=0; _nop_(); sck=0; _nop_(); rst=1; 陕西理工学院课程设计论文 第 18 页 共 29 页 _nop_(); write_ds1302_byte(add); write_ds1302_byte(dat); rst=0; _nop_(); io=1; sck=1; void write_tran_data(uchar add,uchar dat) /十进制转换成 bcd 码 uchar t; t=dat/10; dat=dat%10; dat=t1; if(io) vulue=vulue|0x80; sck=1; rst=0; 陕西理工学院课程设计论文 第 19 页 共 29 页 _nop_(); sck=0; io=1; sck=1; vulue=(vulue4)*10+(vulue /bcd 码转换成十进制 return vulue; void tran_week(uchar dat) /星期转化函数 switch(dat) case 1:write_com(0x80+13); write_data(m); write_data(o); write_data(n); break; case 2:write_com(0x80+13); write_data(t); write_data(u); write_data(e); break; case 3:write_com(0x80+13); write_data(w); write_data(e); write_data(d); break; case 4:write_com(0x80+13); write_data(t); write_data(h); write_data(u); break; case 5:write_com(0x80+13); write_data(f); write_data(r); write_data(i); break; case 6:write_com(0x80+13); write_data(s); write_data(a); write_data(t); break; case 7:write_com(0x80+13); 陕西理工学院课程设计论文 第 20 页 共 29 页 write_data(s); write_data(u); write_data(n); break; void init() uchar t; write_com(0x38);/1602 初始化 write_com(0x0c); write_com(0x06); write_com(0x01); /ds1302 初始化 write_tran_data(0x8c,13); write_tran_data(0x8a,1); write_tran_data(0x88,03); /0x8c,0x8a,0x88,0x86,0x84,0x82,0x80 write_tran_data(0x86,01);/ 年 、周、 月、 日、 时、 分、 秒 write_tran_data(0x84,00); write_tran_data(0x82,00); write_tran_data(0x80,00); write_com(0x80); for(t=0;t16;t+) write_data(kaijit); delay_1ms(1); write_com(0x80+0x40); for(t=0;t16;t+) write_data(kaiji1t); delay_1ms(1); for(t=0;t50;t+) delay_1ms(100); write_com(0x01);/清屏 陕西理工学院课程设计论文 第 21 页 共 29 页 void scan_key() /按键判别函数 if(s4=0) /选择模式:时间/闹钟 delay_1ms(10); if(s4=0) while(!s4); beep(); flag=flag; if(flag=0)/选择时间模式 if(s1=0) delay_1ms(10); if(s1=0) while(!s1); beep(); s1num+; switch(s1num)/光标闪烁定位 case 7: write_com(0xc0+11); /秒 write_com(0x0f); break; case 6: write_com(0xc0+8);/分 write_com(0x0f); break; case 5: write_com(0xc0+5);/时 write_com(0x0f); break; case 4: write_com(0x80+13); /周 write_com(0x0f); break; case 3: write_com(0x80+10); /日 陕西理工学院课程设计论文 第 22 页 共 29 页 write_com(0x0f); break; case 2: write_com(0x80+7);/月 write_com(0x0f); break; case 1: write_com(0x80+4);/年 write_com(0x0f); break; default:s1num=0;write_com(0x0c); /取消闪烁 break; if(s1num!=0) /加 1 按键 if(s2=0) delay_1ms(10); if(s2=0) while(!s2); beep(); switch(s1num) case 7: miao+; if(miao=60) miao=0; write_tran_data(0x80,miao); /调整后的值 送入 ds1302 中 break; case 6: fen+; if(fen=60) fen=0; write_tran_data(0x82,fen); break; case 5: shi+; if(shi=24) shi=0; 陕西理工学院课程设计论文 第 23 页 共 29 页 write_tran_data(0x84,shi); break; case 4: week+; if(week=8) week=1; write_tran_data(0x8a,week); tran_week(week); break; case 3: ri+; if(ri=32) ri=1; write_tran_data(0x86,ri); break; case 2: yue+; if(yue=13) yue=1; write_tran_data(0x88,yue); break; case 1: nian+; if(nian=100) nian=1; write_tran_data(0x8c,nian); break; if(s3=0)/减 1 按键 delay_1ms(10); if(s3=0) while(!s3); beep(); switch(s1num) case 7: miao-; 陕西理工学院课程设计论文 第 24 页 共 29 页 if(miao=-1) miao=59; write_tran_data(0x80,miao); break; case 6: fen-; if(fen=-1) fen=59; write_tran_data(0x82,fen); break; case 5: shi-; if(shi=-1) shi=23; write_tran_data(0x84,shi); break; case 4: week-; if(week=0) week=7; write_tran_data(0x8a,week); tran_week(week); break; case 3: ri-; if(ri=0) ri=30; write_tran_data(0x86,ri); break; case 2: yue-; if(yue=0) yue=12; write_tran_data(0x88,yue); break; case 1: nian-; if(nian=-1) nian=99; write_tran_data(0x8c,nian); break; 陕西理工学院课程设计论文 第 25 页 共 29 页 if(flag=1) if(s1=0) delay_1ms(10); if(s1=0) while(!s1); beep(); s1num+; switch(s1num)/光标闪烁定位 case 2: write_com(0xc0+10);/分 write_co

温馨提示

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

评论

0/150

提交评论