《智能仪器设计》课程设计--实时日历时钟显示系统的制作

合集下载

日历和数字钟课程设计

日历和数字钟课程设计

日历和数字钟课程设计一、课程目标知识目标:1. 学生能够理解日历的基本概念,掌握年、月、日之间的关系及其计算方法。

2. 学生能够了解数字钟的原理,掌握时、分、秒的换算及其相互关系。

3. 学生能够运用所学知识解决与时间相关的问题,提高时间管理能力。

技能目标:1. 学生能够运用日历知识,独立制作简易的日历,培养动手操作能力。

2. 学生能够设计并制作简单的数字时钟,提高逻辑思维和编程能力。

3. 学生能够运用所学知识解决实际生活中的时间问题,提高问题解决能力。

情感态度价值观目标:1. 学生通过学习日历和数字钟知识,培养珍惜时间、合理安排时间的观念。

2. 学生在学习过程中,培养合作意识,学会与同学共同探究、分享成果。

3. 学生能够认识到数学知识在生活中的广泛应用,增强学习数学的兴趣和信心。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为小学四年级数学课程,以日历和数字钟为主题,结合日常生活实例,培养学生的数学应用能力。

2. 学生特点:四年级学生具有一定的数学基础和动手操作能力,对新鲜事物充满好奇心,善于合作与分享。

3. 教学要求:教师应注重理论与实践相结合,以学生为主体,引导学生主动探究、积极思考,提高学生的数学素养。

同时,关注学生的情感态度价值观的培养,使学生在学习过程中形成正确的价值观。

通过分解课程目标,为后续教学设计和评估提供明确的方向。

二、教学内容1. 日历的认识与制作:- 日历的基本概念:年份、月份、日期- 日历的制作方法:平年与闰年的判断,月份天数的计算,星期的推算2. 数字时钟的原理与设计:- 数字时钟的组成:时、分、秒- 数字时钟的换算关系:时与分、分与秒的换算- 数字时钟的设计:电子时钟原理,简易数字时钟的制作3. 实践与应用:- 制作简易日历:学生动手制作,巩固所学知识- 设计数字时钟:运用编程思维,设计并制作数字时钟- 生活实例分析:运用日历和数字钟知识解决实际生活问题教学内容安排与进度:第一课时:日历的基本概念与制作方法第二课时:数字时钟的原理与设计第三课时:实践与应用(制作简易日历、设计数字时钟、生活实例分析)教材章节及内容:《数学》四年级下册第二章“时间与测量”- 第二节:日历的认识与制作- 第三节:数字时钟的原理与设计三、教学方法为了激发学生的学习兴趣和主动性,本章节将采用以下多样化的教学方法:1. 讲授法:- 对于日历和数字钟的基本概念、原理等知识点,教师通过生动的语言和形象的比喻进行讲解,帮助学生建立清晰的知识框架。

基于DS1302实时日历时钟显示系统的设计

基于DS1302实时日历时钟显示系统的设计

(1)可以准确地显示背景时间(时、分、秒)及公历日期(年、月、日、星期)。

(2)该系统存储的时间信息在掉电的情况下至少保存10年。

(3)日历时钟信息通过数码管进行实时显示。

(4)为系统的显示装置设计驱动电路,以提高数码管的显示亮度。

(6)时间显示可以选择24小时模式或带有“PM”和“AM”指示的12小时模式。

任务要求:(1)查阅不少于12篇的相关资料,其中英文文献不少于2篇;(2)查阅相关资料,提出出设计方案,完成开题报告;(3)完成实时日历时钟显示系统的硬件和软件设计(4)在proteus中对系统或相关环节进行调试、仿真或试验,验证设计的正确性、可行性。

目录摘要................................................................................................................................... 错误!未定义书签。

ABSTRACT .......................................................................................................................... 错误!未定义书签。

1 绪论................................................................................................................................. 错误!未定义书签。

1.1 数字电子钟的背景................................................................................................ 错误!未定义书签。

智能电子时钟课程设计

智能电子时钟课程设计

智能电子时钟课程设计一、课程目标知识目标:1. 让学生了解智能电子时钟的基本结构、工作原理及设计方法;2. 使学生掌握电子时钟的主要组成部分,如时钟芯片、显示屏、按键等;3. 帮助学生理解电子时钟程序设计的基本思路和流程。

技能目标:1. 培养学生运用所学知识设计、制作简易智能电子时钟的能力;2. 提高学生动手操作、调试电子器件的技能;3. 培养学生运用编程软件进行程序设计和调试的能力。

