数字钟在单片机上的实现(汇编语言)

合集下载

单片机课程设计数字钟实验报告

单片机课程设计数字钟实验报告

单片机课程设计:电子钟一、实现功能1、能够实现准确计时,以数字形式显示时、分、秒的时间。

2、小时以24小时计时形式,分秒计时为60进位,能够调节时钟时间。

3、闹钟功能,一旦走时到该时间,能以声或光的形式告警提示。

4、能够实现按键启动与停止功能。

5、能够实现整点报时功能。

6、能够实现秒表功能。

二、设计思路1、芯片介绍VCC:电源。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL 门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。

单片机电子时钟设计

单片机电子时钟设计

单片机在多功能数字电子钟中的应用已是非常普遍,人们对电子时钟的功能及工作顺序都已非常熟悉了,但是却很少知道它的内部结构以及工作原理。

由单片机作为电子时钟的核心控制器,可以通过它的时钟信号来实现计时功能,将时间数据由单片机输出,利用显示器将时间显示出来。

通过键盘可以进行时间的设定。

输出设备显示器可以用液晶显示技术或数码管来显示技术。

本系统利用单片机实现具有计时、校时等功能的数字电子时钟,是以单片机AT89C51 为核心元件同时采用LED数码管显示器动态显示“时”,“分” “秒”的现代计时装置。

与传统机械表相比,它具有走时精确,显示直观等特点。

另外具有校时功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。

第一章概述1.1课题研究的目的和意义数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

由于电子集成电路技术的发展和采用了先进的石英技术,使电子钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域,因此进行电子钟的设计是必要的。

尽管目前市场上已有现成的电子钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机定时器的功能也可以完成电子钟电路的设计,因此进行电子钟的设计是可行的。

在这里我们将已学过的比较零散的数字电路和单片机的知识有机的、系统的联系、组织起来应用于实际,来培养我们的综合分析和设计电路,写程序,调试电路、程序的能力。

单片机具有体积小、功能强、可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。

1.2国内外研究的现状及发展趋势从单片机电子时钟近年的发展趋势来看,正朝着多层次用户、多品种、多规格、高精度、小体积、低能耗等方面发展。

在这种趋势下,时钟的数字化,智能化已经成为现代时钟生产研究的主导设计方向。

基于单片机的带温度显示的数字钟设计(c51语言编程)【开题报告】

基于单片机的带温度显示的数字钟设计(c51语言编程)【开题报告】

开题报告电气工程及其自动化基于单片机的带温度显示的数字钟设计(c51语言编程)一、课题研究意义及现状1980年因特尔公司推出了MCS-51单片机,近30年来,其衍生系列不断出现,从Atmel加入FLASH ROM,到philips加入各种外设,再到后来的Cygnal推出C8051F,使得以8051为核心的单片机在各个发展阶段的低端产品应用中始终扮演着一个重要的角色,其地位不断升高,资源越来越丰富,历经30年仍在生机勃勃地发展,甚至在SoC时代仍占有重要的一席之地。

单片机具有体积小、功能强、低功耗、可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域智能仪表、机电一体化、实时控制、国防工业普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。

C语言已经成为当前举世公认的高效简洁而又贴近硬件的编程语言之一。

将C语言向单片机8051上移植十余20世纪80年代的中后期,经过几十年的努力,C语言已成为专业化单片机上的实用高级语言。

C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。

此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。

与汇编语言相比,C51在功能、结构、可读性、可维护性上有明显的优势,因而易学易用。

另外C51可以缩短开发周期,降低成本,可靠性,可移植性好。

因此,使用C语言进行程序设计已成为软件开发的一个主流,用C语言进行8051单片机程序设计是单片机开发与应用的必然趋势。

随着人们生活水平的提高,对物质需求也越来越高,人们已不再满足于钟表原先简单的报时功能,希望出现一些新的功能,诸如环境温度显示、日历的显示、重要日期倒计时、显示跑表功能等,用以带来更大的方便。

而所有这些,又都是以数字化的电子时钟为基础的,不仅应用了数字电路技术,而且还加入了需要模拟电路技术和单片机技术。

单片机课程设计--电子秒表与闹钟的设计

单片机课程设计--电子秒表与闹钟的设计

目录摘要 (Ⅰ)1 电子秒表与闹钟系统概述 (1)1.1 课程设计基本要求 (1)1.2 系统实现功能 (1)1.3 系统应用价值展望 (2)2 仿真软件Proteus和Keil简介 (3)2.1 Proteus简介 (3)2.2 Keil简介 (3)3 系统工作原理分析 (4)3.1AT89C2051模块 (4)3.2 显示驱动模块 (6)3.3 数码管显示模块 (8)4 程序流程图设计 (9)5 Proteus仿真原理图 (12)6 课程设计体会 (14)参考文献 (15)附:源程序代码 (16)摘要随着科学技术的不断发展 , 人们对时间计量的要求越来越高。

在当今社会,电子时钟已经得到相当广泛的应用,产品多样,发展更是多元化。

本作品是以STC89C51单片机作为主控芯片,使用12MHZ的晶振,使用专用时钟日历芯片DS12C887产生时间信息,时间精确。

软件部分以C语言为主体,用1602LCD 液晶屏显示输出信息,输出信息量多,更直观、人性化。

该时钟可实现人机交互,可通过提供的键盘对其进行调整。

系统具有以下功能:年、月、日、时、分、秒显示;12小时/24小时模式切换,在12小时模式中,用AM和PM区分上午和下午;秒表功能;整点闹铃和报时功能,且闹钟可设置多组。

本次设计的电子时钟系统由单片机最小系统,1602LCD液晶屏,时钟芯片,调整按键,蜂鸣器,电源五大部分组成。

关键词:定时器中断闹钟电子时钟1 电子秒表与闹钟系统概述1.1 课程设计基本要求(1) 用并行口设计一个具有显示功能的秒表,显示准确的北京时间(时、分、秒),可用24小时制式;(2) 有时间校准功能;(3) 允许通过转换功能键转换显示时间,用定时器实现一个电子闹钟,能设定和修改定时的时间,并能到时响铃通知;(4) 所有按键需要通过串口自发自收来调校各种功能。

1.2 系统实现功能本系统是基于单片机AT89S52制作的数字电子钟。

根据实验要求,在完成实验所要求的基本功能外,扩展了几个功能。

基于C51单片机的数字时钟课程设计(C语言带闹钟)

基于C51单片机的数字时钟课程设计(C语言带闹钟)

单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词:电子钟 AT89C52 硬件设计软件设计目录NO TABLE OF CONTENTS ENTRIES FOUND.一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。

具有时间显示,并有时间设定,时间调整功能。

1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。

1.3 设计课的设计总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:图1-1总体设计方案图本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。

键盘采用动态扫描方式。

利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

基于52单片机电子时钟的设计论文(纯汇编语言编写)

基于52单片机电子时钟的设计论文(纯汇编语言编写)

编号单片机课程设计(2013 级)题目:基于52单片机电子时钟的设计学院:物理与机电工程学院专业:电子信息科学与技术作者姓名:陈✘✘党✘✘杜✘✘指导教师:张✘✘职称:教授完成日期:2016 年7 月 2 日二〇一六年七月基于52单片机电子时钟的设计摘要本次设计的多功能时钟系统采用STC89C52单片机为核心器件,利用其定时器/计数器定时和记数的原理,结合液晶显示电路、时钟芯片DS1302电路、电源电路以及按键电路来设计计时器。

将软硬件有机地结合起来,使得系统能够实现液晶显示,显示有年、月、日、时、分、秒以及星期,还可以设置闹钟和整点报时。

其中软件系统采用单片机汇编语言编写程序,包括显示程序、闹钟程序、中断、延时程序,按键消抖程序等,并在keil中调试运行,硬件系统利用PROTEUS 强大的功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。

关键词:STC89C52芯片;时钟芯片DS1302;单片机汇编语言;液晶显示电路1 设计任务及要求分析1.1 设计任务:基于单片机的电子时钟设计1.2 要求:1.2.1 用LCD液晶作为显示设备1.2.2 可以分别设定小时、分钟和秒,复位后时间为 00 00 001.2.3 能实现日期的设置年、月、日1.3 扩展要求:如闹钟功能、显示星期、整点音乐报时等2 系统方案2.1 系统整体方案的论证电路原理设计是基于小系统板包括电源电路、复位电路、按键电路、DS1302时钟电路、液晶显示驱动电路、输出控制电路。

电源部分是用电池来提供的3v-5v,晶体振荡器采用的是12MHz的石英晶体振荡器。

整个系统用单片机为中央控制器,由单片机执行采集时钟芯片的时间信号并通过显示模块来输出信号及相关的控制功能。

时钟芯片产生时钟信号,利用单片机的I/O口传给单片机;并通过I/O口实现LCD的显示。

系统设有4个独立式按键可以对时间年、月、日和星期进行调整,还可以设置闹钟。

具体如图2.1所示:图2.1 系统整体框图3硬件设计与实现3.1单片机最小系统STC89C52是一款非常适合单片机初学者学习的单片机,它完全兼容传统的8051,8031的指令系统,他的运行速度要比8051快最高支持达33MHz的晶体震荡器,在此系统中使用12MHz的晶振。

用8031单片机控制的数字钟

用8031单片机控制的数字钟
维普资讯 hБайду номын сангаасtp://
22 0 年4月 0
电 脑 学 习
摹2暂 _
用 83 0 1单 片机 控 制 的数 字钟

