基于STC89C51单片机作息时间控制钟控制系统

更新时间:2023-12-22 21:29:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

重庆科技学院单片机课程设计报告

目录

目录 .................................................................................................................................................. 1 1、摘要............................................................................................................................................. 2 重庆科技学院 ................................................................................................................................... 3 课程设计任务书(专题实验) ....................................................................................................... 3 2、方案设计 ..................................................................................................................................... 5

2.1 整体方案设计 ................................................................................................................... 5 2.2 硬件方案设计 ................................................................................................................... 5 2.3 硬件方案原理图 ............................................................................................................... 5 3、硬件电路设计与分析 ................................................................................................................. 7

3.1 CPU时钟电路 .................................................................................................................. 7 3.2 复位电路 ........................................................................................................................... 7 3.3 数码管显示电路 ............................................................................................................... 8 3.4 按键接口电路 ................................................................................................................... 9 3.5 LED指示电路 .................................................................................................................... 9 3.6 蜂鸣器接口电路 ............................................................................................................. 10 3.7 RS-232接口电路 ............................................................................................................ 11 3.8 电源电路 ......................................................................................................................... 12 4、软件设计 ................................................................................................................................... 13

4.1 总体软件程序设计 ......................................................................................................... 13 4.2 主程序设计 ..................................................................................................................... 14 4.3 数码管显示程序设计 ..................................................................................................... 14 4.4 时钟程序设计 ................................................................................................................. 15 4.5 闹铃程序设计 ................................................................................................................. 17 4. 6 模式程序设计 ................................................................................................................. 18 5 调试与测试 ................................................................................................................................. 21

5.1 调试方法 ......................................................................................................................... 21 5.2测试结果 .......................................................................................................................... 21 6、技术总结 ................................................................................................................................... 22

6.1硬件方面 .......................................................................................................................... 22 6.2方案设计方面 .................................................................................................................. 22 6.3编写延时程序方面 .......................................................................................................... 22 6.4电路图方面 ...................................................................................................................... 22 6.5闹钟设计方面 .................................................................................................................. 23 7、参考文献 ................................................................................................................................... 24 附录 源程序 ................................................................................................................................... 25

1

重庆科技学院单片机课程设计报告

1、摘要

随着计算机技术的和控制系统的广泛应用,以及设备向小型化、智能化发展,单片机作为高新技术之一,以其体积小、功能强、价格低、使用灵活等优势,显示出了很强的生命力。进入21世纪以来,开发推出单片机的公司很多,各种高性能单片机芯片市场异常活跃,新技术的不断采用,更加使单片机的种类、性能以及应用领域不断扩大和提高。因其功耗低、超高型、低成本、功能完整,在国内越来越受到用户的重视和广泛使用。

本设计是一个具有报时功能的作息时间控制钟,它以AT89C51单片机为cpu,由蜂鸣器 、LED灯、按键、4位数码管组成。4们数码管上可以显示五种模式,分别是北京时间显示模式、修改北京时间小时模式、修改北京时间分钟模式、修改闹钟小时模式、修改闹钟分钟模式。前三种模式显示的是北京时间,后两种模式显示的是闹钟时间。北京时间模式的作用是显示当前时钟,而闹钟模式的作为是查看和设定闹钟。LED灯则是用来指示系统所处的模式。

本控制钟主要是用于学校,对一些以24小时为周期的开实现自动控制。 关键字: AT89C51 数码管 闹钟模式 蜂鸣器 按键

2

重庆科技学院单片机课程设计报告

重庆科技学院

课程设计任务书(专题实验)

设计题目:单片机作息时间控制钟

学生姓名 课程名称 地 点 设计内容及要求 第1组 单片机系统综合训练 实验楼I512 专业班级 计科普2010 起止时间 11周-16周 要求设计的单片机作息时间控制钟完成以下功能: 1.基本功能 ①根据作息时间按时打铃 ②实时显示当前时间 ③可以修改作息时间 ④能修改当前时钟。 2. 扩展功能 铃声可以用音乐代替;自行扩展功能。 作息时间: 6:50 起床 7:00 早操 设7:25 早饭 8:20 预备铃 计 8:30~9:15 第一节课 9:25~10:10 第二节课 参10:10~10:30 课间操 10:30~11:15 第三节课 数 11:25~12:10 第四节课 12:10~13:20 午饭及午休 13:30~14:15 第五节课 14:25~15:10 第六节课 16:30 开始课外活动 17:00 晚饭 17:50 预备铃 18:00~21:30 晚自习 23:00 熄灯 进详见进度安排表 度 要求 参张义辉,李家庆,单片机系统综合训练指导书.重庆科技学院 考 资料 其它 3

