基于51单片机的电子时钟的设计..
基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计1. 本文概述随着现代科技的发展,电子时钟已成为日常生活中不可或缺的一部分。
本文旨在介绍一种基于51单片机的多功能电子钟的设计与实现。
51单片机因其结构简单、成本低廉、易于编程等特点,在工业控制和教学实验中得到了广泛应用。
本文将重点阐述如何利用51单片机的这些特性来设计和实现一个具有基本时间显示、闹钟设定、温度显示等功能的电子钟。
本文的结构安排如下:将详细介绍51单片机的基本原理和特点,为后续的设计提供理论基础。
接着,将分析电子钟的功能需求,包括时间显示、闹钟设定、温度显示等,并基于这些需求进行系统设计。
将详细讨论电子钟的硬件设计,包括51单片机的选型、时钟电路、显示电路、温度传感器电路等。
软件设计部分将介绍如何通过编程实现电子钟的各项功能,包括时间管理、闹钟控制、温度读取等。
本文将通过实验验证所设计的电子钟的功能和性能,并对实验结果进行分析讨论。
通过本文的研究,旨在为电子钟的设计提供一种实用、经济、可靠的方法,同时也为51单片机的应用提供一个新的实践案例。
2. 51单片机概述51单片机,作为一种经典的微控制器,因其高性能、低功耗和易编程的特性而被广泛应用于工业控制、智能仪器和家用电器等领域。
它基于Intel 8051微处理器的架构,具备基本的算术逻辑单元(ALU)、程序计数器(PC)、累加器(ACC)和寄存器组等核心部件。
51单片机的核心是其8位CPU,能够处理8位数据和执行相应的指令集。
51单片机的内部结构主要包括中央处理单元(CPU)、存储器、定时器计数器、并行IO口、串行通信口等。
其存储器分为程序存储器(ROM)和数据存储器(RAM)。
程序存储器通常用于存放程序代码,而数据存储器则用于存放运行中的数据和临时变量。
51单片机还包含特殊功能寄存器(SFR),用于控制IO端口、定时器计数器和串行通信等。
51单片机的工作原理基于冯诺伊曼体系结构,即程序指令和数据存储在同一块存储器中,通过总线系统进行传输。
基于51单片机的电子时钟设计

基于51单片机的电子时钟设计
摘要:本文论述了基于51单片机的电子时钟设计,包括硬件设计与软件编程。
其中,硬件设计包括基本指示灯、DS1302时钟芯片等的选择与连接,时钟电路、晶振电路的设计等。
软件编程包括时钟显示的实现,时钟校准、闹钟等功能的实现等。
本设计具有精度高、操作简便、易于实现等特点,可广泛应用于各种场合。
关键词:51单片机;电子时钟;硬件设计;软件编程
前言
随着人们生活水平的提高,电子时钟已经成为人们生活中必不可少的物品,目前市场上各种类型的电子时钟层出不穷。
本文以51单片机为基础,设计了一款高精度、易于操作的电子时钟,采用DS1302时钟芯片作为时钟驱动芯片,实现了时钟的准确显示、校准、闹钟等功能。
硬件设计
硬件设计主要包括控制器、时钟驱动、显示装置以及电源。
本设计采用了AT89C51单片机作为控制器,一块DS1302时钟芯片作为时钟驱动,LED数字管作为显示装置。
同时,本设计采用了USB供电方式,其电源电压为5V。
软件编程
软件编程主要包括时钟显示、时钟校准、闹钟功能的实现等。
时钟显示采用了动态显示方式,实现了时间的精确定位。
同时,本设计还具有时钟校准功能,在程序接通时,可自动对时钟进行校准,保证时钟的精确度。
此外,本设计还具有设置闹钟的功能,用户可在指定时间响起闹钟。
结论本文以51单片机为基础,设计了一款高精度、易于操作的电子时钟。
通过对硬件设计、软件编程的设计与实现,使得该产品能够准确显示时间,保证了时钟的稳定性,满足了时间的要求,目前已
得到广泛应用。
基于51单片机的数字电子时钟设计

