智能电子钟课程设计论文
- 格式:doc
- 大小:873.50 KB
- 文档页数:12
基于单片机的智能电子钟系统设计课程名称: MCS-51单片机应用设计基于单片机的智能电子钟系统设计摘要:电子钟是一种利用数字电路来显示时间的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。
本设计通过以单片机芯片STC89C51为核心,通过软件编程完成时钟及定时的基本功能,温度芯片DS18B20完成温度测量功能。
采用了六位数码管动态显示时、分、秒,两个LED灯分别指示上下午,同时还有两个LED灯每半秒分别闪烁一次。
通过4个外部按键可以控制小时和分钟的定时和定闹以及报警。
此电子钟具有性能优越,操作简单等优点。
关键词:智能电子钟、STC89C51、LED数码管、DS18B20毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。
据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。
作者签名:日期:毕业论文(设计)授权使用说明本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。
有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。
学校可以公布论文(设计)的全部或部分内容。
保密的论文(设计)在解密后适用本规定。
作者签名:指导教师签名:日期:日期:注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
多功能电子钟摘要:电子钟是一种利用时钟电路来显示时分秒的计数装置,与传统时钟相比,利用电子计数将时钟电子化,数字化而成的电子时钟,具有体积小,时钟精确,可扩展性强,显示直观等优点,被广泛应用于各个领域。
本设计主要是实现一款可正常显示时间、日历,并具有闹钟、秒表、整点报时以及测量当前环境温度的功能的多功能电子钟。
通过对当前时钟开发手段的比较与分析,以及结合自身情况,决定用单片机技术来实现多功能电子时钟。
本设计应用STC89C52芯片作为核心,简单的应用定时器功能实现基础的时钟及日历功能,LCD1602液晶显示屏构成现实模块,同时用DS18B20温度传感器实现当前环境温度测量的功能,最后用Keil软件进行编程,实现整体功能。
应用此种方法,电路简单明了,编程容易,操作简单,并且便于扩展其他功能。
应用前景:该电子时钟在日常生活和工作中,还可通过改装以提高性能或增加新的功能,从而给生产生活带来方便。
关键词:电子时钟;多功能;STC89C52;LCD1602液晶;DS18B20温度传感器;1 作品功能及总体方案1.1 功能描述电子钟是利用电子计数将时钟电子化,数字化而成的电子时钟,具有体积小,时钟精确,可扩展性强,显示直观,无机械传动装置等优点,被广泛应用于各种领域。
电子钟,最根本上是数字化了的时钟显示,在此基础上,人们根据各种需要,扩展了所需要的其它模块,实现相应功能,比如闹钟、秒表、计时器、整点报时、温湿度等,以此,更符合及适应生产与生活需要。
本设计利用1602液晶进行功能显示,主要实现了以下具体功能:1)、基本的时间显示,显示时、分、秒,并进行实时更新。
2)、日历功能的显示及手动校对功能。
可现实年、月、日、星期的显示,24小时制,并区分闰年与平年。
3)、当前环境温度显示的功能。
利用DS18B20温度传感器进行实时检测当前环境温度。
4)、闹钟定时功能。
5)、秒表计时功能。
6)、简单的整点报时功能。
1.2 系统组成及工作过程本设计的系统主要以单片机作为核心,向外扩展各个功能模块。
毕业设计论文_单片机电子时钟的设计摘要:电子时钟作为一种常见的时间显示装置,在现代社会中应用广泛。
本文设计了一款基于单片机的电子时钟,使用DS1307实时时钟芯片来获取系统时间,并通过数码管进行显示。
设计过程中,通过对单片机的编程和电路的连接,实现了时间的显示与调节功能,具有较高的准确性和稳定性。
该设计方案简单、实用,可用于各种场合。
关键词:单片机;电子时钟;DS1307;数码管1.引言电子时钟是一种利用电子技术构造的显示时间的装置,具有时间准确、使用简单、显示清晰等特点,广泛应用于生活和工作中。
本文以单片机为核心,设计了一款实时准确的电子时钟,提高了时间的准确度和稳定性。
2.设计原理该设计的核心是通过单片机与DS1307实时时钟芯片的连接,使得单片机可以获取到准确的系统时间,并通过数码管进行显示。
DS1307芯片通过I2C总线与单片机连接,通过读取芯片中的时间寄存器,单片机可以获得当前的时间信息。
3.硬件设计本设计中使用了AT89S52单片机作为主控芯片,通过引脚与DS1307芯片相连。
单片机的P0口接到数码管的段选信号,P1口接到数码管的位选信号,通过控制这两个口的输出状态,可实现对数码管上显示的数字进行控制。
同时,为了使时钟可以正常运行,需外接一个晶振电路为单片机提供时钟信号。
4.软件设计通过对单片机的编程,实现了以下功能:(1)初始化DS1307芯片,设置初始时间;(2)每隔一秒读取一次DS1307芯片的时间寄存器,将时间信息保存到单片机的RAM中;(3)根据当前时间信息,在数码管上显示对应的小时和分钟。
5.调试与测试经过硬件的连接以及软件的编写,进行了调试与测试。
将初始时间设置为08:30,观察数码管上的显示是否正确,以及时间是否准确。
同时,通过手动调节DS1307芯片中的时间,检查单片机是否能正确获取时间,并进行显示。
6.总结与展望本文设计了一款基于单片机的电子时钟,通过单片机与DS1307芯片的连接和编程,实现了准确的时间显示功能。
XX学院课程设计论文论文题目:数字电子钟的设计姓名:所在院系:电信学院班级:学号:指导教师:XX学院二〇一三年一月六日摘要单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲,一块芯片就成了一台计算机。
单片机具有体积小、功能强、应用面广等优点,为学习、应用和开发提供了便利条件。
现在,这种单片机的使用领域已十分广泛。
彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深深地融入我们每个人的生活之中。
单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。
此外,单片机在工商、金融、科研、教育、国防航空等领域都有着十分广泛的用途。
数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。
该课程设计为数字电子钟的设计。
以AT89C51为核心,配合LED 数码管显示器和按键为用户提供长期、连续、可靠、稳定的工作环境。
该数字电子钟有时分秒显示和日期显示以及时间和日期调整的功能。
系统软件设计包括单片机计算机两部分的编程。
计算机软件编程主要实现参数设置、串行口数据接收、指令发送以及数据的显示和存储。
单片机软件编程主要实现键盘、LED显示等各模块的功能,采用汇编语言编程。
数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。
关键词数字电子钟;单片机;LED显示第一章设计目的和方案 (4)1.1设计任务 (4)1.1.1 设计题目:数字电子钟 (4)1.1.2 设计目的与任务 (4)1.2功能要求说明 (4)1.3设计总体方案及工作原理 (5)第二章数字电子钟的硬件系统的设计 (6)2.1 硬件系统各模块功能设计 (6)2.1.1 单片机最小系统 (6)2.1.2 键盘模块 (6)2.1.3 LED显示电路 (6)2.1.4 接口电路 (7)2.2 电路原理图、PCB图和元器件布局 (7)2.3 元器件清单 (8)第三章数字电子钟的软件系统的设计 (8)3.1 使用的单片机资源的情况 (8)3.2 各模块功能简要介绍 (8)3.3 程序的流程图 (9)3.4 程序清单 (12)第四章设计仿真和结果分析 (13)4.1 设计结论和功能使用说明 (13)4.1.1 设计结论 (13)4.1.2 功能及使用说明 (13)4.2 仿真结果 (14)4.3 设计系统误差分析 (16)第五章设计小结 (16)致谢 (17)参考文献 (18)附录 (20)第一章设计目的和方案1.1设计任务1.1.1 设计题目:数字电子钟1.1.2 设计目的与任务通过理论设计和实物制作解决相应的实际问题,巩固和运用在《单片机原理及接口技术》中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。
电子时钟课程设计论文一、课程目标知识目标:1. 学生理解电子时钟的基本工作原理,掌握电子时钟的组成及各部分功能。
2. 学生学会读取和设置电子时钟的时间,了解电子时钟的时间计算方法。
3. 学生掌握电子时钟的调整和设置方法,了解电子时钟的常见故障及其解决方法。
技能目标:1. 学生能够运用所学知识,独立完成电子时钟的组装和调试。
2. 学生能够通过观察、分析,解决电子时钟使用过程中遇到的问题。
3. 学生能够运用电子时钟相关知识,设计并制作简单的电子时钟。
情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发学生探索科学技术的热情。
2. 培养学生合作学习的意识,提高学生的团队协作能力。
3. 培养学生珍惜时间、合理安排时间的观念,引导学生树立正确的时间价值观。
课程性质:本课程为电子技术实践课程,旨在通过电子时钟的制作与调试,帮助学生掌握电子技术基础知识,提高学生的动手实践能力。
学生特点:五年级学生具备一定的逻辑思维能力和动手能力,对新鲜事物充满好奇,喜欢探索和实践。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,培养学生解决问题的能力和创新意识。
通过课程目标的具体分解,使学生在学习过程中达到预期的学习成果,为后续教学设计和评估提供依据。
二、教学内容1. 电子时钟基础知识- 电子时钟的组成与工作原理- 电子时钟的显示器件(如LED、LCD等)- 电子时钟的时间计算方法2. 电子时钟的组装与调试- 元器件的认识与选用- 电路图的识读与连接- 电子时钟的组装过程- 电子时钟的调试与故障排除3. 电子时钟的使用与维护- 电子时钟的设置与调整方法- 常见故障现象及解决方法- 电子时钟的保养与维护教学大纲:第一课时:电子时钟基础知识- 介绍电子时钟的组成、工作原理- 讲解电子时钟的显示器件及特点第二课时:电子时钟的组装与调试- 认识元器件,学会选用- 识读电路图,进行电路连接- 组装电子时钟,进行初步调试第三课时:电子时钟的使用与维护- 学习电子时钟的设置与调整方法- 掌握常见故障的解决方法- 了解电子时钟的保养与维护方法教学内容依据课程目标,结合教材章节进行组织,保证科学性和系统性。
电子钟课程设计论文一、课程目标知识目标:1. 学生能理解电子钟的基本原理,掌握电子钟的主要组成部分及其功能。
2. 学生能掌握电子钟电路图的识别和解读,了解电子元器件的作用。
3. 学生能运用所学的电子钟知识,分析并解决实际问题。
技能目标:1. 学生能独立完成电子钟的组装和调试,提高动手实践能力。
2. 学生能运用电子技术知识,设计简单的电子钟电路。
3. 学生能通过小组合作,进行电子钟的制作,培养团队协作和沟通能力。
情感态度价值观目标:1. 学生能培养对电子技术的兴趣,激发学习热情。
2. 学生在电子钟制作过程中,培养耐心、细致的工作态度。
3. 学生通过课程学习,认识到科技发展对生活的影响,增强社会责任感和创新意识。
课程性质:本课程为实践性课程,结合理论知识和动手操作,培养学生的实际应用能力。
学生特点:六年级学生具备一定的电子技术基础,具有较强的求知欲和动手能力。
教学要求:注重理论与实践相结合,提高学生的动手实践能力,培养创新精神和团队合作意识。
通过课程目标的分解,使学生在学习过程中达到预期的学习成果,为后续教学设计和评估提供依据。
二、教学内容本课程教学内容紧密结合课程目标,选取以下内容进行教学:1. 电子钟原理:介绍电子钟的工作原理,包括晶振、分频器、计数器等组成部分的功能。
2. 电子元器件:讲解电子钟中常用的电子元器件,如电阻、电容、二极管、三极管等,并介绍其作用。
3. 电路图识别:教授如何识别和解读电子钟电路图,使学生能够理解电路的连接关系。
4. 电子钟组装与调试:指导学生进行电子钟的组装、焊接和调试,培养学生的动手实践能力。
5. 故障分析与维修:教授常见电子钟故障的分析方法,引导学生学会排查和解决问题。
教学内容安排如下:第一课时:电子钟原理及组成部分介绍第二课时:电子元器件的认识和使用第三课时:电路图识别及解读第四课时:电子钟组装与焊接第五课时:电子钟调试与故障排查教材章节关联:教学内容与教材《电子技术》第五章“时序逻辑电路”相关联,具体涉及以下内容:1. 时序逻辑电路的基本概念2. 时序逻辑电路的分析与设计方法3. 常用时序逻辑电路及应用4. 电子钟电路实例分析三、教学方法为了提高教学效果,激发学生的学习兴趣和主动性,本课程采用以下多样化的教学方法:1. 讲授法:在讲解电子钟原理、电子元器件知识等理论性较强的内容时,采用讲授法进行教学。
目录一、原理分析(董小双) (2)二、方案选择(董小双) (2)2.1方案论证 (2)2.1.1控制器模块 (2)2.1.2时钟模块 (3)2.1.3发声器模块 (4)2.1.4显示模块 (4)2.1.5电源模块 (4)2.2系统设计 (5)2.3结构框图 (5)三、电路原理图绘制及仿真(何明波) (5)3.1 STC89C52以及最小系统介绍 (5)3.1.1 STC89C52主要功能及PDIP封装 (5)3.1.2 STC89C52引脚介绍 (5)3.1.3 STC89C52最小系统 (6)3.2 DS1302时钟芯片以及时钟集成模块介绍 (7)3.2.1 DS1302概述 (7)3.2.2 DS1302引脚介绍 (7)3.2.3 DS1302使用方法 (8)3.2.4 时钟集成模块内部原理图 (10)3. 3 1602字符液晶以及显示模块介绍 (10)3.3.1 1602液晶概述 (10)3.3.2 1602引脚介绍 (11)3.3.3 1602字符液晶使用方法 (12)3.3.4 LCD显示模块原理图 (13)3.4蜂鸣器的使用 (14)3.4.1蜂鸣器的结构原理 (14)3.4.2电路原理 (14)四、综合调试(温鹏飞) (15)4.1程序流程图 (15)4.3控制程序(见附录三) (16)5 硬件调试 (16)5.1复位显示 (16)5.2实时时间 (16)5.3时间设置 (16)5.4秒钟复位 (16)5.5闹铃电路 (16)5.6 实物图 (16)五、总结(温鹏飞) (17)参考文献 (17)附录一 (18)附录二 (19)附录三 (20)一、原理分析(董小双)1.1设计要求1. 用6个7段LED数码管作为显示设备,设计时钟功能;2. 可以分别设定小时、分钟和秒,复位后时间为00:00:00;3. 秒钟复位功能,秒复位键按下后,秒回到00;4. 日期、时间切换功能;5. 使用LCD取代LED作为显示设备;6.实现闹钟功能。
题目:51单片机之电子时钟专业:网络工程年级:2009学号:20091204048姓名:汤贯洋指导教师:于雷单片机电子时钟的设计1.单片机介绍数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。
虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时间,而且可以显示期、农历、以及星期等,给人们的生活带来了方便。
另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。
单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。
AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k B ytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
电子课程设计论文数字钟一、教学目标本课程旨在通过数字钟的设计与实现,让学生掌握电子电路的基本原理,提高动手实践能力,培养创新意识和团队协作精神。
具体目标如下:1.知识目标:(1)了解数字电路的基本组成和功能;(2)掌握常用数字集成电路的工作原理和应用;(3)熟悉电子设计的基本流程;(4)了解嵌入式系统的基本概念。
2.技能目标:(1)能够运用数字电路知识分析和解决实际问题;(2)具备基本的电子线路设计、搭建和调试能力;(3)学会使用电子设计软件进行电路仿真;(4)能够独立完成数字钟的设计与制作。
3.情感态度价值观目标:(1)培养学生对电子科技的兴趣和热情;(2)增强学生的团队协作能力和沟通能力;(3)培养学生的创新意识和自主学习能力;(4)提高学生的问题解决能力和实际操作能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.数字电路基础知识:数字电路的基本概念、数字逻辑电路、组合逻辑电路、时序逻辑电路等;2.常用数字集成电路:集成逻辑门、触发器、计数器、译码器等;3.电子设计流程:需求分析、电路设计、PCB布线、硬件调试等;4.嵌入式系统:嵌入式处理器、嵌入式软件、嵌入式系统设计等;5.数字钟设计与实现:时钟电路、显示电路、控制电路等。
三、教学方法为了提高教学效果,本课程将采用以下教学方法:1.讲授法:讲解基本概念、原理和知识点;2.案例分析法:分析实际案例,让学生更好地理解理论知识;3.实验法:动手实践,培养学生的实际操作能力;4.小组讨论法:分组讨论,培养学生的团队协作能力和沟通能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:电子电路基础、数字电路设计、嵌入式系统设计等;2.参考书:电子电路、数字电路、嵌入式系统等相关书籍;3.多媒体资料:教学PPT、视频教程、网络资源等;4.实验设备:数字电路实验板、编程器、实验仪器等。
五、教学评估为了全面、客观地评估学生的学习成果,本课程将采取以下评估方式:1.平时表现:包括课堂参与度、小组讨论、提问回答等,占总评的30%;2.作业:包括课后练习、实验报告等,占总评的30%;3.考试成绩:包括期中考试和期末考试,占总评的40%。
专业方向课程设计报告题目:智能电子钟智能电子钟一、设计要求制作一个LCD显示的智能电子钟:(1) 计时:秒、分、时、日、月、年、星期。
(2) 闰年自动判别。
(3) 时间、年、月、日、星期交替显示。
(4) 自定任意时刻自动开/关屏。
(5) 计时精度:误差≤1秒/月(具有微调设置)。
二、方案论证1.时钟方案方案一:软件时钟。
可以节约硬件成本,但是软件编写更为复杂,且误差较大。
方案二:硬件时钟。
使用时钟芯片DS1302,虽然增加了硬件成本,但可直接从芯片读取时间及日期数据,大大简化软件的编写,且计时精度高,满足设计要求。
因此,本智能电子钟采用硬件时钟。
2.软件编程方案方案一:所有子程序均处于主程序中。
虽然最终仅一个程序文件,但由于本智能电子钟需用液晶显示屏显示且需根据不同按键状态转换至不同的功能,子程序较多,相应程序的层次结构也较复杂,若采用该方案,不仅很大程度地加大了软件编写的难度,而且会使程序显得复杂冗长,易读性很差。
方案二:监控程序。
将各种功能定义为多个任务,用监控程序进行任务调度的工作,主函数进行各种初始化、控制及调用子函数等工作,而各子函数则完成相应功能。
该方案虽然要使用监控程序并且最终会有多个源程序文件,但由于移植性很好,各种功能模块定义清晰,体现了模块化的思想,不仅降低了软件编写的难度,也增强了程序的易读性。
因此,本智能电子钟采用监控程序进行任务调度工作。
3.按键方案方案一:一键一义型按键。
每按下一个按键,就获得一个键盘编码信息,由键码散转到对应功能模块的入口,启动对应作业。
该方案可使用以下三种方式获取键值:①单纯查询,主程序用扫描键盘等方式来获取键盘信息,执行对应作业。
②键盘中断,按下任何按键都引起一个外部中断请求,键码分析过程放在外部中断子程序中。
③定时查询,每隔一段时间查询一次键盘,键盘查询过程安排在定时中断中完成。
但由于一个按键只对应一个功能,在实现功能较多的情况下,所需按键数较多,不仅会加大成品体积,不易操作,也会增加总的硬件成本。
方案二:一键多义型按键。
不根据当前获得的一个键码来决定哪一个作业投入运行,而是根据一个按键操作系列来启动一个作业,同一按键在不同操作系列中有不同的含义。
该方案所需按键较少,因此占用的端口数较少,并且减少了硬件成本,成品体积也较小,虽然在一定程度上,增加了按键功能分配的难度,但综合考虑,本智能电子钟采用一键多义型按键。
三、理论设计1.硬件系统1.1硬件原理图1.2硬件总体框图1.3工作原理以单片机为核心,结合软件及硬件完成设计要求。
在硬件上,时钟芯片DS1302提供时间及日期数据,LCD1602则显示时间、日期、闹钟等信息,闹钟铃声用蜂鸣器发出,而软件上,主程序通过对各子程序的调用,初始化时钟芯片、液晶显示屏,接收时间、日期数据,按键信息等,并输出显示信息及各种控制信息。
2.软件系统2.1软件流程图2.2监控程序2.2.1OS_CORE.COSIntSendSignal中断中给指定任务发送信号,使指定任务就绪OSSendSignal任务中给指定任务发送信号,使指定任务就绪OSClearSignal清除指定任务信号,使指定任务休眠OSIntExit中断退出处理函数,在此进行中断后的任务切换OSSched非中断的任务切换函数OSTimeTick系统时钟处理函数,处理各个任务的延时OSWait系统等待函数,任务调用此函数可以等待一定时间或信号2.2.2OS_Q.COSQCreate初始化消息队列OSQPend等待消息队列中的消息OSQAccept无等待从消息队列中取得消息OSQIntPost中断中FIFO方式发送消息OSQIntPostFront中断中LIFO方式发送消息OSQPostFIFO方式发送消息OSQPostFrontLIFO方式发送消息OSQNMsgs取得消息队列中消息数OSQSize取得消息队列总容量OSQFlush清空队列2.2.3OS_SEM.COSSemCreate初始化消息队列OSSemPend等待一个信号量OSSemAccept无等待请求信号量OSSemIntPost中断中发送一个信号量OSSemPost发送一个信号量OSSemQuery查询信号量2.2.4OS_CPU_C.COSIdle优先级最低的任务OSStartSmall RTOS 51初始化函数,调用此函数后多任务开始运行,首先执ID为0的任务OSTickISR系统时钟中断服务函数2.2.5OS_CPU_A.ASMLoadCtx任务环境恢复函数OSCtxSw任务主动放弃CPU环境保存函数C_OSCtxSw 堆栈处理函数OSIntCtxSw中断使任务放弃CPU环境保存函数2.2.6key.CKeyInput键盘输入服务任务2.3子程序2.3.1DS1302.C#include"config.h"uint8 xdata DS1302GetData[7];//秒、分、时、日、月、星期、年uint8 xdata DS1302Temp0[9] = {"23-59-50"};//秒、分、时uint8 xdata DS1302Temp1[11] = {"2012-01-01"};//年、月、日uint8 xdata DS1302Week[4] = {"Mon"};//星期void DS1302WriteByte(uint8 Data);uint8 DS1302ReatByte();void DS1302Write(uint8 Addr,uint8 Data);uint8 DS1302Read(uint8 Addr);uint8 GetTime();void DS1302Time();void WriteTime(uint8 Num,uint8 Tdat);void DS1302Init();2.3.2LCD1602.C#include "config.h"void Delay1602US();/*延时*/void LCD1602SendComm(uint8 Command);/*液晶显示屏写命令*/void LCD1602SendData(uint8 Data);/*液晶显示屏写数据*/void LCD1602DispStr(uint8 x, uint8 y, char *Data);/*在lcd指定位置显示一个字符串*/ void LCD1602Disp(uint8 x,uint8 y,char Str);/*在lcd指定位置显示一个字符串*/void LCD1602Clr(uint8 y);/*清除lcd的指定行*/void LCD1602Init(void);/*lcd初始化*/void LCD1602LoadC(uint8 Addr, uint8 *Data, uint8 NChar);/*从lcd指定地址处写多个字节数据*/2.4主程序main.c#include"config.h"sbit led = P2^0;sbit SwitchOn = P2^1;uint8 Flag0 = 0;/*时间闪烁标志*/uint8 Flag1 = 0;/*时间闪烁暂存标志*/uint8 Flag2 = 0;/*显示数据标志*/uint8 Flag3 = 0;/*闹钟暂存标志*/uint8 Flag4 = 0;/*闹钟闪烁标志*/uint8 Flag6 = 0;/*自定义开关屏闪烁标志*/uint8 Flag7 = 0;/*自定义开关屏闪烁标志*/bit Flag5 = 0;/*秒表显示标志*/bit Flag8 = 0;/*日期显示标志*/bit AlarmSwitch0;/*闹钟开标志*/bit AlarmSwitch1;/*闹钟关标志*/bit Flag9 = 0;/*自动校时标志*/bit Flag10 = 0;/*自动校时标志*/bit Flag11 = 0;/*自定义开关屏标志*/bit Flag12 = 0;/*自定义开关屏标志*/uint8 Ahour,Amin;/*闹钟变量*/uint8 Shour,Smin;/*自定义开屏变量*/uint8 Ehour,Emin = 1;/*自定义关屏变量*/uint8 Day1;/*自定义校时变量*/uint16 Sec;/*秒表变量*/uint8 xdata Temp3[] = {"00-00"};/*闹钟数据显示变量*/uint8 xdata Temp4[] = {"00-00"};/*秒表数据显示变量*/uint8 xdata Temp5[] = {"00-00"};/*自定义开屏数据显示变量*/uint8 xdata Temp6[] = {"00-00"};/*自定义关屏数据显示变量*/uint8 code Temp1[] = {31,29,31,30,31,30,31,31,30,31,30,31};/*闰年月份天数*/uint8 code Temp2[] = {31,28,31,30,31,30,31,31,30,31,30,31};/*平年月份天数*/void main(){TMOD = 0x11;ET0 = 1;ET1 = 1;TR0 = 1;TH1 = (65536 - 20000) / 256;TL1 = (65536 - 20000) % 256;LCD1602Init();DS1302Init();OSStart();}void TaskA();/*按键扫描并查找高优先级任务*/void TaskB();/*时间按键处理任务*/void TaskC();/*日期按键处理任务*/void TaskD();/*闹钟按键处理任务*/void TaskE();/*秒表按键处理任务*/void TaskF();/*自定义开关屏按键处理任务*/void TaskG();/*液晶扫描及显示处理任务*/void TaskH();/*蜂鸣器处理任务*/void Time1() interrupt 3/*定时10毫秒*、{TH1 = (65536 - 20000) / 256;TL1 = (65536 - 20000) % 256;if(++Sec >= 10000){Sec = 0;}Temp4[4] = Sec % 10 + 0x30;Temp4[3] = Sec / 10 % 10 + 0x30;Temp4[1] = Sec / 100 % 10 + 0x30;Temp4[0] = Sec / 1000 % 10 + 0x30;//OSLCD1602DispStr(6,2,Temp4);}void Alarm();/*闹钟显示计时*、{Temp3[4] = Amin % 10 + 0x30;Temp3[3] = Amin / 10 + 0x30;Temp3[1] = Ahour % 10 + 0x30;Temp3[0] = Ahour / 10 + 0x30;}void Flash()/*时间位标志*/{switch(Flag0){case 1: OSLCD1602DispStr(8,1," ");break;case 2: OSLCD1602DispStr(5,1," ");break;case 3: OSLCD1602DispStr(13,1," ");break;case 4: OSLCD1602DispStr(10,1," ");break;case 5: OSLCD1602DispStr(7,1," ");break;case 6: OSLCD1602DispStr(2,1," ");break;default:break;}}void AlarmFlash()/*闹钟闪烁*/{switch(Flag4){case 1: OSLCD1602DispStr(9,1," ");break;case 2: OSLCD1602DispStr(6 ,1," ");break;default: break;}}void SwitchFlash()/*自定义开关屏*/{switch(Flag7){case 1: OSLCD1602DispStr(9,1," ");break;case 2: OSLCD1602DispStr(6 ,1," ");break;case 3: OSLCD1602DispStr(9,2," ");break;case 4: OSLCD1602DispStr(6 ,2," ");break;default: break;}}void TimeCompare()/*时间与闹钟时间及自定义开关屏时间比较*/{if((DS1302GetData[2] == Shour) && (DS1302GetData[1] == Smin) && Flag11){led = 1;Flag11 = 0;OSLCD1602Clr(1);OSLCD1602Clr(2);OSLCD1602DispStr(2,1,"Yu Li ling shi ke shui chong");}if((DS1302GetData[2] == Ehour) && (DS1302GetData[1] == Emin) && Flag12){led = 0;Flag12 = 0;OSLCD1602Clr(1);OSLCD1602Clr(2);}if((DS1302GetData[2] == Ahour) && (DS1302GetData[1] == Amin) && AlarmSwitch0) {AlarmSwitch1 = 1;Flag9 = 1;}else{AlarmSwitch1 = 0;SwitchOn = 1;}if(((DS1302GetData[1] - Amin) % 5 == 0) && AlarmSwitch0 && Flag9){AlarmSwitch1 = 1;}if(!AlarmSwitch0){Flag9 = 0;}if((DS1302GetData[2] == 23) && (DS1302GetData[1] == 59) && (DS1302GetData[0] == 59)&& Flag10){DS1302GetData[0] = DS1302GetData[0] - 1; //时间校准WriteTime(0,DS1302GetData[0]);Flag10 = 0;}if(DS1302GetData[3] !=Day1){Flag10 = 1;}Day1 = DS1302GetData[3];}四、电路仿真及仿真结果分析1.仿真电路图2.仿真过程及结果分析将生成的HEX文件加载至单片机中,然后启动仿真。