重庆科技学院单片机课程设计报告

说1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。2.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计明 内容、参数、要求等方面应有所区别。 教研室主任: 指导教师:钟秉翔

2011年 11 月

进度安排表:

时间 11周周2 11周周5 12周周2 12周周5 13周周2 13周周5 14周周2 14周周5 15周周2 15周周5 16周周2 16周周5

4

内容 地点 布置设计任务及要求,查资料,准备方案 I512 KEIL C51程序设计练习(定时器程序设计) 数码管显示程序设计、调试 显示北京时间程序设计、调试 显示北京时间程序设计、调试 键盘控制程序设计、调试 键盘控制程序设计、调试 总体方案设计,硬件设计,软件方案设计 设计、调试程序 设计、调试程序 设计、调试程序 设计、调试程序 设计验收,完成设计报告 I512 I512 I512 I512 I512 I512 I512 I512 I512 I512 I512 重庆科技学院单片机课程设计报告

2、方案设计

2.1 整体方案设计

本电路以单片机AT89C51为cpu,分别连接按键模块、数码显示模块、LED

显示模块、响铃模块。首先,按键扫描模块的四个按键分别用来控制数码显示、LED显示和蜂鸣器工作,P0口用来控制其段选以显示相应的数值。P1口控制数码管的位选,以显示相应的数值。在其位选控制部分,要求当P1口输出低电平时,位选成功,使得该位选的数码管亮,数码管显示时分通过按键1控制。P2口作为输出口,用来控制LED的亮灭,要使其亮只需要让P2.3-P2.6口保持低电平 就可以使4个灯亮起来。同时通过P1.4端控制蜂鸣器发生,当P1.4输出低电平时候使蜂鸣器发出声音,当实时时间和设定闹钟时间一致时,使蜂鸣器发声。最后通过按按键4实现作息时间控制的功能。

2.2 硬件方案设计

本方案由AT89C51单片机核心控制模块、数码显示模块、LED显示模块、按键模块、响铃模块5个部分组成组成。硬件总框图如图2-1所示。

按键模块 AT89C51单片机 数码显示模块 内部时钟模块 LED显示模块 晶振模块 响铃模块

图2-1. 硬件总框图

2.3 硬件方案原理图

总体方案原理图见图2-3。

5

重庆科技学院单片机课程设计报告

图2-3 总体原理图

6

重庆科技学院单片机课程设计报告

3、硬件电路设计与分析

3.1 CPU时钟电路

本时钟电路是采用内部时钟方式,在XTAL1和XTAL2引脚之间外接振

荡器,构成一个自激振荡器,自激振荡器与单片机内部的时钟发生器构成单片机的时钟电路。见图3-1。

图3-1 cpu时钟电路图

3.2 复位电路

复位电路的目的是产生持续时间不小于两个机器周期的高电平,通常采用两种复位方式:上电复位和开关复位。本设计中采用的是上电复位。如图3-2。

图3-2 复位电路图

7

重庆科技学院单片机课程设计报告

3.3 数码管显示电路

设计中采用四位共阴极数码管,共阳极是指其公共端接正极,通过单片机AT89C52的P1口控制其位选,以达到动态显示的效果,再通过P0口,控制其段选以显示相应的数值。在其位选控制部分,采用了一个9012型三极管,要求当P1口输出低电平时,位选成功。

硬件电路中,数码管显示的小时和分.显示北京时间时,小时通过模式2控制,分钟通过模式3控制。显示闹钟时间时,小时通过模式4控制,分钟通过模式5控制。而第二个数码管的dp每闪烁一次表示一秒。如图3-3所示。

图3-3.数码管显示电路

数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的显示方式的不同,可以分为静态式和动态式两类。