课程设计任务书摘要数字钟因其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。
单片机为基础上设计出来的数字时钟数字钟,在日常生活中最常见,应用也最广泛。
本次课程设计的时钟就是以STC89C52单片机为核心,配备LED显示模块、时钟模块、等功能模块的数字电子钟。
采用24小时制方式显示时间。
文章主要从硬件设计和软件编程两个大的方面。
硬件电路设计主要包括中央处理模块、时钟模块,显示模块等几部分。
时钟电路采用DS1302芯片,并选用LED显示器。
软件方面用keil C语言来实现。
软硬件配合,达到电子时钟精准的显示。
关键字:单片机,时钟模块,精准目录1绪论 (2)1.1设计概述 (2)1.2技术简述 (2)1.3本课题的背景 (3)1.4本课题的意义 (3)2系统设计 (4)2.1设计目的 (4)2.2设计功能及要求 (4)2.3设计思路 (4)2.4硬件方案 (4)2.4.1时钟芯片的选择 (5)2.4.2显示屏的选择 (5)2.4.3单片机的选择 (5)2.5软件方案 (5)2.6整体方案 (6)2.7元器件清单 (6)3硬件设计 (7)3.1单片机最小系统 (7)3.1.1时钟电路 (7)3.1.2复位电路 (8)3.2时钟电路 (8)3.3电源电路 (9)3.4系统整体电路 (9)3.5系统仿真 (10)3.6硬件制作 (10)4软件设计 (11)4.1程序设计步骤 (11)4.2系统主程序 (11)4.3时钟模块子程序 (12)4.4显示模块子程序 (12)4.5主程序 (13)5联机调试 (14)6总结 (15)7参考文献 (16)1绪论1.1设计概述在单片机技术日趋成熟的今天,其灵活的硬件电路和软件程序的设计,使单片机得到广泛的应用,从小的电子产品,到大的工业控制,单片机都起到了举足轻重的作用。
数字电子时钟是基于单片机和DS1302时钟芯片的一种计时工具。
基于51单片机的电子时钟设计

基于51单片机的电子时钟设计51单片机是一种广泛应用于嵌入式系统的微控制器,由于其性能稳定、易于编程和成本相对较低的特点,被广泛应用于各种电子设备中。
在现代社会,电子时钟已经成为人们日常生活中不可或缺的工具。
随着科技的不断发展,电子时钟在功能和外观上都得到了极大的提升,如今的电子时钟不仅可以显示时间,还能设置闹钟、定时、显示温湿度等功能。
本文通过对51单片机的应用和实践,设计了一款功能丰富的电子时钟,旨在探讨如何利用51单片机实现电子时钟的设计与制作过程。
首先,我们将介绍51单片机的基本原理和特点。
51单片机是一种8位微控制器,由Intel公司于1980年推出,至今已有数十年的历史。
它采用哈佛结构,具有较高的工作速度和稳定性,适合用于各种嵌入式系统。
51单片机的指令系统简单,易于学习和掌握,因此被广泛用于各种嵌入式应用中。
除此之外,51单片机的外围设备丰富,可以通过外部扩展模块实现各种功能,如串口通信、定时器、数模转换等,这也为我们设计电子时钟提供了便利。
其次,我们将详细介绍基于51单片机的电子时钟的设计和实现过程。
电子时钟主要由时钟模块、显示模块、闹钟模块等部分组成,通过合理的接线和程序设计实现各种功能。
首先,我们设计时钟模块,通过外部晶振产生时钟信号,并利用51单片机的定时器模块实现时间的精确计算和显示。
同时,我们还设计了显示模块,采用数码管或液晶屏显示时间和日期信息,通过数字或字符的组合,使信息直观清晰。
此外,闹钟模块也是电子时钟的重要功能之一,我们可以设置闹钟时间,并在设定时间触发闹钟功能,提醒用户。
通过合理的程序设计,我们可以实现电子时钟的各种功能,并提升用户体验。
最后,我们将讨论基于51单片机的电子时钟在实际生活中的应用前景和发展趋势。
随着智能家居的快速发展,电子时钟作为家庭必备的电子设备,其功能和外观需求也在不断提升。
未来,基于51单片机的电子时钟将会更加智能化,可以与手机、电视等智能设备联动,实现更多个性化的功能。
基于51单片机的电子时钟设计