情感态度价值观目标:1. 激发学生对电子科技的兴趣,培养创新精神和动手实践能力;2. 培养学生团队协作、沟通交流的能力,增强合作意识;3. 培养学生关注社会发展,认识到科技对生活的影响,树立正确的价值观。

课程性质:本课程为实践性较强的课程,结合理论知识与实践操作,注重培养学生的动手能力和创新意识。

学生特点:学生具备一定的电子基础知识,对新鲜事物充满好奇,喜欢动手实践。

教学要求:教师应注重理论与实践相结合,引导学生主动参与,关注学生的个体差异,因材施教,确保每个学生都能在课程中收获知识和技能。

同时,注重培养学生的团队合作意识和沟通能力。

通过本课程的学习,使学生能够达到上述课程目标,具备设计、制作简易智能电子时钟的能力。

二、教学内容1. 电子时钟的基本原理:介绍时钟芯片的工作原理,时钟信号的产生、计数和显示;2. 电子时钟的硬件组成:讲解时钟芯片、显示屏、按键、电源等硬件部件的功能和选型;3. 电子时钟程序设计:分析电子时钟的程序设计思路,包括初始化设置、时间计数、按键扫描、显示控制等;4. 程序编写与调试:指导学生运用编程软件,编写电子时钟程序,并进行调试;5. 电子时钟的制作与组装:教授学生如何安装、焊接电子元件,进行电路板的搭建;6. 功能拓展与优化:探讨如何为电子时钟增加闹钟、温度显示等拓展功能,提高电子时钟的实用性。

教学内容安排与进度:第一课时:电子时钟的基本原理及硬件组成介绍;第二课时:电子时钟程序设计思路分析;第三课时:程序编写与调试;第四课时:电子时钟的制作与组装;第五课时:功能拓展与优化。

电子课程设计自动日历表

电子课程设计自动日历表

电子课程设计自动日历表一、教学目标本课程的学习目标主要包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握电子课程设计自动日历表的基本原理和实现方法;技能目标要求学生能够运用所学知识,独立设计并制作一个自动日历表;情感态度价值观目标要求学生在学习过程中,培养对科学探究的兴趣,增强团队协作意识,提高创新能力和实践能力。

二、教学内容根据课程目标,本课程的教学内容主要包括自动日历表的原理、设计方法和制作技巧。

教学大纲安排如下:1.第一章:自动日历表概述,介绍自动日历表的定义、功能和应用场景。

2.第二章:自动日历表的原理,讲解自动日历表的工作原理和相关电子元件。

3.第三章:自动日历表的设计,介绍自动日历表的设计方法和步骤。

4.第四章:自动日历表的制作,讲解自动日历表的制作技巧和注意事项。

5.第五章:自动日历表的调试与优化,介绍如何对自动日历表进行调试和优化。

三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式。

包括:1.讲授法:用于讲解自动日历表的原理、设计方法和制作技巧。

2.讨论法:学生针对实际案例进行讨论,培养学生的思考和分析能力。

3.案例分析法:分析典型案例,使学生更好地理解和掌握自动日历表的设计与制作。

4.实验法:安排学生动手制作自动日历表,提高学生的实践能力和创新能力。

四、教学资源本课程所需教学资源包括:1.教材:选用国内知名出版社出版的电子课程设计自动日历表相关教材。

2.参考书:推荐学生阅读与自动日历表相关的电子技术书籍。

3.多媒体资料:制作精美的PPT,用于辅助讲解和展示。

4.实验设备:提供充足的实验设备,确保每个学生都能动手实践。

5.在线资源:推荐学生访问相关电子技术,了解行业动态和先进技术。

五、教学评估本课程的教学评估将采用多元化评价方式,以全面、客观、公正地评估学生的学习成果。

评估内容包括:1.平时表现:评价学生在课堂上的参与度、提问回答、小组讨论等,占总评的20%。

具有温度显示的电子实时时钟万年日历系统的设计与制作

具有温度显示的电子实时时钟万年日历系统的设计与制作

毕业设计(论文)《具有温度显示的电子实时时钟/万年日历系统的设计与制作》专业(系)电气工程系铁道通讯信号方向班级铁道通讯091学生姓名陈志军指导老师赵巧妮完成日期2011.11.22摘要本设计以数字集成电路技术为基础,单片机技术为核心。

本文详细的介绍基于AT89S51单片机带有温度和闹钟的万年历控制系统。

利用单片机定时计数器提供秒信号,DS18B20数字式温度传感器进行温度数据传输,经软件处理,在动态扫描后,利用8个共阳数码管交替显示年月日、时分秒、环境温度值。