① 静态显示方式:当显示器显示某个字符时,相应的字段一直导通截止,直到显示另一个字符为止。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

② 动态显示:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划\的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显

8

重庆科技学院单片机课程设计报告

示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

3.4 按键接口电路

按键用于控制数码显示模块、LED显示模块的工作。通过扫描按键是否按下,来设定各模块的工作情况,使各模块可以在按键的控制下,有序地进行工作。本设计中使用单个按键实现单个功能,属于较为简单的控制方式。电路图见图3-4。

图3-4 按键接口电路图

在多功能系统设计的实验中中我们使用四个按键分别与单片机的P2.0、P2.1、P2.2、P3.2相连,按键K_1控制数据的增加,按键K_2控制控制数据的减少,按键K_3五种模式的转制,按键K_4有两个作用,在北京时间下是关闭闹钟,在闹钟时间下是遍历所有闹钟。通过按下相应的按键来处理相应的程序。

3.5 LED指示电路

发光二极管,是一种固态的半导体器件,它可以直接把电转化为光。 本次设计中通过按键来控制LED显示,打开电源后按下按键可以看到不同的作息模式。由于电路中LED为共阳极,故控制流水灯显示的P2口应为低电平时才有效。电路图如3-5

9

重庆科技学院单片机课程设计报告

图3-5 LED指示电路图

3.6 蜂鸣器接口电路

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。下面我们以电磁式蜂鸣器为例来说明它的工作原理:电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声,当输出高电平时,三极管截止,蜂鸣器的两引脚间的直流电压接近于0V,没有电流流过线圈,蜂鸣器不发声;当输出低电平时,三极管导通,使蜂鸣器的两个引脚间获得将接近+5V的直流电压,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制IO口输出的电平来控制蜂鸣器是否发出声音,实现各种可能音响的产生。

在这个设计中是通P1.4口控制其工作的。当P1.4口输出低电平时蜂鸣器工作,从而实现响铃效果。电路图见图3-6。

10

重庆科技学院单片机课程设计报告

入口 初始TH0 和TLO N Count>200 Y Sec++,count=0 N Sec>60 Y Sec=0,Min++ N Min>60 Y Min=0,Hour++ N Hour>24 Y Hour=0

图4-4-1 时钟跳变流程图

修改显示时间时,通过K_3键来选择模式来修改所需要修改的内容。模式2修改北京时间小时,模式3修改北京时间分钟,模式4修改闹钟时间小时,模式5修改闹钟时间分钟。K_1和K_2键分别控制显示值的增加和减少。当hour增加到24时,就把hour置零,而减少的方法和增加时不一样,先判断hour为零后再减少。如果减少到最小值就把其置为最大值,其流程图如4-4-2。

16

重庆科技学院单片机课程设计报告

入口 修改小时 修改分钟 K_1=0 N Y Hour++ K_2=0 Y Hour<=0 N N K_1=0 Y Min++ K_2=0 Y Min <=0 N Hour>=24 N Y Hour=0 N Hour---- Y Hour=24 N N N N Min >=24 Y Min =0 Min ---- Y Min =24 N N

图4-4-2 显示时间修改流程图

4.5 闹铃程序设计

闹钟程序设计是采用蜂鸣器发出声响而达到报时的作用。控制蜂鸣器工作的

单片机端口是P14,由于蜂鸣器的工作状态是低电,故而当P14=0时,蜂鸣器工作,当P14=1时,蜂鸣器不工作。而要使P14=0,那么北京时间和预置的闹钟时间要相等。闹铃程序流程图见图4-5。

17

重庆科技学院单片机课程设计报告

入口 达到闹钟时间 Y P14=0 N P14=1 蜂鸣器工作 N P14=1

Y

图4-5 闹钟程序流程图

4. 6 模式程序设计

本控制钟共设计5种模式,分别是北京时间显示模式、北京时间修改小时模

式、北京时间修改分钟模式、闹钟时间修改小时模式、闹钟时间修改分钟模式 北京时间显示模式中,只能够显示当前北京时间,而不做任何修改,其流程图如图4-6-1。

入口 N 模式1? Y 显示北京时间

图4-6-1 北京时间显示模式流程图