基于51单片机的电子时钟设计专业: 电子信息工程学生姓名: 学号:设计地点:指导教师:I摘要单片机SCM(Single Chip Microcomputer),即MicroController,是集微处理器(CPU)、存储器(ROM、RAM)、输入/输出口(1/0口)和定时器/计数器、中断系统等功能部件于一体的微控制器。
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
而51单片机是各单片机中最为典型和最有代表性的一种。
本次基于单片机电子时钟设计,是以AT89S52为主控制芯片,使用1602液晶作为显示输出,该系统走时准确,具有调时功能以及同时显示日期等功能本文将详细介绍AT89S52的时钟控制基本原理,从软件和硬件两方面进行分析。
关键词:单片机电子时钟 AT89S52 时钟控制II目录摘要 ..................................................................... ......................................................... II 目录 ..................................................................... .......................................................... 0 第1章绪论 ................................................................................................................... 1 第2章系统总体设计方案 ..................................................................... .. (1)2.1 设计功能要求 ..................................................................... (1)2.2 设计基本原理 ..................................................................... (1)2.3 设计、调试环境介绍 ..................................................................... (1)2.3.1 软件环境 ..................................................................... (1)2.3.2 硬件环境 ..................................................................... (1)2.4 参加人员及分工 ..................................................................... .......................... 2 第3章系统硬件分析与设计 ..................................................................... . (2)3.1 AT89S52管脚图 ..................................................................... .. (2)3.2 AT89C52管脚功能介绍 ..................................................................... .. (2)3.3 1602简介...................................................................... (3)3.3.1 1602LCD的基本参数及引脚功能 (3)3.3.2 引脚功能说明 ..................................................................... . (4)3.4 整体硬件电路原理图 ..................................................................... .................. 4 第4章系统软件分析与设计 ..................................................................... . (5)4.1 软件模块设计 ..................................................................... .............................. 5 第5章实物图展示 ..................................................................... ................................. 6 第6章改进意见与收获体会 ..................................................................... ................... 6 第7章主要参考资料 ..................................................................... . (6)附件 ..................................................................... (7)信息工程学院第1章绪论随着科学技术的不断发展,人们对时间计量的要求越来越高,在当今社会里,电子时钟得到了广泛的应用,基于单片机的电子时钟也越来越受到人们的欢迎,单片机的全称为单片微型计算机,常用英文缩写MCU表示单片机,单片机相当于一个没有去掉外围设备的微型计算机。
基于51单片机的简易电子钟设计

基于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单片机设计的简易电子钟可以显示当前时间,并且实现时间的调整和闹钟设定功能。
但是由于硬件资源有限,只能实现基本的功能,不能进行其他高级功能的扩展,例如闹铃的音乐播放、温度、湿度的显示等。
基于51单片机多功能电子时钟设计报告

单片机课程设计报告多功能电子数字钟姓名:学号:班级:指导教师:目录一课程设计题目-------------------------------- 3 二电路设计--------------------------------------- 4 三程序整体设计思路概述------------------- 5 四各模块程序设计及流程图---------------- 6 五程序及程序说明见附录------------------- ** 六课程设计心得及体会---------------------- 11 七参考资料--------------------------------------- 12一题目及要求本次单片机课程设计在Proteus软件仿真平台下实现,完成电路设计连接,编程、调试,仿真出实验结果。
具体要如下:用8051单片机设计扩展6位数码管的静态或动态显示电路,再连接几个按键和一个蜂鸣器报警电路,设计出一个多功能电子钟,实现以下功能:(1)走时(能实现时分秒,年月日的计时)(2)显示(分屏切换显示时分秒和年月日,修改时能定位闪烁显示)(3)校时(能用按键修改和校准时钟)(4)按时报警(能定点报时)本次课程设计要求每一个学生利用Proteus仿真软件独立设计制作出电路图、完成程序设计和系统仿真调试,验收时能操作演示。
最后验收检查结果,评定成绩分为:(1)完成“走时+显示+秒闪”功能----合格(2)完成“校时修改”功能----中等(3)完成“校时修改位闪”----良好(4)完成“定点报警”功能,且利用资源少----优秀二电路设计(电路设计图见附件电路图)(1)采纳89C51型号单片机(2)采纳8位共阴数码管(3)因为单片机输出高电平常输出的电流不足以驱动数码管,因此在P0口与8位数码管之间加74LS373来驱动数码管(4)P2口与数码管选择位直接加74LS138译码器(5)蜂鸣器接口。
基于51单片机的电子时钟的设计

