24h自动打铃系统设计.
设计题目十七:带闹钟功能的24小时制闹钟系统的设计

设计题目十七:带闹钟功能的24小时制闹钟系统的设计
设计要求:
(1) 计时功能:这是本计时器设计的基本功能,每隔一分钟计时一次,并在显示屏上显示当前时间。
(2) 闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声。
(3) 设置新的计时器时间:用户用数字键‘0’~‘9’输入新的时间,然后按 "TIME"键确认。
(4) 设置新的闹钟时间:用户用数字键“0”~“9”输入新的时间,然后按“ALARM ”键确认。
过程与(3)类似。
(5) 显示所设置的闹钟时间:在正常计时显示状态下,用户直接按下“ALARM ”键,则已设置的闹钟时间将显示在显示屏上。
参考设计思路:
图4-1 闹钟系统总体结构图
整个闹钟系统的总体结构图如图4-1所示,我们将整个系统分成:(1)用于键盘输入的缓冲器;(2)用于始终计数的计数器;(3)用于保存闹钟时间的寄存器;(4)用于显示的七段数码显示电路;(5)用于以上四部分协同工作的控制器。
其中七段数码显示电路又包含译码器和显示器电路。
然后按照项目需求设计每个小的模块,经编译仿真成功之后组装成最终产品。
U4U6U2U1。
自动打铃系统实验报告

12 12目录一、 设计要求 (1)1.1项目功能概述1.2设计环境二、 总体设计要求 (1)2.1系统总体结构框图、模块划分 ........................ 1 2.2系统软件流程图 ..................................... 2 三、 详细设计 .. (2)3.1模块1 .......................................................... 2 3.1.1硬件设计1. 该模版块功能2. 芯片选择(各芯片功能、引脚等介绍) 3.该模块的硬件连接( 附上该模块硬件链接图) 3.1.2软件设计该模块所用的主要函数及其功能说明 3.2模版23.2.1硬件设计 (2)1.芯片选择(芯片介绍)2.该模块的硬件连接3.1.2软件设计该模块所用的主要函数及其功能介绍四、详细制作 (6)4.1原理图制作过程、遇到的问题及处理方法 ............... 6 4.2 PCB 图制作过程、遇到的问题及处理方法 .............. 7 4.3 PCB 板制作过程、遇到的问题及处理方法 .............. 8 4.4元器件焊接过程、遇到的问题及处理方法 4.5烧写程序的步骤 . (9)4.6整机调试过程、遇到的问题及处理方法五、小结……5、1收获125.2体会六、参考资料 (13)七、总结 (13)一、设计要求1.1项目功能概述系统正常工作时,在液晶屏的第一行用汉字显示”自动打铃系统”,第二行会显示当前时间,在随后的四行显示最近要打铃的时间,即将要打铃的时间用黑底白字显示,四行时间一页.如果该页的最后一个时间打过铃后,自动翻页,将下一页的4个打铃时间显示出来;用户可以通过按键修改当前时间或打铃时间.1.2设计环境Keil uVisio n2PADS LayoutPADS Router二、总体设计要求2.1系统总体结构框图、模块划分805RS232图11-2 MAX232串行通信电路團C3卄805RiD TiDTGNDGNDTM RxDvcc £图114 MAX232串行通信电路图CI+VccG5DCl- iriouTC2+RUN oRIOITTI IN T2our T2M -Rib R2OUT■- CS + Vccv+ GW Cl-C2+ HOLTRIIHC2-RlOb'I讥 Tim T2OUT T2QI R 和 R2OU T8052.2系统软件流程图图 发送数据程序流程图 接收数据稈序流稈图■>详细设计3.1模块13.2硬件设计3.3各单元的功能描述(1) 对单片机进行编程,使主要功能由软件控制实现,从而简化硬件电路。
自动打铃EDA设计报告

考试序号:##自动打铃系统设计说明书学生姓名:###学号:########专业班级:#######报告提交日期:湖南理工学院物电学院目录第一部分:设计题目及总体要求简介........................................ 错误!未定义书签。
1.设计题目:自动打铃系统设计。
..................................... 错误!未定义书签。
2.设计要求简介: ................................................................. 错误!未定义书签。
第二部分:设计方案说明............................................................ 错误!未定义书签。
设计方案:............................................................................. 错误!未定义书签。
第三部分:各部分功能介绍及程序(部分)............................ 错误!未定义书签。
1. 系统框图 ...................................................................... 错误!未定义书签。
2. 选择的FPGA芯片及配置 ........................................... 错误!未定义书签。
3. 各模块(元件)说明 .................................................. 错误!未定义书签。
▪各子模块说明 ................................................................ 错误!未定义书签。
校园打铃系统设计

校园打铃系统设计引言近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
单片机技术起着不可忽视的作用并且在智能控制领域有着举足轻重的地位。
本设计就是利用Atmel 公司生产的单片机AT89S52芯片和AT24C02芯片,以及利用DS1302用作时钟芯片等功能)。
在以单片机为核心的基础上加上其外围设备实现的小的系统——自动打铃系统。
所谓的单片机小系统从系统的角度来定义就是完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。
硬件设计部分分别从各个功能电路进行阐述,包括电源电路、复位电路、时钟电路、红外遥控及显示电路。
软件部分分成了四个模块:初始化模块、时间显示模块、遥控按键设定模块、以及定时打铃模块。
初始化模块主要是对定时计数器的方式及初值的设定。
时间显示模块负责正确的显示当前时间。
按键设定模块主要是对时间的校准及设定。
定时打铃模块负责到时响铃功能。
也就是说系统的功能是硬件和软件两大部分共同合作完成。
1第1章系统总体设计作息时间控制钟系统概述设计一个校园打铃系统,使用的是24小时制。
要求在掉电状态下数据不丢失,可以设置多个打铃时间点,用红外线遥控按键设置同样的打铃时间,数字键输入设置内容,不只上、下键地调时。
于用的不是单片机内部的定时器,定时功能用的是外部时钟DS1302芯片,而DS1302芯片的精度取决于32768HZ晶振的精度,32768HZ晶振的精度小于%,所以整个系统的精确度高于%。
功能特点25路掉电不丢失数据的用户定时功能。
采用首创的忽略定时新概念,可以设置定时某项为忽略值,再配合多路定时项目使定时的内容自发挥,千变万化,能够适应各种的定时要求。
单片机课程设计报告之自动打铃系统

