基于51单片机的LCD简单电子钟的设计
单片机课程设计基于51单片机的红外控制电子时钟(lcd显示)设计
![单片机课程设计基于51单片机的红外控制电子时钟(lcd显示)设计](https://img.taocdn.com/s3/m/c657836a51e79b8969022611.png)
《单片机原理及应用课程设计》报告—基于红外控制电子时钟(LCD显示)设计巩固和加深对单片机原理和接口技术知识的理解;培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。
2.课程设计要求以AT89C51单片机为核心的时钟,在1602显示器上显示当前的时间,显示格式为“时时:分分:秒秒”,并开始计时。
具体功能如下:用红外遥控器上5个按键设置当前时间,调闹钟,控制开关等。
功能键K1~K5功能如下。
●K1—暂停。
●K2—设置时间。
●K3—秒,分,时之间的切换。
●K4—调闹钟。
●K5—控制开关。
3.硬件设计3.1 设计思想原理框图接收头通过接收红外遥控器发送的数据传送给单片机,通过单片机控制显示屏和蜂鸣器的工作。
1)红外线遥控是目前使用最广泛的一种通信和遥控手段。
由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。
工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。
红外线遥控器使用TC9012专用发射集成模块做的,用频率为38、占空比为1/3的PPM方式调制,当一个键按下超过36ms 振荡器使芯片激活如果这个键按下且延迟大约108ms,这108ms 发射代码由一个起始码9ms ,一个结果码4.5ms (结果码加起始码构成一个12.5ms的引导码), 低8位地址码9ms-8ms, 8位地址码9ms-8ms ,8位数据码9ms-8ms和这8位数据的反码 9ms-8ms 组成,我们提取的即是那8位的数据码。
其数据帧如下图:数字0和1的脉冲如下:当接受端当检测到有红外线发过来, 将接收端置低, 否则置高。
基于51单片机时钟LCD显示
![基于51单片机时钟LCD显示](https://img.taocdn.com/s3/m/2d606c818762caaedd33d4f5.png)
}
void keyscan()//键盘扫描
{
if(k0==0)
{
if(k0==0)//k0按下,进入选择模式
{ delay(8);
k0num++;
while(!k0);
if(k0num==1)//修改秒
{
TR0=0;
write_com(0x80+0x40+10);
TR0=1;
}
}
if(k0num!=0)
{
if(k1==0)//修改秒
{
delay(40);
if(k1==0)
{delay(40);
while(!k1);
delay(40);
if(k0num==1)
{delay(40);
miao++;
if(miao==60)
miao=0;
write_sfm(10,miao);
2
AT89C51 LCD1602 12M晶振独立按键电容排阻
三硬件设计
1.
2
四软件设计
1.
2.
2.1
2.2
五
本设计实现了时钟时,分,秒准确计时和显示。由于时间仓促,设计仍有不足,主要是还不能对星期的自动调节,还需要进一步研究LCD1602datasheet的字库,来实现这一功能。
附程序代码:
#include<reg52.h>
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void write_sfm(uchar add,uchar date)//时钟数据显示
基于51单片机的LCD数字钟设计与制作
![基于51单片机的LCD数字钟设计与制作](https://img.taocdn.com/s3/m/405f61513b3567ec102d8a26.png)
关键 词 草 片机 ;D S l 5 0 2;L C D I 6 0 2 ;数字钟
引言
随 着科 学技 术 的不断 发 展 ,人们不 仅对
于 时 钟 的精 度 要求越 来 越 高 ,而 对于 时钟 功 能的 要求也 越来越 多 。本文基 于 5 I 单 片机 设计 r 一 款 带 有闹 钟设 置 、温 度显 示 、背光 时 间设 置的 数 字钟 ,它具 有 走时 准 确、 显示 直观 、无 机械 走 动 的声 音 、低能 耗 等优 点 , 可广泛用 于人 仃 ] 的 门常生活 。
1系统 概述
系统 原 理 榧 图 如 图 1 所 示 , 本 系 统 以 S T C 8 9 C 5 2 RC单片 机为 核 心 ,外 围电路 包括 键 盘 电 路 、 温 度 检 测 电 路 、D S 1 3 0 2时 钟 电 路 、L C D 1 6 0 2液 晶 显示 电路和 蜂 呜 器驱 动 电 路 。 当系 统启 动时 ,单 片 机首 先对 内部 资源 和L c Dl 6 0 2 进 行 初 始化 ,随 后从 D S 1 3 0 2 时 钟 芯 片和 D S I 8 B 2 0 温 度传 感 器分 别读取 时 间 和 温 度传输 给 L C D1 6 0 2 显示 ,并 对键盘 电路 进 行循环 扫描 , 通 过键盘 电路 完成 系统时 间、 闹钟日 ' f i H ]  ̄ H 背) 匕 持续 时 间的 设置 。
的 数字 式 时钟 ,并介 绍 了在 制作 和 调试 过程
中 遇 到 的 问 题 及解 决 方 法 。
脚 )保持 持续 两 个机 器 周期的 高 电平 使单 片 机 处于 复 位状 态 ,复位 后 片 机 P C指 - } 旨 向0 0 0 0 H 单元 ,从 该单元 向下执 行指 令。 2 . 2键盘 电路 键 盘 电路 由 4 个 微动 开关 组成 ,分 别为 “ 设置 ”键 、 “ + ”键 、 “ ”键 和 “ 保存 ”键 , 连接 到单片机 的 P 1 . 0 _ _ P 1 . 3 接 口进行控 制。
基于51单片机的简易电子钟设计
![基于51单片机的简易电子钟设计](https://img.taocdn.com/s3/m/4ef0e57886c24028915f804d2b160b4e767f81e6.png)
基于51单片机的简易电子钟设计一、设计目的现代社会对于时间的要求越来越精确,电子钟成为家庭和办公场所不可缺少的设备之一、本设计基于51单片机,旨在实现一个简易的电子钟,可以显示当前的时间,并且能够通过按键进行时间的调整和设置闹钟。
二、设计原理本设计主要涉及到51单片机的IO口、定时器、中断、LCD显示技术等方面知识。
1.时钟模块时钟模块采用定时器0的中断进行时间的累加和更新。
以1秒为一个时间单位,每当定时器0中断发生,就将时间加1,并判断是否需要更新小时、分钟和秒的显示。
同时,根据用户按键的操作,可以调整时间的设定。
2.显示模块显示模块采用16x2字符LCD显示屏,通过51单片机的IO口与LCD连接。
可以显示当前时间和设置的闹钟时间。
初次上电或者重置后,LCD显示时间为00:00:00,通过定时器中断和键盘操作,实现时间的更新和设定闹钟功能。
3.键盘模块键盘模块采用矩阵键盘连接到51单片机的IO口上,用于用户进行时间的调整和设置闹钟。
通过查询键盘的按键状态,根据按键的不同操作,实现时间的调整和闹钟设定功能。
4.中断模块中断模块采用定时器0的中断,用于1秒的定时更新时间。
同时可以添加外部中断用于响应用户按键操作。
三、主要功能和实现步骤1.系统初始化。
2.设置定时器,每1秒产生一次中断。
3.初始化LCD显示屏,显示初始时间00:00:00。
4.查询键盘状态,判断是否有按键按下。
5.如果按键被按下,根据不同按键的功能进行相应的操作:-功能键:设置、调整、确认。
-数字键:根据键入的数字进行时间的调整和闹钟设定。
6.根据定时器的中断,更新时间的显示。
7.判断当前时间是否与闹钟设定时间相同,如果相同,则触发闹钟,进行提示。
8.循环执行步骤4-7,实现连续的时间显示和按键操作。
四、系统总结和改进使用51单片机设计的简易电子钟可以显示当前时间,并且实现时间的调整和闹钟设定功能。
但是由于硬件资源有限,只能实现基本的功能,不能进行其他高级功能的扩展,例如闹铃的音乐播放、温度、湿度的显示等。
基于单片机的LCD电子时钟设计
![基于单片机的LCD电子时钟设计](https://img.taocdn.com/s3/m/09776c50a31614791711cc7931b765ce05087ada.png)
基于单片机的LCD电子时钟设计随着科技的不断发展,单片机已经成为现代电子设备中的重要组成部分。
其中,LCD电子时钟的设计与应用更是受到广泛。
基于单片机的LCD电子时钟设计具有精度高、稳定性好、体积小、耗电量低等优点,被广泛应用于家居、办公、交通运输等领域。
一、设计原理基于单片机的LCD电子时钟设计主要由单片机、时钟电路和LCD显示模块组成。
其中,单片机作为主控制器,负责读取时钟信号并控制LCD显示模块。
时钟电路则产生一个高精度的实时时钟信号,LCD显示模块则负责将时间信息显示出来。
二、硬件设计1、单片机选择:单片机是整个系统的核心,负责读取时钟信号、处理数据并控制LCD显示模块。
常见的单片机型号包括STM32、PIC、AVR等。
根据实际需求,选择合适的单片机型号。
2、时钟电路:时钟电路是整个系统的核心部分,它产生高精度的实时时钟信号。
常见的时钟电路包括石英晶体振荡器、GPS模块等。
根据实际需求,选择合适的时钟电路。
3、LCD显示模块:LCD显示模块负责将时间信息显示出来。
常见的LCD显示模块包括字符型LCD和图形型LCD。
根据实际需求,选择合适的LCD显示模块。
三、软件设计软件设计是整个系统的重要组成部分,它需要实现读取时钟信号、处理数据并控制LCD显示模块的功能。
具体的软件设计流程如下:1、初始化:初始化单片机、时钟电路和LCD显示模块。
2、读取时钟信号:通过时钟电路读取实时时钟信号。
3、处理数据:对读取的时钟信号进行处理,提取出年、月、日、时、分、秒等信息。
4、控制LCD显示模块:将处理后的时间信息通过LCD显示模块显示出来。
5、循环执行:重复执行上述步骤,实现LCD电子时钟的实时更新。
四、调试与优化完成硬件和软件设计后,需要对系统进行调试和优化。
具体的调试和优化步骤如下:1、通电测试:将系统通电,检查各部分是否正常工作。
2、精度测试:检查时钟电路的精度是否满足要求。
3、LCD显示测试:检查LCD显示模块是否能正确显示时间信息。
51单片机电子时钟设计
![51单片机电子时钟设计](https://img.taocdn.com/s3/m/3ea6269077eeaeaad1f34693daef5ef7ba0d12ce.png)
51单片机电子时钟设计电子时钟是一种非常实用的电子设备,它可以准确地显示时间,并拥有一系列的功能,如闹钟、日历等。
使用51单片机设计电子时钟,可以实现这些功能,同时还能够进行功能扩展,更好地满足用户需求。
首先,我们需要硬件上的准备工作。
51单片机需要与时钟(晶振)和显示器(LCD模块)进行连接。
晶振是提供单片机时钟脉冲的源头,LCD模块用于显示时间和各种功能。
同时,在电路中还需要进行一些扩展,如实时时钟模块(RTC模块)、按键模块等。
在软件设计方面,主要需要考虑以下几个方面:1.时钟脉冲:通过配置晶振的频率,可以生成单片机所需的时钟脉冲。
这个脉冲控制了单片机的运行速度,从而影响到时钟的准确性。
需要根据晶振频率进行相关配置。
2.时间的获取和计算:通过RTC模块可以获取当前的时钟数据(包括年、月、日、时、分、秒)。
在程序中,需要通过相应的接口获取这些数据,并进行计算。
比如,在显示时钟的时候,可以通过获取秒数、分钟数和小时数,并将其转换为相应的字符串进行显示。
3.菜单和按键功能:为了实现更多的功能,我们可以通过按键来实现菜单切换和功能选择。
在程序中,需要对按键进行扫描,判断按键的状态,然后进行相应的操作。
比如,按下菜单键可以进入菜单界面,通过上下键选择不同的功能,再通过确定键进行确认。
4.闹钟功能:闹钟功能是电子时钟中常见的功能之一、通过设置闹钟时间,并进行闹钟的开启或关闭,可以在指定的时间点触发相应的报警动作。
在程序中,需要编写逻辑判断闹钟是否到达指定的时间,然后触发报警。
5.日历功能:除了显示时间,电子时钟还可以显示当前的日期,包括年、月、日。
在程序中,需要编写相关的逻辑来获取日期数据,并进行显示。
通过以上的步骤,我们可以基本实现一个简单的电子时钟功能。
当然,根据用户的需求,还可以进行更多的功能扩展,比如添加温湿度监测、自动调光等功能。
总结起来,51单片机电子时钟的设计主要包括硬件和软件两个方面。
基于51单片机液晶电子钟显示设计
![基于51单片机液晶电子钟显示设计](https://img.taocdn.com/s3/m/5dab47fd998fcc22bcd10da5.png)
摘要该设计主要由单片机AT89C51和液晶显示器组成,实现常用的实时电子钟功能。
利用可编程芯片AT89C51强大的功能,我们实现了日历功能、时钟功能。
该时钟使用液晶显示器作为显示模块,使用三个弹性小按键作为输入模块,调节年、月、日、星期、时、分、秒。
该时钟系统还具有功耗小、成本低的特点,具有很强的实用性。
由于系统使用元器件较少,单片机所占用的I/O口不多,因此系统具有一定的扩展性。
经实验测试表明,该系统各项功能都已达到计划要求。
关键词:单片机、电子钟、AT89C51、中断、计时器、LM016L液晶显示器AbstractThe design mainly consists of MCU AT89C51 and LCD display, used to achieve a real-time clock function. Using the programmable chip AT89C51 powerful, we implement a calendar, clock function. The clock uses LCD as thedisplay module, usingthree elastic small keys as input module, adjusting theyear, month, day, week, time, minutes, seconds. The clock system also has the characteristics of low power consumption, low cost, strong practicability.Because the system uses fewer components, single chip occupied by the I/O port is not much, so the system scalable.The experiments show that, the system functions have been achieved plan requirements.Keywords:singlechipmicrocomputer, electronic clock, AT89C51, interrupt,timer, LM016L liquid crystal display目录第一章绪论 (3)第二章方案比较与论证 (4)第三章系统理论分析、计算与电路仿真 (5)3.1定时器与中断原理 (5)3.2proteus仿真结果 (5)第四章系统的硬件设计与实现 (6)4.1复位部分 (6)4.2晶振部分 (6)4.3液晶部分 (7)第五章系统的软硬件设计 (8)5.1按键抖动处理 (8)第六章系统测试及结果 (10)第七章小节 (11)第八章设计心得体会 (12)致谢 (13)参考文献 (14)附录 (15)1、原理图 (15)2、源程序 (15)第一章绪论单片机自1976年由于Intel公司推出MCS-48开始,迄今已有二十多年了。
基于单片机的电子时钟设计报告(LCD显示)
![基于单片机的电子时钟设计报告(LCD显示)](https://img.taocdn.com/s3/m/e13bb051b84ae45c3b358c6f.png)
单片机原理及应用课程设计任务书题目:电子时钟(LCD显示)1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。
显示格式为“时时:分分:秒秒”。
用3个功能键操作来设置当前时间。
功能键K1~K4功能下。
K1—设置小时。
K2—设置分钟。
K3—设置秒。
程序执行后工作指示灯LED发光,表示程序开始执行,LCD显示“23:59:00”,然后开始计时。
2、工作原理本课题难点在于键盘的指令输入,由于每个按键都具有相应的一种功能,程序中有较多的循环结构用以判断按键是否按下,以及判断按键是否抬起,以及LCD显示器的初始化。
3、参考电路硬件设计电路图如下图所示:硬件电路原理图单片机原理及应用课程设计任务书题目:电子时钟(LCD显示)1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。
显示格式为“时时:分分:秒秒”。
用3个功能键操作来设置当前时间。
功能键K1~K4功能下。
K1—设置小时。
K2—设置分钟。
K3—设置秒。
程序执行后工作指示灯LED发光,表示程序开始执行,LCD显示“23:59:00”,然后开始计时。
2、工作原理本课题难点在于键盘的指令输入,由于每个按键都具有相应的一种功能,程序中有较多的循环结构用以判断按键是否按下,以及判断按键是否抬起,以及LCD显示器的初始化。
3、参考电路硬件设计电路图如下图所示:硬件电路原理图基于AT89C51单片机的电子时钟设计报告一、设计要求与目的1)设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间。
2)、使用字符型LCD显示器显示当前时间。
显示格式为“时时:分分:秒秒”。
3)、用3个功能键操作来设置当前时间。
4)、熟悉掌握proteus编成软件以及keil软件的使用二、本设计原理本设计以AT89C51单片机为核心,通过时钟程序的编写,并在LCD显示器上显示出来。
基于51单片机的LCD简单电子钟的设计
![基于51单片机的LCD简单电子钟的设计](https://img.taocdn.com/s3/m/b4b2d281804d2b160a4ec07c.png)
基于51单片机的LCD简单电子钟的设计号:单片机原理及应用设计实验报告课题:电子钟专业:自动化学生姓名:黄紫扬学号: 12008102222015 年 5 月27 日目录0 前言 (3)1 总体方案设计 (3)2 硬件电路设计 (4)3 软件设计 (6)4 调试分析及说明 (6)5 结论 (7)参考文献……………………………………………………………错误!未定义书签。
课设体会……………………………………………………………错误!未定义书签。
附录1 电路原理 (7)附录2 程序清单 (8)摘要:传统的数字电子时钟采用了较多的分立元器件,不仅占用了很大的空间而且利用率也比很低,随着系统设计复杂度的不断提高,用传统时钟系统设计方法很难满足设计需求。
单片机是集CPU、RAM、ROM、定时器/计数器和多种接口于一体的微控制器。
它体积小、成本低、功能强,广泛应用于智能产品和工业自动化上。
而51系列的单片机是各单片机中最为典型和最有代表性的一种。
,本次设计提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在用C语言设计了具体软件程序后,将各个模块完全编译通过过后,结果证明了该设计系统的可行性。
该设计给出了以AT89C2051为核心,利用单片机的运算和控制功能,并采用系统化LED 显示模块实时显示数字的设计方案,适当地解决了实际生产和日常生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的应用性。
关键字:AT89C2051,C语言程序,电子钟。
0前言利用51单片机开发电子时钟,实现时间显示、调整功能。
具体要求如下:(1)根据给定题目设计的Proteus仿真原理图,并简单阐述设计原理;(2)根据给定题目设计有关的51汇编语言(或C语言)源程序,及主要的流程框图;(3)在Proteus仿真界面下运行程序实现给定的功能;(4)下载到ZKSYS单片机实验板上验证有关程序实现给定的功能。
1总体方案设计该电子时钟由89C51,按键,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,利用单片机内部定时计数器0通过软件扩展产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。
(完整)基于51单片机电子时钟设计
![(完整)基于51单片机电子时钟设计](https://img.taocdn.com/s3/m/6006b1d703d8ce2f01662360.png)
(完整)基于51单片机电子时钟设计编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)基于51单片机电子时钟设计)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)基于51单片机电子时钟设计的全部内容。
基于51单片机的电子时钟设计摘要本电子时钟以STC89C52单片机作为主控芯片,采用DS12C887时钟芯片,使用1602液晶作为显示输出.该时钟走时精确,具有闹钟设置,以及可同时显示时间、日期等多种功能。
本文将详细介绍该电子时钟涉及到的一些基本原理,从硬件和软件两方面进行分析.【关键词】STC89C52单片机 DS12C887时钟芯片 1602液晶蜂鸣器目录一、绪论 (4)1.1 电子时钟功能 (4)1.2设计方案 (4)二、硬件设计 (4)2。
151单片机部分设计 (4)2.2 USB供电电路设计 (5)2.3 串行通信电路设计 (6)2.4 DS12C887时钟芯片电路的设计 (6)2。
5 1602LCD液晶屏显示电路设计 (7)2。
6蜂鸣器电路设计 (8)2。
7按键调整电路设计 (8)三、软件设计 (9)3.1系统程序流程图设计 (9)3。
2程序设计 (11)四、心得体会 (22)参考文献 (23)一、绪论1。
1电子时钟功能(1)在1602液晶上显示年、月、日、星期、时、分、秒,并且按秒实时更新显示。
(2)具有闹铃设定即到时报警功能,报警响起时按任意键可取消报警。
(3)能够使用实验板上的按键随时调节各个参数,四个有效键分别为功能选择键、数值增大键、数值减小键和闹钟查看键。
(4)每次有键按下时,蜂鸣器都以短“滴”声报警.(5)利用DS12C887自身掉电可继续走时的特性,该时钟可实现断电时间不停、再次上电时时间仍准确显示在液晶上的功能。
用51单片机和1602液晶做的数字钟
![用51单片机和1602液晶做的数字钟](https://img.taocdn.com/s3/m/e1ea3129cbaedd3383c4bb4cf7ec4afe04a1b1e9.png)
用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显示区域来实现。
我们可以在指定的位置、特定的行和列上显示时间。
更新时间为了实现实时的时间显示,我们需要定期更新显示的时间。
可以使用定时器中断来定期更新时间,并根据需要刷新液晶屏幕上的显示。
基于单片机的lcd电子时钟设计
![基于单片机的lcd电子时钟设计](https://img.taocdn.com/s3/m/9fd7ad51a88271fe910ef12d2af90242a995ab46.png)
基于单片机的lcd电子时钟设计随着科技的发展,电子产品逐渐成为人们生活中必不可少的部分。
其中,电子时钟是人们生活中经常使用的一种电子产品。
电子时钟通过精准的电子元件来测量时间,比传统时钟计时更为准确、实用。
在这篇文档中,我将介绍一种基于单片机的LCD电子时钟设计。
一、设计原理该电子时钟的核心是单片机AT89C51,其运行频率为12MHz。
另外,该时钟使用4位7段LCD显示器来显示时间。
由于该LCD显示器需要保持常电流状态,因此电子时钟配备了LM324运算放大器,用于调整电流并实现显示。
当单片机初始化时,它会将当前的时间读取到内部存储器中,至此时钟启动。
单片机读取内部存储器将获取到各种时间信息,包括秒、分、时、日、月和年。
接下来,单片机通过CPU时钟中断,每秒钟更新一次时间,同时在LCD显示区域更新时间数据。
二、硬件设计该电子时钟需要一些硬件设备才能正常运行。
我们需要以下电子设备:1. 单片机AT89C512. 4位7段LCD3. 若干电容4. 数量不定的电阻5. LM324运算放大器6. 晶体7. LED灯通过以上硬件部件的搭配,我们可以实现一个完整的电子时钟设备。
三、软件设计在开发电子时钟硬件之后,我们需要写一些软件来控制它的运行。
在本例中,我们使用C语言编写时钟控制程序。
基本的程序控制框架如下:1. 初始化单片机,设置相关校准参数2. 读取系统时间,并将其存储到内部存储器中3. 每秒钟更新时间信息4. 对时钟时间进行格式化,以便在LCD显示屏幕上显示5. 在LCD显示区域显示格式化数据6. 不断循环执行上述步骤以上步骤需要编写正确的代码才能正常工作。
在编写C程序时,需要注意单片机的内部存储器、寄存器、I/O端口等的使用,同时还需要考虑程序执行速度、指令优化以及机器资源分配等各个方面。
四、总结在本文中我们介绍了基于单片机的LCD电子时钟的设计,并分别阐述了其硬件和软件设计的基本原理。
作为一种基于电子、精准、实用的时间计算设备,电子时钟在现代社会中得到了广泛应用。
基于单片机控制LCD显示电子时钟设计
![基于单片机控制LCD显示电子时钟设计](https://img.taocdn.com/s3/m/34de19e4f424ccbff121dd36a32d7375a517c659.png)
基于单片机控制LCD显示电子时钟设计电子时钟可以说是现代社会不可或缺的电子产品之一,准确显示时间,为人们提供时间信息,是人们日常生活的重要组成部分。
本文将介绍一种基于单片机控制LCD显示电子时钟设计的方法。
该电子时钟设计基于单片机芯片,并通过LCD显示屏来实现时间的显示。
其主要原理是通过单片机芯片内部的定时器,不断进行时间的计时,然后将计时结果通过串行通信协议发送给LCD显示屏,LCD显示屏将计时结果显示出来。
具体设计步骤如下:1.硬件设计:a.选择适合的单片机芯片:根据设计要求选择适合的单片机芯片,一般选择具有定时器功能的芯片,如51系列单片机。
b.连接LCD显示屏:将单片机与LCD显示屏连接,一般是通过串行通信协议,如I2C或SPI协议来进行数据传输。
c.添加电源模块:为单片机和LCD显示屏提供合适的电源,一般是通过稳压电源芯片来提供稳定可靠的电源。
d.添加按键模块:添加按键模块可以实现对时间的设置和调整功能,一般通过矩阵按键的方式来实现。
2.软件设计:a.初始化单片机芯片:在程序开始时,进行单片机的初始化,初始化定时器、串行通信模块等相关硬件。
b.设置时间计时器:通过定时器模块来进行时间的计时,可以选择合适的时钟频率和计时周期,从而实现精确计时。
d.实现按键功能:通过检测按键状态来进行按键功能的触发,如修改时间、调整亮度等功能。
以上就是基于单片机控制LCD显示电子时钟的设计方法。
通过单片机芯片的计时功能和串行通信协议实现时间的显示,通过按键模块实现对时间的设置和调整功能。
设计好电路和编写好相应的程序后,就能够实现一个简单而准确的电子时钟。
基于单片机的智能电子时钟的设计及应用
![基于单片机的智能电子时钟的设计及应用](https://img.taocdn.com/s3/m/25c2095f15791711cc7931b765ce050877327548.png)
基于单片机的智能电子时钟的设计及应用一、引言智能电子时钟是一种应用广泛的电子产品,它不仅能够准确显示时间,还具备了一系列智能化的功能,如闹钟、温湿度显示、定时开关等。
基于单片机的智能电子时钟设计是近年来电子技术领域中备受关注的研究方向。
本文将详细介绍基于单片机的智能电子时钟设计及其应用,并对其进行深入研究。
二、基于单片机的智能电子时钟设计原理1. 选取合适的单片机芯片在设计基于单片机的智能电子时钟之前,首先需要选取合适的单片机芯片。
常见选择包括51系列、AVR系列和ARM系列等。
根据具体需求和功能要求进行选择,并考虑到其性价比、易用性和扩展性。
2. 时钟模块设计在整个系统中,准确显示时间是最基本也是最关键的功能之一。
因此,需要设计一个稳定可靠且精度高的时钟模块。
常见选择包括RTC 芯片和GPS模块等。
3. 显示模块选择与驱动为了实现时间的直观显示,需要选择合适的显示模块。
常见选择包括LED数码管、LCD液晶显示屏和OLED显示屏等。
同时,还需要设计合适的驱动电路,以实现对显示模块的控制。
4. 功能模块设计除了基本的时间显示功能外,智能电子时钟还可以具备一系列智能化功能。
常见功能包括闹钟、温湿度显示、定时开关等。
这些功能需要通过相应的传感器和控制电路来实现。
三、基于单片机的智能电子时钟应用1. 家庭生活基于单片机的智能电子时钟在家庭生活中有着广泛应用。
它可以作为家庭闹钟,准确地唤醒人们起床;同时也可以作为温湿度监测器,在家中监测室内温湿度,并提供相应数据。
2. 办公场所在办公场所中,基于单片机的智能电子时钟可以作为时间提醒器,在工作时间结束时提醒人们休息;同时也可以作为定时开关,在指定时间自动打开或关闭相应设备。
3. 公共场所在公共场所中,基于单片机的智能电子时钟具备更多应用场景。
例如,在火车站、机场等候车室中,它可以作为候车时间显示器,为旅客提供准确的候车时间信息。
四、基于单片机的智能电子时钟设计案例以基于51系列单片机的智能电子时钟设计为例,具体设计方案如下:1. 硬件设计选用51系列单片机作为主控芯片,搭配RTC芯片作为时钟模块。
基于单片机的简易电子时钟设计
![基于单片机的简易电子时钟设计](https://img.taocdn.com/s3/m/b957d329b94ae45c3b3567ec102de2bd9605ded7.png)
基于单片机的简易电子时钟设计引言:电子时钟是人们日常生活中广泛应用的一种设备,基于单片机的电子时钟可以实现精确的时间显示、闹钟设置、定时功能等。
本设计将使用单片机控制电子时钟的各种功能,通过一个LCD显示屏来显示时间和其他信息。
一、设计目标:1.实现准确显示时间功能;2.设计带有闹钟设置的功能;3.实现定时功能。
二、设计原理:该电子时钟工作原理主要是通过单片机将外部的时钟信号进行调整和处理,然后控制液晶显示屏显示时间。
电子时钟的核心是单片机,通过单片机的计时功能实现时钟的准确显示,并通过输入设备设置闹钟功能和定时功能。
三、设计流程:1.系统初始化:首先,将单片机初始化,设置时钟和计时器的相关参数,开启显示屏的显示功能。
2.时间显示功能:通过计时器中断,定时更新时间,并将时间值传递给液晶显示屏显示出来。
3.闹钟设置功能:通过按键输入设置闹钟时间,将设置好的闹钟时间存储到单片机中。
4.定时功能:通过按键输入设置定时时间,将设置好的定时时间存储到单片机中,当定时时间到达时,触发相应的动作,如报警等。
四、硬件设计:1.单片机选择:选用一款适合的单片机,如51系列单片机。
2.时钟电路:通过外部晶振或者RTC芯片来提供准确的时钟信号。
3.输入设备:使用按键作为输入设备,用于设置闹钟和定时功能;4.显示屏:选用合适的液晶显示屏,用于显示时间。
五、软件设计:1.系统初始化:设置时钟和计时器的相关参数,开启显示屏的显示功能。
2.时间显示功能:通过计时器中断,定时更新时间,并将时间值传递给液晶显示屏显示出来。
3.闹钟设置功能:通过按键输入设置闹钟时间,将设置好的闹钟时间存储到单片机中。
4.定时功能:通过按键输入设置定时时间,将设置好的定时时间存储到单片机中,当定时时间到达时,触发相应的动作,如报警等。
六、实验结果:本设计可以准确显示时间,并可以设置闹钟和定时功能。
当闹钟和定时时间到达时,会触发相应的动作,实现了基本要求。
一种基于51单片机的LCD时钟的设计
![一种基于51单片机的LCD时钟的设计](https://img.taocdn.com/s3/m/91c16a19172ded630b1cb6fc.png)
计题目:一种基于51单片机的LCD时钟的设计学院:系别:电气工程系班级:姓名:指导老师:0前言 (3)1.单片机的介绍及的基础知识 (4)2.单片机的定时/计数器及I/O接口 (5)3. LCD接口显示 (9)4.带单片机的LCD时钟 (12)后记 (27)参考文献 (28)前言8051是目前市面上相当流行的单片机,以基本的8051软硬件设计为基础,结合一些特殊接口的程序设计,最基本的8051基本程序设计,介绍了用8051制作LCD时钟的技巧,本书撰写的主导思想是软硬件相结合,以硬件为基础,来执行各功能模块的编写。
本设计利用单片机8051的控制程序结合LCD设计一个简易的微电脑时钟,可以放在自已的工作桌上使用告知现在的时间,或是每次重置后开始计时,记录完成一件工作要花费多少时间,利用单片机定时器设计时间计时处理,这是许多电子装置最基本的功能。
本书语言通俗易懂,结构紧凑,主要介绍了 8051单片机的定时/计数器,并行I/O接口,LCD接口显示,用带单片机的LCD时钟显示器来设置时间,硬、软件电路设计流程图及具体描述,及其源程序编码等内容。
本书在编写的过程中得到了许多同学们和老师的帮助和大力支持,提出了许多宝贵的意见和建议,在此向他们表示感谢。
由于编者水平有限,加上时间仓促,书中难免有错误于不妥之处,请检阅及指导老师批评指正。
第一章单片机的基础知识单片微型计算机(Single Chip Microcomputer)简称单片机,是将CPU、存储器、总线、I/O接口电路集成在一片超大规模集成电路芯片上,是典型的嵌入式微控制器。
由于单片机具有体积小、功能全、可靠性好、价格低廉的突出优点,因而问市后广泛应用于工业控制、仪器仪表、交通运输、通信设备、家用电器等众多领域,使得许多领域的自动化水平和自动化程度得以大幅度提高,成为现代电子系统中最重要的智能化器件之一。
单片机的广泛推广和应用,反过来也进一步使得单片机本身得到了迅速的发展,不断地更新换代并逐渐改进和完善各方面的功能。
基于51单片机的电子时钟设计
![基于51单片机的电子时钟设计](https://img.taocdn.com/s3/m/b64219241fd9ad51f01dc281e53a580216fc50e7.png)
基于51单片机的电子时钟设计
电子时钟是一种使用电子元件和计算机技术制造的时计,它可以显示年、月、日、时、分、秒等时间信息,并且具有显示精确、功能齐全、操
作简便等特点。
本文将基于51单片机设计一个电子时钟。
一、硬件设计:
1.时钟模块:我们可以使用DS1302时钟模块作为实时时钟芯片,它
可以提供精确的时间信息,并且可以通过单片机与之进行通信。
2.显示模块:我们可以使用共阳数码管进行时间的显示,将时钟设计
成6位7段显示器。
3.按键模块:我们可以使用按键作为输入方式,通过按键调整时间信息。
二、软件设计:
1.初始化:首先,我们需要初始化时钟模块和显示模块,使它们正常
工作。
同时,设置时钟的初始时间为系统当前时间。
2.获取时间:通过与时钟模块的通信,获取当前的时间信息,包括年、月、日、时、分、秒等。
3.显示时间:将获取到的时间信息通过显示模块显示出来,分别显示
在6个数码管上。
4.时间调整:通过按键模块的输入,判断用户是否需要调整时间。
如
果需要,可以通过按键的不同组合来调整时、分、秒等时间信息。
5.刷新显示:通过不断更新显示模块的输入信号来实现时钟的流动性,保持秒针不断运动的效果。
6.时间保存:为了保证时钟断电后依然能够保持时间,我们需要将时
钟模块获取到的时间信息保存在特定的EEPROM中。
7.闹钟功能:可以通过按键设置闹钟,当到达闹钟时间时,会通过蜂
鸣器发出响声。
以上就是基于51单片机的电子时钟设计方案。
通过对硬件和软件的
综合设计,我们可以实现一个功能齐全的电子时钟。
基于51单片机定时器的电子时钟设计
![基于51单片机定时器的电子时钟设计](https://img.taocdn.com/s3/m/279cb1b47d1cfad6195f312b3169a4517723e5e7.png)
基于51单片机定时器的电子时钟设计电子时钟是一种集计时、显示时间等功能于一体的电子设备。
它可以准确地显示当前的时间,并通过定时器控制乃至更新时间。
本文将介绍基于51单片机定时器的电子时钟设计。
设计步骤如下:步骤一:硬件设计首先,需要准备以下硬件元件:1.51单片机:作为主要控制单元;2.DS1302实时时钟芯片:用于计时和保存时间数据;3.16x2字符LCD显示屏:用于显示时间;4.4x4矩阵键盘:用于调整时间和设置闹钟;5.蜂鸣器:用于报时功能;6.电位器:用于调整LCD背光亮度。
将这些硬件元件按照电路图连接起来,注意正确连接引脚和电源。
步骤二:软件设计在51单片机上编写程序,实现以下功能:1.初始化:a.初始化DS1302实时时钟芯片,设置初始时间;b.初始化LCD显示屏;c.初始化矩阵键盘;2.获取时间:a.从DS1302芯片读取当前时间;3.显示时间:a.将时间数据转换为字符,并在LCD上显示出来;4.键盘输入:a.监测矩阵键盘输入,判断用户按下的是哪个键;b.根据不同的键,执行相应的操作,如设置时间、设置闹钟等;5.闹钟功能:a.设置闹钟时间,当当前时间与闹钟时间相同时,触发蜂鸣器报时;b.可以通过按键来设置闹钟时间和开启/关闭闹钟功能。
以上是基本的电子时钟功能,可以根据实际需求进行扩展和添加其他功能。
步骤三:测试与调试步骤四:优化与扩展在基本功能正常运行的基础上,可以对电子时钟进行优化和扩展。
添加一些实用的功能,如温湿度显示、日期显示、闹钟音乐选择等,以提高电子时钟的实用性和用户体验。
总结:本文介绍了基于51单片机定时器的电子时钟设计步骤,包括硬件设计和软件编程。
通过该设计,可以实现准确显示时间、调整时间、设置闹钟等功能。
为了使电子时钟更加实用,可以根据需要进行优化和扩展。
基于AT89C51单片机的LCD电子时钟设计说明
![基于AT89C51单片机的LCD电子时钟设计说明](https://img.taocdn.com/s3/m/7a9eec3466ec102de2bd960590c69ec3d5bbdb95.png)
课程设计说明书课程名称单片机应用设计设计题目基于单片机的时钟设计专业(工业)自动化学生班级学号完成日期 2012/12/3——2012/12/15工学院电气学院工学院电气学院课程设计任务书第1章电子时钟的工作原理本次设计时钟电路,使用了AT89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,用C语言程序来控制整个时钟的显示,使得编程变得更容易,这样通过五个模块:芯片、显示屏、看门狗、电源、时钟即可满足设计要求。
此设计原理图框图如图1-1所示,此电路包括以下五个部分:单片机、时钟电路、看门狗、液晶屏、电源模块、时钟振荡电路。
图1-1 主电路设计框图本设计采用C语言程序设计,使单片机控制数码管显示年、月、日、时、分、秒,当秒计数满60时就向分进位,分计数器计满60后向时计数器进位,小时计数器按“23翻0”规律计数。
时、分、秒的计数结果经过数据处理可直接送显示器显示。
当计时发生误差的时候可以用校时电路进行校正。
设计采用的是时、分、秒显示,单片机对数据进行处理同时在LCD上显示。
第2章系统硬件电路设计与元件2.1 AT89C51芯片AT89C51 是美国ATMEL 公司生产的8 位Flash ROM 单片机。
其最突出的优点是片ROM 为Flash ROM,可擦写1000 次以上,应用并不复杂的通用ROM 写入器就能方便的擦写,读取也很方便,价格低廉,具有片程序ROM 二级系统。
因此可灵活应用于各种控制领域。
AT89C51 包含以下一些功能部件:(1)一个8 位CPU ;(2)一个片振荡器和时钟电路;(3)4KB Flash ROM ;(4)128B RAM;(5)可寻址64KB 的外ROM 和外RAM 控制电路;(6)两个16 位定时/计数器;(7)21 个特殊功能寄存器;(8)4 个8 位并行I/O 口;(9)一个可编程全双工串行口;(10)5 个中断源,可设置成2 个优先级。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编号:XXX科技大学单片机原理及应用设计实验报告课题:电子钟专业:自动化学生姓名:XXX学号:XXXXX2016年5月16日目录0 前言 (2)1 总体方案设计 (2)2硬件电路设计 (3)3软件设计 (4)4调试分析及说明 (5)5结论 (6)参考文献……………………………………………………………错误!未定义书签。
课设体会……………………………………………………………错误!未定义书签。
附录1 电路原理 (6)附录2 程序清单 (6)摘要:传统的数字电子时钟采用了较多的分立元器件,不仅占用了很大的空间而且利用率也比很低,随着系统设计复杂度的不断提高,用传统时钟系统设计方法很难满足设计需求。
单片机是集CPU、RAM、ROM、定时器/计数器和多种接口于一体的微控制器。
它体积小、成本低、功能强,广泛应用于智能产品和工业自动化上。
而51系列的单片机是各单片机中最为典型和最有代表性的一种。
,本次设计提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在用C语言设计了具体软件程序后,将各个模块完全编译通过过后,结果证明了该设计系统的可行性。
该设计给出了以AT89C2051为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示数字的设计方案,适当地解决了实际生产和日常生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的应用性。
关键字:AT89C2051,C语言程序,电子钟。
0前言利用51单片机开发电子时钟,实现时间显示、调整功能。
具体要求如下:(1)根据给定题目设计的Proteus仿真原理图,并简单阐述设计原理;(2)根据给定题目设计有关的51汇编语言(或C语言)源程序,及主要的流程框图;(3)在Proteus仿真界面下运行程序实现给定的功能;(4)下载到ZKSYS单片机实验板上验证有关程序实现给定的功能。
1总体方案设计该电子时钟由89C51,按键,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,利用单片机内部定时计数器0通过软件扩展产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。
时钟的年月日时分秒的切换是由一个按键控制,而另外两个个按键控制加减调节。
图1系统结构框图该电子时钟由STC89C51,按键,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,晶振电路的晶振频率为12MHZ,使用的定时器/计数器工作方式1,通过软件扩展产生的一秒定时,达到时分秒的计时,60秒为一分钟,60分钟为一小时,24小时为一天,又重00:00:00开始计时2硬件电路设计(1)时钟电路设计单片机利用外部12MHZ晶振构成振荡电路作为时钟源,时钟电路的原理如下图。
图2 时钟电路图(2)独立按键输入电路按键处理设置为:当有没键按下时,时钟正常运行;当按K1时分别切换到年月日时分秒;按K2为加。
按K3为减。
电路图如下图图3 独立按键电路(3)单片机系统AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。
外形及引脚排列如下图图4单片机系统图(4)LCD液晶显示LCD1602采用标准的16脚接口,第1脚:VSS为电源地;第2脚:VDD接5V 电源正极;第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高;第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器;第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作;第6脚:E(或EN)端为使能(enable)端。
第7~14脚:D0~D7为8位双向数据端;第15~16脚:空脚或背灯电源。
电路如下图图5LCD液晶显示图3软件设计本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整程序、延时程序四大模块。
系统的流程图如下图是否设计思路:本系统主要可分为主程序、定时计数中断程序、时间调整程序、延时程序和LCD 液晶驱动程序。
定时中断程序是利用单片机内部定时器0实现1秒的定时,然后利用软件延时实现分小时,时间调整程序是利用单片机的内部存贮器,把调整好的时间写到显示时间的存贮单元,然后启动定时器开始计时并显示,延时程序是利用软件实现延时达到去抖的目的。
液晶启动程序是为了把单片机的数据送到显示器的同时让显示器的第6脚使能断的电平实现由1到0的跳变,使显示器执行显示的命令。
主程序就是利用这些子程序中断程序实现显示、定时等功能。
4调试分析及说明(1) 时钟正常运行调试仿真图开始 液晶初始化 时间初始化按键是否按下? 读取时间 显示时间 调整时间 结束图6 正常运行仿真图(2)时间调整仿真图10 对时分秒的调整5结论本次电子时钟的设计基本完成:当没有键按下时,时钟正常运行;时钟的年月日时分秒的切换是由一个按键控制,而另外两个个按键控制加减调节附录1 电路原理附录2 程序清单#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table[]=" 2015-05-27 WED ";uchar code table1[]=" 12:30:55";uchar code table2[]=" 1200810222 ";uchar code table3[]="Made by HUANG";uchar code table4[]="MONTUEWEDTHUFRISATSUN"; uchar count,s1num;char miao,fen,shi,ri,yue;uint nian;sbit lcd_rs = P2^0;sbit lcd_rw = P2^1;sbit lcd_en = P2^2;sbit s1=P1^0;sbit s2=P1^1;sbit s3=P1^2;sbit Output_squ=P3^6;void delay(uint z)//延时子函数{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void write_com(uchar com)//写命令函数{lcd_rs = 0;P0= com;delay(5);lcd_en=1;delay(5);lcd_en=0;}void write_date(uchar date)//写数据函数{lcd_rs = 1;P0= date;delay(5);lcd_en=1;delay(5);lcd_en=0;}void init()//初始化函数{int num;shi=12;fen=30;miao=55;ri=27;yue=5;nian=2015;lcd_en=0;lcd_rw=0;write_com(0x38);//显示设置模式write_com(0x0c);//00001100开显示,不显示光标,光标不闪烁write_com(0x06);//00000110地址指针加一,整屏不移动write_com(0x01);//清屏write_com(0x80);for(num=0;num<16;num++)//显示数字1200810222{write_date(table2[num]);delay(300);}write_com(0x80+0x40);for(num=0;num<16;num++)//显示made by HUANG{write_date(table3[num]);delay(300);}delay(5000);write_com(0x01);write_com(0x80);for(num=0;num<16;num++)//显示日期{write_date(table[num]);delay(5);}write_com(0x80+0x40);for(num=0;num<12;num++)//显示时间{write_date(table1[num]);delay(5);}TMOD=0x51;//启动定时器中断TH0=0X3C; //50msTL0=0XB0;TH1=0X00;TL1=0X00;EA=1;ET0=1;TR0=1;//打开定时器0TR1=1; //打开定时器0}void write_sfm(uchar add,uchar date)//写时分秒函数{uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);}void write_nyr(uint add,uint date)//写年月日函数,此处若用uchar范围只有0-255 { //不够,改用uint(0-65535) uint qian,bai,shi,ge;qian=date/1000;bai=date%1000/100;shi=date%100/10;ge=date%10;write_com(0x80+add);write_date(0x30+qian);write_date(0x30+bai);write_date(0x30+shi);write_date(0x30+ge);}void write_yr(uchar add,uchar date)//写月日函数{uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+add);write_date(0x30+shi);write_date(0x30+ge);}void keyscan()//按键扫描函数{int m,n;if(s1==0){delay(5);if(s1==0)//按键1光标移位扫描{s1num++;if(s1num==1){ while(!s1);//等待按键松手write_com(0x80+0x40+10);TR0=0;//关闭定时器write_com(0x0f); //开显示,显示光标,光标闪烁}if(s1num==2){while(!s1);write_com(0x80+0x40+7);}if(s1num==3){while(!s1);write_com(0x80+0x40+4);}if(s1num==4){while(!s1);write_com(0x80+3);}if(s1num==5){while(!s1);write_com(0x80+6);}if(s1num==6){while(!s1);write_com(0x80+9);}if(s1num==7){while(!s1)write_com(0x80+13);}if(s1num==8){while(!s1);s1num=0;write_com(0x0c);TR0=1;//开定时器}}}if(s1num!=0){if(s2==0)//按键2加功能{delay(5);if(s2==0){while(!s2);if(s1num==1)//秒加{miao++;if(miao==60){miao=0;}write_sfm(10,miao);write_com(0x80+0x40+10);}if(s1num==2)//分加{fen++;if(fen==60){fen=0;}write_sfm(7,fen);write_com(0x80+0x40+7);}if(s1num==3)//时加{shi++;if(shi==24){shi=0;}write_sfm(4,shi);write_com(0x80+0x40+4);}if(s1num==4)//年加{nian++;if(nian==10000){nian=2000;}write_nyr(1,nian);write_com(0x80+3);}if(s1num==5)//月份加{yue++;if(yue==13){yue=1;}write_yr(6,yue);write_com(0x80+6);}if(s1num==6)//日期加{ri++;if(ri==29&&yue==2&&!((nian%4==0&&nian%100!=0)||nian%400==0)){ri=1;//平年}if(ri==30&&yue==2&&((nian%4==0&&nian%100!=0||nian%400==0))){ri=1;//闰年}if(ri==31&&(yue==4||yue==6||yue==9||yue==11)){ri=1;}if(ri==32){ri=1;}write_yr(9,ri);write_com(0x80+9);}if(s1num==7)//星期加{m=m+3;if(m==21)m=0;write_com(0x80+12);for(n=m;n<m+3;n++){write_date(table4[n]);delay(5);}write_com(0x80+13);}}}if(s3==0)//按键3减功能{delay(5);if(s3==0){while(!s3);if(s1num==1)//秒减{miao--;if(miao==-1){miao=59;}write_sfm(10,miao);write_com(0x80+0x40+10);}if(s1num==2)//分减{fen--;if(fen==-1)fen=59;write_sfm(7,fen);write_com(0x80+0x40+7);}if(s1num==3)//时减{shi--;if(shi==-1)shi=23;write_sfm(4,shi);write_com(0x80+0x40+4);}if(s1num==4)//年减{nian--;if(nian==1999)nian=2000;write_nyr(1,nian);write_com(0x80+3);}if(s1num==5)//月份减{yue--;if(yue==0)yue=12;write_yr(6,yue);write_com(0x80+6);}if(s1num==6)//日减{ri--;if(ri==0){if(yue==2&&!((nian%4==0&&nian%100!=0)||nian%400==0)){ri=28;//平年}if(yue==2&&((nian%4==0&&nian%100!=0||nian%400==0))){ri=29;//闰年}if(yue==4||yue==6||yue==9||yue==11){ri=30;}if(yue==1||yue==3||yue==5||yue==7||yue==9||yue==11)ri=31;}write_yr(9,ri);write_com(0x80+9);}if(s1num==7)//星期减{m=m-3;if(m==0)m=21;write_com(0x80+12);for(n=m;n-3<m;n++){write_date(table4[n-3]);delay(5);}write_com(0x80+13);}}}}}void main(){int i,j;init();while(1){keyscan();if(TL1==8){ TH1=0X00;TL1=0X00;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;ri++;j=j+3;if(j==21)j=0;write_com(0x80+12);for(i=j;i<j+3;i++){write_date(table4[i]);delay(5);}if(ri==29&&yue==2&&!((nian%4==0&&nian%100!=0)||nian%400==0)){ri=1;yue++;//平年}if(ri==30&&yue==2&&((nian%4==0&&nian%100!=0||nian%400==0))){ri=1;yue++;//闰年}if(ri==31&&(yue==4||yue==6||yue==9||yue==11)){ri=1;yue++;}if(ri==32){ri=1;yue++;}if(yue==13){yue=1;nian++;if(nian==10000){nian=2000;}write_nyr(1,nian);}write_yr(6,yue);}write_yr(9,ri);write_sfm(4,shi);}write_sfm(7,fen);}write_sfm(10,miao);}}}void timer() interrupt 1{TH0=0X3C;TL0=0XB0;Output_squ=~Output_squ; }。