为了更好的调节和设置,设计了四个按键快速进行时间和闹钟的精准调整。

关键字:单片机;万年历;温度;闹钟;DS18B20AbstractThis design with digital integrated circuit technology as the foundation, microcontroller technology as the core. This paper is introduced in detail based on AT89S51 with temperature and the alarm clock calendar control system. Using single chip computer timing counter offer seconds signal, the temperature sensor DS18B20 digital temperature data transmission, the software processing, in dynamic scan, a total of 8 Yang digital tube alternate show dates, meticulous, environment when the temperature. In order to better regulate and settings, design the four keys of rapid time and alarm the accuracy of adjustment.Key words:Microcomputer; Calendar;Temperature; Alarm clock; DS18B20; Dynamic scanning目录摘要 (I)第1章引言 (1)1.1研究背景 (1)1.2论文研究目标和意义 (1)1.3论文章节安排 (1)第2章任务与要求 (2)2.1课题概述 (2)2.1.1 设计内容 (2)2.1.2 要求 (2)第3章方案论证与设计 (3)3.1 总体设计分析 (3)3.2 方案的选择与设计 (3)3.2.1 显示模块选择方案和论证: (3)3.2.2 时钟芯片的选择方案和论证: (3)3.2.3 温度传感器的选择方案与论证: (4)3.3 方案确定 (4)第4章硬件电路设计 (5)4.1 硬件电路设计框图 (5)4.1.1 系统硬件概述 (5)4.1.2 单片机主控制模块的设计 (5)4.1.3 振荡电路 (6)4.1.4 复位电路 (6)4.1.5 温度采集模块设计 (6)4.1.6 显示模块的设计 (7)4.1.7 蜂鸣器电路 (8)4.1.8 按键电路 (8)第5章系统的软件设计 (10)5.1编程环境及语言: (10)5.2程序流程框图 (10)第6章电路调试 (12)6.1调试的设备 (13)6.2调试步骤 (13)6.2.1 硬件调试 (13)6.2.2 软件调试 (13)第7章使用说明 (17)7.1 使用方法 (17)7.1.1 系统面板介绍 (17)7.1.2 调整方法 (17)7.1.3 调整框图 (18)7.1.3 注意事项 (19)7.2故障分析 (19)7.2.1 LED数码管显示不全、模糊、多出相对较暗的一位 (19)7.2.2 调整时按键过于灵敏 (19)心得体会 (20)参考文献 (21)附件 (22)附件一:总原理图 (22)附件二:PCB版图 (23)附件三:元件清单 (24)附录四:程序代码 (26)引言1.1研究背景当今社会逐渐步入信息化时代,快节奏、高效率成为当今时代的主题。

智能电子钟的设计与制作

智能电子钟的设计与制作

智能电子钟的设计与制作
一、智能电子钟介绍
智能电子钟是一种智能时钟,它使时间管理变得更加简单。

它能够自
动调整时间,从而使您能够更准确地了解接下来要做什么事情和按时完成。

此外,您还可以利用它来设置闹钟来提醒您定期进行的事务,以及跟踪重
要节日和事件。

二、智能电子钟的设计原理
三、电子钟的设计过程
1.准备电子元器件:在制作智能电子钟的过程中,要准备一些电子元
器件,比如电阻、导线、电磁铁、晶体振荡器等;
2.绘制原理图:在绘制原理图时,需要根据设计的功能,在原理图上
指定每个模块的功能模式以及每个部件的工作方式;
3.制作电路板:通过制作电路板,可以将整个电子钟系统的小模块组
合成一个完整的系统,以实现功能的设计要求;
4.编写程序:经过前三步,需要根据实际应用的需要,编写出智能电
子钟的控制程序,以实现具体的智能功能;
5.试验与调试:在最后一步。

智能仪器仪表课程设计

智能仪器仪表课程设计

智能仪器仪表课程设计一、课程目标知识目标:1. 理解智能仪器仪表的基本原理,掌握其功能、分类及在工程领域的应用。

2. 学会分析智能仪器仪表的电路结构,了解其主要部件的工作原理及相互关系。

3. 掌握智能仪器仪表使用及维护的基本方法,具备解决实际问题的能力。

技能目标:1. 能够运用所学知识,对智能仪器仪表进行简单的操作与调试。

2. 能够分析并解决智能仪器仪表使用过程中出现的常见故障。

3. 培养学生的动手实践能力,提高团队协作和沟通能力。

情感态度价值观目标:1. 培养学生对智能仪器仪表的兴趣,激发他们探索科学技术的热情。