基于51单片机的电子时钟的设计电子时钟已经成为我们日常生活中不可或缺的设备之一。
随着科技的不断发展,电子时钟也越来越智能化,功能也越来越强大。
然而,简单的电子时钟也非常实用,可以帮助我们准确地把握时间,安排生活。
本文将基于51单片机,介绍一个简单的电子时钟的设计。
第一步,硬件设计。
要实现电子时钟,我们需要用到一个时钟模块,它可以为我们提供一个准确的时间基准。
同时,我们还需要将时间显示在一个数码管上,所以在硬件设计中我们需要使用数码管。
此外,为了方便调试,我们需要一个串口模块,它可以将调试信息输出到PC端,供我们观察。
具体的硬件设计如下:1.时钟模块我们使用的是DS1302时钟模块,它可以提供准确的时间计算。
DS1302时钟模块有六个引脚,分别是:VCC、GND、CLK、DAT、RST、DS。
其中,VCC和GND分别连接电源正负极,CLK是时钟,DAT是数据,RST是复位,DS是时钟数据存储器。
2.数码管我们使用共阴数码管,它有12个引脚,其中11个引脚是段选线,另外一个引脚是位选线。
为了方便连接,我们可以使用数码管驱动芯片,如74HC595。
它可以将51单片机的串行数据转为并行数据,以驱动数码管。
3.串口模块串口模块是用于通信的模块,它有4个引脚,分别是:VCC、GND、TX、RX。
其中,VCC 和GND连接电源正负极,TX是发送端口,RX是接收端口。
第二步,软件设计。
软件设计主要包括三个部分,分别是时钟模块的驱动程序、数码管的驱动程序和主程序。
我们需要编写一个DS1302时钟模块的驱动程序。
通过驱动程序,我们可以读取当前时间,并将其设置为时钟模块的初始时间。
同时,我们还需要实现定时器中断,以更新时钟显示。
数码管驱动程序是通过74HC595芯片实现的。
我们需要编写一个函数,将当前时间转换为段选数据,再通过74HC595芯片输出到数码管上。
3.主程序主程序主要包括时钟的初始化、时钟的设置、时钟的显示等功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录0 前言 (1)1 总体方案设计 (1)2 硬件电路设计 (2)3 软件设计 (3)4 调试分析及说明 (4)5 结论 (5)参考文献 (5)课设体会 (6)附录1 电路原理 (8)附录2 程序清单 (8)电子钟的设计与仿真赵伟成都理工大学工程技术学院电气工程及其自动化3班摘要:传统的数字电子时钟采用了较多的分立元器件,不仅占用了很大的空间而且利用率也比很低,随着系统设计复杂度的不断提高,用传统时钟系统设计方法很难满足设计需求。
单片机是集CPU、RAM、ROM、定时器/计数器和多种接口于一体的微控制器。
它体积小、成本低、功能强,广泛应用于智能产品和工业自动化上。
而51系列的单片机是各单片机中最为典型和最有代表性的一种。
,本次设计提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在用C语言设计了具体软件程序后,将各个模块完全编译通过过后,结果证明了该设计系统的可行性。
该设计给出了以AT89C2051为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示数字的设计方案,适当地解决了实际生产和日常生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的应用性。
关键字:AT89C2051,C语言程序,电子钟。
0前言利用51单片机开发电子时钟,实现时间显示、调整和闹铃功能。
具体要求如下:(1)按以上要求制定设计方案,并绘制出系统工作框图;(2)按要求设计部分外围电路,并与单片机仿真器、单片机实验箱、电源等正确可靠的连接,给出电路原理图;(3)用仿真器及单片机实验箱进行程序设计与调试;(4)利用键盘输入调整秒、分和小时时刻,数码管显示时间;(5)实现闹钟功能,在设定的时间给出声音提示。
1总体方案设计该电子时钟由89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,利用单片机内部定时计数器0通过软件扩展产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。
闹钟和时钟的时分秒的调节是由一个按键控制,而另外一个按键控制时钟和闹钟的时间的调节。
图1 系统结构框图该电子时钟由STC89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,晶振电路的晶振频率为12MHZ,使用的定时器/计数器工作方式0,通过软件扩展产生的一秒定时,达到时分秒的计时,60秒为一分钟,60分钟为一小时,24小时为一天,又重00:00:00开始计时。
没有按键按键按下时,时钟正常运行,当按下调节时钟按键K1,就会关闭时钟,当按下闹钟按键K3时时钟就会进入设置时间界面,但是时钟不会停止工作,按K2键,,就可以对时钟和闹钟要设置的时间进行调整。
2硬件电路设计(1)时钟电路设计单片机利用外部12MHZ晶振构成振荡电路作为时钟源,时钟电路的原理如下图。
图2 时钟电路图(2)独立按键输入电路按键处理设置为:当有没键按下时,时钟正常运行;当按一次K1,时钟停止走动,按K2对秒进行调整;当K1按2次时,按K2 对分进行调整;当K1按下3次时,按K2 对小时进行调整,当按下4次K1时,校时完毕,时钟按设定的时间进行正常走时。
当按1次K3进入闹钟设置界面,时钟继续进行走时,按K2对秒进行设置;当按2次K3,按K2对分进行设置;当按3次K3,按K2对秒进行设置;当按下4次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脚:空脚或背灯电源。
电路如下图图5 LCD液晶显示图3软件设计本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整程序、延时程序四大模块。
系统的流程图如下图设计思路:本系统主要可分为主程序、定时计数中断程序、时间调整程序、延时程序和LCD 液晶驱动程序。
定时中断程序是利用单片机内部定时器0实现1秒的定时,然后利用软件延时实现分小时,时间调整程序是利用单片机的内部存贮器,把调整好的时间写到显示时间的存贮单元,然后启动定时器开始计时并显示,延时程序是利用软件实现延时达到去抖的目的。
液晶启动程序是为了把单片机的数据送到显示器的同时让显示器的第6脚使能断的电平实现由1到0的跳变,使显示器执行显示的命令。
主程序就是利用这些子程序中断程序实现显示、定时、闹钟等功能。
4调试分析及说明(1) 时钟正常运行调试仿真图图6 正常运行仿真图(2) 闹钟调试仿真图图7 对闹钟时间进行设置图8 设置好的闹钟时间图9 闹钟响铃(3) 时间调整仿真图10 对时分秒的调整5 结论本次电子时钟的设计基本完成:当没有键按下时,时钟正长运行;当按一次K1,时钟停止走动,按K2对秒进行调整;当K1按2次时,按K2 对分进行调整;当K1按下3次时,按K2 对分进行调整,当按下4次K1时,校时完毕,时钟按设定的时间进行正常走时。
当按1次K3进入闹钟设置界面,时钟继续进行走时,按K2对秒进行设置;当按2次K3,按K2对分进行设置;当按3次K3,按K2对秒进行设置;当按下4次K3时,闹钟设置完毕进入时钟显示界面。
参考文献1、《单片机原理及应用》李建忠编西安电子科技大学出版社。
2、《单片微型计算机原理与接口技术》高峰编电子工业出版社。
3、《单片机应用新技术教程》邹逢兴编高等教育出版社。
4、《16位微型计算机原理接口及其应用》朱宇光编电子工业出版社。
5、《微型计算机原理与接口技术》吴秀清编中国科学技术出版社。
6、《微型计算机接口技术》邓亚平编清华大学出版社。
7、《单片机原理及及应用》王迎旭编机械工业出版社。
课设体会两周的课程设计到目前为止可以说是告一段落了,我也顺利的完成了自己的课题简易电子时钟的设计,由于自己一心准备考研在这次课程设计上除了那些必要的时间其余也么有花太多的时间,本想改进的第三个跑表功能由于在程序上出了点问题就没花时间去做了,所以这次设计还不算很完美刚开始被拿到这个课题的,感觉挺迷茫的,当时就只知道软件编程要用到定时器,自己也就在这方面懂一点,其余的关于硬件电路,液晶显示电路的驱动的什么都不知道,后来回来之后就看了一下51单片机课程设计那本书,在网上找了一些资料对硬件电路的设计有了一定的了解。
在大脑里面有了一个大致的思路了,于是就把仿真软件装好开始了我的课设。
本次课设让我对单片机有了更深入的认识,现代社会中几乎处处都有单片机的影子,电子产品离不开它。
课设提高了我的单片机实际运用能力,也发现了自己以前学习的不扎实,对问题不求甚解。
现在才知道“书到用时方少”啊!学习还是得扎实。
本次课设能顺利完成,甚是感谢指导老师的帮助。
[2012年7月16日完成]附录1 电路原理附录2 程序清单#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar table[]="TIME";sbit lcden=P3^4;sbit lcdrs=P3^5;sbit beep=P3^6;extern void key1();extern void key2();extern void key3();uchar num,hour=12,minite,second, ahour,aminite,asecond,a,F_k1,F_k2,F_k3; void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void write_com(uchar com){lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}void write_data(uchar date){lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void write_add(uchar add,uchar date) {uchar aa,bb;aa=date/10;bb=date%10;write_com(0x80+add);write_data(0x30+aa);write_data(0x30+bb);}void init(){lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);}void display(uchar h,uchar m,uchar s) {write_com(0x80+0x04);write_data(':');write_data(0x30+(h/10));write_data(0x30+(h%10));write_data(':');write_data(0x30+(m/10));write_data(0x30+(m%10));write_data(':');write_data(0x30+(s/10));write_data(0x30+(s%10));write_data(' ');write_data(' ');write_data(' ');write_data(' ');}void main(){init();TMOD=0X01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;TR0=1;ET0=1;for(num=0;num<4;num++)write_data(table[num]);}while(1){key1();key2();key3();if(ahour==hour&&aminite==minite&&second<10) {beep=~beep;}if(F_k1==0&F_k3==0)display(hour,minite,second);}}void timer0() interrupt 1{TH0=(65535-50000)/256;TL0=(65535-50000)%256;a++;if(a==20){a=0;second++;if(second==60){second=0;minite++;if(minite==60){minite=0;hour++;if(hour==24){hour=0;}}}}#include "reg52.h"#define uchar unsigned char#define uint unsigned intsbit k1=P1^0;sbit k2=P1^1;sbit k3=P1^2;extern uchar F_k1,F_k3,second,minite,hour,ahour,aminite,asecond; extern void write_com(uchar com);extern void write_add(uchar add,uchar date);extern void display(uchar h,uchar m,uchar s);void delay_key(int i){while(i--);}void key1(){if(k1==0){delay_key(100);if(k1==0){TR0=0;while(!k1);F_k1++;if(F_k1==4){F_k1=0;write_com(0x0c);TR0=1;}}}if(F_k1==1|F_k3==1){write_com(0x80+0x0c);write_com(0x0f);}if(F_k1==2|F_k3==2)write_com(0x80+0x09);write_com(0x80+0x06);}void key2(){if(k2==0){delay_key(100);{while(!k2);if(F_k1==1){second++;if(second==60)second=0;write_add(0x0b,second); }if(F_k1==2){minite++;if(minite==60)minite=0;write_add(0x08,minite); }if(F_k1==3){hour++;if(hour==24)hour=0;write_add(0x05,hour);}if(F_k3==1){asecond++;if(asecond==60)asecond=0;write_add(0x0b,asecond); }if(F_k3==2)aminite++;if(aminite==60)aminite=0;write_add(0x08,aminite);}if(F_k3==3){ahour++;if(ahour==24)ahour=0;write_add(0x05,ahour);}}}}void key3(){if(k3==0){delay_key(100);if(k3==0){while(!k3);F_k3++;if(F_k3==4){F_k3=0;write_com(0x0c);}if(F_k3==1)display(ahour,aminite,asecond); }}}。