北京时间修改小时模式、北京时间修改分钟模式、闹钟时间修改小时模式、闹钟时间修改分钟模式这四种模式中,都是通过K_1键增加当前显示值,K_2键减少当前显示值。其流程图如图4-6-2至4-6-5。

18

重庆科技学院单片机课程设计报告

模式2 显示北京时间 N K_1按下 Y Hour++ K_2按下 N Hour-- 修改完成

图4-6-2 北京时间小时修改模式

模式3 显示北京时间 N K_1按下 Y Min++ K_2按下 N Min-- 修改完成

图4-6-3 北京时间分钟修改模式

19

重庆科技学院单片机课程设计报告

模式4 显示闹钟时间 N K_1按下 Y Hour++ K_2按下 N Hour-- 修改完成

图4-6-4 闹钟时间小时修改模式

模式5 显示闹钟时间 N K_1按下 Y Min++ K_2按下 N Min-- 修改完成

图4-6-2 闹钟时间小时修改模式

20

重庆科技学院单片机课程设计报告

5.1 调试方法

5 调试与测试

调试分为硬件调试、软件调试和软硬件联调。 硬件部分:由于我们是在实验箱上完成本次作息时间控制钟,故而需要注意的便是各个模块之间的模块的连线问题。由于有时候使用单片机实验箱会出现问题,因此每次使用的时候要先对实验箱进行检查。例如用一次使用实验箱本身的连接时,无论怎么调试数码管都无法显示出数字,而手动连接时就会显示出来,因此在每次做实验之前对实验箱的硬件检查是必不可少的。在电路连接完全正确的情况下,对每个模块单独调试,我们首先调试的部分是蜂鸣器模块,其次是数码管显示模块,最后则是按键模块和led显示模块。

软件部分:通过对程序的编译、连接、执行来发现程序中存在的语法错误和逻辑错误并加以改正的过程。

软硬件联调:软硬件联调是重点,同时也是用时间最多的部分。本部分联调是通过不断地下载,通过暖是否实现相应的功能来判断那部分程序出了问题,再对有问题的部分程序进行修改,从而实现其功能。

5.2测试结果

经过多调试之后,终于完成了单片机作息时间控制钟。本控制钟的显示部

分是通过数码管显示的,前两位用于显示小时,第二位数码管的dp每闪烁一次表示过一秒,数码管后两位表示分钟。通过4个按键来控制时间的显示以及时间的修改。通过按键K-3在五种模式之间转换,当K-3键按一下,北京时间显示模式 ,此时只有led4灯会点亮,按两下,只有led3亮,按三下,led3和led4亮;当K_3键按四下,进入闹钟时间小时修改模式,此时只有led2灯亮,按五下,进入闹钟时间分钟修改模式,此时led2和led4亮。K_4键有两个功能,当显示的时间是北京时间时,K_4键作用是让工作的蜂鸣器停止工作,当显示的时间是闹钟时间时,K_4键作用是遍历所有闹钟,由于一共是23个闹钟,当按遍历完23个闹钟后显示第一个闹钟。K-1和K-2用于修改时间。不论在那种模式下,都是用K-1增加当前显示值,K-2减少当前显示值。当北京时间与所设定的闹钟时间一致时蜂鸣器会工作,从而发出声响。

21

重庆科技学院单片机课程设计报告

6、技术总结

本次课程设计中,遇到了很多的困难。在同学和老师的帮助和指导下,终于完成了本次课程设计。下面我将对本次课程设计中遇到的困难以及解决方法作一个总结。

6.1硬件方面

我们曾拿到过一个实验箱,其中数码管是坏的,用实验箱自身的连接数码管不会工作,后来我们通过检查,用杜邦线连接起来后就发现可以使用,从此之后我们就养成在做实验之前先检查实验箱的各个模块是否是好的。

在设计按键功能时,我们一开始对按键设计的是K_1键增加小时值,K_2键增加分钟值,K_3键用于选择修改模式,K_4键遍历所有闹钟。在实际编程后发现这样虽然达到了要求,但是使用不方便,因此我们又加入了按键减少当前显示值功能和关闭闹钟功能(即随时可以停止工作的闹钟)。而后我们对按键功能进行修改,最后用K-1增加当前显示值,K-2减少当前显示值,K_3键修改模式,K_4键有两个功能,当显示的时间是北京时间时,K_4键作用是让工作的蜂鸣器停止工作,当显示的时间是闹钟时间时,K_4键作用是遍历所有闹钟。