2. 增强学生的责任感,使其认识到智能仪器仪表在工程领域的重要作用。

3. 培养学生严谨、务实的科学态度,提高他们的创新意识和创新能力。

本课程针对高年级学生,结合学科特点和教学要求,旨在使学生掌握智能仪器仪表的基本知识,提高实践操作能力,培养他们的创新精神和团队协作能力。

课程目标具体、可衡量,便于教师进行教学设计和评估。

通过本课程的学习,学生将能够更好地适应未来工程领域的发展需求。

二、教学内容1. 智能仪器仪表概述- 了解智能仪器仪表的发展历程、功能特点及分类。

- 掌握智能仪器仪表在工程领域的应用。

2. 智能仪器仪表的原理与结构- 学习传感器、执行器、微处理器等主要部件的工作原理。

- 分析典型智能仪器仪表的电路结构及其相互关系。

3. 智能仪器仪表的使用与维护- 掌握智能仪器仪表的安装、调试、操作方法。

- 学会智能仪器仪表的日常维护及故障排除。

4. 智能仪器仪表实践操作- 设计并实施简单的智能仪器仪表操作实验。

- 分析实验结果,解决实际问题。

5. 智能仪器仪表案例分析- 研究典型智能仪器仪表在实际工程中的应用案例。

- 分析案例中智能仪器仪表的作用和价值。

教学内容依据课程目标进行选择和组织,确保科学性和系统性。

教学大纲明确教学内容安排和进度,与教材章节相对应。

通过本章节的学习,学生将全面了解智能仪器仪表的相关知识,为实际应用打下坚实基础。

虚拟仪器课程设计报告(闹钟)

虚拟仪器课程设计报告(闹钟)

时间:2012/12/31签名:一、课程设计背景1.前言20多年前,美国国家仪器公司NI (National Instruments)提出“软件即是仪器”的虚拟仪器(VI)概念,引发了传统仪器领域的一场重大革命,使得计算机和网络技术得以长驱直入仪器领域,和仪器技术结合起来,从而开创了“软件即是仪器”的先河。

LabVIEW是NI推出的虚拟仪器开发平台软件,它们能够以其直观简便的编程方式、众多的源码级的设备驱动程序、多种多样的分析和表达功能支持,为用户快捷的构筑自己的实际生产中所需要的仪器系统创造了基础条件。

虚拟仪器由计算机、模块化功能硬件和应用软件三大部分组成,一般而言,虚拟仪器所用的计算机是通用的计算机,虚拟仪器根据其模块化功能硬件不同,而有多种构成方式。

其中NI—DAQ测试系统是构成虚拟仪器VI得最常用的最基本的方式,因为一般而言,这种类型的虚拟仪器成本比较低,它能充分利用计算机的设计能力,并通过软件实现对数据的显示、存储以及分析处理。

图1 虚拟仪器系统框架图2.工具软件简介令的先后顺序决定程序执行顺序,而LabVIEW 则采用数据流编程方式,程序框图中节点之间的数据流向决定了VI及函数的执行顺序。

VI指虚拟仪器,是LabVIEW 的程序模块。

LabVIEW是图形化编程语言,也是第三代的编程语言,LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。

LabVIEW提供很多外观与传统仪器(如示波器、万用表)类似的控件,可用来方便地创建用户界面。

用户界面在LabVIEW中被称为前面板。

使用图标和连线,可以通过编程对前面板上的对象进行控制。

这就是图形化源代码,又称G 代码。

LabVIEW的图形化源代码在某种程度上类似于流程图,因此又被称作程序框图代码。

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

《智能仪器设计》课程设计--实时日历时钟显示系统的制作河南农业大学《智能仪器设计实习》设计说明书题目:学院:专业:班级:学号:姓名:指导教师:成绩:时间:年月日至年月日实时日历时钟显示系统的制作一、背景及意义在当前繁忙的生活,学习,工作中,时间与每个人都有密切的关系,每个人都受到时间的影响,随着生活水平的提高,传统时钟已不能满足人们的需求,因此实时日历时钟面市了,应用于日常日历时间显示方面,并得到广泛推广。

本设计的实时日历时钟显示系统,共可以显示计时万年,最小时间单位是1s;其基本功能如下:(一)在51单片机系统中设置、获取、记录实时的日历时钟信息并通过LCD显示。

(二)能够进行长时间的记录,并且存储的时间信息在掉电情况下能长期保存。

(三)初始的时间信息用户可用键盘输入来设置。

