课程设计单片机(时钟打铃系统)_第1页
课程设计单片机(时钟打铃系统)_第2页
课程设计单片机(时钟打铃系统)_第3页
课程设计单片机(时钟打铃系统)_第4页
课程设计单片机(时钟打铃系统)_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录第 1 章 概述 21.1 设计要求 21.2 设计目的 21.3 设计意义 2第 2 章 系统总体方案选择与说明 3第 3 章 硬件电路设计 43.1 按键控制模块 43.2 时间显示模块 53.3 打铃模块 6第 4 章应用软件设计 84.1系统软件设计思想 84.2 系统主程序 84.3 中断子程序 94.4 按键扫描子程序 1.1.第 5 章 系统仿真调试 125.1 软件简介 125.2软件仿真 12第 6 章 硬件调试与结果分析 15结束语 17致谢 18参考文献 19附录 A 系统硬件电路原理图 20附录 B 程序清单 21评分表 29第 1 章 概述1.1 设计要求本设计要

2、求设计学校作息时间控制器,其设计实现的功能主要有:使用4位七段显示器来显示现在的时间,显示格式为“时分”,由LED闪 动作为秒计数表示 , 到响应时间打铃 , 可冬夏季切换。可以设定作息时间, 并进行到时提示。能够根据预先设定好的作息时间表自动启停控制电路, 完成对外部设备的实时控制。1.2 设计目的增强对单片机的认识,与理解,提高时间能力与水平。学会使用 proteus 仿真软件,充分把所学电路、模数电理论与实践结合,了解和掌 握单片机设计软件与硬件设计结合过程、 方法和实现, 以及掌握单片机的 内部模块的应用。1.3 设计意义用单片机及c语言编程模拟学校作息时间,到时打铃,以及冬季夏季手

3、动切换打铃时间。第2章系统总体方案选择与说明由按键控制模块控制单片机最小系统的时间、月份、年以及打铃时 间,在有单片机控制数码管显示以及蜂鸣器。 本次设计实现的功能主要有: 使用4位七段显示器来显示现在的时间,显示格式为“时分”,由LED小 数点闪动作为秒计数表示。可以设定作息时间,并进行到时提示。能够根 据预先设定好的作息时间表自动启停控制电路, 完成对外部设备的实时控 制。由按键输入控制设置年月日以及当前时间、并可设置闹钟定时,时间 到由蜂鸣器发出响声。按键控制模块单片机最小系统数码管显示模块闹钟模块图2-1第3章硬件电路设计3.1按键控制模块按键控制模块主要有由五个按键组成:K1、K2、

4、K3 K4、K5。分别接 P1.3-P1.7 口。K1的功能是模式切换键;K2的作用是加一;K3的作用是闹钟使能; K4的作用是减一;K5的作用是冬夏季切换。K5Kv严K7K3f*K14 -r34578T 1 ppppprpp01234667AT89C51R210JK7J-10-.牛图3-1当需要设定时间或是校正时间,即可按下模式切换键来进行。校正时间:按第一次 K1键,进入小时校正状态,通过按 K2、K4键 进行小时校正,按一下 K2键则加一,按一下K3键则减一。按第二次K1键,进入分校正状态,通过按 K2、K4键进行分钟校正。按第三次K1键,进入小时设定状态,此时若不需要设置则不操作。按第

5、四次K1键,进入分钟设定状态,若此时不需要设置则不操作。按第五次K1键进入月份校正状态,通过按 K2、K4键进行月份校正。按第六次K1键,进入日校正状态,通过按 K2、K4键进行日校正。 按下第七次 K1 键进入年份校正状态,通过按 K2、 K4 键来进行年份 校正。校正完毕后,再按一次 K1 键,则退出时间校正状态,并显示当前校 正后的准确时间。设定时间:按第一次 K1 键进入小时校正状态,此时若不需要设置, 则不操作 ;以此类推。第三次按下 K1 键,进入小时设定状态,通过按 K2、 K4 键进行小时 设定。按下第四次 K1 键,进入分钟设定状态,通过按 K2、 K4 键进行分钟 设定。设