6.2方案设计方面

由于没有做过类似的课程设计,在软件设计方面一开始没有一个整体的计划,因此在编写程序的过程中,很多地方存在漏洞,并且程序编写得不便于读写,后来我们制作了相应程序的流程图,通过流程图对程序进行优化,把各个模块分化开来,最终优化成现在的简单明了,易读易懂的程序。

6.3编写延时程序方面

开始在中断程序里直接通过for循环来进行延时,这种延时方式故然可以实现其功能,但是由于有for循环延时程序的存在,使得每次中断的时间就不准确,因此我们采用一个变量来计数中断次数,当按键按下来后计数,达到30次即150ms,如果此时还有按键按下,则表示确实有按键按下而不容易产生影响。采用延时程序之后就不会出现按一下键数码管上的小时或分钟跳变很多的情况。

6.4电路图方面

由于是第一次接触protel软件,最开始不知道如何寻找相应的电子元件。后来通过查询资料知道每个元件的英文名称,如:找89c51时用的是8051,电阻res,电容cap,按键sw,晶振crystal,开始怎么也找不到电源的端口,在一次偶然的情况下我们通过接地的端口上选择arrow从而实现了电源端口的连接,由于

22

重庆科技学院单片机课程设计报告

无法找到4位的共阴极数码管,只找到1位的数码管,故而我们以1位数码管为基础,自己画出了4位的数码管。虽然我们画出了4位的数码管,但是连接的时候却没有接上拉电阻,因此我们后来才接了上拉电阻。

6.5闹钟设计方面

在设计闹钟时间的时候我们一开始就直接对任务书上的时间进行固定,这样编写虽然在任务书上的闹钟时间点会响,但是却发现一个致命伤,就是不能对闹钟进行修改,因此我们又定义了一个23个元素的二元数组,分别表示小时和分钟,但是后来在实验的时候才发现这样定义了以后闹钟在所设定小时或分钟的时候都会响,因此我们认为用二元数组时小时和分钟不是用之间的逻辑关系不是与,而是或。因此我们最后修改了程序,使用两个数组,每个数组都定义23个元素,一个表示小时,一个表示分钟,这样通过下标号可以定义出闹钟的时间,这样到了所设定的时间点会发出声响,并且可以随时修改闹钟时间。最终实现了所要求的功能。

23

重庆科技学院单片机课程设计报告

7、参考文献

《单片机实验与应用设计教程》 冶金工业出版社 邓 红 张越 《单片机原理及接口技术》 清华大学出版社 胡汉才 《MCS-51系列单片机原理与接口技术》 人民邮电出版社 李玉峰 倪虹霞

24

重庆科技学院单片机课程设计报告

附录 源程序

#include \

#define THCO 0xee #define TLCO 0x0

#define uchar unsigned char