二、系统分析系统框图及部分程序流程图:(一)系统框图:矩阵键盘:用于调节时间主控电路STC89C52AT24C02:数据存蜂鸣器模块:LCD1602液晶显示:显示时间(二)主函数(三) 键盘扫描子函数:开始 时间初始化键盘扫键盘扫开不停的检测按键不停的检测按键是否被按下,若有蜂鸣器发出滴声, 终止s1ns1s1s2=m+h+f+s2=s2光标光标光标m=h=m=结结结束S1nu结三、系统硬件设计(一) 矩阵键盘模块:用于调节时间和日期S3=m--m==S3=S3f--;h-f==h=结结结结结结S9:时间功能键与P3.0相连S13:增加键与P3.1相连S17:减少键与P3.2相连S9:日期功能键与P3.3相连RD:置低电平,按键有效(二)L CD1602液晶显示模块:显示时间和日期RS:读控制与P3.5相连WR:写控制与P3.6相连D0-D7:数据端口(三)A T24C02:数据存储芯片,用于断电存储数据。

SCL:控制总线与P2.1相连SDA:数据总线与P2.0相连(四)主控电路STC89C52模块:作为主控芯片,并用其内部定时器记时。

P0,P1,P2,P3四个IO口,用于接收和传送地址与数据;其中P3口有第二功能;RES:硬件复位键(五)蜂鸣器模块:发出滴的响声,表示有按键按下。

FM:蜂鸣器控制接口,与P2.3相接,低电平有效。

四、系统软件设计详见附录1。

五、结束语本次实时日历时钟显示系统设计具有闰年调节,日期错误调整等校正功能;按键自校正功能,防止误按键等措施,能保证时间日期的正确运行调节;共能显示万年的日历,时间能正确地走秒运行,但仍有其不足之处,其中走秒时间与真实走秒时间有一定的误差.【参考文献】[1] 李广弟等.《单片机基础》[M].北京:航空航天大学出版社,2001[2]杨欣荣等.《智能仪器原理、设计与发展》.中南大学出版社,2003[3]孙传友等.《感测技术基础》.电子工业出版社,2001[4]王福瑞等.《单片微机测控系统设计大全》.北京航空航天大学出版社,1999[5]李朝青编.《单片机原理及接口技术》(简明修订版).北京航空航天大学出版社,1998 [6]冯克.《MCS-51单片机实用子程序及其应用实例》.黑龙江科学技术出版社,1990[7]其他参考资料:《单片机与嵌入式系统应用》、《实用测试技术》、《自动化仪表》、《传感器世界》、《测控技术》、《电子技术应用》等。

附录参考文献格式要求如下:参考文献的著录均应符合国家有关标准(按GB7714—87 《文后参考文献著录格式》执行)。

以“参考文献”字样(四号宋体加粗)居中排作为标识;参考文献的序号左顶格,并用数字加方括号表示,如[1],[2],…,以与正文中的指示序号格式一致。

每一参考文献条目的最后均以“.”结束。

各类参考文献条目的编排格式及示例如下。

1.连续出版物[序号] 主要责任者.文献题名[J] .刊名,出版年份,卷号(期号) :起止页码.例如:[1] 宋维明.用科学发展观指导高校教育改革的实践[J].河南农业大学理学院学报,2005,4(增刊):8-10.2.专著[序号] 主要责任者.文献题名[M] .出版地:出版者,出版年:起止页码.例如:[2] 王沙生.杨树栽培生理研究.北京:北京农业大学1991:11-12.3.会议论文集[序号] 主要责任者.文献题名[A]//主编.论文集名[C].出版地:出版者,出版年:起止页码.例如:[3] 韩海荣.加强实践教学是培养创新人才的保障[A]//宋维明.高校教学改革、探索、实践[C] .北京:中国林业出版社,2002:362-365.4.学位论文[序号] 主要责任.文献题名[D] .保存地:保存单位,年份.例如:[4] 李梅.辽东栎天然群体表型多样性研究[D] .北京:河南农业大学理学院,1998.5.报告[序号] 主要责任.文献题名[R] .报告地:报告会主办单位,年份.例如:[5] 江泽民.全面建设小康社会,开创中国特色社会主义事业新局面[R] .北京:人民出版社,2002:38.6.专利文献[序号] 专利所有者.专利题名[P] .专利国别:专利号,发布日期.例如:[6] 姜锡洲.一种温热外敷药制备方案[P] .中国专利:881056078,1983-08-12.7.国际、国家标准[序号] 标准代号,标准名称[S] .出版地:出版者,出版年.例如:[7] GB/T 16159—1996,汉语拼音正词法基本规则[S] .北京:中国标准出版社,1996.8.报纸文章[序号] 主要责任者.文献题名[N] .报纸名,出版日期(版次).例如:[8] 晓颂,韦国华.高校结盟发展“教学共同体”[N] .光明日报,2001-06-08(B1).9.电子文献[序号] 主要责任者.电子文献题名[文献类型/载体类型] .电子文献的出版或可获得地址,发表或更新的期/引用日期(任选).例如:[10] 王明亮.关于中国学术期刊标准化数据库系统工程的进展[EB/OL] ./pub/wml.txt/ 9808 10-2.html,1998-08-16/1998-10-04.外国作者的姓名书写格式一般为:名的缩写、姓。