摘 要
军’ 谢晓斌
介 绍 了用 8 3 0 1单 片 机控 制 的 电 脑敦 字钟 的 硬件 拮 构 与 软件 设 计 。 出 了汇 蝙语 言 舞植 序 。 培 实时控 制 敦 字钟 中断
为了节约 制作硬 件的 开支 ,我们利用单 片机开发机上
K 转换键 按时后切换到时钟状态 3 闹钟校分后 切换到 闹钟枝时; 闱钟校时后切换到时钟状态; K I K 2 校分或按时的时候使其加 I 递增 校分 或校对 的时候使其减 I 递减
的硬件 资源 , 开发 了电脑数 字钟 的软 件。该 数字钟 由 8 3 01
示 当拨动 K 5开关时 , 进入校时状 态, 户可以方便 地校准 用 时 间。当拨动 K 6开关 时, 便进入闹钟拉 时状态 , 这时 , 可报 据 需要 设置起 闹时间。在 闹钟校时期 间, 时钟继续 计数, 即 闹钟校 时不影 响时钟走时。 电脑数 字钟的程序流程 图如图
2 3所示 。 、
程序 中的一 些存 储单元的定义如下:
2 H一 2 时 、 秒单元 0 2 H: 分 点亮一 分钟。 20 一 l0 林 军 湖北商业高等专科学校 电子信息工程系副教授 ( 武汉 407 ) 收稿 日期:0 1 I — 6 300
ON的位 置 ) 打开 闹钟 , 之在预 定时 间起 闹{ K = , 使 当 l 0时 ( 开关处于 O F的位置 ), 关闭闹钟 , F 则 使之不闹。另外, 在 闹钟响起 时 , 4也可作 为止 闹开关使用 , 不止 闹, K 若 剥闹一 分钟 。 闹钟信 号用发光二极管来模拟 。 整点报 时信 号也是用 发光二极管来模拟 的。 当整点时 , I0口所 接的发光二极管 P.

单片机实现数字钟(LED显示小时

单片机实现数字钟(LED显示小时

单片机课程设计题目:单片机实现数字钟(LED显示小时:分:秒)学院电子信息工程学院学科门类工学专业通信工程学号姓名指导教师程亮亮2015年06月16日摘要单片机模块中最常见的是数字时钟,数字时钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。

数字时钟是采用数字电路实现对时、分、秒数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字时钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。

因此,研究数字时钟及扩大其应用,有着非常现实的意义。

关键词:单片机;数字时钟;钟表数字化目录摘要 (I)目录............................................................................................................. I I 1. 引言.. (1)1.1 设计背景及意义 (1)1.2 设计目的 (2)1.3主要工作及结构安排 (2)1.4 本章小结 (3)2. 方案论证与选择 (4)2.1 系统功能框图 (4)2.2 AT89C51简介 (4)2.3 DS1302简介 (8)2.4 本章小结 (11)3. 硬件电路设计 (12)3.1 系统总原理图 (12)3.2 PCB板图 (13)3.3 器件清单 (14)3.4 本章小结 (14)4. 系统程序设计 (15)4.1 软件开发环境 (15)4.2 创建工程 (15)4.3 代码程序设计 (16)4.4 本章小结 (24)5. 软件仿真 (25)5.1 Proteus仿真原理图 (25)5.2 仿真结果 (25)5.3 本章小结 (26)6. 总结 (27)参考文献 (28)附录 (28)附录I主函数代码 (29)附录II DS1302代码 (29)1. 引言1.1研究背景及意义20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

2051单片机6位数字钟

2051单片机6位数字钟

2051单片机6位数字钟51单片机作的电子钟程序在很多地方已经有了介绍,对于单片机教程者而言这个程序基本上是一道门槛,掌握了电子钟程序,基本上可以说51单片机就掌握了80%。

常见的电子钟程序由显示部分,计算部分,时钟调整部分构成,这样程序就有了一定的长度和难度。

这里我们为了便于大家理解和掌握单片机,我们把时钟调整部分去除,从而够成了这个简单的电子钟程序。

时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。

10秒位到5后,即59秒,分钟加1,10秒位回0。

依次类推,时钟最大的显示值为23小时59分59秒。

这里只要确定了1秒的定时时间,其他位均以此为基准往上累加。

开始程序定义了秒,十秒,分,十分,小时,十小时,共6位的寄存器,分别存在30h,31h,32h,33h,34h,35h单元,便于程序以后调用和理解。

电路原理图:为了节省硬件资源,电路部分采用6位共阳极动态扫描数码管,数码管的段位并联接在51单片机的p0口,控制位分别由6个2N5401的PNP三极管作驱动接在单片机的p2.1, p2.2,p2.3,p2.4,p2.5,p2.6口。

从标号star开始把这些位全部清除为0,从而保证了开始时显示时间为0时0分0秒。

然后是程序的计算部分:inc a_bit(秒位),这里用到了一个inc指令,意思是加1,程序运行到这里自动加1。

然后把加1后的数据送acc:mov a,a_bit (秒位),这时出现了一个问题,如果不断往上加数字不会加爆?所以有了下面的一句话cjne a,#10,stlop; 如果秒位到10那么转到10秒处理程序。

cjne 是比较的意思,比较如果a等于10 就转移到10秒处理程序,实际上也就限定了在这里a的值最大只能为9,同时mov a_bit,#00h,这时a_bit(秒位)被强行清空为0,又开始下一轮的计数。

(完整word版)51单片机数字钟

(完整word版)51单片机数字钟

目录1 设计任务与要求 (I)2 设计方案 (1)3 硬件设计 (2)3.1 AT89C51单片机简介 2 3.2单片机型号的选择 (6)3.3数码管显示工作原理 (6)4 软件设计 (7)4.1主程序模块介绍 (7)4.2主程序 (7)5 仿真调试 ......................................... 错误!未定义书签。

5.1K EIL仿真结果.................................. 错误!未定义书签。

5.2仿真结果分析 (13)6 小结 ............................................. 错误!未定义书签。

1 设计任务与要求1. 设计一个基于单片机的电子时钟,并且能够实现时分秒的现实和调节。

2. 设计出硬件电路。

3. 设计出软件编程方法,并写出源代码。

4. 用PROTEUS进行仿真。

5.用汇方式实现目的。

7.系统的各各功能模块要编语言编实现程序设计。

6.利用查表,中断等清楚,有序。

8.程序运行时有友好的用户界面。

2 设计方案本设计主要设计了一个基于AT89C51单片机的电子时钟。

并在数码管上显示相应的时间。

并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。

应用Proteus的ISIS软件实现了单片机电子时钟系统的设计与仿真。

该方法仿真效果真实、准确,节省了硬件资源。

该设计的硬件部分主要包括89C51多功能接口芯片用于开发电子时钟芯片、LED七段数码显示器用于显示时间、8031集成定时器用于定时、0.125W、8欧姆的扬声器用于定时发声。

软件部分包括主程序、定时计数中断程序、时间调整程序、延时程序四大模块。

通过中断程序进行定时器计数,时间调整程序是当键按下时间小于1秒,关闭显示(省电)进入调节时间状态,延时程序用于时间的延迟。

先设计个秒钟程序,在秒钟程序中先不设计按钮,直接通电运行,使用40H 存放计数值,从00—59,一直循环,把40H中的数值拆分成个位和十位,分别存在30H与31H中,要求动态扫描时,使用21H当标志位,用指令JB控制显示个位与十位,程序中使用中间寄存器R0与R1用于存放拆分后的字型,再传到30H与31H中去,再设计时钟程序。

用51单片机和1602液晶做的数字钟

用51单片机和1602液晶做的数字钟

用51单片机和1602液晶做的数字钟数字钟是人们日常生活中常见的时间显示设备,它能够精确显示当前的时间,并且兼具简约和实用性。

本文将介绍使用51单片机和1602液晶屏幕制作自己的数字钟的方法。

所需材料在开始制作之前,我们需要准备以下材料: - 51单片机开发板 - 1602液晶屏幕 - 数字时钟芯片RTC(Real-Time Clock) - 面包板和导线 - 电阻和电容 - 编程器和烧录器硬件连接首先,我们需要将51单片机、1602液晶屏幕和RTC芯片连接起来。

根据硬件接口的定义和引脚功能的规定,我们可以进行以下连接: - 将51单片机的VCC 引脚连接到1602液晶屏幕的VCC引脚,用于提供电源。

- 将51单片机的GND引脚连接到1602液晶屏幕的GND引脚,用于地线连接。

- 将51单片机的P0口连接到1602液晶屏幕的数据线D0-D7,用于数据传输。

- 将51单片机的P2口连接到1602液晶屏幕的RS引脚,用于选择数据和命令传输。

- 将51单片机的P3口连接到1602液晶屏幕的EN引脚,用于启用LCD。

此外,还需要将RTC芯片连接到51单片机上,以实现时间的准确显示。

具体的连接方式可以参考RTC芯片的规格说明书。

软件编程完成硬件连接后,我们需要进行软件编程,以便控制51单片机、1602液晶屏幕和RTC芯片的功能。

初始化首先,我们需要对51单片机和1602液晶屏幕进行初始化设置。

这包括设置引脚的功能模式、初始化1602液晶屏幕的显示模式和清空显示区域。

读取时间接下来,我们需要通过RTC芯片来读取当前的时间。

这通常包括读取RTC芯片存储的年、月、日、时、分和秒的数据。

显示时间读取时间后,我们可以将其显示在1602液晶屏幕上。

这可以通过更新特定的LCD显示区域来实现。

我们可以在指定的位置、特定的行和列上显示时间。

更新时间为了实现实时的时间显示,我们需要定期更新显示的时间。

可以使用定时器中断来定期更新时间,并根据需要刷新液晶屏幕上的显示。

基于单片机的多功能数字钟的设计

基于单片机的多功能数字钟的设计

一、概述现代社会,时间被视为人们生活的重要组成部分。

而数字钟作为时间的一种展现形式,已经成为人们生活中不可或缺的一部分。

基于单片机的多功能数字钟设计,将为人们提供更加准确、便捷、多功能的时间展现方式,满足人们对时间的精准要求,同时也为人们的生活带来更多便利。

二、设计目标1. 实现精准的时间显示功能,包括时、分、秒的显示;2. 实现对日期的显示,包括年、月、日的显示;3. 实现多种报时功能,如定时报时、闹钟报时等;4. 实现多种显示效果,如渐变显示、闪烁显示等;5. 实现对时间的调整功能,包括校时、调整日期等;6. 实现对亮度的调节功能,适应不同环境下的使用需求。

三、设计思路1. 硬件设计1.1 硬件采用单片机作为核心控制器,通过外部晶振提供时钟信号;1.2 采用数码管作为显示设备,通过单片机控制数码管进行时间、日期的显示;1.3 通过按钮、旋钮等输入设备,实现时间调节、报时设置等操作;1.4 通过EEPROM等存储设备,实现时间、设置的存储和读取功能;1.5 通过光敏电阻等光敏传感器,实现对环境光强的检测,调节数码管显示亮度。

2. 软件设计2.1 设计合理的时钟系统,确保时间的准确显示;2.2 设计报时功能模块,实现定时报时、闹钟报时等功能;2.3 设计显示控制模块,实现数字、日期的显示效果控制;2.4 设计操作响应模块,实现对按钮、旋钮等输入设备的操作响应;2.5 设计存储管理模块,实现时间、设置数据的存储和读取功能;2.6 设计光敏控制模块,实现对数码管显示亮度的实时调节。

四、实现方法1. 硬件设计1.1 选择合适的单片机作为核心控制器,根据需要进行外围电路的设计;1.2 选择合适的数码管作为显示设备,设计驱动电路以及显示控制电路;1.3 选择合适的按钮、旋钮等输入设备,设计输入电路以及操作响应电路;1.4 选择合适的EEPROM芯片,设计存储管理电路实现数据的存储和读取;1.5 选择合适的光敏电阻或光敏二极管,设计光敏控制电路实现显示亮度的调节。

用8031单片机控制的数字钟

用8031单片机控制的数字钟

K 2
校 分 或校 时的 时候 使 其减 1 减 递
图 中 的 开 关 K4 于 闹 钟 控 制 。当 K4 1 ( 用 = 时 开 关 处 于 ON 的 位 置 ) ,打 开 闹 钟 , 使 之 在 预 定 时 间 起 闹 : 当 K1 0 时 ( 关 处 于 OF = 开 F的 位 置 ) 则 , 关 闭 闹钟 , 使 之 不 闹 。 另 外 , 在 闹 钟 响 起 时 , K4 也 可作 为止 闹开关 使用 ,若不止 闹,则 闹一分 钟 。 闹钟信 号用 发光二 极 管来 模拟 。
图 1 电脑 数字 钟硬件 原理 图
秒 的 累加 并 且 ,该 中断 的优 先级 别高 于其 它 中
二 oo 二 卓 二 局
4 0 丰 导体技 术 簪2 善 簪 2 7 期
维普资讯
断 , 因此 ,保 证 了 电子 钟 走 时准 确 。在 设计 中 ,
程序 中的一些 存 储单元 的定义 如下 。 Байду номын сангаас
2 0H ~ 2 2H : 时 、 分 、 秒 单 元 ;
4 H 4 H:校 时或 闹钟校 时 期 问 的时 、分 、 0 2
秒 单元 ;
5 H~ 51 O H: 起 闹 时 间 的 时 、 分 单 元 ; 7 H~ 7 H : 显 示 缓 冲 区 ; 9 E 用户 标志位 F :校 时标志 ,当 F 0 0= 1时 ,表 示校时;
理 图 如 图 1所 示
整 点报时信 号也是 用发光二极 管来模 拟的 。当 整 点时 ,P10口所接 的发 光 二极 管点亮 一分钟 。 .
P1 0 P3 0 — —
电脑 数字钟 的秒信 号是利 用8 3 单片机 定时器 01

基于单片机的简易电子时钟设计

基于单片机的简易电子时钟设计

基于单片机的简易电子时钟设计1 设计任务与要求1.1 设计背景数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。

在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。

单片根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:单片机模块、数码显示模块与按键模块,模块之间的关系图如下面得方框电路图1所示。

机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。

1.2 课程设计目的(1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;(3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。

1.3 设计要求1).时制式为24小时制。

2).采用LED数码管显示时、分,秒采用数字显示。

3).具有方便的时间调校功能。

4).计时稳定度高,可精确校正计时精度。

2 总体方案设计2.1 实现时钟计时的基本方法利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现时钟计数。

(1) 计数初值计算:把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。

单片机 电子时钟实验报告

单片机 电子时钟实验报告

电子时钟设计实验报告姓名:学号:班级:指导老师:一、实验基本要求利用定时计数器,设计一个电子时钟,使用前面使用过的显示子程序。

从左到右依次显示时分秒。

有两种方法实现,一种是在中断程序中计数,产生时分秒计数,送显示缓冲区。

另一种是中断程序每一秒清除一个位变量,而主程序通过监视位变量的变化来知道每秒的时间。

进而要求:1.加入时间调整程序,使用两个或三个按钮,调节当前的时间。

类似平常使用的电子表。

可以让正在调整的位闪烁显示。

2.可以加入一个闹钟钟设置,当所定的时间到时,产生断续的蜂鸣声。

可以加入日历的功能。

二、最终实现的功能1、日历(年、月、日)显示与数值的修改2、时钟(时分秒)显示及数值的修改3、闹钟设定及数值的修改、到时响铃4、秒表计时及秒表重置三、设计核心思想程序设计中设置定时器0作为基本时钟,中断每50ms进入一次,每20次中断即1秒,秒加一,在中断服务程序中执行60秒进位、60分进位。

通过独立式键盘,进行各项数值调整、定时器开启和暂停以及重置。

各个功能在分立的子函数中实现,在主函数中进行调用,结构清晰。

四、设计亮点1、按键功能通过“按下时间的长短”丰富在按键消抖结束后,再次判断按键按下的同时,记录按下时间的长短。

短按实现数值的修改、计时暂停及启动,长按实现模式的切换和重置。

2、闹铃设置为一段音乐通过查阅网上资料,将蜂鸣器的响声富有变化,从而实现一段有旋律的音乐。

3、函数独立设计的程序中包含以下函数模块:延时、初始化、时间(日历、闹钟)显示、键盘扫描、秒表显示、定时器0中断函数(时钟)、定时器1中断(秒表)、音乐、闹钟及主函数。

4、各功能的实现采用模块化处理模式1:时钟显示;模式2:日历显示;模式3:秒表显示;模式4:闹钟显示。

五、实验中的问题总结LED数码管显示部分小结:(1)要设置段选(P2.6)和位选(P2.7)。

(2)段选和位选需按照书上讲的逻辑编写。

虽然P0口作为段选,P2口作为位选,但是程序设计中位选时要将值赋给P0口(打开位选→赋位选→关闭位选)。

基于单片机C语言电子时钟完整版(闹钟,整点报时)

基于单片机C语言电子时钟完整版(闹钟,整点报时)

《单片机技术》课程设计说明书数字电子钟系、部:电气与信息工程学院学生姓名:指导教师:职称专业:班级:完成时间:2013-06-07摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEU5键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词电子钟;AT89S52;硬件设计;软件设计ABSTRACTClock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessary.The system use a single chip AT89S52 of ATMEL’s as its core to control The crystal oscillator clock,using of E-12MHZ is connected with the microcontroller AT89S52, through the software programming method to achieve a 24-hour cycle, and eight 7-segment LED digital tube (two four in one digital tube) displays hours, minutes and seconds requirements, and in the time course of a timing function, when the time arrived ahead of scheduled time to buzz a good timekeeping. The clock has four buttons KEY1, KEY2, KEY3,KEY4 and KEY5 key, and make the appropriate action can be achieved when the school, timing, reset. With a time display, alarm clock settings, timer function, corrective action. Accurate travel time, display and intuitive, precision, stability, and so on. With a high application value.Key words Electronic clock;;AT89S52;Hardware Design;Software Design目录1设计课题任务、功能要求说明及方案介绍 (1)1.1设计课题任务 (1)1.2功能要求说明 (1)1.3设计总体方案介绍及原理说明 (1)2设计课题硬件系统的设计 (2)2.1设计课题硬件系统各模块功能简要介绍 (2)2.2设计课题电路原理图、PCB图、元器件布局图 (2)2.3设计课题元器件清单 (5)3设计课题软件系统的设计 (6)3.1设计课题使用单片机资源的情况 (6)3.2设计课题软件系统各模块功能简要介绍 (6)3.3设计课题软件系统程序流程框图 (6)3.4设计课题软件系统程序清单 (10)4设计结论、仿真结果、误差分析、教学建议 (21)4.1设计课题的设计结论及使用说明 (21)4.2设计课题的仿真结果 (21)4.3设计课题的误差分析 (22)4.4设计体会 (22)4.5教学建议 (22)结束语 (23)参考文献 (24)致谢 (25)附录 (26)1 设计课题任务、功能要求说明及方案介绍1.1 设计课题任务设计一个具有特定功能的电子钟。

基于AT89C51单片机的数字电子时钟设计

基于AT89C51单片机的数字电子时钟设计

/安徽工程大学机电学院单片机课程设计题目:数字电子时钟设计指导老师:***制作人员:范超学号:************班级:自动化2132日期:7月13日-7月24日总评成绩:课程任务设计书设计题目:数字电子时钟的设计设计任务:1.设计一款时,分,秒可调数字电子时钟可整点报时;2.设计三个按键K1,K2和K3,用于调节时钟的时间;3.用8个、七段LED数码管作为显示设备,开机显示00-00-00;本设计采用AT89C51单片机为核心器件。

具有电子钟显示,时间调整,整点报时等功能。

此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。

根据60秒为一分、60分为1小时的计数周期,构成秒、分、时的计数,实现计时的功能。

而且能显示清晰、直观的数字符号。

针对数字钟会产生误差的现象,就设计有校准时间的功能。

AT89C51单片机控制的数字钟的硬件结构与软件设计,给出了汇编语言源程序。

此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。

它的计时周期为24小时,显示满刻度为24时00分00秒,另外应有校时功能。

电路由时钟脉冲发生器、时钟计数器、译码驱动电路和数字显示电路以及时间调整电路组成。

用晶体振荡器产生时间标准信号,这里采用石英晶体振荡器。

根据60秒为1分、60分为1小时、24小时为1天的计数周期,分别组成两个60进制(秒、分)、一个24进制(时)的计数器。

显示器件选用LED八段数码管。

在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。

针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。

关键字:Proteus,Keil uVision,AT89C51,电子钟,整点报时摘要 (3)第1章概述 (5)1.1 设计背景 (5)1.2系统方案论证与设计 (5)第2章系统硬件设计 (7)2.1 系统总电路的设计 (7)2.1.1系统的总框图 ................................................................................................2.1.2芯片的选择 (7)2.2最小系统设计 (9)2.2.1时钟电路的选择与设计 (10)2.2.2复位电路的选择与设计 .............................................. 错误!未定义书签。

基于单片机的数字时钟设计与制作

基于单片机的数字时钟设计与制作

摘要:本系统以AT89S52为核心,选用DS1302串行时钟芯片,RT1602液晶显示器实现液晶显示当前日期、时间、星期。

本电子钟具有日期、时、分、秒的显示、调整功能,采用的时间制式为24小时制,时间显示格式为时(十位、个位)、分(十位、个位)、秒(十位、个位)。

关键词AT89S52、显示时间、调整时间、目录一、设计任务及要求 (2)1.1设计任务 (2)1.2设计要求 (2)二、设计方案 (2)2.1时钟实现 (2)2.2显示模块 (2)2.3微控制器模块 (2)三、设计原理及实现 (2)3.1系统的总体设计方案 (2)3.1.1系统的硬件电路设计与主要参数计算 (3)3.2系统的软件设计 (7)3.2.1主程序流程 (7)3.2.2 ds1302子程序流程 (7)3.2.3调整时间子程序流程 (8)四、测试 (8)4.1硬件测试 (8)4.2软件测试 (8)4.3功能测试 (11)五、设计结论及体会 (11)设计结论: (11)体会 (11)致谢 (12)参考文献 (13)一、设计任务及要求1.1设计任务设计并制作一个用单片机控制的数字时钟。

1.2设计要求(1)显示时间——显示时,分,秒。

(2)设置时间——利用键盘手动设置时间。

(3)自动计时——自动计时并能实时显示二、设计方案根据期末单片机设计任务的总体要求,本系统可以划分为以下个基本模块,针对各个模块的功能要求,分别有以下的设计方案:2.1时钟实现采用专用的时钟芯片实现时钟的记时,专用时钟芯片记时准确,容易控制,能够从芯片直接读出日期、时间、星期。

2.2显示模块采用液晶显示器件,液晶显示平稳、省电、美观,更容易实现题目要求,对后续的功能兼容性高,只需将软件作修改即可,可操作性强,也易于读数,采用RT1602两行十六个字符的显示,能同时显示日期、时间、星期。

2.3微控制器模块采用AT89S52八位单片机实现。

它内存较大,有8K的字节FLASH闪速存储器,比AT89C51要多4K。

汇编数字钟-8位数码管显示

汇编数字钟-8位数码管显示

汇编数字钟(8位数码管显示)这款数字钟是笔者亲自试验过的作品,电路图和程序都经过优化,供爱好者制作参考。

显示格式依然是23-59-59(同样是小时十位如果为0则不显示),调整时间增加了一只按钮,通过调整选择键SET_KEY选择调整位,选中位开始闪烁,此时再按增加键ADD_KEY或减少键DEC_KEY调整选中位,如果长按ADD_KEY或DEC_KEY,系统识别后则进行调时快进,此时停止闪烁,方便人眼观察。

同时还增加了调秒功能:如果选中位是秒,则按增加键或减少键都是将秒清零。

汇编程序设计:/**************************************************************程序名称:51单片机8位数码管数字钟汇编程序简要说明:实现24小时制电子钟,8位数码管显示,显示时分秒显示格式:23-59-59(小时十位如果为0则不显示)通过3只按键来调整时间调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁增加键ADD_KEY:P1.1;按一次使选中位加1减少键DEC_KEY;P1.2;按一次使选中位减1如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁如果选中位是秒,则按增加键或减少键都是将秒清零P0口输出数码管段选信号,P2口输出数码管位选信号。

晶振12M编写:最后更新:08/12/31晚**************************************************************/ ORG 0000H ;程序入口地址LJMP STARTORG 000BH ;定时器0中断入口地址LJMP TIMER_0ORG 0300H/*****程序开始,初始化*****/START:SETB 48H ;使用一个bit位用于调时闪烁标志SETB 47H ;使用一个bit位用于产生脉冲用于调时快进时基MOV R1,#0 ;调整选择键功能标志:0正常走时、1调时、2调分、3调秒MOV 20H,#00H ;用于控制秒基准时钟源的产生MOV 21H,#00H ;清零秒寄存器MOV 22H,#00H ;清零分寄存器MOV 23H,#00H ;清零时寄存器MOV 24H,#00H ;用于控制调时闪烁的基准时钟的产生MOV IP,#02H ;IP,IE初始化MOV IE,#82HMOV TMOD,#01H ;设定定时器0工作方式1MOV TH0,#3CHMOV TL0,#0B0H ;赋定时初值,定时50msSETB TR0 ;启动定时器0MOV SP,#40H ;重设堆栈指针/*****主程序*****/MAIN:LCALL DISPLAY ;调用显示子程序LCALL KEY_SCAN ;调用按键检测子程序JZ MAIN ;无键按下则返回重新循环LCALL SET_KEY ;调用选择键处理子程序JB 46H,MAIN ;如果已进行长按调整(调时快进),则不再执行下面的单步调整LCALL ADD_KEY ;调用增加键处理子程序,加一LCALL DEC_KEY ;调用减少键处理子程序,减一LJMP MAIN ;重新循环/*****定时器中断服务程序*****/TIMER_0:PUSH ACCPUSH PSW ;保护现场MOV TH0,#3CHMOV TL0,#0B0H ;重新赋定时初值CPL 47H ;产生脉冲用于调时快进时基INC 24HMOV A,24HCJNE A,#10,ADD_TIME ;产生0.5秒基准时钟,用于调时闪烁CPL 48H ;取反调时闪烁标志位MOV 24H,#00HADD_TIME: ;走时INC 20HMOV A,20HCJNE A,#20,RETI1 ;产生1秒基准时钟MOV 20H,#00H ;一秒钟时间到,清零20H MOV A,21HADD A,#01HDA A ;作十进制调整MOV 21H,ACJNE A,#60H,RETI1MOV 21H,#00H ;一分钟到MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,RETI1MOV 22H,#00H ;一小时到MOV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,RETI1MOV 23H,#00H ;到24点,清零小时RETI1:POP PSWPOP ACC ;恢复现场RETI ;中断返回/*****显示处理*****/DISPLAY:MOV A,21H ;秒ANL A,#0FHMOV 2FH,A ;转换出秒个位,存入2FHMOV A,21HANL A,#0F0HSWAP AMOV 2EH,A ;转换出秒十位,存入2EHJB 46H,MIN ;如果长按按键(调时快进),则跳过闪烁处理程序CJNE R1,#3,MIN ;如果R1为3,闪烁秒位待调整JB 48H,MINMOV 2FH,#0AH ;使该位为10,查表得到使该位不显示的输出MOV 2EH,#0AHMIN:MOV A,22H ;分ANL A,#0FHMOV 2DH,A ;转换出分个位,存入2DHMOV A,22HANL A,#0F0HSWAP AMOV 2CH,A ;转换出分十位,存入2CHJB 46H,HOUR ;如果长按按键(调时快进),则跳过闪烁处理程序CJNE R1,#2,HOUR ;如果R1为2,闪烁分位待调整JB 48H,HOURMOV 2DH,#0AH ;使该位为10,查表得到使该位不显示的输出MOV 2CH,#0AHHOUR:MOV A,23H ;时ANL A,#0FHMOV 2BH,A ;转换出时个位,存入2BHMOV A,23HANL A,#0F0HSWAP AMOV 2AH,A ;转换出时十位,存入2AHJB 46H,DISP ;如果长按按键(调时快进),则跳过闪烁处理程序CJNE R1,#1,DISP ;如果R1为1,闪烁时位待调整JB 48H,DISPMOV 2BH,#0AH ;使该位为10,查表得到使该位不显示的输出MOV 2AH,#0AH/*****数码管动态扫描显示*****/DISP:MOV DPTR,#TABLEMOV A,2FHMOVC A,@A+DPTRMOV P0,ACLR P2.7LCALL DELAYSETB P2.7 ;显示秒个位MOV A,2EHMOVC A,@A+DPTRMOV P0,ACLR P2.6LCALL DELAYSETB P2.6 ;显示秒十位MOV A,#0BFHMOV P0,ACLR P2.5LCALL DELAYSETB P2.5 ;显示“-”MOV A,2DHMOVC A,@A+DPTRMOV P0,ACLR P2.4LCALL DELAYSETB P2.4 ;显示分个位MOVC A,@A+DPTRMOV P0,ACLR P2.3LCALL DELAYSETB P2.3 ;显示分十位MOV A,#0BFHMOV P0,ACLR P2.2LCALL DELAYSETB P2.2 ;显示“-”MOV A,2BHMOVC A,@A+DPTRMOV P0,ACLR P2.1LCALL DELAYSETB P2.1 ;显示时个位MOV DPTR,#TABLE1 ;该位使用TABLE1以消除前置0MOV A,2AHMOVC A,@A+DPTRMOV P0,ACLR P2.0LCALL DELAYSETB P2.0 ;显示时十位RET/*****按键检测子程序*****/KEY_SCAN:CLR 46H ;关闭长按调整(调时快进)标志MOV P1,#0FFH ;将P1口设置成输入状态MOV A,P1CPL AANL A,#07H ;P1口低3位连接3个按键,只判断该3位JZ EXIT_KEY ;无键按下则返回LCALL DELAY ;延时去抖动MOV A,P1 ;重新判断CPL AJZ EXIT_KEY ;键盘去抖动MOV R5,A ;临时将键值存入R5MOV R4,#00H ;用于控制调时快进速度;设置为00H是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进LOOP: ;进入长按处理LCALL DISPLAY ;使长按时显示正常MOV A,P1CPL AANL A,#07HJB 47H,LOOP1INC R4 ;调时快进间隔时间基准加1LOOP1:CJNE R1,#03H,LOOP2 ;如果调秒时长按,则不处理LJMP LOOP3LOOP2:CJNE R4,#99H,LOOP3MOV R4,#70H ;确认用户长按后,重新设定起始值,加快调时快进速度SETB 46H ;长按调整(调时快进)标志LCALL ADD_KEYLCALL DEC_KEYLOOP3:JNZ LOOP ;等待键释放MOV A,R5 ;输出键值RETEXIT_KEY:RET/*****延时子程序*****/DELAY:MOV R7,#150DJNZ R7,$RET/*****选择键处理子程序*****/SET_KEY:CJNE R5,#01H,EXIT ;选择键键值INC R1 ;调整选择功能标志加一CJNE R1,#4,EXITMOV R1,#0MOV 24H,#00H ;调时闪烁基准清零RET/*****增加键处理子程序*****/ADD_KEY:CJNE R5,#02H,EXIT ;增加键键值CJNE R1,#01H,NEXT1 ;选择键功能标志为1,调时,否则跳出MOV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,EXITMOV 23H,#00HNEXT1:CJNE R1,#02H,NEXT2 ;选择键功能标志为2,调分,否则跳出MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,EXITMOV 22H,#00HNEXT2:CJNE R1,#03H,EXIT ;选择键功能标志为3,调秒,否则跳出MOV 21H,#00H ;如增加键按下直接清零秒RET/*****减少键处理子程序*****/DEC_KEY:CJNE R5,#04H,EXIT ;减少键键值CJNE R1,#01H,NEXT3 ;选择键功能标志为1,调时,否则跳出MOV A,23HADD A,#99HDA AMOV 23H,ACJNE A,#99H,EXITMOV 23H,#23HNEXT3:CJNE R1,#02H,NEXT4 ;选择键功能标志为2,调分,否则跳出MOV A,22HADD A,#99HMOV 22H,ACJNE A,#99H,EXIT MOV 22H,#59HCJNE R1,#03H,EXIT ;选择键功能标志为3,调秒,否则跳出MOV 21H,#00H ;如较少键按下直接清零秒RET/*****万用返回子程序*****/EXIT:RET/*****数码管字形编码表*****/TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;字形显示编码TABLE1:DB 0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;小时位的十位数编码,该位如果为0则不显示END ;程序结束(注:可编辑下载,若有不当之处,请指正,谢谢!)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

武汉大学电子信息学院电子系统综合设计课程论文数字钟在单片机上的实现(汇编语言)专业:年级:作者:__________________________指导教师:2012年06 月29 日目录1 作品的背景与意义 (1)2 功能指标设计 (1)2.1设计要求 (1)2.1.1 基本要求 (1)2.1.2 拓展要求 (1)2.2 功能设计方案 (1)3 作品方案设计 (2)3.1总体方案的选择 (2)3.2模块划分及分析 (3)3.3 单模块设计流程图 (3)4 模块源程序 (7)5 系统测试 (35)测试数据: (36)6 心得体会 (36)1 作品的背景与意义数字钟是一种用数字电路技术实现时、分、秒计时的钟表。

与机械钟相比具有更高的准确性和直观性,具有更长的使用寿命,已得到广泛的使用。

数字钟的设计方法有许多种,例如可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以利用单片机来实现电子钟等等。

这些方法都各有其特点,其中利用单片机实现的电子钟具有编程灵活,以便于功能的扩展。

2 功能指标设计2.1设计要求2.1.1 基本要求1.设计一个精确的1秒定时器;2.根据1秒定时器,设计一个带小时、分钟、秒的时钟,并将小时、分钟、秒显示在LED上;3.设计小时、分钟、秒的修改按键,可分别调整小时、分钟、秒(按键设计参考电子表)。

2.1.2 拓展要求1.增加小时、分钟、秒的键盘直接修改功能;2.设计闹钟功能,最多支持5个闹钟,可分别查看和修改闹钟时间,可分别设置闹钟开关;3.增加万年历功能。

2.2 功能设计方案1. 实现正常走时(秒-分-时-日-月-年进位);2. 能够设置时间和日期;3. 能够自动区分平闰年和大小月及2月;4. 具有5个闹钟及其设置功能;5. 在任何设置状态下,修改位会闪烁显示。

3 作品方案设计3.1总体方案的选择以T0计时器中断产生1s信号,T1计时器中断刷新数码管。

系统软件流程图如下所示:设计时使T0优先级高于T1以确保准确计时,初始化完成后,程序一直处于主循环模块,主循环模块中有设置按键的检测模块,当遇到设置信号暂时跳出主循环去执行相应的设置模块,时间设置,日期设置,闹钟设置3大模块彼此之间是相互独立且平行的,他们和主循环模块也不干扰。

因此,当进入任何一个模块时,其他模块中的所有功能和按键都暂时失效,程序由始至终中断服务一直打开。

3.2模块划分及分析•MAIN:初始化程序模块进行初值的分配(栈顶地址,初始时间,初始日期,初始化闹钟及相关标志地址)各定时器,中断初始化。

▪ZHUXUNHUAN:主循环模块程序主要执行部分,包含闹钟检测,独立按键检测(日期—时间转换检测),矩阵按键检测(闹钟设置,日期设置,时间设置)3大检测部分。

▪•SERVE:1s中断服务中断走时:秒→分→时→日→月→年▪XIAGSHI:刷屏中断服务(显示中断服务)以人眼不能分辨的频率一次刷新8或6位数码管来显示时间或日期及其他设置界面。

▪SHIJIANSHEZHI:时间设置模块修改时间,其中修改位闪烁显示加以区分,内嵌了时间的自动检测和校正代码,既不允许修改出现不存在的时间。

▪WANNIANLISHEZHI:日期设置模块修改日期,同样的修改位闪烁加以区分,内嵌了日期的自动检测和校正代码,既不允许出现不存在的日期。

▪NAOZHONGSHEZHI:闹钟设置模块修改闹钟时间,闹钟开关的置换,修改位闪烁加以区分,内嵌时间自动监测和校正代码已设置正确的时间。

3.3 单模块设计流程图在完成的整体设计和模块划分后,便进入到工作量最大的单模块流程设计。

▪主循环:说明:1.初始化时,将保存5个闹钟(按时分秒顺序排放)的15个地址50H—5EH均清零,将对应的5个闹钟开关0AH—0EH也都清零表示闹钟开关状态,检测闹钟时,从第一个闹钟开始分别检测开关,时分秒只要有任何一项不符合及即检测下一个闹钟,到最后一个闹铃也不符合时,进入按键检测部分。

2.按键检测包含独立按键和矩阵按键两部分,独立按键很简单,矩阵按键则编写检测子程序,将检测到的键值保存在寄存器R7中,没有检测到按键时不改变R7的数值。

因此,检测器先将R7里面放入#0FH(只要不是#00H—#0CH中的数即可),然后调用矩阵键盘检测子程序,再来通过检测R7的数值来判断有无按键按下或按下的那个键。

▪时间设置模块:说明:1.进入时间设置模块后,时的十位开始闪烁,通过独立按键s17,s18可以向右向左移动闪烁即修改位,修改正确的判断实际上是对将要修改完成的时间进行合理性的判断,如合理则修改时间,若不合理则此次按键失效。

2.检测到退出信号后,先要将所有初始化过程中改变了的标志位还原,如闪烁开关位等,再调回主循环。

▪日期设置模块:日期设置模块和时间设置模块几乎完全一样,所不同的是初始化不一样及日期设置里面有8位数码管需要刷新,而且由于日期比时间复杂,因此该模块中有两处日期校正部分,一部分是对按键修改是否正确的判断,使用方法也是使相应按键暂时失效(例如:修改前日期是2012:03:31,那么此时月份上得十位1-9所以数字都暂时失效,日个位上的2-9所以数字也都全部暂时失效);另一部分是修改后的日期校正,通过调用该子程序,防止上一部分不能消除的错误日期设置(例如:修改前日期是2012:01:31,这时修改月份个位为2则日期变为2012:02:31,显然这样的日期是不存在的,这时校正程序将日期进位,日期更改为2012:03:01)。

这部分校正模块在后面的1s中断服务中也有使用。

下图为该模块流程图:▪闹钟设置模块:闹钟设置模块和时间设置一是大同小异,主要区别在于多了一部分闹铃开关的检测。

下图为该模块流程图:4 模块源程序ORG 0000HAJMP MAINORG 000BHAJMP SERVEORG 001BHAJMP XIANSHITAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,40H ;段选表0,1,2,3,4,5,6,7,8,9,熄灭,-TAB1: DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH,00H,40H ;段选表带小数点,同上MAIN:/************************************************************************* ****///初始化MOV SP,#60H ;栈指针地址赋值MOV 3CH,#0CH ;设置界面修改位的闪烁频率具体代码在SERVE 1秒中断服务中MOV 37H,#0FFH ;临时地址预留给39HMOV 39H,#0FFH ;段位标志8位数据对应8个数码管为0的那位数码管始终暗MOV 3AH,#11111101B ;界面转换标志******01为时间界面取反后******10为万年历界面******00为设置闹钟界面CLR A ;时间万年历初始化时间00:00:00 万年历2000。

01。

01MOV 30H,A ;时MOV 31H,A ;分MOV 32H,A ;秒MOV 33H,#01H ;日MOV 34H,#01H ;月MOV 35H,A ;年只能显示2000-2099的时间MOV 3DH,A ;数码管闪烁开关初始化为关闭状态取反后11111111 打开MOV 40H,A ;闹钟设置界面预留地址地址MOV 41H,AMOV 42H,AMOV 43H,AMOV 44H,AMOV 45H,AMOV 46H,AMOV 47H,AMOV 50H,A ;闹钟1 时MOV 51H,A ;闹钟1 分MOV 52H,A ;闹钟1 秒MOV 0AH,A ;闹钟1 开关00000000为关闭状态取反后打开闹钟1MOV 53H,A ;同上MOV 54H,AMOV 55H,AMOV 0BH,AMOV 56H,AMOV 57H,A ;同上MOV 58H,AMOV 0CH,AMOV 59H,A ;同上MOV 5AH,AMOV 5BH,AMOV 0DH,AMOV 5CH,A ;同上MOV 5DH,AMOV 5EH,AMOV 0EH,A//中断,定时器初始化MOV TMOD,#11HMOV 38H,#14H ;T0定时器每50ms溢出一次溢出20次为一秒SETB PT0 ;优先级设置1秒中断为最高级屏幕刷新优先级低SETB PT1SETB ET0SETB ET1SETB EAMOV TH1,#0DFH ;T1定时器设置显示扫描频率MOV TL1,#0E0HMOV TH0,#3CH ;T0定时器设置为50msMOV TL0,#0B0HSETB TR1SETB TR0/***********************************************************************/ //程序主循环ZHUXUNHUAN://闹钟检测MOV A,0AHJZ NAO2 ;检测闹钟开关若关检测下一个闹钟,否则检测时间是否为闹钟设定时间MOV A,30HCJNE A,50H,NAO2MOV A,31HCJNE A,51H,NAO2MOV A,32HCJNE A,52H,NAO2AJMP XIANG ;时间为闹钟设定时间吻合进入闹铃程序下同NAO2:MOV A,0BHJZ NAO3MOV A,30HCJNE A,53H,NAO3MOV A,31HCJNE A,54H,NAO3MOV A,32HCJNE A,55H,NAO3AJMP XIANGNAO3:MOV A,0CHJZ NAO4MOV A,30HCJNE A,56H,NAO4MOV A,31HCJNE A,57H,NAO4MOV A,32HCJNE A,58H,NAO4AJMP XIANGNAO4:MOV A,0DHJZ NAO5MOV A,30HCJNE A,59H,NAO5MOV A,31HCJNE A,5AH,NAO5MOV A,32HCJNE A,5BH,NAO5AJMP XIANGNAO5:MOV A,0EHJZ BUMOV A,30HCJNE A,5CH,BUMOV A,31HCJNE A,5DH,BUMOV A,32HCJNE A,5EH,BUAJMP XIANG//检测独立按键BU: JB T0,ZHU1 ;检测s19是否按下按下进入万年历界面,否则检测矩阵键盘MOV A,3AH ;界面转换标志取反即可使得时间和万年历界面相互转换CPL AMOV 3AH,A//检测矩阵键盘//检测到按键1,2,3,4,5时进入对应的闹钟设置界面检测到0BH(对应s11)进入时间设置界面检测到0CH(对应s12)进入万年历设置界面//若未检测到按键则跳回主程序继续下一个检测周期ZHU1:MOV R7,#0FHACALL JIANCEANJIAN ;矩阵键盘检测子程序将检测到的键值存入r7CJNE R7,#0FH,ZHU2AJMP ZHUXUNHUANZHU2:CJNE R7,#0BH,ZHU3AJMP SHIJIANSHEZHIZHU3:CJNE R7,#0CH,ZHU4AJMP WANNIANLISHEZHIZHU4:CJNE R7,#01H,ZHU5AJMP NAOZHONGSHEZHIZHU5:CJNE R7,#02H,ZHU6AJMP NAOZHONGSHEZHIZHU6:CJNE R7,#03H,ZHU7AJMP NAOZHONGSHEZHIZHU7:CJNE R7,#04H,ZHU8AJMP NAOZHONGSHEZHIZHU8:CJNE R7,#05H,ZHUXUNHUAN0AJMP NAOZHONGSHEZHIZHUXUNHUAN0:AJMP ZHUXUNHUAN/************************************************************************* ***///1秒中断服务见书141例6-6SERVE:CLR EAPUSH BPUSH DPHPUSH DPLPUSH PSWPUSH ACCMOV TH0,#3CHMOV TL0,#0B0HMOV A,3DHJZ SEMOV A,3CHCJNE A,#6,SE0MOV 39H,37HSE0: DJNZ 3CH,SEMOV 39H,#0FFHMOV 3CH,#0CHSE:DJNZ 38H,RETURNMOV 38H,#14HMOV A,#01HADD A,32HMOV 32H,ACJNE A,#3CH,RETURNMOV 32H,#00HMOV A,#01HADD A,31HMOV 31H,ACJNE A,#3CH,RETURNMOV 31H,#00HMOV A,#01HADD A,30HMOV 30H,ACJNE A,#18H,RETURNMOV 30H,#00HMOV A,#01HADD A,33HMOV 33H,AACALL NYRRETURN:POP ACCPOP PSWPOP DPLPOP DPHPOP BSETB EARETI/************************************************************************* *///年月日校正子程序用于万年历进位和万年历设置防止出现不存在的时间NYR:MOV A,33HCJNE A,#32,MONTH ;日为32时,月进位日置1MOV 33H,#01HAJMP MONTH0MONTH:CJNE A,#31,MONTH1 ;日为31时分辨大小月及2月MOV A,34HCJNE A,#4,MONTH2MOV 33H,#01HAJMP MONTH0MONTH2:CJNE A,#2,MONTH6MOV 33H,#01HAJMP MONTH0MONTH6:CJNE A,#6,MONTH9MOV 33H,#01HAJMP MONTH0MONTH9:CJNE A,#9,MONTH11MOV 33H,#01HAJMP MONTH0MONTH11:CJNE A,#11,RETURN0MOV 33H,#01HAJMP MONTH0MONTH1:CJNE A,#30,MONTH29 ;日为30时分辨2月MOV A,34HCJNE A,#02H,RETURN0MOV 33H,#01HAJMP MONTH0MONTH29:CJNE A,#29,RETURN0 ;日为29时分辨闰平年2月MOV A,34HCJNE A,#02H,RETURN0MOV A,35HMOV B,#04HDIV ABMOV A,BJNZ MONOAJMP RETURN0MONO:MOV 33H,#01HMONTH0:MOV A,#01H ;月进位ADD A,34HMOV 34H,ACJNE A,#0DH,RETURN0MOV 34H,#01HMOV A,#01HADD A,35HMOV 35H,ACJNE A,#100,RETURN0 ;年最多只能99MOV 35H,#00RETURN0: RET/******************************************************************/ //屏幕刷新中断XIANSHI:PUSH BPUSH DPHPUSH DPLPUSH PSWPUSH ACCMOV TH1,#0DFHMOV TL1,#0E0HMOV A,3AHJNB ACC.0,WANNIANLI ;界面显示判断//时间界面MOV A,32HMOV B,#0AHDIV ABMOV 10H,BMOV 11H,AMOV A,31HMOV B,#0AHDIV ABMOV 12H,BMOV 13H,AMOV A,30HMOV B,#0AHDIV ABMOV 14H,BMOV 15H,AMOV 16H,#0AHMOV 17H,#0AHAJMP LIANG//万年历界面WANNIANLI:JNB ACC.1,SHEZHIMOV A,33HMOV B,#0AHDIV ABMOV 10H,BMOV 11H,AMOV A,34HMOV B,#0AHDIV ABMOV 12H,BMOV 13H,AMOV A,35HMOV B,#0AHDIV ABMOV 14H,BMOV 15H,AMOV 16H,#00HMOV 17H,#02HAJMP LIANG//闹钟设置界面SHEZHI:MOV 10H,40HMOV 11H,41HMOV 12H,42HMOV 13H,43HMOV 14H,44HMOV 15H,45HMOV 16H,46HMOV 17H,47H//刷新屏幕LIANG:MOV R6,#11111110B ;位选MOV R0,#10H ;利用r0间接访问功能实现选中位显示控制MOV R4,#8H ;刷新8次MAIN0: ;位选子程序ACALL LCJNE R0,#12H,TT1MOV DPTR,#TAB1AJMP KTT1:CJNE R0,#14H,TT2MOV DPTR,#TAB1AJMP KTT2:MOV DPTR,#TABK:MOV A,@R0MOVC A,@A+DPTRMOV R5,A//数码管开关判断不刷新39H中对应为0的那段数码管MOV A,39HJNB ACC.0,AC0JNB ACC.1,AC1JNB ACC.2,AC2JNB ACC.3,AC3JNB ACC.4,AC4JNB ACC.5,AC5JNB ACC.6,AC6JNB ACC.7,AC7AJMP J0AC0: CJNE R4,#08H,J0AJMP J1AC1: CJNE R4,#07H,J0AJMP J1AC2: CJNE R4,#06H,J0AJMP J1AC3: CJNE R4,#05H,J0AJMP J1AC4: CJNE R4,#04H,J0AJMP J1AC5: CJNE R4,#03H,J0AJMP J1AC6: CJNE R4,#02H,J0AJMP J1AC7: CJNE R4,#01H,J0AJMP J1J0: ACALL R ;段选子程序J1: MOV A,R6RL AMOV R6,AINC R0ACALL DELAY1 ;延时越长数码管越亮但过长导致刷新过慢数码管不能同时全亮MOV DPTR,#8200HMOV A,#00HMOVX @DPTR,ADJNZ R4,MAIN0POP ACCPOP PSWPOP DPLPOP DPHPOP BRETIL:MOV DPTR,#8300HMOV A,R6MOVX @DPTR,ARETR:MOV DPTR,#8200HMOV A,R5MOVX @DPTR,ARET/********************************************************************/ //延时子程序DELAY: ;延时20毫秒用于矩阵键盘的检测MOV 3EH,#120LOOP1:MOV 3FH,#30LOOP2:DJNZ 3FH,LOOP2DJNZ 3EH,LOOP1RETMDELAY:MOV 3EH,#5MLOOP1:MOV 3FH,#0AAHMLOOP2:DJNZ 3FH,MLOOP2DJNZ 3EH,MLOOP1RETDELAY1:MOV 3EH,#15LOOP11:MOV 3FH,#40LOOP21:DJNZ 3FH,LOOP21DJNZ 3EH,LOOP11RETDELAY0:MOV 3EH,#0FFHLOOP10:MOV 3FH,#0FFHLOOP20:DJNZ 3FH,LOOP20DJNZ 3EH,LOOP10RET/***********************************************************///时间设置SHIJIANSHEZHI:MOV 39H,#11011111B ;时的十位闪烁MOV 37H,39HMOV 3DH,#0FFH ;开闪烁开关M:JB T1,S1 ;检测独立按按键s20 按下则退出时间设置继续进入主循环MOV 39H,#0FFHMOV 3DH,#00HAJMP ZHUXUNHUANS1: JB INT0,S2 ;闪烁位即修改为右移MOV A,37HCJNE A,#11111110B,SS0RR ARR ARR AMOV 37H,AS10:JNB INT0,S10 ;右移按键松开才继续下面的程序防止一次按键右移多位下同AJMP MSS0:RR AMOV 37H,AS11: ;左移JNB INT0,S11AJMP MS2: JB INT1,M1MOV A,37HCJNE A,#11011111B,SS1RL ARL ARL AMOV 37H,AS12:JNB INT1,S12AJMP MSS1:RL AMOV 37H,AS13:JNB INT1,S13AJMP M//检测矩阵按键修改时间M1: MOV R7,#0FHACALL JIANCEANJIANCJNE R7,#0FH,SJSZ1AJMP MSJSZ1:MOV A,37H ;检测修改的是哪位JB ACC.5,SJSZ2//修改时十位只能修改为0,1,2 但时个位部位0,1,2,3时不能修改为2 CJNE R7,#00H,SJS1AJMP LED6SJS1:CJNE R7,#01H,SJS2AJMP LED6SJS2:CJNE R7,#02H,MAJMP LED6LED6:MOV A,30HMOV B,#0AHDIV ABMOV 1FH,BMOV B,#0AHMOV A,R7MUL ABADD A,1FHMOV 30H,AMOV A,37HRR AMOV 37H,AAJMP MSJSZ2:JB ACC.4,SJSZ3//修改时个位但时十位为2时只能修改为0,1,2,3MOV A,30HMOV B,#0AHDIV ABCJNE A,#02H,LED5CJNE R7,#00H,SJS4AJMP LED5SJS4:CJNE R7,#01H,SJS5AJMP LED5SJS5:CJNE R7,#02H,SJS6AJMP LED5SJS6:CJNE R7,#03H,MM1AJMP LED5MM1:AJMP MLED5:MOV B,#0AHMUL ABADD A,R7MOV 30H,AMOV A,37HRR AMOV 37H,AAJMP MSJSZ3:JB ACC.3,SJSZ4//修改分十位只能修改为0,1,2,3,4,5 CJNE R7,#00H,SJ1AJMP LED4SJ1:CJNE R7,#01H,SJ2AJMP LED4SJ2:CJNE R7,#02H,SJ3AJMP LED4SJ3:CJNE R7,#03H,SJ4AJMP LED4SJ4:CJNE R7,#04H,SJ5AJMP LED4SJ5:CJNE R7,#05H,MMAJMP LED4MM:AJMP MLED4:MOV A,31HMOV B,#0AHDIV ABMOV 1FH,BMOV A,R7MOV B,#0AHMUL ABADD A,1FHMOV 31H,AMOV A,37HRR AMOV 37H,AAJMP MSJSZ4:JB ACC.2,SJSZ5//修改分个位MOV A,31HMOV B,#0AHDIV ABMOV B,#0AHMUL ABADD A,R7MOV 31H,AMOV A,37HRR AMOV 37H,AAJMP MSJSZ5:JB ACC.1,SJSZ6//修改秒十位只能改为0,1,2,3,4,5 CJNE R7,#00H,SJ10AJMP LED2SJ10:CJNE R7,#01H,SJ20AJMP LED2SJ20:CJNE R7,#02H,SJ30AJMP LED2SJ30:CJNE R7,#03H,SJ40AJMP LED2SJ40:CJNE R7,#04H,SJ50AJMP LED2SJ50:CJNE R7,#05H,MM0AJMP LED2MM0:AJMP MLED2:MOV A,32HMOV B,#0AHDIV ABMOV 1FH,BMOV A,R7MOV B,#0AHMUL ABADD A,1FHMOV 32H,AMOV A,37HRR AMOV 37H,AAJMP MSJSZ6://修改秒个位MOV A,32HMOV B,#0AHDIV ABMOV B,#0AHMUL ABADD A,R7MOV 32H,AMOV 37H,#11011111BAJMP M/****************************************************************/ //万年历设置WANNIANLISHEZHI:MOV 3AH,#0FEH ;转换设置界面MOV 39H,#11011111B ;设置闪烁位MOV 37H,39HMOV 3DH,#0FFH ;开闪烁开关WM:ACALL NYR ;校正万年历JB T1,WS1 ;s20 按下退出设置界面MOV 39H,#0FFH ;关闪烁MOV 3DH,#00H ;闪烁开关关MOV 3AH,#11111101B ;转换成时间设置界面AJMP ZHUXUNHUANWS1:JB INT0,WS2 ;修改位右移同上MOV A,37HCJNE A,#11111110B,WSS0RR ARR ARR AMOV 37H,AS20:JNB INT0,S20AJMP WMWSS0:RR AMOV 37H,AS21:JNB INT0,S21AJMP WMWS2:JB INT1,WM1 ;修改位左移MOV A,37HCJNE A,#11011111B,WSS1RL ARL ARL AMOV 37H,AS23:JNB INT1,S23AJMP WMWSS1:RL AMOV 37H,AS24:JNB INT1,S24AJMP WM//矩阵键盘检测修改万年历WM1:MOV R7,#0FHACALL JIANCEANJIANCJNE R7,#0FH,WSJSZ1AJMP WMWSJSZ1:MOV A,37H ;检测修改位JB ACC.5,WSJSZ2//修改年十位MOV A,35HMOV B,#0AHDIV ABMOV 1FH,BMOV A,R7MOV B,#0AHMUL ABADD A,1FHMOV 35H,AMOV A,37HRR AMOV 37H,AAJMP WMWSJSZ2:JB ACC.4,WSJSZ3//修改年个位MOV A,35HMOV B,#0AHDIV ABMOV B,#0AHMUL ABADD A,R7MOV 35H,AMOV A,37HRR AMOV 37H,AAJMP WMWSJSZ3:JB ACC.3,WSJSZ4//修改月十位只能为0,1 但月个位不为0,1,2是不能修改为1 月个位为0时不能修改为0CJNE R7,#00H,WSJ1MOV A,34HMOV B,#0AHDIV ABMOV A,BCJNE A,#00H,WLED4AJMP WMMMWSJ1:CJNE R7,#01H,WMMMMOV A,34HMOV B,#0AHDIV ABMOV A,BCJNE A,#00H,L1AJMP WLED4L1: CJNE A,#01H,L2AJMP WLED4L2: CJNE A,#02H,WMMMAJMP WLED4WMMM:LJMP WMWLED4:MOV A,34HMOV B,#0AHDIV ABMOV 1FH,BMOV A,R7MOV B,#0AHMUL ABADD A,1FHMOV 34H,AMOV A,37HRR AMOV 37H,AAJMP WMWSJSZ4:JB ACC.2,WSJSZ5//修改月个位但月十位为1时只能修改为0,1,2 月十位为0时不能修改为0 MOV A,34HMOV B,#0AHDIV ABCJNE A,#00H,WJ0CJNE R7,#00H,WLED3AJMP WWMWJ0:CJNE R7,#00H,WJ1AJMP WLED3WJ1: CJNE R7,#01H,WJ2AJMP WLED3WJ2: CJNE R7,#02H,WWMAJMP WLED3WLED3:MOV B,#0AHMUL ABADD A,R7MOV 34H,AMOV A,37HRR AMOV 37H,AWWM: AJMP WMWSJSZ5:JB ACC.1,WSJSZ6//修改日十位只能为0,1,2,3 日个位不为0,1时不能修改为3CJNE R7,#00H,WSJ10AJMP WLED2CJNE R7,#01H,WSJ20AJMP WLED2WSJ20:CJNE R7,#02H,WSJ30AJMP WLED2WSJ30:CJNE R7,#03H,WWMMOV A,33HMOV B,#0AHDIV ABMOV A,BCJNE A,#00H,L3AJMP WLED2L3: CJNE A,#01H,WWMAJMP WLED2WLED2:MOV A,33HMOV B,#0AHDIV ABMOV 1FH,BMOV A,R7MOV B,#0AHMUL ABADD A,1FHMOV 33H,AMOV A,37HRR AMOV 37H,AAJMP WMWSJSZ6://修改日个位日十位为3时只能修改为0,1 MOV A,33HMOV B,#0AHDIV ABCJNE A,#00H,LL4CJNE R7,#00H,WLED1AJMP WMLL4:CJNE A,#03H,WLED1CJNE R7,#00H,WJ4AJMP WLED1WJ4:CJNE R7,#01H,WWMAJMP WLED1MOV B,#0AHMUL ABADD A,R7MOV 33H,AMOV 37H,#11011111BAJMP WM/***************************************************************/ //矩阵按键检测子程序JIANCEANJIAN:MOV DPTR,#8000HMOV A,#0F0HMOVX @DPTR,AMOV DPTR,#8000HMOVX A,@DPTRCPL AJNZ XIAODOURETXIAODOU://ACALL DELAYMOV A,#0F0HMOV DPTR,#8000HMOVX A,@DPTRCPL AJNZ PANRETPAN:MOV DPTR,#8000HMOV A,#11111110BMOVX @DPTR,AMOV DPTR,#8000HMOVX A,@DPTRJNB ACC.0,KEY10 ;低电位说明按键在该位JNB ACC.1,KEY20JNB ACC.2,KEY30JNB ACC.3,KEY40MOV DPTR,#8000HMOV A,#11111101BMOVX @DPTR,AMOV DPTR,#8000HMOVX A,@DPTRJNB ACC.0,KEY50JNB ACC.1,KEY60JNB ACC.2,KEY70JNB ACC.3,KEY80MOV DPTR,#8000HMOV A,#11111011BMOVX @DPTR,AMOV DPTR,#8000HMOVX A,@DPTRJNB ACC.0,KEY90JNB ACC.1,KEY00JNB ACC.2,TUIJNB ACC.3,KEY0C0RETKEY10:MOV R7,#01HRETKEY20:MOV R7,#02HRETKEY30:MOV R7,#03HRETKEY40:MOV R7,#04HRETKEY50:MOV R7,#05HRETKEY60:MOV R7,#06HRETKEY70:MOV R7,#07HRETKEY80:MOV R7,#08HRETKEY90:MOV R7,#09HRETKEY00:MOV R7,#00HRETTUI:MOV R7,#0BHRETKEY0C0:MOV R7,#0CHRET/****************************************************/ //闹铃响XIANG:CLR P1.0//ACALL MDELAY//SETB P1.0JB T1,XIANG ;s20 退出闹铃跳回主循环SETB P1.0AJMP ZHUXUNHUAN/****************************************************/ //闹钟设置NAOZHONGSHEZHI://检测是哪个闹钟并初始化闹钟设置CJNE R7,#01H,NZ2MOV A,50HMOV B,#0AHDIV ABMOV 45H,AMOV 44H,BMOV A,51HMOV B,#0AHDIV ABMOV 43H,AMOV 42H,BMOV A,52HMOV B,#0AHDIV ABMOV 41H,AMOV 40H,BMOV 09H,#50HMOV 47H,#01HMOV 08H,#0AHAJMP NANJIANNZ2:CJNE R7,#02H,NZ3MOV A,53HMOV B,#0AHDIV ABMOV 45H,AMOV 44H,BDIV ABMOV 43H,AMOV 42H,BMOV A,55HMOV B,#0AHDIV ABMOV 41H,AMOV 40H,BMOV 09H,#53HMOV 47H,#02HMOV 08H,#0BHAJMP NANJIAN NZ3:CJNE R7,#03H,NZ4MOV A,56HMOV B,#0AHDIV ABMOV 45H,AMOV 44H,BMOV A,57HMOV B,#0AHDIV ABMOV 43H,AMOV 42H,BMOV A,58HMOV B,#0AHDIV ABMOV 41H,AMOV 40H,BMOV 09H,#56HMOV 47H,#03HMOV 08H,#0CHAJMP NANJIAN NZ4:CJNE R7,#04H,NZ5MOV A,59HMOV B,#0AHDIV ABMOV 45H,AMOV 44H,BMOV A,5AHMOV B,#0AHDIV ABMOV A,5BHMOV B,#0AHDIV ABMOV 41H,AMOV 40H,BMOV 09H,#59HMOV 47H,#04HMOV 08H,#0DHAJMP NANJIANNZ5:MOV A,5CHMOV B,#0AHDIV ABMOV 45H,AMOV 44H,BMOV A,5DHMOV B,#0AHDIV ABMOV 43H,AMOV 42H,BMOV A,5EHMOV B,#0AHDIV ABMOV 41H,AMOV 40H,BMOV 09H,#5CHMOV 47H,#05HMOV 08H,#0EHAJMP NANJIANNANJIAN:MOV 3AH,#11111100B ;界面转换成闹钟设置界面MOV 39H,#11011111BMOV 37H,39HMOV 3DH,#0FFH ;开闪烁NM: MOV R1,08HJB T0,XIA1 ;s19 闹钟开关MOV A,@R1CPL AMOV @R1,AXIA1:MOV A,@R1JZ XIA2MOV 46H,#0BHXIA2:MOV 46H,#0AHXIA3:JB T1,NS1 ;s20 退出闹钟设置跳回主程序//闹钟数据保存MOV 39H,#0FFHMOV 3DH,#00HMOV 3AH,#11111101BMOV R1,09HMOV A,45HMOV B,#0AHMUL ABADD A,44HMOV @R1,AINC R1MOV A,43HMOV B,#0AHMUL ABADD A,42HMOV @R1,AINC R1MOV A,41HMOV B,#0AHMUL ABADD A,40HMOV @R1,AAJMP ZHUXUNHUANNS1:JB INT0,NS2 ;修改位右移同上MOV A,37HCJNE A,#11111110B,NSS0RR ARR ARR AMOV 37H,AS30:JNB INT0,S30AJMP NMNSS0:RR AMOV 37H,AS31:JNB INT0,S31AJMP NMNNM:AJMP NMNS2:JB INT1,NM1 ;修改位左移同上MOV A,37HCJNE A,#11011111B,NSS1RL ARL ARL AMOV 37H,AS32:JNB INT1,S32LJMP NMNSS1:RL AMOV 37H,AS33:JNB INT1,S33LJMP NMNM1://矩阵键盘检测修改闹钟同时间设置MOV R7,#0FHLCALL JIANCEANJIANCJNE R7,#0FH,NSJSZ1LJMP NMNSJSZ1:MOV A,37HJB ACC.5,NSJSZ2CJNE R7,#00H,NSJS1LJMP NLED6NSJS1:CJNE R7,#01H,NSJS2LJMP NLED6NSJS2:CJNE R7,#02H,NMMAJMP NLED6NLED6:MOV 45H,R7MOV A,37HRR AMOV 37H,ALJMP NMNSJSZ2:JB ACC.4,NSJSZ3MOV A,45HCJNE A,#02H,NLED5CJNE R7,#00H,NSJS4AJMP NLED5NSJS4:CJNE R7,#01H,NSJS5AJMP NLED5NSJS5:CJNE R7,#02H,NSJS6AJMP NLED5NSJS6:CJNE R7,#03H,NMM1AJMP NLED5NMM1:LJMP NNMNLED5:MOV 44H,R7MOV A,37HRR AMOV 37H,ALJMP NMNSJSZ3:JB ACC.3,NSJSZ4CJNE R7,#00H,NSJ1LJMP NLED4NSJ1:CJNE R7,#01H,NSJ2AJMP NLED4NSJ2:CJNE R7,#02H,NSJ3AJMP NLED4NSJ3:CJNE R7,#03H,NSJ4AJMP NLED4NSJ4:CJNE R7,#04H,NSJ5AJMP NLED4NSJ5:CJNE R7,#05H,NMMAJMP NLED4 NMM:LJMP NMNLED4:MOV 43H,R7MOV A,37HRR AMOV 37H,ALJMP NMNSJSZ4:JB ACC.2,NSJSZ5MOV 42H,R7MOV A,37HRR AMOV 37H,AAJMP NMM0NSJSZ5:JB ACC.1,NSJSZ6CJNE R7,#00H,NSJ10AJMP NLED2NSJ10:CJNE R7,#01H,NSJ20AJMP NLED2NSJ20:CJNE R7,#02H,NSJ30AJMP NLED2NSJ30:CJNE R7,#03H,NSJ40AJMP NLED2NSJ40:CJNE R7,#04H,NSJ50AJMP NLED2NSJ50:CJNE R7,#05H,NMM0AJMP NLED2NMM0:LJMP NMNLED2:MOV 41H,R7MOV A,37HRR AMOV 37H,ALJMP NMNSJSZ6:MOV 40H,R7MOV 37H,#11011111BLJMP NMEND5 系统测试软件整体完成后,进行调试和修改,连接单片机,进行系统的测试。

相关文档
最新文档