6、定完毕后,按一下 K3 键(闹钟使能)。继续按 K1 键,若不需要设置,则不操作,以此类推,到按最后一次 K1 键则退出时间设定状态并显示当前时间,当时间与我们设定的时间一 致时,通过闹钟电路响声提示。若要关闭闹钟,此时再按一次 K3键即可停止响声。若k5=1,执行冬季打铃时间。若k5=0,则执行夏季打铃时间。3.2 时间显示模块本设计采用四位七段共阳数码管做显示模块,其中前两位做时、月 份显示,其余两位作为分、日显示,选取前两位的一个 dp 点作为秒点。 单片机 P0.0-P0.7 分别接七段数码管的 abcedfg 和 dp 引脚。 P2.0-P2.3 分别作为四个七段数码管的片选端。RP

7、1 :PA服 帕珅d3出肺*1打0PZCTAJE 曲liM 理迟iQ 吨护科 旳 313;iPEflflkia 宠MR IF2 7A1S图3-2时间显示模块主要由四位数码管来显示,配合按键控制模块的校正与设定时间,相应的显示。时间正常显示时,LED每闪动60次,分钟自动加一;每六十分钟小时自动加一;每 24小时天自动加一。3.3打铃模块单片机p3.7 口控制蜂鸣器,若数码管显示时间与设定的学校作息时 间相同,蜂鸣器模拟打铃一分钟P24/A12 FZ5W13P2.6/A14P2.7W 5P33 舷 DP31/TJ(D_P3.俪 PP3.3/1NTTF3.4/TDF3.5fTlP,6JWRLraz

8、jfiTSPEMEFEX图3-3打钟模块快的主要功能:闹铃。当设定时间与当前时间一致时,贝U闹钟自动闹铃进行提示,一分钟后,自动退出响铃状态,若按K3键,闹钟退出响铃状态。第 4 章 应用软件设计4.1 系统软件设计思想本系软件设计中,利用单片机定时器设计时间计时处理,采用单片机内部的TO定时器溢出中断来实现,工作在 T1方式下,定时50微妙,则连续中断 20 次即为一秒,得到了我们所需时间的最小单位。该设计用 C51 编写程序,由于汇编语言的移植性比较差,而 C 语言 则比较灵活。许多子函数都可以直接移植过去。在程序中除了有主函数外还包含许多子函数,如延时函数、按键扫 描函数、初始化函数、时

9、间显示函数、设定闹钟显示函数、设定日期显示 函数、设定年份显示函数、月份选择函数、年份显示辅助函数、冬夏季作 息时间切换函数。4.2 系统主程序在主控程序循环中主要工作为扫描是否有按键,若有按健则做相应 的功能处理, 同时也扫描显示器显示时间数据, 并检查所设置的时间是否 到了。时间计时处理程序是等过了 1s 后,则更新时间数据, 将最新的时、 分的数据转换为数字数据并显示在七段显示器上。蜂鸣器初始化判断标志位XX=0X=1 、X=3 、 4X=5 、 6时间显示函数校正时间显示函数设定闹钟显示函数日期显示函数X=7年份显示函数图3-2主程序流程图4.3中断子程序中断子程序的主要功能:提供时间

10、基准。当连续中断20次时,即为一秒,此时秒加一。当秒值为60时,分钟加一,同时秒清零;当分钟值为60时,小时加 一,同时分钟值清零。当小时为24时,天值加一,同时小时清零。由于每月天数不定,1、3、5、7、8 10、12月为31天,当计数到 此类月份时,天值为32时,月值加一,同时天值为1; 4、6、9、11月为 30天,当计数到此类月份时,天值为 31时,月值加一,同时天值为1。如果是闰年,则2月为29天,当计数到此类月份时,天值为 30时,月值加一,同时天值为一。29时,如果不是闰年,则2月为28天,当计数此类月份时,天值为月值加一,同时天值为一。当月值为13时,则年值加一,同时月值为一。

11、图3-3定时器中断函数4.4 按键扫描子程序按键扫描子程序是程序计中相当重要的一部分。按键扫描子程序的功能是:扫描是否有按键按下,若有键按下,则执行相应功能。k1设计中包含了防抖动程序,延时 20ms,判断是否为抖动,若不是抖 动则执行相应程序功能第5章系统仿真调试5.1软件简介本次课程设计仿真主要采用 proteusoProteus与其它单片机仿真软件不同的是,它不仅能仿真单片机 CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工 作情况。从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。5.2软件仿真启动Proteus进行仿真时显示的初始化时间。初始界面仿真图

12、如图:图5-1时间校正:当我们需要正确的显示时间即可进行时间校正,按一下K1即进入小时校正状态,通过K2加一或K4减一来进行小时校正,再按 一次K1键即可进行分钟校正,校正原理同小时校正相同。其仿真图如图5-2所示。图5-2日期校正:当我们需要与当前日期保持一致时,贝冋以使用日期校 正功能,连续按动五次 K1键,则进入月份校正状态,通过 K2加一键或 K4减一键进行校正月份,再按一次 K1键,则可进行日期校正,校正原 理同月份校正原理相同。其仿真图如图 5-3。图5-3年份校正:当我们需要保持年份与当前年份一一致时,则可以进行 年份校正。连续按动七次K1键,即进入年份校正状态,通过K2加一键或

13、 K4减一键进行校正。其仿真图如图 5-4所示。图5-4到时打铃:当单片机显示时间与设定学校打铃时间相同时,蜂鸣器 响。如图5-5所示。图5-5第6章硬件调试与结果分析DH89w.结束语此次课程设计为期两个星期,围绕着利用最小单片机系统设计模拟 学校作息时间打铃系统,实现了时间计时,时间调整,时间暂停,到点响 铃和冬夏季切换等功能。 使用 4 位七段显示器来显示现在的时间, 显示格 式为“时分”,由LED小数点闪动作为秒计数表示。可以设定作息时间, 并进行到时提示。能够根据预先设定好的作息时间表自动启停控制电路, 完成对外部设备的实时控制。 由按键输入控制设置年、 月、日以及当前时 间并可设置

14、闹钟定时,显示时间与设计作息时间相同时由蜂鸣器发出响 声。设计之初 ,由于忽略了数码管共阴与共阳的问题 ,导致在硬件调试的 时候未能成功 ,修改后 ,导致秒点不能闪烁 ,一直未能找出原因 ,最后发现 是忽略了与、或之间没转换。在设计冬夏季切换时,对主函数初始化问题 理解不透彻,致使一开始不能切换。在设计打铃时间表时, 还可以采用查 表法,此方法相比可以节约程序空间。致谢通过两周的课程设计,利用单片机把复位电路,显示电路,电源电 路,继电器电路,电铃电路连接起来,在通过单片机的编程实现设计要求。 单片机作息时间控制系统是利用定时器计时处理来做秒计数,当所设置的时间到了,贝U发出一阵声响,启动继电

15、器,由继电器可以控制收音机开启 或者关闭。时,分,秒数据是存在变量内并写入七段显示管的缓冲区内, 由显示管扫描中定时时扫描而显示出时间。 我由最初的不知所措到后来的 获益良多,觉得这两周过得很充实,也积累了一些设计的宝贵经验。这些 离不开我的团队对我的帮助,更离不开王老师的悉心指导。参考文献附录 A 系统硬件电路原理图附录 B 程序清单#include#define uint unsigned int#define uchar unsigned charuchar code a10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;sbit K

16、仁 P1A4;sbit K2=PM5;sbit K3=P1A6;sbit K4=P1A7;sbit sd=P1A0;sbit BEEP=P3A7;uchar m=59,h=7,sec=30,cnt=0,x,y,qian,bai,shi,ge;uchar set_h=8;uchar set_m=6;uchar month=6;uchar day=12;uchar th0_f;uchar tl0_f;uint year=2013;void delay(uchar t);void scankey(void);void init(void);void display(void);void set_ti

17、me(void);void set_day(void);void m_choose(void);void bianhuan(void);void bianhuan1(void);void time0(void) interrupt 1TH0=0x3c;TL0=0xb0;cnt+; if(y=1&(set_h=h&set_m=m)sd=0;else sd=1;if(y=1&(h=8&m=0)sd=0;else sd=1;if(cnt=20)sec+;cnt=0; if(sec=60) sec=0;m+;if(m=60)m=0; h+; if(h=24) h=0;day+;switch(month

18、)case 1:if(day=32)month+;day=1;break; case2:if(year%4=0)if(day=30)month+;day=1; elseif(day=29)month+;day=1;break; case 3:if(day=32)month+;day=1;break; case 4:if(day=31)month+;day=1;break; case 5:if(day=32)month+;day=1;break; case 6:if(day=31)month+;day=1;break; case 7:if(day=32)month+;day=1;break; c

19、ase 8:if(day=32)month+;day=1;break; case 9:if(day=31)month+;day=1;break; case 10:if(day=32)month+;day=1;break; case 11:if(day=31)month+;day=1;break; case 12:if(day=32)month+;day=1;break;if(month=13)month=1; year+; if(x=0)bianhuan1();timer1() interrupt 3 BEEP=BEEP;void main(void)init(); while(1) if(k

20、5=0) vary1(); if(k5=1) vary2();void vary1()display(); scankey(); if(y=1&(set_h=h&set_m=m)BEEP=0; else BEEP=1; if(y=1&(h=8&m=0)BEEP=0; else BEEP=1; if(y=1&(h=8&m=45)BEEP=0; else BEEP=1;void vary2() display();scankey();if(y=1&(set_h=h&set_m=m)BEEP=0;else BEEP=1; if(y=1&(h=8&m=2)BEEP=0;else BEEP=1; if(

21、y=1&(h=8&m=47)BEEP=0;else BEEP=1;void init(void)BEEP=0;TMOD=0x11;TH0=0x3c;TL0=0xb0;ET0=1;TR0=1;ET1=1;TR1=0;EA=1;void display(void)P2=0xfe;P0=aqian;if(x%2=1&cnt=10)P0|=0xff;delay(20);P2=0xfd;P0=abai;if(x%2=1&cnt=10)P0|=0xff;else if(x=0&cnt=10)P0&=0x7f;delay(20);P2=0xfb;P0=ashi;if(x%2=0&x!=0)|x=7)&cnt

22、=10)P0|=0x7f; delay(20);P2=0xf7;P0=age;if(x%2=0&x!=0)|x=7)&cnt=10)P0|=0x7f;delay(20);void m_choose(void)switch(month)case 1:if(day=32)month+;day=1;break;case2:if(year%4=0)if(day=30)month+;day=1; elseif(day=29)month+;day=1;break;case 3:if(day=32)month+;day=1;break;case 4:if(day=31)month+;day=1;break;

23、case 5:if(day=32)month+;day=1;break;case 6:if(day=31)month+;day=1;break;case 7:if(day=32)month+;day=1;break;case 8:if(day=32)month+;day=1;break;case 9:if(day=31)month+;day=1;break;case 10:if(day=32)month+;day=1;break;case 11:if(day=31)month+;day=1;break;case 12:if(day=32)month+;day=1;break;void set_

24、time(void)qian=set_h/10;bai=set_h%10;shi=set_m/10;ge=set_m%10; void set_day(void) qian=month/10;bai=month%10;shi=day/10; ge=day%10; void bianhuan(void)qian=year/1000; bai=year%1000/100; shi=year%100/10; ge=year%10; void bianhuan1(void) qian=h/10;bai=h%10;shi=m/10;ge=m%10; void scankey(void)if(K1=0) delay(20); if(K1=0) while(K1=0); x+; if(x=3)set_time(); else if(x=5)set_day(); else if(x=7)bianhuan(); else if(x=8)x=0;bianhuan1(); if(K2=0)delay(20);if(K2=0)while(K2=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论