例如A. Johnson,R.O.Duda引用参考文献类型及其标识说明如下:根据GB3469规定,以单字母方式标识以下各种参数文献类型,如表2.1:表2.1 参数文献的标识参考文献类型专著论文集(单篇论文)报纸文章期刊文章文献类M C (A) N J型标识参考文献类型学位论文报告标准专利其它文献文献类型标识D R S P Z对于数据库、计算机程序及光盘图书等电子文献类型的参考文献,以下列字母作为标识,如表2.2:表2.2 电子文献的标识参考文献类型数据库(网上)计算机程序(磁盘)光盘图书文献类型标识DB(DB/OL) CP(CP/DK) M/CD引用电子文献的范围仅限于以上三种。

关于参考文献的未尽事项可参见国家标准《文后参考文献著录规则》(GB7714-87)。

附录1源程序:/***********************************功能介绍:有时间功能键,增加键,减少键,日期功能键;可根据不同键调节百年,年,月,日,时,分,秒;具有闰年调节,日期错误调整等校正功能;具有按键自校正功能,防止误按键;***********************************/#include<reg52.h>//包含52单片机头文件#define uchar unsigned char#define uint unsigned intbit write=0; //写24C02的标志;sbit sda=P2^0;sbit scl=P2^1;void delay0(){ ;; }void start() //开始信号{sda=1;delay0();scl=1;delay0();sda=0;delay0();}void stop() //停止{sda=0;delay0();scl=1;delay0();sda=1;delay0();}void respons() //应答{uchar i;scl=1;delay0();while((sda==1)&&(i<250))i++; scl=0;delay0();}void init_24c02()//IIC初始化函数{sda=1;delay0();scl=1;delay0();}void write_byte(uchar date)//写一个字节函数{uchar i,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;scl=0;delay0();sda=CY;delay0();scl=1;delay0();}scl=0;delay0();sda=1;delay0();}uchar read_byte()//读一个字节函数{uchar i,k;scl=0;delay0();sda=1;delay0();for(i=0;i<8;i++){scl=1;delay0();k=(k<<1)|sda;scl=0;delay0();}return k;}void write_add(uchar address,uchar date)//指定地址写一个字节{start();write_byte(0xa0);respons();write_byte(address);respons();write_byte(date);respons();stop();}char read_add(uchar address)//指定地址读一个字节{uchar date;start();write_byte(0xa0);respons();write_byte(address);respons();start();write_byte(0xa1);respons();date=read_byte();stop();return date;}sbit dula=P2^6; //定义锁存器锁存端sbit wela=P2^7;sbit rs=P3^5; //定义1602液晶RS端sbit lcden=P3^4;//定义1602液晶LCDEN端sbit rw=P3^6;sbit s1=P3^0; //定义按键--功能键sbit s2=P3^1; //定义按键--增加键sbit s3=P3^2; //定义按键--减小键sbit s4=P3^3; //定义按键--riqi功能键sbit rd=P3^7;sbit beep=P2^3; //定义蜂鸣器端uchar count,s1num;char miao,shi,fen;uchar n,moon,d,t,s4num,m;uchar code table[]=" 2013-12-03 ";//定义初始上电时液晶默认显示状态void delay(uint z) //延时函数{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void di()//蜂鸣器发声函数{beep=0;delay(100);beep=1;}void write_com(uchar com)//液晶写命令函数{rs=0;rw=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}void write_date(uchar date)//液晶写数据函数{rs=1;rw=0;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void write_sfm(uchar add,uchar date)//写时分秒函数{uchar shi,ge;shi=date/10;//分解一个2位数的十位和个位ge=date%10;write_com(0x80+0x40+add);//设置显示位置write_date(0x30+shi);//送去液晶显示十位write_date(0x30+ge); //送去液晶显示个位}void write_nyr(uchar add,uchar date)//写年月日函数{uchar shi,ge;shi=date/10;//分解一个2位数的十位和个位ge=date%10;write_com(0x80+add);//设置显示位置write_date(0x30+shi);//送去液晶显示十位write_date(0x30+ge); //送去液晶显示个位}void init()//初始化函数{uchar num;rd=0; //软件将矩阵按键第4列一端置低用以分解出独立按键dula=0;//关闭两锁存器锁存端,防止操作液晶时数码管会出乱码wela=0;lcden=0;fen=0; //初始化种变量值miao=0;shi=0;m=0;moon=0;d=0;n=0;s4num=0;count=0;s1num=0;init_24c02();write_com(0x38);//初始化1602液晶write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);//设置显示初始坐标for(num=0;num<13;num++)//显示年月日{write_date(table[num]);delay(5);}write_com(0x80+0x40+6);//写出时间显示部分的两个冒号write_date(':');delay(5);write_com(0x80+0x40+9);write_date(':');delay(5);miao=read_add(1);//首次上电从AT24C02中读取出存储的数据fen=read_add(2);shi=read_add(3);d=read_add(4);//首次上电从AT24C02中读取出存储的数据moon=read_add(5);n=read_add(6);m=read_add(7);write_nyr(10,d);//分别送去液晶显示write_nyr(7,moon);write_nyr(4,n);write_nyr(2,m);write_sfm(10,miao);//分别送去液晶显示write_sfm(7,fen);write_sfm(4,shi);TMOD=0x01;//设置定时器0工作模式1 TH0=(65536-50000)/256;//定时器装初值TL0=(65536-50000)%256;EA=1; //开总中断ET0=1; //开定时器0中断TR0=1; //启动定时器0}void keyscan()//按键扫描函数{if(s1==0){delay(5);if(s1==0)//确认功能键被按下{s1num++;//功能键按下次数记录while(!s1);//释放确认di();//每当有按键释放蜂鸣器发出滴声s4num=0;//终止日期调节write_com(0x0c);//光标不再闪烁if(s1num==1)//第一次被按下时{TR0=0; //关闭定时器write_com(0x80+0x40+10);//光标定位到秒位置write_com(0x0f); //光标开始闪烁}if(s1num==2)//第二次按下光标闪烁定位到分钟位置{write_com(0x80+0x40+7);write_com(0x0f);}if(s1num==3)//第三次按下光标闪烁定位到小时位置{write_com(0x80+0x40+4);write_com(0x0f);}if(s1num==4)//第四次按下{s1num=0;//记录按键数清零write_com(0x0c);//取消光标闪烁TR0=1; //启动定时器使时钟开始走}}}if(s1num!=0)//只有功能键被按下后,增加和减小键才有效{if(s2==0){delay(5);if(s2==0)//增加键确认被按下{while(!s2);//按键释放di();//每当有按键释放蜂鸣器发出滴声if(s1num==1)//若功能键第一次按下{miao++; //则调整秒加1if(miao==60)//若满60后将清零miao=0;write_sfm(10,miao);//每调节一次送液晶显示一下write_com(0x80+0x40+10);//显示位置重新回到调节处write_add(1,miao); //数据改变立即存入24C02}if(s1num==2)//若功能键第二次按下{fen++;//则调整分钟加1if(fen==60)//若满60后将清零fen=0;write_sfm(7,fen);//每调节一次送液晶显示一下write_com(0x80+0x40+7);//显示位置重新回到调节处write_add(2,fen);//数据改变立即存入24C02}if(s1num==3)//若功能键第三次按下{shi++;//则调整小时加1if(shi==24)//若满24后将清零shi=0;write_sfm(4,shi);//每调节一次送液晶显示一下write_com(0x80+0x40+4);//显示位置重新回到调节处write_add(3,shi);//数据改变立即存入24C02}}}if(s3==0){delay(5);if(s3==0)//确认减小键被按下{while(!s3);//按键释放di();//每当有按键释放蜂鸣器发出滴声if(s1num==1)//若功能键第一次按下{miao--;//则调整秒减1if(miao==-1)//若减到负数则将其重新设置为59miao=59;write_sfm(10,miao);//每调节一次送液晶显示一下write_com(0x80+0x40+10);//显示位置重新回到调节处write_add(1,miao);//数据改变立即存入24C02}if(s1num==2)//若功能键第二次按下{fen--;//则调整分钟减1if(fen==-1)//若减到负数则将其重新设置为59fen=59;write_sfm(7,fen);//每调节一次送液晶显示一下write_com(0x80+0x40+7);//显示位置重新回到调节处write_add(2,fen);//数据改变立即存入24C02}if(s1num==3)//若功能键第二次按下{shi--;//则调整小时减1if(shi==-1)//若减到负数则将其重新设置为23shi=23;write_sfm(4,shi);//每调节一次送液晶显示一下write_com(0x80+0x40+4);//显示位置重新回到调节处write_add(3,shi);//数据改变立即存入24C02}}}}}/************************时间调整************************/ //闰年判断uchar nian(uchar n){uchar y;if(n%400==0){y=1;}else if(n%100==0){y=0;}else if(n%4==0){y=1;}else y=0;return y;}//月天数判断uchar m_tian(uchar moon){uchar y,tian,nm;nm=n+m*100;y=nian(nm);if(moon==2){if(y==0)tian=28;else tian=29;}elseif(moon==4||moon==6||moon==9||moon==11) {tian=30;}else tian=31;return tian;}//键盘扫描1void keyscan1(){if(s4==0)//日期功能键实现{delay(5);if(s4==0){s4num++;//s4按下的次数while(!s4);di();s1num=0;//终止时间调节write_com(0x0c);//光标不再闪烁switch(s4num){case 1:{TR0=0;write_com(0x80+10);write_com(0x0f);//光标显示并闪烁break;}case2:write_com(0x80+7);write_com(0x0f);break;case3:write_com(0x80+4);write_com(0x0f);break;case4:write_com(0x80+2);write_com(0x0f);break;case 5:{s4num=0;write_com(0x0c);//光标不再闪烁TR0=1;break;}}}}//日期调整if(s4num!=0){if(s2==0){delay(5);if(s2==0)//时间增加调整{while(!s2);di();if(s4num==1){d++;t=m_tian(moon);if(d>t)d=1;write_nyr(10,d);write_com(0x80+10);write_add(4,d);}if(s4num==2){moon++;if(moon==13)moon=1;write_nyr(7,moon);write_com(0x80+7);write_add(5,moon); }if(s4num==3){n++;if(n==100)n=0;write_nyr(4,n);write_com(0x80+4);write_add(6,n);}if(s4num==4){m++;if(m==100)m=0;write_nyr(2,m);write_com(0x80+2);write_add(7,m);}}}if(s3==0)//时间减少调整{delay(5);if(s3==0){while(!s3);di();if(s4num==1){t=m_tian(moon);if(d==1)d=t+1;d--;write_nyr(10,d); write_com(0x80+10); write_add(4,d);}if(s4num==2){if(moon==1)moon=13;moon--;write_nyr(7,moon); write_com(0x80+7); write_add(5,moon); }if(s4num==3){if(n==0)n=100;n--;write_nyr(4,n);write_com(0x80+4);write_add(6,n);}if(s4num==4){if(m==0)m=100;m--;write_nyr(2,m);write_com(0x80+2);write_add(7,m);}}}}}void main()//主函数{init();//首先初始化各数据while(1)//进入主程序大循环{keyscan();//不停的检测按键是否被按下keyscan1();}}void timer0() interrupt 1//定时器0中断服务程序{TH0=(65536-50000)/256;//再次装定时器初值TL0=(65536-50000)%256;count++; //中断次数累加if(count==18) //20次50毫秒为1秒{count=0;miao++;if(miao==60)//秒加到60则进位分钟{miao=0;//同时秒数清零fen++;if(fen==60)//分钟加到60则进位小时{fen=0;//同时分钟数清零shi++;if(shi==24)//小时加到24则小时清零{shi=0;d++;t=m_tian(moon);if(d>t){d=1;moon++;if(moon==13){moon=1;n++;if(n==100){n=0;m++;if(m==100)m=0;write_nyr(2,m);//bainian若变化则重新写入write_add(7,m);//数据改变立即存入24C02}write_nyr(4,n);//nian若变化则重新写入write_add(6,n);//数据改变立即存入24C02}write_nyr(7,moon);//yue若变化则重新写入write_add(5,moon);//数据改变立即存入24C02}write_nyr(10,d);//tian若变化则重新写入write_add(4,d);//数据改变立即存入24C02}write_sfm(4,shi);//小时若变化则重新写入write_add(3,shi);//数据改变立即存入24C02}write_sfm(7,fen);//分钟若变化则重新写入write_add(2,fen);//数据改变立即存入24C02}write_sfm(10,miao);//秒若变化则重新写入write_add(1,miao);//数据改变立即存入24C02}}智能仪器设计实习心得经过本次实验课程设计,让我收获颇丰。

相关文档
最新文档