uchar code Duan[]={0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; uchar Data_Buffer[4]={0,0,0,0};

unsigned int timex[23]={6,7,7,8,8,9,9,10,10,11,11,12,13,13,14,14,15,16,17,17,18,21,23}; unsigned int timey[23]={50,10,25,20,30,15,25,10,30,15,25,10,20,30,15,25,10,30,0,50,0,30,0};

static unsigned char Bit=0,t=0,tcount=0,k=0,nmode=0; static unsigned int count=0,number=0;

unsigned int Sec=0,Min =0,Hour =0,flag=0;

sbit P10=P1^0; sbit P11=P1^1; sbit P12=P1^2; sbit P13=P1^3; sbit P14=P1^4;

sbit K_1=P2^0; sbit K_2=P2^1; sbit K_3=P2^2; sbit K_4=P3^2;

sbit led1=P2^3; sbit led2=P2^4; sbit led3=P2^5; sbit led4=P2^6;

void panduanjanjian(); void mode();

void chbjtimehour(); void chbjtimemin(); void clocktraverse(); void gettime(); void chclockhour();

25

重庆科技学院单片机课程设计报告

void chclockmin();

void main() {

TMOD=0x11; TH0=THCO; TL0=TLCO; TR0=1; ET0=1; EA=1;

led1=led2=led3=1;led4=0; while(1) { if(flag == 0) { Data_Buffer[0]=Hour/10; Data_Buffer[1]=Hour; Data_Buffer[2]=Min/10; Data_Buffer[3]=Min; } else { Data_Buffer[0]=timex[number]/10; Data_Buffer[1]=timex[number]; Data_Buffer[2]=timey[number]/10; Data_Buffer[3]=timey[number]; } } }

void timer0() interrupt 1 { TH0=THCO; TL0=TLCO; count++; if(count>=200) { count=0; Sec++; if(Sec>=60)

26

重庆科技学院单片机课程设计报告

{ Sec=0; Min++; } if(Min>=60) { Min =0; Hour++; } } Bit++; if(Bit>=4)Bit=0; P1|=0x0f; //关位码 P0=Duan[Data_Buffer[Bit]]; if(count<100 && Bit==1) //使小数点闪烁 P0=P0 | 0x80; switch(Bit) { case 0: P10=0;break; case 1: P11=0;break; case 2: P12=0;break; case 3: P13=0;break; } panduanjanjian(); gettime(); }

void panduanjanjian() { if(K_1==0||K_2==0||K_3==0||K_4==0) { tcount ++; if(tcount>=30) { tcount=0; if(K_1==0||K_2==0||K_3==0||K_4==0) { if(K_4==0 && flag == 0) P14=1;

27

重庆科技学院单片机课程设计报告

if(nmode==0) { } //此处if可不用 else if(nmode==1) chbjtimehour(); else if(nmode==2) chbjtimemin() ; else if(nmode==3) { chclockhour() ; clocktraverse(); } else if(nmode==4) { chclockmin(); clocktraverse(); } mode(); } } } }

void mode() { if(K_3==0) { nmode++; if(nmode>5) { nmode = 0; } switch(nmode) { case 0: flag=0; led1=led2=led3=1;led4=0; break; //北京时间 case 1: flag=0; led2=led1=led4=1;led3=0; break; //修改北京时间 小时

case 2: flag=0; led1=1;led2=1; led3=led4=0; break; //修改北京时间 分钟

case 3: flag=1; led1=led3=led4=1; led2=0; break; //修闹钟时间小时

case 4: flag=1; led2=led4=0; led1=led3=1; break;

28

重庆科技学院单片机课程设计报告

//修改闹钟时间 分钟 } } }

void clocktraverse() { if(K_4 == 0 ) //K_1 遍历闹铃时间 { number++; } if(number>=23) { number=0; } }

void chbjtimehour() { if(K_1== 0 ) { Hour++; if(Hour>=24) Hour= 0; } if(K_2== 0 ) { if(Hour == 0 ) Hour=24; Hour--; } }

void chbjtimemin() { if(K_1== 0 ) { Min++; if(Min>=60) Min= 0; }

//调小时 //调分钟 29

重庆科技学院单片机课程设计报告

if(K_2== 0 ) { if(Min == 0) Min=60; Min--; } }

void gettime() //到时间闹铃响 { uchar i=0; for(;i<23;i++) { if(Hour==timex[i] && Min == timey[i] ) { k = i; } } if(Sec==0) { if(Hour==timex[k] && Min == timey[k]) P14=0; else P14=1; } }

void chclockhour() //修改作息时间 { if(K_1 == 0 ) //增加作息时间小时 { timex[number]++; if( timex[number]>=24) timex[number]=0; } if(K_2 == 0 ) //减少作息时间小时 { if(timex[number] == 0)

30

重庆科技学院单片机课程设计报告

timex[number]=24; timex[number]--; } }

void chclockmin() //修改作息时间 { if(K_1 == 0 ) //增加作息时间分钟 { timey[number]++; if( timey[number]>=60) timey[number]=0; } if(K_2 == 0 ) //减少作息时间分钟 { if(timey[number] == 0) timey[number]=60; timey[number]--; } }

31

本文来源:https://www.bwwdw.com/article/ozg5.html

Top