电子时钟万年历设计
电子万年历系统设计方案
据指针12SO 字节SRAM~1L8 16M2>64k宇竹闪存2k・sic字节ISP引导码P08051 徴处理器四个&隹并行瑞口P1/ETROM A/DD白怡flash石加价P2 nP40—P43四个附电子万年历系统设计方案1.1 STC89C52 简介STC89C52完全兼容MCS-51还有新的功能,比如新增两级中断优先级,多一个外中断,置EEPRO,M512B存等。
还支持ISP下载,不用编程器,只要一个MAX23和一些廉价的元件就能写程序,可擦写10万次。
比51起最大的优点能支持在线下载,在线烧写程序,而不必专门买昂贵的编程器,只需要ISP下载线就可以了。
1.2 性能参数STC单片机比51单片机性能有以下优越性:7图(1)高抗静电(ESD), 6000伏静电测试,直接打在芯片管脚上,安然无恙T2/P1. 0T2EX/PL 1P1.2PL 3PL. 4P1. 5Pt 6Pl. 7RsrRXLVP3 0TXD/P3, 1 INTO/F3. 2 而1 /P3, 3T0/P3. 4I1./P5. 5WP3. 6R^/PS. 7XTAL2XT Allvss 140239338437536635—34S339 -3210 p3111 O301122913281142715261625117241S23192212021VCCPO.0 ADO1 PO.1/ADL JPO. 2PO. 3 鱼D3FO. 4. AD I7■■■■I P2.4 A12 _] P2 3,A111 P2.2 1:J二I P2, 1/-A9 二IP2. 0 AS⑵超强抗干扰,轻松过2KV/4KV快速脉冲干扰(EFT)。
⑶超强加密,性能良好。
⑷STC 5V单片机,宽电压,5V - 3.8V给复位信号,正常工作。
(5) STC单片机,Power直接在用户系统上用ISP在线下载方式,将用户程序⑹下载进STC单片机Down掉电时功耗<0.1uA(C版本)。
单片机万年历电子钟设计报告含电路图和源程序
万年历设计报告学院:武夷学院班级:09电信1班组员:林巧文一、设计要求与方案论证21.1 设计要求:21.1.1根本要求21.1.2发挥局部21.2 系统根本方案选择和论证21.2.1单片机芯片的选择方案和论证:21.2.2 显示模块选择方案和论证:21.2.3时钟芯片的选择方案和论证:31.3 电路设计最终方案决定3二、理论分析与计算32.1,秒数的产生由定时器T0产生:3三.系统的硬件设计与实现43.1 电路设计框图:43.2 系统硬件概述:43.3 主要单元电路的设计53.3.1单片机主控制模块的设计53.3.2显示模块的设计53.3.3闹钟模块的设计73.3.4电源稳压模块7四、系统的软件设计74.1程序流程框图74.2闹钟模块流程图:74.3按键调整模块流程图:7五、测试方案与测试结果分析75.1 测试仪器 (7)5.2软件测试平台 Keil C5185.3 模块测试85.3.1显示模块测试85.4测试结果分析与结论85.4.1测试结果分析85.4.2 测试结论 (8)六、作品总结9参考文献9附录一:系统电路图9附录三:系统C程序10一、设计要求与方案论证1.1 设计要求:根本要求〔1〕准确显示:时、分、秒〔24小时制〕〔2〕显示星期〔3〕显示公历〔4〕时间、日期、星期可调节〔5〕断电记忆功能发挥局部〔1〕闹钟功能〔2〕显示阴历〔3〕显示24节气〔4〕其他1.2 系统根本方案选择和论证单片机芯片的选择方案和论证:方案一:采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进展调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的屡次拔插会对芯片造成一定的损坏。
方案二:采用AT89S52,片内ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进展调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片屡次拔插,所以不会对芯片造成损坏。
电子万年历的设计
三、硬件设计
LED数码管动态 数码管动态 扫描显示模块 AT89S52 主控制 模块 温度采集模块 键盘模块
DS1302时钟模块 时钟模块
主控制系统图
键盘模块
日期和时间的修改由3 个按键构成。 键1为向右移; 键2为加1; 键3为减1。
DS1302的引脚图
返回
ds1302内部结构
温度采集模块
谢谢大家 欣赏
数字式温度传感器DS18B20, 它是数字式温度传感器, 具有测量精度高,电路连 接简单特点,此类传感器 仅需要一条数据线进行数 据传输,使用P0.7与 DS18B20的I/O口连接加一 个上拉电阻,Vcc接电源 ,Vss接地
I/O
vss
vcc
返回
LED动态扫描显示模块 动态扫描显示模块
系统电路图
一.设计要求
具有年、 具有年、月、日、星期、时、分、秒等功 星期、 能; 时间与阴、阳历能够自动关联; 时间与阴、阳历能够自动关联; 具备年、 星期、 具备年、月、日、星期、时、分、秒校准 功能; 功能; 具有温度计功能; 具有温度计功能;
二、基本方案
采用AT89S52作为主控制系统 作为主控制系统 采用 采用DS1302提供时钟 提供时钟 采用 采用数字式温度传感器DS18B20 采用数字式温度传感器 采用LED数码管动态扫描作为显示 数码管动态扫描作为显示 采用
1.
六、总结
通过此次毕业设计, 通过此次毕业设计,我 不仅把知识融会贯通, 不仅把知识融会贯通,而且 丰富了大脑, 丰富了大脑,同时在查找资 料的过程中也了解了许多课 外知识,开拓了视野, 外知识,开拓了视野,认识 了将来电子的发展方向, 了将来电子的发展方向,使 自己在专业知识方面和动手 能力方面有了质的飞跃。 能力方面有了质的飞跃。
万年历电子钟设计论文
目录摘要万年历电子钟是一种非常广泛的日常计时工具,在现代社会生活中越来越流行。
它可以对年、月、日、周、时、分、秒进行计时,还具有闰年补偿等多种功能。
万年历电子钟设计是基于单片机进行的,可以显示年、月、日、时、分、秒、周及温度信息,具有可调整日期和时间功能。
设计包含STC89C52单片机模块、LED数码管模块、键盘模块、DS1302时钟模块、闹钟控制模块。
STC89C52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。
LED数码管动态扫描,对于显示数字最合适,价格适中,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
DS1302的使用寿命长,误差小。
对于万年历电子钟采用直观的数字显示,可以同时显示年、月、日,周日,时、分、秒等信息,还具有时间校准,闹钟,闹钟状态校准等功能。
关键词:STC89C52,DS1302,74HC164,LED数码管一.设计要求与方案论证1.1 设计要求1.1.1基本要求(1)具有年、月、日、星期、时、分、秒等功能;(2)时间与阴、阳历能够自动关联;(3)具备年、月、日、星期、时、分、秒校准功能;2. 发挥部分:(1)增加闹钟二.电子万年历硬件设计与实现2.1 电子万年历系统设计2.1.1系统设计框图2.1.2 系统硬件概述本电路是由STC89C52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;本源程序采用DS1302做专用的走时,停电后也可以正常走时90天以上;本源程序充分利用了STC89C51的新功能,设定的定时控制数据可以停电10年不丢失;本程序设计了误差自动校正,如果因为晶振的误差导致一天走时快1秒或者慢1秒的话,本程序每天都会在深夜自动校正后再在正确时间基础上计时;本程序还设计了快速走时摸拟运行状态(是正常走时的100倍以上);本程序还有6位数的阳历年月日显示,既可以当日历还可以当电子钟,也有6位数字显示时间。
2.2系统硬件各模块作用2.2.1单片机主控制模块功能特性描述STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。
万年历电子钟设计论文
一、引言随着科技的不断进步,人们对电子产品的需求也愈发增加。
电子钟作为一种必需品,能够准确地显示时间和日期,被广泛应用于家庭、办公室、学校等场所。
然而,传统的电子钟只能显示当前的日期和时间,功能较为简单。
为了满足人们的需求,设计一种万年历电子钟是十分必要的。
二、设计方法1.硬件设计(1)主控芯片选择:根据万年历电子钟的功能需求,选择一款性能强大的主控芯片,例如ARM Cortex-M系列的芯片,具备强大的计算和控制能力。
(2)显示屏选择:选用高分辨率的液晶显示屏,能够清晰地显示日期和时间。
考虑到用户操作的便捷性,可以选择带有背光灯的显示屏。
(3)电源设计:采用直流电源供电,可以选择使用电池或者接入市电。
对于使用电池供电的设计,需加入节电模式,提高电池使用寿命。
2.软件设计(1)显示功能:通过主控芯片控制液晶显示屏,实现日期和时间的显示。
根据数据的变化,实时更新显示内容。
(2)时钟功能:使用定时器功能,实现时钟的计时功能。
利用时钟中断,每秒更新一次时钟。
(3)日期功能:通过读取实时时钟芯片的数据,获取当前的年份、月份、日期和星期。
根据每月的天数和闰年的规则,实现日期的显示和计算。
(4)闹钟功能:通过设置闹钟选项,设置闹钟的时间和铃声。
当闹钟的设定时间到达时,发出闹铃声。
三、设计结果经过软硬件设计的整合,实现了一款功能丰富的万年历电子钟。
通过液晶显示屏,能够准确地显示当前的年份、月份、日期、星期、小时和分钟。
通过定时器功能,实现了精准的时间计时功能。
通过读取实时时钟芯片的数据,实现了准确的日期显示和计算。
同时,通过设置闹钟功能,提醒用户重要的时间节点。
四、结论本文设计了一款功能强大的万年历电子钟,能够准确地显示日期和时间,并具有闹钟功能。
通过软硬件的整合,实现了高清晰度的显示和准确的日期计算。
该设备不仅满足了人们对时间和日期的需求,还具有提醒功能,对用户的生活起到了积极的作用。
值得注意的是,该设计只是一个初始的版本,仍可以进行优化和改进,使其更加符合用户需求。
基于单片机的电子时钟万年历设计
(2)31 8 位暂存数据存储RAM(3)串行 I/O 口方式使得管脚数量最少(4)宽范围工作电压2.0 5.5V(5)工作电流 2.0V 时,小于300nA(6)读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式(7)8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配(8)简单 3 线接口(9)与 TTL 兼容Vcc=5V(10)可选工业级温度范围-40~+85优点:串行接口的日历时钟芯片,使用简单,接口容易,与微型计算机连线较少等特点,在单片机系统尤其是手持式信息设备中己得到了广泛的应用。
所以,最终选择串行时钟芯片DS1302,DS1302的管脚图如图2所示。
图2 DS1302管脚图1.2显示模块选择方案一:LED数码管显示数码管显示比较常用的是采用CD4511和74LS138实现数码转换,数码显示分动态显示和静态显示,静态显示具有锁存功能,可以使数据显示得很清楚,但浪费了一些资源。
目前单片机数码管普通采用动态显示。
编程简单,但只能显示数字,不能显示中文。
方案二:LCD1602能够显示英文和数字。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
所以最终选择LCD1602。
2.项目功能模块2.1 89C51模块Mcs-51单片机管脚图图如图3所示:单片机管脚图2.2 1602液晶显示模块1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
毕业设计万年历功能电子时钟的设计
摘要单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡等,这些都离不开单片机。
单片机是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
而51系列单片机是各单片机中最为典型和最有代表性的一种。
这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
本文以单片机为核心,采用串行时钟芯片DS1302。
过去多用并行接口的时钟芯片,如MC146818、DS12887 等。
它们已能完全满足单片机系统对实时时钟的要求,但是这些芯片与单片机接口复杂、占用地址, 数据总线接线多、芯片体积大占用空间多。
显示电路采用LED动态扫描方式,动态扫描方式节省外部接口资源。
本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。
系统由主控制器A T89C52、时钟电路DS1302、显示电路、按键电路、和复位电路等部分构成,能实现时钟日历显示的功能,能进行年、月、日、时、分及星期的显示。
关键词:AT89C52芯片DS1302芯片C语言Keil软件LED动态显示;AbstractSCM rapid development of applied technology, we now live Looking at the various fields, from the missile's navigation devices, to the various instruments on the aircraft control, computer network communications and data transmission, industrial automation to the process of real-time control and data Processing, and we live in the extensive use of the smart IC cards, these are inseparable from the SCM. S CM is set CPU, RAM, ROM, timing, counting on one interface and a variety of microcontrollers. Its small size, low cost, feature strong, smart widely used in industry and industrial automation. And 51 of the SCM SCM is the most typical and most representative one. The graduation project through its study, and thereby to study, design, develop software and hardware capabilities.Based on SCM as the core, a serial clock chip DS1302. Past the use of parallel interface chip's clock, such as the MC146818, DS12887, and so on. They have been able to fully meet the SCM system to the requirements of real-time clock, but these chips and microcontroller interface complex, occupied address, data bus wiring, chip size of the space and more. LED display circuit using dynamic scan mode, dynamic scan mode external interface save resources.Based on a microcontroller based on the calendar function to achieve the design of electronic clock, so as to achieve learning and understanding of SCM related instructions in all aspect s of the application. System by the main controller AT89C52, clock circuit DS1302, show circuit, the circuit keys, and reset circuit, and other components, to achieve the clock showed that the calendar function, capable of year, month, day, hour, minute an d weeks of shows.Key W ords:AT89C52 Chip DS1302 Chip Keil C language software LED dynamic display;目录摘要 (I)Abstract (II)目录........................................................................................................... 错误!未定义书签。
电子万年历的设计与制作课程设计
华南农业大学电子工程学院应用物理系课程设计(报告)任务书设计题目:电子万年历的设计与制作任务与要求(请按所选题目自行总结)任务:设计一个电子万年历,利用实时时钟芯片ds1302和51单片机制作实时时钟。
要求:1.使用LCD1602显示屏显示日期和时间;2.能够显示新历和农历;3. 包括时钟模块,能够显示实时时钟;4. 要有时间设置按键部分;5. 完成硬件电路的设计后,编写程序,实现时间和日期的显示等功能;6. 调试程序,完成功能验证,写出完整的课程设计论文。
实验器材:1.单片机最小系统:单片机(插座),晶振,电阻,电容,按键;2.电源模块:自锁开关,LED灯,USB插座;3.按键模块:按键;4.1602显示模块:1602(排母),电位器,电容;5.RTC模块:DS1302芯片(插座),晶振,CR2032电池(插座);6.DIY小部件:漆包线,杜邦线,排针,排母,IC插座,电阻包,电容包,烙铁套装;开始日期2016 年 3 月 4 日完成日期2016 年3 月 23 日电子万年历设计摘要:本系统是由单片机最小系统、电源模块、按键模块、LCD1602显示模块及RTC模块组成的电子万年历系统。
通过时钟模块实时进行时间和日期的计数,进而传递给单片机处理,单片机再将其传递给LCD1602模块显示当前时间,另设有按键模块可以完成时间设置以及日期查询等功能操作。
其设计简单,性能优良,时间设置可调,同时同步显示农历和星期,具有较强的实用性。
本文先简要介绍每个模块的工作原理,再作整个系统电路的综合分析,说明该电子万年历的实现过程。
Summary:This system,electronic calendar system,is composed of SCM minimum system, power supply module, keys module, LCD1602 display module and RTC module .Through RTC module for counting the time and date, and then transmit to SCM for processing,and then send it to the LCD1602 module to show the current time, also operates key modules can be completed time setting and operating date query function.Its simple design, excellent performance, adjustable time setting, synchronous display lunar calendar and week at the same time, has strong practicability.This paper first briefly introduces the working principle of each module, and then a comprehensive analysis of the circuit.The last,illustrate the whole system implementation process of the electronic calendar.关键词:万年历,计时,显示,农历Keywords: calendar、timing、display、lunar calendar1.引言在社会发展快速的今天,便利和谐的生活方式无疑成为人们追求的目标,而在现实生活中,很多地方还是依靠传统的日历和时钟来查看日期和时间,这样既不能快速地同时查看日期和时间,而且一般的时钟精度不高,经常需要人工校准时间。
十五位数码管电子钟万年历设计 c编写
十五位数码管电子钟万年历设计c编写后带原理设计图供参考(本人已验证可正常工作)我们以一个实际的时钟电路来说明定时器的软件编程方法,时钟就是我们最为常见的显示时、分、秒为单位的计时工具,它是典型的应用代表。
时钟的最小计时单位是秒,但使用单片机定时器来进行计时,若使用 6.0MHz的晶振,即使按工作方式1工作,最大的计时时间也只能到131ms,所以我们可把每个定时时间取125ms,这样定时器溢出8次(125ms╳8=1000ms)就得到最小的计时单位秒。
而要实现8次计数用软件方法实现是轻而易举的。
我们使用定时器1,以工作方式1工作,定时器进行125ms定时。
采用中断方法进行溢出次数的累计,当计满8次即得到1秒的计时。
一个时钟的计时累加,要实现分、时的进位,要用到多种进制,秒、分、时中的进位是十进制,秒向分进位和分想时进位却是六十进制,而每天又有十二小时制或二十四小时制,它们分别又是十二进制和二十四进制。
从秒到分和从分到小时可以通过软件累加和数值比较方法实现。
在单片机的内部RAM中,需要设置显示缓冲区,显示的时、分、秒值是从显示缓冲区中取出的,在RAM中设置四个单元作为显示缓冲区,分别是7AH、7BH、7CH。
为使电路和原理叙述方便,我们这里不显示秒值,秒的进位我们通过闪烁分值实现。
这样我们一共有四位LED分别显示时和分值。
同时时钟都需要校准的。
在程序中还需设置显示码表,要显示的数值通过查表指令将显示用的真正码值送到LED上。
我们用单片机AT89C2051的PP3.4和P3.5两个I/O口外接微动开关来实现时和分的校正,每按一次小时或分值加1,连续按下数值累计下去,实现时钟的校准。
在电路中我们还设置了一个蜂鸣器,用作简单报时用,如可设早上7:30分起床,中午1点30分再有起床报时,每次响时1分钟,响1秒,停2秒的方式,而不是连续响铃。
这个程序我们采用12小时制,为此,要在程序中设置相应的标志,以利于主程序识别。
万年历 电子钟 毕业设计正文
1. 综述1.1 课题背景1.1.1 概述随着电子技术的迅速发展,特别是随着大规模集成电路的产生而出现的微型计算机,给人类生活带来了极大的方便。
走入家庭,从洗衣机、微波炉到音响、汽车,到处都可以见到单片机应用的踪影。
如果说微型计算机技术的出现使现代科学研究得到了质的飞跃,那么也可以毫不夸张的说:“单片机技术的出现则是给现代工业测控领域带来了一次新的工业革命”。
目前,单片机以其可靠性高和智能性等特点被广泛应用到工业控制系统、数据采集系统、智能化仪器仪表、办公自动化等领域中,并已经进入家庭,因此,单片机技术的开发和应用水平已经逐步成为一个国家自动化发展水平的标志之一。
本课题就是以单片机为主体与其它常用器件组合设计而成。
代表了单片机的主流发展方向。
本课题实现一个实用而又相对简单的电子万年历。
在市场上精致而且漂亮的万年历有很多,不过任何一个事物都不是完美的,都有可以进一步发展的余地。
本设计由51系列单片机和时钟芯片DS1302以及LED实现,功能齐全且实用。
1.1.2 单片机的发展历程单片机是微型计算机的一个重要分支,也是一种非常活跃和颇具生命力的机种,特别适用于工业控制领域。
1971年微处理器研制成功不久,就出现了单片机,但最早的单片机是1位的,处理能力有限。
单片机的发展共分四个阶段:第一阶段是初级阶段,功能非常简单;第二阶段是低性能阶段,以INTEL公司制造的MCS-48系列单片机为代表。
第三阶段为高性能单片机阶段,这个阶段推出的单片机普遍带有串行接口,多级中断系统,16位定时器/计数器,片内ROM、RAM容量加大,直到现在仍被广泛应用,是目前应用数量较多的单片机。
第四阶段是8位单片机巩固发展以及16位单片机、32位单片机推出阶段,以满足不同的用户需要。
纵观单片机几十年的发展历程,单片机的今后发展方向将向多功能、高性能、高速度、低功耗、低价格、外围电路内装化以及内存储器容量增加和FLASH存储器化方向发展。
数字钟、万年历设计
数字钟/电子万年历电路及程序设计学校:四川交通职业技术学院系别:自动化工程系专业:交通安全与智能控制班级:2012级2班姓名:陈云阳、冯佳里学号:、数字钟/电子万年历设计制作目录一、设计要求............................ 错误!未定义书签。
二、系统方案选择........................ 错误!未定义书签。
三、硬件电路设计........................ 错误!未定义书签。
四、系统软件设计........................ 错误!未定义书签。
五、系统调试与运行...................... 错误!未定义书签。
附一:.................................. 错误!未定义书签。
一、设计要求(1)电路启动时,自动计时,由6位LED显示器显示时、分、秒;(2)具备校准功能,可以设置当前时间;(3)具备定时启闹功能,可以设置启闹时间,启闹10秒后自动关闭闹铃。
(4)能选择数字钟的计时制式,即可以选择为12小时制或24小时制;(5)具备电子万年历功能,由6位LED显示年、月、日;(6)能自由切换数字钟和电子万年历两种功能;(7)可以设置当前日期。
数字钟/电子万年历设计制作二、系统方案选择(1)单片机选型:选用MCS-51系列主流芯片AT89S52,内部带有8KB的Flash ROM,无须外扩程序存储器。
(2)计时方案:软件控制。
利用AT89S52内部定时器进行中断定时,配合软件延时实现时、分、秒的计时。
该方案节省硬件成本。
(3)显示方案:由于时、分、秒的显示用6位LED数码管,为节省硬件成本,我们采用动态扫描显示方式。
该方案硬件电路相对简单,但编程较复杂。
(4)按键控制方式:由于该电路涉及到7个按键的使用,故我们采用4*3矩阵式键盘,多余的按键可作为功能扩展键。
(其中#0-#6键分别为时钟修改键、闹钟修改键、加1修改键、日期显示键—按第二次返回、日期修改键、减1修改键、时制修改键)三、硬件电路设计系统硬件电路如图一所示,单片机的P2口作为数码管段选口,P3口作为位选口。
电子万年历设计-毕业设计
电子万年历设计学生:XXX 指导教师:XXX内容摘要:这次设计以生活中常用的万年历挂钟为例,从系统功能说明出发,对控制系统的组成结构、系统设备选型进行了分析。
在硬件设计一节给出了详细的硬件电路设计图,并对各功能部件与AT90S8535单片机的连接进行了详细的讲解。
在软件设计一节给出了系统的程序控制流程图,对各部分程序进行了分析说明。
最后简要地介绍了系统集成与测试的方法。
万年历挂钟设计的方案很多。
在本次设计中选用高性能低功耗的AVR架构单片机AT90S8535作为系统的控制核心,并选用高集成度的实时时钟芯片SD2303和DS1722温度传感器来处理时间和温度检测任务。
AT90S8535单片机带有SPI接口,能非常便利地实现和DS1722的通信。
在与实时时钟芯片SD2303通信时采用了模拟IIC总线的方式。
本次设计的万年历挂钟能实现实时时间和温度的检测和显示。
通过设置的7个独立的按键来调整时间和设置闹铃。
需要指出的是,实时时钟芯片以设定的初始时间为基准进行计时,故用户在设置时间时必须保证所设置时间的合理性。
在设置闹铃时,程序会对所设置时间的合理性进行检测,任何不合理的时间设置将关闭闹铃功能。
鉴于系统设计的复杂性,万年历挂钟设计中没有加入阳历和阴历的转换。
我们可以在本设计的基础上使用专用的芯片或者使用软件算法来实现这一功能,这样万年历挂钟的功能将更加完善。
关键字:万年历 DS1722温度传感器 AT90S8535单片机Electronic calendarAbstract:The design use the calendar clock of the life as an example, starting from the system description, analyze the composition of the control system structure and system equipment selection. Software design in a given process control system flow chart of the various parts of the analysis procedure. Finally, a brief description of system integration and testing method.Calendar clock program designed many. Design in this selection of high-performance low-power AVR architecture AT90S8535 single chip as the core control system and select a high level of integration of real-time clock chip SD2303 and DS1722 temperature sensor to the processing time and temperature detection task. AT90S8535 single chip with SPI interface, can be very convenient to achieve the communication and DS1722. With real-time clock chip SD2303 communication IIC bus using a simulation approach.The calendar designed to achieve real-time clock time and temperature detection and display. Alarm in the settings, the program will be the setup time for testing the reasonableness of any unreasonable period of time set alarm feature will be closed.In view of the complexity of system design, calendar clock design are not members of the solar calendar and lunar calendar conversion. We can design based on the use of a dedicated chip, or the use of software algorithms to achieve this function, the function of this calendar clock will be more perfect.Keyword:calendar DS1722 temperature sensor A T90S8535 single chip目录前言 (1)1 电子万年历介绍 (1)1.1.1 时间显示 (1)1.1.2 时间调整 (1)1.1.3 定时闹钟 (1)1.1.4 温度显示 (1)1.1.5 掉电运行 (1)1.2 应用系统设计 (2)1.2.1 系统方案设计 (2)1.2.2 应用系统结构设计 (2)1.2.3 设备选型 (3)1.2.4 控制面板设计 (4)2 硬件电路设计 (5)2.1.1 AVRRISC结构 (5)2.1.2 数据和非易失性程序存储器 (5)2.1.3 外围器件特点 (5)2.1.4 MCU特点 (5)2.1.5 4MHz3V20℃条件下的功耗(AT90S8535) (6)2.1.6 I/O接口和封装 (6)2.2 实时时钟电路设计 (6)2.2.1 实时时钟芯片SD2303简介 (6)2.2.2 SD2303的引脚设置 (6)2.3 温度检测电路设计 (7)2.3.1 温度传感器DS1722简介 (8)2.3.2 DS1722的引脚配置 (8)2.5 键盘及闹钟电路设计 (10)3 软件设计 (11)3.1 主程序设计 (11)3.2 按键检测和处理程序 (12)3.3 系统集成与测试 (13)4 单片机控制系统抗干扰技术 (14)4.1 干扰的来源分析 (14)4.2 硬件抗干扰技术 (14)4.3 软件抗干扰技术 (14)4.4 供电系统抗干扰技术 (14)5 结束语 (15)附录 (16)参考文献 (17)电子万年历前言随着现代社会工作和生活节奏的加快,越来越需要人们对时间的准确把握,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。
AT89C52的电子万年历课程设计报告
基于89c52多功能万年历设计报告班级:电子信息工程2班学院:电子信息工程学号:**********姓名:***一、设计任务:设计一个具有多功能的电子万年历。
二、基本要求:1、能够显示阳历年、月、日、星期、小时、分、显示模块采用LCD液晶显示,要求能用按键调整时间。
2、能显示阴历月、日3、具有定时报警功能,能够进行整点语音报时。
4、具有闹钟设定的功能。
发挥部分:1、掉电存储功能,可存储掉电前用户定时设置。
2、具有日程管理,可以设定指定日期的日程,可以设置日成的提醒时间,并可用语音进行提示。
三、方案设计与论证方案一:按照系统设计的功能的要求,初步确定系统由主控模块、时钟模块、显示模块、语音模块各键盘接口模块共5个模块组成,电路系统构成框图如图1所示。
主控芯片使用52系列AT89C52单片机,时钟芯片使用美国DALLAS公司推出的一款高性能、低功耗、带RAM的实时时钟DS1302。
采用DS1302作为计时芯片,可以做到计时准确。
更重要的是,DS1302可以在很小电流的后备电源(2.5V--5.5V 电源,在2。
5V时耗电小于300nA)下继续计时,而且DS1302可以编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本功不耗电。
显图1 电子万年历电路系统构成框图方案二:按照系统设计的要求和功能,将系统分为主控模块、时钟电路模块、按键扫描模块,LCD显示模块,语音模块,电源电路、复位电路、晶振电路几个模块,系统框图如图2所示。
主控模块采用AT89C52单片机,按键模块用四个按键,用于调整时间和设定闹钟,显示模块采用LCD12864,时钟电路模块采用DS1302实时时钟实现对时间,日期的操作。
图2 基于AT89C52单片机的电子万年历系统框图方案三:按照系统设计的要求和功能,将系统分为主控制器模块、显示模块、按键开关模块、蜂鸣器电路模块。
系统框图如图3所示,主控制模块采用AT89C52单片机为控制中心,显示模块采用液晶LCD12864显示,计时使用AT89C52单片机自带的定时器功能,实现对时间、日期的操作,通过按键盘开关实现对时间、日期的调整。
电子万年历的设计制作
电子万年历1.1 功能要求电子万年历能显示阳历年、月、日、星期、[小]时、分、秒和阴历月、日、温度、节假日,在显示阴历时间时,能标明是否为闰年。
2.1方案论证按照系统设计功能的要求,初步确定设计系统由主控模块、显示模块、键盘接口模块共4个模块组成。
主控芯片使用51系列STC89C52单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟DS1302。
采用DS1302作为主要计时芯片,可以做到计时准确。
更重要的是,DS1302可以在很小电流的后备电源(2.5~~5.5v电源,在 2.5v时耗电小于300nA)下继续计时,并可以编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电。
图3.1 电子万年历电路系统构成框图显示模块采用12864液晶屏,键输入采用查询法实现调整功能。
系统由主控制器STC89C52、时钟芯片DS1302、串口显示电路及键扫描电路组成。
2.2 主控制器STC89C52台湾宏晶公司生产的STC89(:52单片机采用高性能的静态80C51设计,由先进工艺制造,并带有非易失性Flash 程序存储器。
它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。
主要性能特点有:·8 KB Flash ROM,可以擦除1 000次以上,数据保存10年。
·256字节内部RAM。
·电源控制模式——时钟可停止和恢复;——空闲模式;——掉电模式。
·6个中断源。
·4个中断优先级。
·4个8位I/O口。
·全双工增强型UART。
·3个16位定时/计数器,TO、T1(标准80C51)和增加的T2(捕获和比较)。
·全静态工作方式:0~24 MHz。
2.3 时钟电路DSl3021.DSl302的性能特性·实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;·用于高速数据暂存的31×8位RAM;·最少引脚的串行I/O;·2.5~5.5 V电压工作范围;·2.5 V时耗电小于300 nA;·用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;·简单的3线接口;·可选的慢速充电(至V CC1)的能力。
基于51单片机电子万年历设计
一、引言电子万年历是一种以数字形式实时显示日期、星期和时间等信息的电子设备。
在现代人日常生活中,万年历是一种常见的小型电子产品。
本文将基于51单片机设计一款简单实用的电子万年历。
二、设计原理1.时钟模块:采用DS1302实时时钟模块。
DS1302通过三线式串行接口与51单片机进行通信,可以实时获取日期、星期和时间等信息。
2.显示模块:使用数码管显示日期、星期和时间等信息。
共使用四块共阳数码管,采用数码管模块进行驱动,通过IO口进行数据传输。
3.按键模块:设计四个按键,分别为设置、上、下和确定。
通过按键来调整日期、星期和时间等信息。
4.闹钟功能:加入闹钟功能,可以设定闹钟时间,到达设定时间时,会有提示音。
5.温湿度传感器:加入温湿度传感器,可以实时监测环境温湿度,并在数码管上进行显示。
6.外部电源:由于51单片机工作电压较高,需要使用外部电源进行供电。
三、硬件设计1.电源电路:使用稳压电源芯片LM7805进行5V稳压,将稳压后的电压供给单片机和各个模块。
2.时钟模块:DS1302模块与单片机通过串行通信进行连接。
时钟模块上的时钟信号、数据信号和复位信号分别与单片机的IO口相连。
3.数码管显示模块:共有四块共阳数码管,通过595芯片进行驱动。
单片机的IO口与595芯片的串行、时钟和锁存引脚相连,595芯片的输出引脚与数码管的各段相连。
4.按键模块:通过电阻分压来实现按键功能,按下按键时,相应的IO口会被拉低。
5.闹钟功能:使用蜂鸣器来产生提示音,通过IO口与单片机相连。
6.温湿度传感器:使用DHT11温湿度传感器。
传感器的数据引脚通过IO口与单片机相连。
四、软件设计1.时钟显示:通过DS1302获取日期、星期和时间等信息,将其转化为数码管需要的编码格式,并通过595芯片进行显示。
2.按键操作:对按键进行扫描,根据按键的不同操作进行相应的处理。
例如按下设置键进行日期和时间的设置,按下上下键进行数值的变化,按下确定键进行数值的确认。
EDA课程设计-万年历电子钟的设计
EDA课程设计-万年历电子钟的设计————————————————————————————————作者:————————————————————————————————日期:课程设计(论文)任务书信息工程学院学院通信工程专业2009.2 班一、课程设计(论文)题目电子钟设计二、课程设计(论文)工作自2012年1月 3日起至 2012 年 1月 6 日止。
三、课程设计(论文) 地点: 华东交通大学4-410,图书馆四、课程设计(论文)内容要求:1.本课程设计的目的(1)掌握EDA技术及CPLD/FPGA的开发流程;(2)掌握自顶向下的设计思想;(3)掌握实用电子钟的设计原理;(4)掌握系统设计的分析方法;(5)提高学生的科技论文写作能力。
2.课程设计的任务及要求1)基本要求:(1)用HDL设计一个多功能数字钟,包含以下主要功能:精确计时,时间可以24小时制或12小时制显示;(2)日历:显示年月日星期;(3)能把设计文件进行仿真并下载到实验箱实现功能验证。
2)创新要求:在基本要求达到后,可进行创新设计,如增加报时等、秒表功能模块。
3)课程设计论文编写要求(1)要按照书稿的规格打印誊写论文(2)论文包括目录、绪论、正文、小结、参考文献、谢辞、附录等(3)论文装订按学校的统一要求完成4)答辩与评分标准:(1)完成系统分析:20分;(2)完成设计过程:20分;(3)完成仿真:10分;(4)完成下载:10分(5)回答问题:10分。
5)参考文献:(1)潘松,黄继业编著 .《EDA技术实用教程》,2005 ,科学出版社(2)徐志军,徐光辉编著.《CPLD/FPGA的开发与应用》,电子工业出版社,2001.1(3)/html/85/t-113885.html6)课程设计进度安排内容天数地点构思及收集资料1图书馆设计与调试3实验室撰写论文1图书馆、实验室学生签名:年月日课程设计(论文)评审意见(1)设计程序(40分):优()、良()、中()、一般()、差();(2)仿真结果(10分):优()、良()、中()、一般()、差();(3)下载结果(10分):优()、良()、中()、一般()、差();(4)回答问题(10分):优()、良()、中()、一般()、差();(5)报告成绩(30分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是()、否()评阅人:职称:年月日电子钟的设计摘要基于FPGA的电子钟设计,主要完成的任务是使用Verilog语音,在Quartise2上完成电路的设计,程序的开发,基本功能是能够显示、修改年月日时分秒。
电子时钟万年历
机电一体化生产系统设计大作业题目:电子实时时钟/万年日历系统系别专业班级学号姓名2010 年11月1日任务书1、设计题目:电子实时时钟/万年日历系统2、应完成的项目:(1)显示准确的北京时间(时、分、秒),可用24小时制式(2)随时可以调校时间(3)增加公历日期显示功能(年、月、日),年号只显示最后两位(4)随时可以调校年、月、日3、参考资料:(1) 《中外电子元器件》(2) 《现代电子技术》(3) 《单片机原理及应用》(4) 《可编程控制器原理及应用》一、题目:电子实时时钟/万年日历系统二、功能要求:1.基本要求:⑴显示准确的北京时间(时、分、秒),可用24小时制式;⑵随时可以调校时间。
2.发挥要求:⑴增加公历日期显示功能(年、月、日),年号只显示最后两位;⑵随时可以调校年、月、日;⑶允许通过转换功能键转换显示时间或日期。
三、方案考虑:1、硬件方案:⑴显示器采用6位LED数码管(共阳),可分别显示时间或日期。
⑵显示器的驱动采用动态扫描电路形式,以达到简化电路的目的。
但要注意所需的驱动电流比静态驱动时要大,因此要增加驱动电路。
可采用74LS244或者晶体管;其中74ls244是用来驱动段选码,晶体管是驱动位选码。
⑶采用“一键多用方案”,以减少按键数目。
本方案采用了4按键。
⑷整体上要考虑:结构简单、布局美观、操作方便、成本低廉。
2、元件清单:⑴ 89C52 1个⑵ IC座(40脚) 3个(其中1个用于接插89C51、2个用于接插LED段数码管)。
⑶ 74LS244 1个(用于驱动6个共阳的LED段数码管)。
⑷ IC座(20脚) 1个(用于接插74LS244)。
(5)显示器:LED_8段数码管(共阳型)6个三极管:(6)PNP(8550)6个(用于驱动6个共阳型LED段数码管)。
(7)微型开关:3个(其中1个用于复位电路、其它用于键盘)。
(8)晶体振荡器(12MHz):1个(用于振荡电路)。
(9)电阻器:① 3KΩ 1个(用于系统复位电路)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机科学与技术学院硬件课程设计报告摘要在日常生活中,手表,闹钟是不可或缺的。
在实际生活生产活动中,也要考虑时间的因素,如工时的计算,霓虹灯的亮灭。
因为集成电路制造技术的不断提高,出现了高性能、高可靠的集成芯片。
电子时钟在工业领域,日常生活中得到了广泛的应用。
电子时钟在性能方面具有精度高,实时性好,易于调整等优点。
这些使得温度控制系统的研究和开发得到的各方面的广泛关注和支持。
本次课程设计,我利用8254计数芯片,8255芯片,4*4小键盘,12864LCD 液晶显示器,蜂鸣器制作了一个带有闹钟功能的电子时钟万年历。
它可以实现由4*4小键盘输入初始时间(包括年月日时分秒星期),利用8254计数,通过程序处理进位,判断闰年,在液晶显示屏上实时显示时间。
还可以由小键盘选择不同的闹钟模式,设定闹钟时间。
关键词:电子时钟;8255A芯片;8254芯片;12864LCD液晶显示器;键盘输入;蜂鸣器;闹钟功能;万年历目录1.设计任务与要求…………………………………………………………………6-1.1实验目的 (6)1.2具体要求 (6)2.总体方案与说明…………………………………………………………………6-2.1使用硬件 (6)2.1流程设计 (6)2.1.1系统程序模块 (6)2.1.1系统流程图 (7)3.硬件方案 (7)3.1硬件说明 (7)3.1.1计数芯片8254 (7)3.1.2可编程外围接口芯片8255A (8)3.1.2 128×64字符液晶显示器 (11)3.2电路原理图与说明 (12)3.2.1键盘电路 (13)3.2.2 8254计数电路 (13)3.2.3 液晶显示电路 (14)3.3电路连接图 (14)3.3.1 8254计数芯片 (14)3.3.2 整体电路 (15)4.软件方案 (15)4.1软件主要模块流程图 (15)4.1.1输入子程序模块流程图 (16)4.1.2显示子程序模块流程图 (18)4.1.2闰年子程序模块流程图 (18)4.1.2蜂鸣器子程序模块流程图 (18)4.1.2时间进位程序模块流程图 (19)4.1.2主程序模块流程图 (20)4.2源程序清单与注释 (21)5.分析与测试 (38)6.运行结果 (38)6.1试验线路图 (39)6.2实验结果 (39)6.2.1欢迎界面 (39)6.2.2闹钟设定界面 (40)6.2.3闹钟功能实现 (41)6.2.4闰年功能实现 (41)7.结论与体会 (43)7.1结论 (43)7.2体会 (44)参考文献 (45)-1 设计任务与要求1.1实验目的1.复习8255芯片,8254芯片工作原理及使用方法2.学会使用12864字符液晶显示屏,蜂鸣器3.锻炼小规模逻辑电路设计4.提高分析、解决问题的能力1.2具体要求本系统要求能通过4*4键盘输入预设时间,实时反映当前时间的变化并能对闰年进行准确判断。
另外,当时间与预先设置的闹钟时间相同时,能够蜂鸣,并在电脑屏幕上显示。
2 总体方案与说明2.1使用硬件8255芯片、8254芯片、12864字符液晶显示器、蜂鸣器、4*4键盘2.1流程设计2.1.1系统程序模块2.1.2 系统流程图3硬件方案3.1硬件说明3.1.1计数芯片82548254 芯片是一款使用十分广泛的可编程定时,计数芯片,其主要功能是定时和计数的功能。
我们的微机内的动态存储器刷新电路,系统日时钟的技术以及发声系统的声源都是由8254芯片来完成的。
结构8254 芯片的外部引脚和内部结构如下图工作原理8254芯片共有六种工作方式,分别对应与六种不同的用途。
(1)方式0:计数到0结束输出正跃变信号方式。
(2)方式1:硬件可重触发单稳方式。
(3)方式2:频率发生器方式。
(4)方式3:方波发生器。
(5)方式4:软件触发选通方式。
(6)方式5:硬件触发选通方式。
3.1.2可编程外围接口芯片8255A8255A是一种通用的可编程并行I/O接口芯片,它是为Intel系列微处理器设计配套电路,也可用于其他微处理器系统中。
通过对它编程,芯片可工作于不同的工作方式。
在微型计算机系统中,用8255A做接口时,通常不需要附加外部逻辑电路就可直接为CPU与外设之间提供数据通道,因此得到了极为广泛的. 应用。
结构和功能8255A的外部引脚和内部结构如下图图3-3 8255外部引脚图图3-4 8255内部功能图由图可见,8255A由数据端口A、B、C(期中,C口被分为C口上半部分和C口下半部分),A组和B组控制逻辑,数据总线缓冲器和读写控制逻辑。
8255A内部包含3个8位输入输出端口,通过外部的24根输入输出线与外设进行通信联络。
A口和B口可以用作8位输入口或8位输出口。
C口既可以用作8位输入输出口用,也可作为两个4位的输入输出口。
还常常用来配合A 口和B口工作,分别用来产生A口和B口的输出控制信号和输入A口和B口的端口状态端口信号。
表3-1 8255A的基本操作X X 1 1 0 数据总线三态8255A的控制字方式选择控制字8255A具有3种基本工作方式。
方式0:基本输入输出方式;方式1:选通输入输出方式;方式2:双向总线I/O方式。
端口A可以工作于3种方式中的任一种;端口B只能工作于方式0和方式1,而不能工作于方式2;端口C常被分成2个4位端口,除了用做输入输出端口外,还能用来配合A口和B口工作,为这两个端口的输入输出操作提供联络信号。
图3-5 8255方式选择控制字格式工作方式A.方式0基本输入输出方式,它适用于不需要应答信号的简单输入输出场合。
在这种方式下,A口和B口可作为8位端口,C口的高4和低4为可作为两个4为端口。
CPU与这些端口交换数据时,可以直接输入指令从端口读取数据,或用输出指令将数据写入指定端口,不需要任何其他联络信号。
B.方式1选通输入/输出方式。
在这种方式下,A口和B口作为数据口,均可用于输入或输出方式。
而且这两个8位数据口的输入、输出数据都能锁存,但它们必须在联络信号的控制下才能完成I/O操作。
端口C的6根线用来产生或接受这些联络信号。
C.方式2双向总线方式。
只有A口可以工作于这种方式。
在这种方式下,CPU与外设交换数据时,可在单一的8位端口数据线PA7-PA9上进行,既可以通过A口把数据传送到外设,又可以从A口接收从外设送来的数据,而且输入和输出的数据均能锁存,但输入和输出不能同时进行3.1.3 128×64字符液晶显示器ST7920是台湾矽创电子公司生产的中文图形控制芯片,它是一种内置128×64-12汉字图形点阵的液晶显示控制模块,用于显示汉字及图形。12864A-1汉字图形点阵液晶显示模块集成ST7920驱动器,可显示汉字及图形,内置8192个中文汉字(16×16点阵)、128个字符(8×16点阵)及64×256点阵显示RAM (GDRAM)。
结构图3-6 LCD液晶字符显示器外形尺寸图3-7 LCD液晶字符坐标工作原理12864液晶显示器工作于并行模式。
8位数据线与8255A芯片8位数据口连接,控制口(E、R/W、D/I)与8255A芯片C口四位相连。
通过8255A的8位数据空向12864液晶显示器传送数据,通过C口低四位传送控制信号。
控制口E为使能端,高电位有效。
R/W为读写控制,低点位为写数据、高电位为读数据。
D/I为数据与命令口,低电位为命令、高电位为数据。
将需要显示的地址通过数据口以命令的形式送入显示器,再将需要显示的数据通过数据口以数据的形式送入显示器,即可显示内容。
表3-2 LCD汉字显示坐标X坐标Line1 80H 81H 82H 83H 84H 85H 86H 87H Line2 90H 91H 92H 93H 94H 95H 96H 97H Line3 88H 89H 8AH 8BH 8CH 8DH 8EH 8FH Line4 98H 99H 9AH 9BH 9CH 9DH 9EH 9FH图3-8 LCD中文字库截图3.2电路原理图与说明3.2.1 键盘输入电路图3-9 键盘输入电路原理图3.2.2 8254计数电路图3-10 计数电路原理图3.2.3 液晶显示电路图3-11 液晶显示电路原理图3.3电路连接图3.3.1 8254计数芯片3.3.2 整体电路4 软件方案4.1软件主要模块流程图4.1.1输入子程序模块流程图图4-1 输入子程序模块流程图4.1.2显示子程序模块流程图4.1.4蜂鸣器子程序模块流程图4.1.6主程序模块流程图4.2源程序清单与注释#include<stdio.h>;/*头文件*/#include<iostream.h>#include<conio.h>#include "ApiExusb.h"#pragma comment(lib,"ApiExusb.lib")char lcd1[10]={0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3};char lcd2[10]={0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9};char l1[8]={0,0xd2,0xb6,0xc8,0xcb,0xce,0xc1,0xc8};/*字符机内码数组*/char l2[8]={0,0xbb,0xfe,0xfd,0xc4,0xe5,0xf9,0xd5};charlhy1[32]={0xb5,0xe7,0xd7,0xd3,0xca,0xb1,0xd6,0xd3,0xcd,0xf2,0xc4,0xea,0xc0,0xfa, 0xa1,0xef,0xa1,0xf1,0xbb,0xb6,0xd3,0xad,0xc4,0xfa,0xca,0xb9,0xd3,0xc3,0xa1,0xc3, 0xa3,0xa9};charlhy2[32]={0xc7,0xeb,0xca,0xb9,0xd3,0xc3,0xd0,0xa1,0xbc,0xfc,0xc5,0xcc,0xca,0xe4, 0xc8,0xeb,0xa1,0xf9,0xd6,0xc6,0xd7,0xf7,0xa1,0xaa,0xcb,0xce,0xca,0xc0,0xbb,0xdb, 0xa1,0xf9};charsd1[64]={0xc7,0xeb,0xc9,0xe8,0xb6,0xa8,0xc4,0xd6,0xd6,0xd3,0xc4,0xa3,0xca,0xbd, 0xa2,0xa0,0xa2,0xd9,0xca,0xb1,0xb7,0xd6,0xc3,0xeb,0xa2,0xa0,0xa2,0xa0,0xa2,0xa0,0xa2,0xa0,0xa2,0xda,0xd0,0xc7,0xc6,0xda,0xca,0xb1,0xb7,0xd6,0xc3,0xeb,0xa2,0x a0,0xa2,0xa0,0xa2,0xdb,0xc4,0xea,0xd4,0xc2,0xc8,0xd5,0xca,0xb1,0xb7,0xd6,0xc3,0 xeb,0xa2,0xa0};charsd2[16]={0xc7,0xeb,0xc9,0xe8,0xb6,0xa8,0xc4,0xd6,0xd6,0xd3,0xca,0xb1,0xbc,0xe4, 0xa2,0xa0};void clear();void cmdsetup();void datasetup();void input();/*数字输入*/void show(int,int); /*数字显示*/void show1(int,int,int);/*单位显示*/void show2(int);/*星期显示*/void showhy();/*欢迎界面显示*/void showclr();/*界面清屏*/void showsd1();/*设定界面1显示*/void showsd2();int days(int,int);void clock();/*蜂鸣器闹铃*/byte i,k;int j;void main(){int year,month,day,week,hour,minute,second;intflag,scheduledyear,scheduledmonth,scheduledday,scheduledweek,scheduledhour, scheduledminute,scheduledsecond;byte data;;showhy();/*欢迎界面显示*/showclr();showsd1();/*闹钟模式界面显示*/input();flag=j;showclr();showsd2();/*闹钟设定模式界面显示*/if (flag==1) /*闹钟模式1 输入,显示预设时分秒*/{show1(0x92,0xca,0xb1);show1(0x8a,0xb7,0xd6);show1(0x9a,0xc3,0xeb);k=0x90;input();scheduledhour=10*j;k=0x91;input();scheduledhour=scheduledhour+j;k=0x88;input();scheduledminute=10*j;k=0x89;input();scheduledminute=scheduledminute+j;k=0x98;input();scheduledsecond=10*j;k=0x99;input();scheduledsecond=scheduledsecond+j;showclr();}if (flag==2) /*闹钟模式2 输入,显示预设星期时分秒*/ {show1(0x90,0xd0,0xc7);show1(0x91,0xc6,0xda);show1(0x96,0xca,0xb1);show1(0x8a,0xb7,0xd6);show1(0x8e,0xc3,0xeb);k=0x92;input();scheduledweek=j;k=0x94;input();scheduledhour=10*j;k=0x95;input();scheduledhour=scheduledhour+j;k=0x88;input();scheduledminute=10*j;k=0x89;input();scheduledminute=scheduledminute+j;k=0x8c;input();scheduledsecond=10*j;k=0x8d;input();scheduledsecond=scheduledsecond+j;showclr();}if (flag==3) /*闹钟模式3 输入,显示预设年月日时分秒*/ {show1(0x94,0xc4,0xea);show1(0x97,0xd4,0xc2);show1(0x8a,0xc8,0xd5);show1(0x8e,0xca,0xb1);show1(0x9a,0xb7,0xd6);show1(0x9e,0xc3,0xeb);k=0x90;input();scheduledyear=1000*j;k=0x91;input();scheduledyear=scheduledyear+100*j; k=0x92;input();scheduledyear=scheduledyear+10*j; k=0x93;input();scheduledyear=scheduledyear+j;k=0x95;input();scheduledmonth=10*j;k=0x96;input();scheduledmonth=scheduledmonth+j;k=0x88;input();scheduledday=10*j;k=0x89;input();scheduledday=scheduledday+j;k=0x8c;input();scheduledhour=10*j;k=0x8d;input();scheduledhour=scheduledhour+j;k=0x98;input();scheduledminute=10*j;k=0x99;input();scheduledminute=scheduledminute+j;k=0x9c;input();scheduledsecond=10*j;k=0x9d;input();scheduledsecond=scheduledsecond+j;showclr();}k=0x80; /*输入,显示预设的年月日时分秒星期*/ input();year=j*1000;k++; /*K储存字符显示在液晶屏的地址*/ input();year=year+j*100;k++;input();. year=year+j*10;k++;input();year=year+j;k++; /*显示单位汉字*/show1(k,0xc4,0xea);k=0x90;input();month=j*10;k++;input();month=month+j;k++;show1(k,0xd4,0xc2);k=0x94;input();day=j*10;k++;input();day=day+j;k++;show1(k,0xc8,0xd5);k=0x88;show1(k,0xd0,0xc7); k++;show1(k,0xc6,0xda); k++;input();week=j;k=0x8c;input();hour=j*10;k++;input();hour=hour+j;k++;show1(k,0xca,0xb1);k=0x98;input();minute=j*10;k++;input();minute=minute+j;k++;show1(k,0xb7,0xd6);k=0x9b;input();second=j*10;k++;input();second=second+j;k++;show1(k,0xc3,0xeb)printf("Press any key to begin!\n\n"); g etch();cout<<year<<"年"<<endl; /*在电脑上显示预设的年月日时分秒星期*/ cout<<month<<"月"<<endl;cout<<day<<"日"<<endl;cout<<"星期"<<week<<endl;cout<<hour<<"时"<<endl;cout<<minute<<"分"<<endl;cout<<second<<"秒"<<endl;while (j>=0) /*计数累加进位显示*/{PortWriteByte(0x28b,0x82); /*10000010 ,8255B口输入*/PortWriteByte(0x283,0x77); /*01110111,通道1,方式3,bcd计数*/ PortWriteByte(0x280,0x00); /*写入初值1000*/PortWriteByte(0x280,0x10);PortWriteByte(0x283,0xb1); /*10110001,通道2,方式0,bcd计数*/ PortWriteByte(0x281,0x00); /*写入初值2000*/PortWriteByte(0x281,0x20);while(!(data&&0x10)) /* B4检出高电平,证明1秒过去*/{PortReadByte(0x289,&data);}second++; /* 时间更新进位*/if (second>=60){minute++;if (minute>=60){hour++;if (hour>=24){week++;if (week>=7) {week=1;} /* 星期数归1,而不是归0*/day++;if (day>days(month,year)) /* 调用闰年子程序,计算当月应有天数*/{month++;if (month>=12){year++;month=1; /* 月份数归1,而不是归0*/}day=1; /* 天数数归1,而不是归0*/}hour=0;}minute=0;}second=0;}cout<<year<<"年"<<endl; /* 在电脑屏幕上显示更新后的时间日期*/ cout<<month<<"月"<<endl;cout<<day<<"日"<<endl;cout<<"星期"<<week<<endl;cout<<hour<<"时"<<endl;cout<<minute<<"分"<<endl;cout<<second<<"秒"<<endl;/* 分不同模式,进行当前时间与闹钟设定时间比较*/if((flag==1)&&(hour==scheduledhour)&&(minute==scheduledminute)&&(second ==scheduledsecond))clock(); /* 调用蜂鸣器子程序*/if((flag==2)&&(week==scheduledweek)&&(hour==scheduledhour)&&(minute==s cheduledminute)&&(second==scheduledsecond))clock();if((flag==3)&&(year==scheduledyear)&&(month==scheduledmonth)&&(day=sche duledday)&&(hour=scheduledhour)&&(minute==scheduledminute)&&(second= =scheduledsecond))clock();k=0x80; /* 调用显示子程序*/show(year/1000,k); /* 液晶屏上显示更新后的时间日期*/k++;show(year/100%10,k); /* 逐位分离*/k++;show(year/10%10,k);k++;show(year%10,k);k=0x90;show(month/10,k);k++;show(month%10,k);k=0x94;show(day/10,k);k++;show(day%10,k);k=0x8a;show2(week);k=0x8c;show(hour/10,k);k++;show(hour%10,k);k=0x98;show(minute/10,k); k++;show(minute%10,k);k=0x9b;show(second/10,k);show(second%10,k);}}/************************//* 数字输入*//************************/void input(){byte data;printf("Press any key to begin!\n\n");getch();if(!Startup()) /* 检查设备是否正确打开*/ {printf("ERROR: Open Device Error!\n");return;}printf("请输入数字\n");while(!kbhit())PortWriteByte(0x28b,0x81); /* 初始化8255*/PortWriteByte(0x28a,0x0f); /* 向C口低4位送1111*/ PortReadByte(0x28a,&data); /* 读取C口低4位*/i=data;if (i!=0x0f){i=data;Sleep(50); /* 延时*/PortWriteByte(0x28b,0x88); /* 防抖动,再次读入,初始化8255*/ PortWriteByte(0x28a,0xf0); /* 向C口高4位送1111*/PortReadByte(0x28a,&data); /* 读取C口高4位*/i=i|data;if (i==0x77) j=0; /* 将按键值转化为数字*/else if(i==0x7b) j=1;else if(i==0x7d) j=2;else if(i==0x7e) j=3;else if(i==0xb7) j=4;else if(i==0xbb) j=5;else if(i==0xbd) j=6;else if(i==0xbe) j=7;else if(i==0xd7) j=8;else if(i==0xdb) j=9;else;printf("%d\n",j); /* 电脑屏幕显示*/if (k==0x8a){show2(j); /* 显示星期数,使用汉字*/Cleanup();return;}show(j,k);}}Cleanup();return;}/************************//* LCD显示*//************************/void show(int j,int k){if(!Startup()) /* 检查设备是否正确打开*/{printf("ERROR: Open Device Error!\n");return;}PortWriteByte(0x28b,0x80); /*设8255为方式0,C口输出,A口输出*/clear();PortWriteByte(0x288,k); /*向A口送入字符在液晶屏上显示的地址*/ cmdsetup();Sleep(10); /*延时*/PortWriteByte(0x288,lcd1[j]);datasetup(); /*向A口送入字符机内码高位*/PortWriteByte(0x288,lcd2[j]);datasetup(); /*向A口送入字符机内码低位*/return;}void show1(int k,int j1,int j2) /*在液晶屏上显示单位*/{printf("请进行下一位\n");getch();cout<<"aaaaaaaa"<<endl;if(!Startup()){printf("ERROR: Open Device Error!\n");return;}PortWriteByte(0x28b,0x80); /*设8255为方式0,C口输出,A口输出*/ clear();PortWriteByte(0x288,k);cmdsetup();Sleep(10);PortWriteByte(0x288,j1);datasetup();PortWriteByte(0x288,j2);datasetup();Cleanup();return;}void show2(int j) /*显示星期数,一至日*/ {PortWriteByte(0x28b,0x80);clear();PortWriteByte(0x288,k);cmdsetup();Sleep(10);PortWriteByte(0x288,l1[j]);datasetup();PortWriteByte(0x288,l2[j]);datasetup();return;}void showhy() /*显示欢迎界面*/ {printf("Press any key to begin!\n\n");getch();cout<<"aaaaaaaa"<<endl;if(!Startup()){printf("ERROR: Open Device Error!\n");return;}PortWriteByte(0x28b,0x80);clear();PortWriteByte(0x288,0x80);cmdsetup();Sleep(10);for (i=0;i<16;i++){PortWriteByte(0x288,lhy1[i]);datasetup();};PortWriteByte(0x288,0x90); cmdsetup();Sleep(10);for (i=16;i<32;i++){PortWriteByte(0x288,lhy1[i]);datasetup();};PortWriteByte(0x288,0x88); cmdsetup();Sleep(10);for (i=0;i<16;i++){PortWriteByte(0x288,lhy2[i]);datasetup();};PortWriteByte(0x288,0x98); cmdsetup();Sleep(10);。