单片机课程设计之自动打铃系统这是我们本学期的单片机课程设计题目,程序就是在昨天的数字钟的根底上增加了一些容,不想继续做了,还有一门考试要复习。
设计一台自动打铃系统一、设计任务用单片机器件为主体,设计一台自动打铃系统。
〔1〕按照设计标准,画出系统框图和系统硬件电路图。
〔2〕完成该课题的程序设计,提交程序设计框图及程序设计清单。
〔3〕提交课程设计报告二、设计要求〔一〕根本要求〔1〕根本计时和显示功能(用12小时制显示)。
包括上下午标志,时、分的数字显示,秒信号指示。
〔2〕能设置当前时间(含上、下午,时,分)〔3〕能实现根本打铃功能,规定:上午6:00起床铃:打铃5秒、停2秒、再打铃5秒。
下午10:30熄灯铃:打铃5秒、停2秒、再打铃5秒。
铃声可用小喇叭播放,但凡用到铃声功能的均按此处理〔二〕发挥局部〔1〕增加整点报时功能,整点时响铃5秒,要求有控制启动和关闭功能。
〔2〕增加调整起床铃、熄灯铃时间的功能。
〔3〕增设上午4节课的上下课打铃功能,规定如下:7.30 上课,8.20下课:8.30上课,9.20下课;9.40 上课,10.30下课;10.40上课,11.30下课;每次铃声5秒。
〔4〕特色和创新自选。
三、设计步骤〔1〕设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘,LCD或LED的显示屏;〔2〕进展软件设计,利用单片机系统时钟先设计一个高精度的部时钟系统,最小准确时间为期1秒;〔3〕在秒计数器的根底上设计一个24小时时钟,并设计假设干定时功能;〔4〕设计打铃执行机构,完成自动打铃功能。
四、课程设计说明书要求后面略......公开我的主要设计资料:主程序流程图:汇编程序清单:/***************************************************************程序名称:51单片机自动打铃系统简要说明:实现24小时制电子钟,8位数码管显示,显示时分秒显示格式:23-59-59〔小时十位如果为0那么不显示〕到预定时间启动蜂鸣器模拟打铃,蜂鸣器BEEP:P3.7 打铃方式分起床、熄灯铃和上、下课铃两种系统使用4只按键,3只按键用来调整时间,fpc连接器,防水连接器,连接器论坛,供给.ljqw./sell另一只为强制打铃按钮调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁增加键ADD_KEY:P1.1;按一次使选中位加1 减少键DEC_KEY;P1.2;按一次使选中位减1 如果长按ADD_KEY或D EC_KEY,识别后那么进展调时快进,此时停顿闪烁如果选中位是秒,那么按增加键或减少键都是将秒清零强制打铃键DALING_KEY:P1.3;用来强制打铃或强制关闭铃声P0口输出数码管段选信号,P2口输出数码管位选信号。
课程设计报告---自动打铃系统

目录一、设计任务和性能指标 (2)1.1设计任务 (2)1.2性能指标 (2)二、设计方案 (2)三、系统硬件设置 (3)3.1、单片机最小系统 (3)3.2时钟电路DS1302 (4)3.3、显示电路的设计 (5)3.4、键盘接口的设计 (5)3.5打铃电路的设计 (6)四、系统软件设计 (7)4.1程序流程图 (7)4.2主程序设计 (10)4.3显示子程序的设计 (11)五、调试及性能分析 (12)5.1调试步骤 (12)5.2性能分析 (12)六、心得体会 (12)参考文献 (13)附录1 系统硬件电路图 (14)附录2 程序清单 (15)一、设计任务和性能指标1.1设计任务用单片机器件为主体,设计一台自动打铃系统。
(一)基本要求1、基本计时和显示功能(用12小时制显示)。
包括上下午标志,时、分的数字显示,秒信号指示。
2、能设置当前时间(含上、下午,时,分)。
3、能实现基本打铃功能,规定:上午6:00起床铃:打铃5秒、停2秒、再打铃5秒。
下午10:30熄灯铃:打铃5秒、停2秒、再打铃5秒。
铃声可用小喇叭播放,凡是用到铃声功能的均按此处理。
(二)发挥部分1、增加整点报时功能,整点时响铃5秒,要求有控制启动和关闭功能。
2、增加调整起床铃、熄灯铃时间的功能。
3、增设上午4节课的上下课打铃功能,规定如下:7.30 上课,8.20下课:8.30上课,9.20下课;9.40 上课,10.30下课;10.40上课,11.30下课;每次铃声5秒。
4、特色和创新自选。
1.2性能指标1.时钟:上下午(1位)、时(2位) 、分(2位)2.校对键:确认键/设置键、右移键/灭铃键、加键、减键3.响铃:蜂鸣器二.设计方案二、设计方案按照系统设计的功能的要求,初步确定设计系统由主控模块、时钟模块、显示模块、键扫描接口电路共四个模块组成,电路系统构成框图如图1.1所示通过内部定时产生中断,从而驱动电铃打铃。
电路系统构成框图如图1.1所示。
数电课设-设计并仿真自动打铃系统

数子电子课程实验报告设计并仿真自动打铃系统目录一、设计任务和基本要求 (3)二、设计方案 (3)三、单元设计 (7)四、组装、调试、记录 (12)五、总逻辑图 (12)六、元器件清单 (14)七、改进设想 (14)电子技术课程设计正文一、课程设计任务和基本要求:1.设计任务采用中规模集成电路设计一个可以自动打铃的系统。
2. 基本要求(1)具有显示小时和分钟的时钟功能。
(2)具有自动打铃功能(在8:30、9:15、9:25、10:10、10:30、11:15、11:25、12:10等8个时刻打铃,铃响30秒)。
(3)当电路发生走时误差时,要求电路具有校时功能。
(4)具有手动设置定时的功能。
(5)结构简单。
二、设计方案:1.方案一原理框图如2.1所示:此方案的设计思路是,用移位寄存器事先储存八个时间点,每个时间点为十六位二进制代码,这八个时间点可依次滚动循环输出。
然后将输出的时间信号与时钟的小时和分钟信号用十六位比较器进行比较。
当寄存器中输出的时间与时钟显示的时间正好吻合时,比较器输出相等的信号,启动蜂鸣器和指示灯。
30秒后,由30秒的特征值和比较器相等的信号共同控制寄存器的使能端,使之滚动,输出下一个时间点。
以此循环,实现自动报时打铃的功能。
(详细原理见三、四、五、六部分)此方案可任意预置八个时间点,使用范围广。
但器件相对较多,结构复杂。
2.方案二原理框图如2.2所示:此方案的设计思路是,通过判断下一次打铃距上一次打铃的时间间隔来报时。
这八个时间点的时间间隔依次是45、10、45、20、45、10、45分钟。
用45进制、10进制、20进制计数器来控制响铃的间隔时间。
它们的输出端接入四选一的数字选择器,数字选择器输出选中的计数器的信号。
当计数器计到45分或10分或20分钟时开启响铃系统来报时。
数字选择器的控制端用四个四位寄存器控制(如图2.3),可事先预置不同的时间间隔出现的次序。
然后依次滚动输出所需的控制信号。
数字自动打铃系统(带程序版)

1.1方案一:采用时钟芯片和键盘实现功能............................3
1.2方案二:采用中断定时实现功能……………………………………………4
1.3方案比较………………………………………………………………………5
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
4.2系统实际测试……………………………………………………………………16
4.3软件调试步骤……………………………………………………………………16
4.5子程序调试步骤…………………………………………………………………16
校园智能打铃系统的设计

smg_data[3]=8'h0d;
smg_data[4]=8'h99;
smg_data[5]=8'h49;
smg_data[6]=8'h41;
smg_data[7]=8'h1f;
smg_data[8]=8'h01;
smg_data[9]=8'h09;
end
reg [15:0] count_1ms; //1ms计时 always@(posedge clk or negedge reset) begin if(!reset) count_1ms<=0; else if(is_en&&count_1ms==t1ms) count_1ms<=0; else if(is_en) count_1ms<=count_1ms+1'b1; else if(!is_en) count_1ms<=0; end
四、确定输入和输出变量
• 输入变量 clk ,reset ,is_en
输出变量 ring ,smg_out,smg_en
五、确定输入状态
• 程序开始时内部计时显示在共阳数码管上,
• 初始状态 : 8点开始计时打铃。
•
打铃下课
•
午休
•
17点20放学电源关闭
七、输入和输出变量对应部件说明
输入变量:
always@(posedge clk_qian or negedge reset)
begin
if(!reset)
qian<=0;
else
if(qian==1'b1)
begin
qian<=0; end
自动打铃系统设计

<<综合课程设计>>自动打铃系统设计报告题目:自动打铃系统专业:电子信息工程年级:学号:学生姓名:联系电话:指导老师:完成日期: 2013年12月30日自动打铃系统摘要在现如今快节奏的生活中,人们对于时间的要求越来越苛刻,很多时候需要对时间规划,然后到时间点就要有时间提醒,这就必须用到时中提醒装置,亦可称为打铃装置。
打铃装置有很多种,比如手机的打铃系统,闹钟的机械打铃系统,广播打铃系统等等,但是日常生活中见得最多的还是校园的自动打铃系统。
在学校生活中,每天上课都离不开打铃系统的使用。
打铃器可以为上下课的学生和老师们提供时间提醒,有利于师生对上课和学习的合理安排。
同事也可以作为一个提醒学生作息时间的时间表,让老师和学生都有一个规律科学的时间安排。
因此,打铃系统的核心部分也是时钟部分,为系统提供时间基准。
本设计主要是针对适用于校园打铃系统要求的,其介绍了一种基于单片机的自动打铃系统的设计方法,系统以STC89C52单片机为控制器,以DS1302时钟芯片为系统提供时间,并在1602液晶显示器上显示,通过按键可以设定定时打铃时间和打铃间隔。
系统软件设计采用C语言来完成,C语言语法简洁,使用方便,用于完成软件设计非常方便。
关键词:打铃器、STC89C52单片机、DS1302、LCD1602IABSTRACTIn today's fast-paced life, people are more and more requirements, in many cases need time to plan, and then to point in time will have time to remind, which must be used to remind device, also known as Bell equipment. Bell devices there are many, such as phone ringing system, the mechanical Bell alarm clock system, broadcast the Bell System, and so on, but in everyday life up to the school bell system automatically. In school life, are inseparable from the Bell system used in class every day. Bell can provide reminder of students and teachers to and from school, reasonable arrangements conducive to teachers and students on school and learning. Colleagues can be used as an alert student hours schedule, so that teachers and students have a timeline of the laws of science. Accordingly, Bell clock in the core part of the system, provide a time reference for the system. Designed primarily for the Bell System requirements apply to the campus, and introduces an automatic Bell system based on single-chip design methods, systems with STC89C52 single-chip controller, DS1302 provides the system time clock chip, in 1602 and displayed on the LCD by pressing the set ringing and ringing in intervals of time on a regular basis. System software design using the c language to complete, c language syntax is simple, easy to use, is very convenient for completing a software design.Key Words: t Bell, DS1302, collector, STC89C52 single-chip LCD1602II目录摘要 (I)ABSTRACT ..................................................................................................................... I I1.1设计要求 (1)1.2 系统基本方案选择和论证 (1)1.2.1 单片机芯片的选择方案和论证 (1)1.2.3 时钟芯片的选择方案和论证: (2)1.3 电路设计最终方案决定 (2)2主要元件介绍 (3)2.1 STC89C52以及最小系统介绍 (3)2.1.1 STC89C52主要功能及PDIP封装 (3)2.1.2 STC89C52引脚介绍 (3)2.1.3 STC89C52最小系统 (5)2.2 DS1302时钟芯片以及时钟集成模块介绍 (6)2.2.1 DS1302概述 (6)2.2.2 DS1302引脚介绍 (7)2.2.3 DS1302使用方法 (7)2.2.4 时钟集成模块内部原理图 (10)2. 3 1602字符液晶以及显示模块介绍 (11)2.3.1 1602液晶概述 (11)2.3.2 1602引脚介绍 (11)2.3.3 1602字符液晶使用方法 (12)2.3.4 LCD显示模块原理图 (15)3系统硬件设计 (16)3.1 电路设计框图 (16)3.2 系统硬件概述 (16)4系统的软件设计 (17)4.1程序流程框图 (17)5系统测试与总结 (18)5.1 系统测试 (18)5.2 总结 (19)参考文献 (20)附录一: (21)附录二: (22)III1设计要求与方案论证1.1设计要求1.打铃的时间可设置2.系统具有多种工作模式3.可以通过按键选择系统的工作模式4.其他扩展功能1.2 系统基本方案选择和论证1.2.1 单片机芯片的选择方案和论证方案一:采用STC89C52芯片作为硬件核心。
具有闹钟功能的二十四小时制数字钟系统设计(精品)

沈阳航空航天大学
课程设计
(说明书)
具有闹钟功能的二十四小时制数字钟系统设计
班级
学号
学生姓名
指导教师
沈阳航空航天大学
课程设计任务书
课程名称数字逻辑课程设计
课程设计题目具有闹钟功能的二十四小时制数字钟系统设计
课程设计的内容及要求:
一、设计说明与技术指标
设计一个二十四小时制数字钟系统,技术指标如下:
①该数字钟系统要求利用二十四小时制表示时间,利用数码管进行具体时间显示;
②要求有按键进行时间调节,第一个按键为调整时间键,按一次此键进入调时功能,
连按两次进入调分功能,连按三次进入调秒功能。
利用“+”功能与“-”功能按
键实现时间调节。
③要求时钟具有闹钟设定功能按键,利用“+”功能与“-”功能按键实现任意时刻
闹钟设定,当时钟到达指定时刻后,进行蜂鸣报警。
二、设计要求
1.在选择器件时,应考虑成本。
2.根据技术指标,通过分析计算确定电路和元器件参数。
3.画出电路原理图(元器件标准化,电路图规范化)。
三、实验要求
1.根据技术指标制定实验方案;验证所设计的电路,用软件仿真。
2.进行实验数据处理和分析。
四、推荐参考资料
1. 童诗白,华成英主编.模拟电子技术基础.[M]北京:高等教育出版社,2006年
五、按照要求撰写课程设计报告
成绩评定表:
指导教师签字:
2015 年7 月19 日。
单片机课程设计自动打铃电路-任务书

课程设计任务书2013—2014学年第二学期专业:电子信息工程学号:姓名:课程设计名称:单片机原理及应用课程设计设计题目:自动打铃电路设计完成期限:自2014 年 5 月19 日至2014 年 6 月 1 日共 2 周一、设计依据提示作息时间的打铃器在各学校、企业等单位经常被使用,其中智能程控打铃器应运最广泛。
智能程控打铃器不但解除了作息管理的麻烦,它还可以控制电器设备自动的周期性工作。
因此设计作息时间自动打铃电路对于使用和维护这类设备有着触类旁通的现实意义。
熟悉所学的单片机知识设计出理论框图。
设计出符合要求的整体硬件电路图,包括时间显示电路、响铃电路、校时电路等。
编写软件程序,使电路具备时间显示,按预定时间响铃及校正时、分、秒的功能。
该设计应根据预定的响铃时间不同给出相应不同的电路设计和软件程序,对器件选择、线路连接要有较深入地分析探讨,对软件设计要求应有一定的软件流程和程序;同时写出合格的课程设计说明书。
二、要求及主要内容1.按照设计要求,画出系统框图和系统硬件电路图。
2. 有基本计时和显示功能(用12小时制显示)。
包括上下午标志,时、分的数字显示,秒信号指示。
3.能设置当前时间,且具有校时功能,能实现基本打铃功能,铃声可用小喇叭播放。
4. 编写软件程序。
要求最终正确无误地完成全部软件设计,并具有一定先进性,给出进一步提高性能的深入分析,对电路设计也应提出建设性意见并写出合格的课程设计说明书,圆满完成各项任务。
三、途径和方法1.硬件电路及软件程序设计设计一个能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘,LCD或LED的显示屏;先画流程图再根据流程图写程序,利用单片机系统时钟先设计一个高精度的内部时钟系统,最小精确时间为期1秒;在秒计数器的基础上设计一个24小时时钟,并设计若干定时功能;设计打铃执行机构,完成自动打铃功能。
2.选芯片, 元件按设计连线3.调试(1)输入程序;(2)编译、连接,用连续方式运行程序;四、时间安排1.课题讲解:2小时。
校园打铃系统的设计

嵌入式系统综合设计实训报告——校园打铃系统的设计校园打铃系统的设计一、实训目的1、设计一个校园打铃系统,使用的是24小时计时制,能够设置多个打铃时间,同时要求能够在系统掉电时,时间能够继续,打铃时间的数据能够保持。
2、掌握LCD1602、DS1302、DS18b20、AT24C02等相关知识3、进一步了解时钟电路、复位电路、工作电源电路、程序存储器选择电路二、实训内容1、时钟功能:能显示年、月、日、星期、时、分、秒、温度等信息2、调整功能:能校正年、月、日、时、分、秒、星期等信息3、打铃功能:按指定的时间发出声音,并且闪光4、设置的作息时间数据在单片机掉电后不会丢失 三、实训整体框图中央处理单元STC89C52时钟模块DS1302存储模块AT24C02液晶显示模块LCD1602打铃模块蜂鸣器、LED 指示灯输入模块4X4矩阵键盘时钟电路、复位电路、工作电源电路、程序存储器选择电路温度采集模块DS18B20图1 系统总体设计图四、各功能模块介绍 1、最小系统单片机最小系统包括单片机(STC89C52)、时钟电路、复位电路、工作电源电路、程序存储器选择电路五个部分。
2、时钟模块DS1302DS1302是美国DALLAS 公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM ,采用SPI 三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM 数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V 。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。
3、存储模块AT24C02AT24C02提供2k 位的串行电可擦写可编程只读存储器(EEPROM),组织形式为256字×8位字长,采用IIC 总线接口。
4、温度采集模块DS18B20DS18B20数字温度计是DALLAS 公司生产的1-Wire ,即单总线器件,具有线路简单,体积小的特点。
24h自动打铃系统设计

24h自动打铃系统设计单片机课程设计常熟理工学院电气与自动化工程学院《单片机技术》课程设计题目:自动打铃系统设计姓名:学号:班级:指导教师:起止日期:单片机课程设计单片机课程设计课程设计答辩记录系专业班级答辩人课程设计题目说明:主要记录答辩时所提的问题及答辩人对所提问题的回答单片机课程设计单片机课程设计课程设计(论文)题目名称自动打铃系统2013年4月11 日第一章目录第一章.目录 (1)第二章.课程设计任务书 (2)第三章.总体设计方案 (3)第四章.操作及使用说明 (6)第五章.硬件原理图 (8)第六章.程序流程 (9)第七章.调试.运行及其结果 (10)第八章.收获及体会 (10)第九章.参考文献 (11)第十章.代码及元件清单 (12)第二章.《单片机技术》课程设计任务书题目:自动打铃系统设计一、课程设计任务本课题要求应用以51单片机为核心设计一自动打铃系统,能完成基本计时和显示功能,用LCD 显示时间、铃声可用蜂鸣器发出。
二、课程设计目的通过本次课程设计使学生掌握:1)掌握以单片机为核心的控制系统的分析和设计的基本方法;2)控制程序的设计及实现方法;3)提高学生对单片机实时控制系统的设计和调试能力。
三、课程设计要求基本计时和显示功能(用24小时制显示)。
包括上下午标志,时、分的数字显示,秒信号指示,并能设置当前时间(含上、下午,时,分)。
能实现基本打铃功能,规定:上午8:00上课铃:打铃10秒、停2秒、再打铃10秒。
下午5:30下课铃:打铃10秒、停2秒、再打铃10秒。
四、课程设计内容1、人机对话“界面”的设计;2、内存端口及外设的设置;3、硬件电路原理图、软件清单。
第三章.总体设计方案设计方案选择方案一:数字电路设计的自动打铃系统利用函数信号发生器来进行脉冲信号输出,利用74160N来设置十进制和六进制的进位输出。
利用数码显示器来显示时间,利用或门、与门、非门、与非门、等电路元件进行组合实现打铃的控制。
自动控制打铃系统设计

教学系审核意见:主任签字:年月日简易自动打铃系统设计设计要求1.基本计时和显示功能(12小时制)。
2.可设置当前时间(包括上下午标志,时、分的数字显示)。
3.能在上午7:30(早自习)和下午10:30(晚熄灯)定点打铃,且每次打铃均为响铃5s,停2s,再响5s。
1.方案论证与对比1.1方案一采用时钟芯片和键盘实现功能方案一原理框图如图1-1所示:DS1302芯片蜂鸣器89C52单片机8255芯片数码管键盘图 1-1 采用时钟芯片和键盘实现功能该系统用DS1302对时、分、秒计时和设置打铃时间,采用三线串行数据传输接口与STC89C52进行同步通信,用矩阵键盘来设置时间值,并通过8255芯片读入设置值,最后通过89C52单片机芯片综合控制[1],把当前时间送到数码管显示,到点把信号送入蜂鸣器,实现打铃。
1.2方案二:采用中断定时实现功能方案二原理框图如图1-2所示:图 1-2 采用中断定时实现功能该系统以STC89C52单片机为核心控制部件。
用8255做I/O 拓展芯片,数码管接8255的PA 、PB 引脚,用动态扫描的方式显示当前时间。
蜂鸣器与单片机的P2.0口相连,当打铃时间到时,由STC89C52发出打铃指令。
以外部INT0和INT1中断按钮实现调时功能。
1.3方案比较本设计要求能实现基本计时和打铃功能。
计时和打铃时间设计,方案一中用到了DS1302时钟芯片计时和打铃时间设置;方案二中采用定时器中断来计时并结合软件设置打铃时间。
上述两种方案中:方案一的外围硬件电路设计复杂,而且时钟芯片没有得到充分利用,而方案二的软件计时具有硬件开销小,成本低,外围电路设计简单等优点。
蜂鸣器中 断 数码管8255芯片89C52调时设计,方案一中用矩阵键盘实现调时功能;方案二中采用外部中断0和1的两个按钮来实现调时。
上述两种方案中:方案一的软件设计比方案二的难度系数大,使程序易读性不强。
综合对计时的精密程度要求不高的本系统,本设计采用方案一来实现功能。
自动打铃控制器的PLC控制系统设计

自动打铃控制器的P L C 控制系统设计-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN设计任务书一.课题名称:自动打铃控制器的设计二.概述目前,学校打铃系统的控制均有专用的控制器,这种控制器由单片机或数字系统组成。
当然,用PLC控制也完全可以达到准确定时打铃的目的。
图1所示为PLC控制自动打铃系统组成框图。
图1 PLC控制自动打铃系统组成框图根据学校作息时间表,该控制系统的要求具体如下:(1)上课铃与下课铃要能分开(铃声响的频率不一样),起床、晚自习等时间的铃声为连续打铃,每次打铃的时间为15s。
(2)要具备时间调整功能。
(3)星期六、星期日不打铃,星期一至星期五按表1所示作息时间打铃。
(4)具有时间显示功能,要有秒、分、时和星期的显示。
表1 作息时间表1.根据题意,设计该PLC控制系统。
2.PLC选择及I/O及其它PLC元器件分配。
3.选择电器元件,编制元件目录表。
4.绘制梯形图。
5.用计算机绘制主电路图、PLC控制电路图、电器元件布置图。
6.编写设计说明书及设计小结。
四.设计方案提示1.电子钟程序电子钟程序分别设有秒、分显示(00~59),时显示(00~23)和星期显示(1~6、日)。
其中电子钟计数功能可采用移位指令实现,0~9显示译码电路可用组合逻辑功能完成。
“00~59”六十进制秒、分计数的个位向十位进位的处理方法是:当个位计数到9,第10个脉冲到来时,个位数应该显示0,而十位数应显示1,这是两位数的显示应为10。
对于时显示00~23及星期一至星期日的进位方法处理类似。
有区别的是星期日显示可用数字“”表示,即星期日显示不是显示数字“7”,而是显示数字“8”。
2.打铃程序要使电子钟在显示时间7:40时打铃,可以将7:40的特征码“1”找出来,再驱动一“定时器”电路,使定时器定时15s,打铃也将响应15s。
其余上课的特殊码处理方法相同。
而当下课时,将产生特征码“2”,驱动下课打铃“定时器”电路,打铃15s后停止,但此时打铃的铃声应和特征码“1”时(即上课)不同。
毕业设计——基于PLC的自动打铃系统的设计

(0南刑11稿紫瑟寿字院毕业论文题目:基于PLC的自动打铃系统的设计作者:学号:系:____________________ 自动控制系______________________专业:________________ 电气自动化技术 ____________________班级:___________________________________________________2013年5月目录第一章绪论 (1)1.11.2 课题的目的和意义 (1)第二章方案论证 (2)2.1 继电器控制 (2)2.2 单片机控制 (2)2.3 plc 控制 (2)第三章可编程控制器介绍 (4)3.1 Plc 基本构成为: (4)3.2 工作原理 (5)3.3 功能特点 (5)3.4 发展历史 (6)3.5 系统集成 (7)3.6 选型规贝U (8)3.7 选择型号 (12)第四章系统整体设计 (14)4.1 系统组成 (14)4.2 显示接口电路 (14)4.3 7448芯片介绍 (16)4.4 电铃电路 (18)4.5 硬件设计 (18)第五章软件设计与调试 (21)5.1 系统流程图 (21)5.2 计时及时间调节程序 (22)5.3 显小程序 (23)5.4 作息时间表程序 (25)5.5 控制程序 (27)总程序 (29)34结论致谢 (35)参考文献 (36)第一章绪论1.1 背景学校,办公室,工厂,车站,码头,医院,电信,和其他企业和机构通常以信号铃作为时间信号,铃声已经成为人们生活的一部分。
铃声作为信号,最原始的方式是手动控制。
后来出现了电铃但没有实现自动控制。
随着计算机技术,自动控制技术和通信技术的发展,出现了新兴的技术-电气控制与可编程控制技术。
由于这些新兴的技术的发展,人们用不同的方法来实现了自动化打铃。
自动打铃,包括使用单芯片控制,PLC控制,计算机控制,继电器控制几种控制方式。
1.2 课题的目的和意义本次设计采用可编程控制器方式来控制,可编程控制器英文PLC它是通过一个可编程的存储器,用来在其内部存储执行逻辑运算,顺序控制,定时,计数和算术运算等操作的指令,并通过数字或模拟输入和输出控制各类机械或生产过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常熟理工学院电气与自动化工程学院《单片机技术》课程设计题目:自动打铃系统设计姓名:学号:班级:指导教师:起止日期:课程设计答辩记录系专业班级答辩人课程设计题目记录内容记录人___________说明:主要记录答辩时所提的问题及答辩人对所提问题的回答课程设计(论文)题目名称自动打铃系统2013年4月11 日第一章目录第一章.目录 (1)第二章.课程设计任务书 (2)第三章.总体设计方案 (3)第四章.操作及使用说明 (6)第五章.硬件原理图 (8)第六章.程序流程 (9)第七章.调试.运行及其结果 (10)第八章.收获及体会 (10)第九章.参考文献 (11)第十章.代码及元件清单 (12)第二章.《单片机技术》课程设计任务书题目:自动打铃系统设计一、课程设计任务本课题要求应用以51单片机为核心设计一自动打铃系统,能完成基本计时和显示功能,用LCD显示时间、铃声可用蜂鸣器发出。
二、课程设计目的通过本次课程设计使学生掌握:1)掌握以单片机为核心的控制系统的分析和设计的基本方法;2)控制程序的设计及实现方法;3)提高学生对单片机实时控制系统的设计和调试能力。
三、课程设计要求基本计时和显示功能(用24小时制显示)。
包括上下午标志,时、分的数字显示,秒信号指示,并能设置当前时间(含上、下午,时,分)。
能实现基本打铃功能,规定:上午8:00上课铃:打铃10秒、停2秒、再打铃10秒。
下午5:30下课铃:打铃10秒、停2秒、再打铃10秒。
四、课程设计内容1、人机对话“界面”的设计;2、内存端口及外设的设置;3、硬件电路原理图、软件清单。
第三章.总体设计方案设计方案选择方案一:数字电路设计的自动打铃系统利用函数信号发生器来进行脉冲信号输出,利用74160N来设置十进制和六进制的进位输出。
利用数码显示器来显示时间,利用或门、与门、非门、与非门、等电路元件进行组合实现打铃的控制。
方案二:基于单片机的自动打铃系统设计单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。
建立完一个实时时钟后接下来进行定时处理和打铃输出,当主程序检测到有分进位标志时,便开始比较当前时间与信息时间表上的作息时间是否相同,相同者,则进行报时处理并控制打铃,不相同则返回主程序。
方案确定方案一的设计只能事先设定打铃时间不能完全自动打铃,且在修改打铃时间上存在一定的困难。
而方案二中的设计能完全实现自动化,诠释了我们这次毕业设计的主题。
并在修改打铃时间上有了很大的方便,只需修改一部分程序便能实现不同的需要。
因此我选择方案二进行设计。
基本方案1.设计课题简要概述自动打铃装置用于工厂、学校等地的时间控制,本设计是按照学校作息时问设定的,模拟了电了钟显示时、分、秒。
还根据学校的作息时间按时打铃,本系统有4 个按钮,分别用来调时、调分、秒和强制打铃及强制关铃,以保证始终与标准时间相吻合。
首先设计出本系统的硬件基本框图,根据框图设计电气原理图,简要概述基本原理,按照设计技术参数设计出各部分程序。
.2..系统软硬件划分由于需要最小系统设计,因此,极大地介于系统的硬件成本,所有能用软件实现的功能都用软件完成,如按键的去抖,采用延时,显示部分用动态显示等,这样硬件部分的设计可以采用单片机最小系统,所谓最小系统时仅有程序存储器和时钟及复位电路的单片机系统。
3..单片机选型根据课题的具体内容,任务要求,计时、校时、定时、键盘显示等功能,经多方面考虑,所选系统选项用.与MSC-51单片机完全兼容的A T89C51 低功耗单片机。
AT89C51单片机性能介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
引脚说明:VCC:供电电压。
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口同时为闪烁编程和编程校验接收一些控制信号。
89C51各部分引脚图如下:引脚图第四章.操作及使用说明按钮控制模块三个按钮的一端分别接地,另一端接单片机一个端口的三个引脚,当某一个按钮按下的时候,其对应的引脚就由高电平变成低电平,然后通过单片机扫描读取引脚的电平来判断按钮是否按下。
采用动态扫描方式,通过一组单片机端口驱动并联在一起的LCD发光管的一端(共阴或共阳端),LCD发光管的另一脚接通用I/O口,控制其亮灭。
该方法能驱动较多的LCD,控制方式较灵活,而且节省单片机的资源按钮控制蜂鸣器蜂鸣器驱动模块采用无源式蜂鸣器,蜂鸣器根据结构不同分为压电式蜂鸣器和电磁式蜂鸣器;而两种蜂鸣器又分为有源蜂鸣器和无源蜂鸣器,本设计只是通过简单延时达到驱动蜂鸣器的效果。
按钮S1:设置时间及日期按钮。
按钮S2:增加。
按钮S3:减少。
使用过程中注意按钮的使用,及反应时间。
显示器模块LCD1062液晶显示是通过液晶显示模块实现的。
液晶显示模块(LCD Module)是一种将液晶显示器件,连接件,集成电路,PCB板,背光源,结构件装配在一起的组件。
第五章.硬件原理图第六章. 程序流程及代码清单开始初始化是否正常走时?打铃时间比较打铃判断,执行显示按键检测有键按下吗?获取键值按键处理YNYN第七章.调试.运行及其结果实现计时和显示功能(24小时制),可设置当前时间(包括上下午标志,时、分的数字显示),能在上午8:00和下午5:30定点打铃,且每次打铃均为响铃10s,停2s,再响10s。
系统误差及性能分析经测试该简易自动打铃系统在一天内会出现时间误差,该误差主要是由于晶振自身的误差所造成的。
另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累积误差很大。
第八章.收获体会通过这次课程设计,我得到了很多收获和体会,懂得了团队合作的重要性和必要性,以及工程设计的大体过程。
第一,巩固和加深了对单片机基本知识和理解,提高了综合运用所学知识的能力。
第二,增强了根据课程需要选学参考资料,查阅手册,图表和文献资料的自学能力。
通过独立思考,深入研究有关问题,学会自己分析解决问题的方法。
第三,通过实际方案的分析比较,设计计算,安装调试等环节,初步掌握了简单使用电路的分析方法和工程设计方法。
第四,在这次课程设计过程中,光有理论知识是不够的,还必须懂一些实践中的知识。
所以在课程设计的实践中,我们应将实验课与课堂教学结合起来,锻炼自己的理论联系实际的能力与实际动手能力。
第五,掌握了比较常用的仪器的使用方法,提高了动手能力。
第六,培养了严谨的工作作风和科学态度。
总之这次课程设计,培养了我们综合应用单片机原理及应用的理论知识和理论联系实际的能力;在设计的过程中还培养了我们的团队精神,同学共同协作,一齐商量讨论,解决了许多问题。
这一切都令我们受益匪浅,在今后的学习工作中我们会一如既往,不断努力。
经过近几天的课程设计,我充分认识到理论知识和实践结合的重要性。
经过半年多的理论基础的学习,我成功的将理论运用如实践,并成功的运用单片机,以前只是在路上看见那些交通灯,但是并没有认真的研究交通灯的内部控制原理,还有单片机上那些芯片的功能和引脚图平常也不是常接触,通过这次系统设计让我清楚如果想做一个产品该怎样思考。
此次课程设计持续的时间较长,对我的耐心是一种极大的考验,同时学校的支持力度也应该加强,而不应该对学生的提问表示不解,对有些程序的编写要及时的给予指导,当然学生也要积极的配合老师的工作,努力将自己所学的知识尽可能的运用到对方案的设计中去。
感谢王小英老师的细心指导、和伙伴之间的配合。
第九章.参考文献[1] 张鑫.单片机原理及应用[M].北京:电子工业出版社,2005.8.[2] 康光华.电子技术基础.模拟部分[M].北京:高等教育出版社,2006.1.[3] 康光华.电子技术基础.数字部分[M].北京:高等教育出版社,2006.1.[4] 祁伟, 杨亭. 单片机C51程序设计教程与实验[M].北京:北京航空航天大学出版社,2006.[5] 楼然苗.李光飞.单片机课程设计指导[M].北京:北京航空航天大学出版社,2007.4[6] 单片机学习网第十章.代码及元件清单代码:#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define datasend P0sbit lcden=P3^4; //LCD使能端sbit lcdrs=P3^5; //LCD 数据/指令(H/L)选择端sbit s1=P1^0; //定义功能按键sbit s2=P1^1; //定义时分秒+1 按键sbit s3=P1^2; //定义时分秒-1 按键sbit knock=P2^0;uchar mytable0[]=" Hello ";uchar mytable1[]="Good moring";uchar code line0[]=" 2013-04-10 "; //初始化显示uchar code line1[]=" AM00:00:00 ";uchar code month0[]={31,28,31,30,31,30,31,31,30,31,30,31}; //平年月uchar code month1[]={31,29,31,30,31,30,31,31,30,31,30,31}; //闰年月uchar count,hour,minute,second,year=1,month=1,date=1;uchar s1num; //s1num:定义功能键按下次数变量void delay_ms(int ms){int i,j;for(i=ms;i>0;i--)for(j=0;j<110;j++);}void delay(unsigned int z) //延时子函数z*1ms{unsigned int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void write_com(unsigned char c) //写命令子函数{lcdrs=0; //低电平选择为写指令lcden=0;datasend=c; //把指令写入P1口delay(5); //参考时序图lcden=1; //开使能delay(5); //读取指令lcden=0; //关闭使能}void write_data(unsigned char d) //写数据子函数{lcdrs=1; //高电平选择为写数据datasend=d; //把数据写入P0口delay(5); //参考时序图lcden=1; //开使能delay(5); //读取数据lcden=0; //关闭使能}void write_hms(uchar add,uchar dat) //时分秒写函数add:输入位置设置变量dat:输入时分秒数据{uchar sw,gw; //定义十位,个位变量sw=dat/10;gw=dat%10;write_com(0x80+0x40+add); //从第二行(add)位开始写数据write_data(0x30+sw); //写入十位write_data(0x30+gw); //写入个位}void write_ymd(uchar add,uchar dat) //年月日写函数add:输入位置设置变量dat:输入时分秒数据{uchar sw,gw; //定义十位,个位变量sw=dat/10;gw=dat%10;write_com(0x80+add); //从第一行(add)位开始写数据write_data(0x30+sw); //写入十位write_data(0x30+gw); //写入个位}void t0() interrupt 1 //定时器0中断子程序{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;}void gethms() //时分秒处理子程序{int i;second++;if((( hour==8)&&(minute==0))||((hour==17)&&(minute==30))){if(((second>=0)&&(second<=10)||(second>=12)&&(second<=22))){for(i=0;i<50;i++){P2=~P2;delay_ms(1);}}}if(second==60){second=0;minute++;if(minute==60){minute=0;hour++;if(hour==24){hour=0;date++;}write_hms(2,hour); //时输出显示}write_hms(5,minute); //分输出显示}write_hms(8,second); //秒输出显示}void getymd() //年月日处理子程序{if(year%4==0){if(date==month1[month-1]+1){date=1;month++;if(month==13){month=1;year++;if(year==100){year=1;}write_ymd(4,year);}write_ymd(7,month);}write_ymd(10,date);}else{if(date==month0[month-1]+1){date=1;month++;if(month==13){month=1;year++;if(year==100){year=1;}write_ymd(4,year);}write_ymd(7,month);}write_ymd(10,date);}}void keyscan() //按键扫描子程序{if(s1==0) //功能键S1 功能设置{delay(5);if(s1==0) //功能键按下{while(s1==0); //松手检测s1num++; //功能键按下计数TR0=0; //T0定时停止,进入时间调整switch(s1num){case 1: write_com(0x80+0x40+0x09); break; //光标闪烁位定为秒个位case 2: write_com(0x80+0x40+0x06); break; //光标闪烁位定为分个位case 3: write_com(0x80+0x40+0x03); break; //光标闪烁位定为时个位case 4: write_com(0x80+0x0b); break; //光标闪烁位定为日个位case 5: write_com(0x80+0x08); break; //光标闪烁位定为月个位case 6: write_com(0x80+0x05);break; //光标闪烁位定为年个位}write_com(0x0f); //光标闪烁if(s1num==7){s1num=0; //按键计数复位write_com(0x0c); //光标停止闪烁TR0=1; //重新启动定时器}}}if(s2==0) //S2键时分秒+1 模块{delay(5);if(s2==0){while(s2==0);switch(s1num){case 1: second++; //秒+if(second==60) second=0; //复位write_hms(8,second); //秒输出显示write_com(0x80+0x40+0x09); //光标闪烁位定为秒个位break;case 2: minute++;if(minute==60) minute=0; //复位write_hms(5,minute); //分输出显示write_com(0x80+0x40+0x06); //光标闪烁位定为分个位break;case 3: hour++;if(hour==24) hour=0; //复位write_hms(2,hour); //时输出显示write_com(0x80+0x40+0x03); //光标闪烁位定为时个位break;case 4: date++; //日+if(year%4==0) //平闰年判断{if(date==month1[month-1]+1){date=1;}}else{if(date==month0[month-1]+1){date=1;}}write_ymd(10,date); //日输出显示write_com(0x80+0x0b); //光标闪烁位定为日个位break;case 5: month++; //月+if(month==13) month=1;if(year%4==0) //判断日和月的配对关系{if(date>month1[month-1]) date=month1[month-1];}else{if(date>month0[month-1]) date=month0[month-1];}write_ymd(10,date); //日输出显示write_ymd(7,month); //月输出显示write_com(0x80+0x08); //光标闪烁位定为月个位break;case 6: year++; //年+if(year==100) year=1; //复位write_ymd(4,year); //年输出显示write_com(0x80+0x05); //光标闪烁位定为年个位break;}}}if(s3==0) //时分秒-1 模块{delay(5);if(s3==0){while(s3==0);switch(s1num){case 1: second--; //秒-if(second==255) second=59; //复位write_hms(8,second); //秒输出显示write_com(0x80+0x40+0x09); //光标闪烁位定为秒个位break;case 2: minute--;if(minute==255) minute=59; //复位write_hms(5,minute); //分输出显示write_com(0x80+0x40+0x06); //光标闪烁位定为分个位break;case 3: hour--;if(hour==255) hour=23; //复位write_hms(2,hour); //时输出显示write_com(0x80+0x40+0x03); //光标闪烁位定为时个位break;case 4: date--; //日-if(year%4==0){if(date==0){date=month1[month-1];}}else{if(date==0){date=month0[month-1];}}write_ymd(10,date); //日输出显示write_com(0x80+0x0b); //光标闪烁位定为日个位break;case 5: month--; //月-if(month==0) month=12;if(year%4==0) //判断日和月的配对关系{if(date>month1[month-1]) date=month1[month-1];}else{if(date>month0[month-1]) date=month0[month-1];}write_ymd(10,date); //日输出显示write_ymd(7,month); //月输出显示write_com(0x80+0x08); //光标闪烁位定为月个位break;case 6: year--; //年-if(year==0) year=99; //复位write_ymd(4,year); //年输出显示write_com(0x80+0x05); //光标闪烁位定为年个位break;}}}void initialize() //LCD初始化函数{uchar num;lcden=0;write_com(0x38); //设置16x2显示,5x7点阵显示,8位数据接口write_com(0x0c); //00001DCB,D(开关显示),C(是否显示光标),B(光标闪烁,光标不显示) write_com(0x06); //000001N0,N(地址指针+-1)write_com(0x01); //清屏指令每次显示下一屏内容时,必须清屏write_com(0x80+0x10); //第一行,前头空5格显示for(num=0;num<11;num++) //显示6个字符{write_data(mytable0[num]);delay(10);}write_com(0x80+0x50); //第二行,从第一格开始显示for(num=0;num<16;num++) //显示16个字符{write_data(mytable1[num]);delay(10);}for(num=0;num<16;num++){write_com(0x1c); //0001(S/C)(R/L)**; S/C:高电平移动字符,低电平移动光标;R/L:高电平左移,低电平右移delay(300);}delay(1000);write_com(0x01); //清屏指令每次显示下一屏内容时,必须清屏write_com(0x80); //第一行,顶格显示for(num=0;num<12;num++) //初始化第一行显示2009-01-01{write_data(line0[num]);delay(10);}write_com(0x80+0x40); //第二行,顶格显示for(num=0;num<10;num++) //初始化第二行显示00:00:00{write_data(line1[num]);delay(10);}TMOD=0x01; //定时器0中断初值设置TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void main(){initialize(); //初始化while(1){keyscan(); //按键扫描if(count==20) //定时1s 运行模块{count=0;gethms(); //时分秒数据处理getymd(); //年月日数据处理}}}元件清单:类型规格数量备注芯片AT89C51 1片蜂鸣器无源1个LCD显示器LM160L 1个按键开关3个电源5V 2个排阻1K 1个。