版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 按键扫描子程序11第5章 系统仿真调试125.1 软件简介125.2软件仿真12第6章 硬件调试与结果分析15结束语17致谢18参考文献19附录A 系统硬件电路原理图20附录B 程序清单21评分表29第1章 概述1.1 设计要求本设计要求设计学校作息时间控制器,其设计实现的功能主要有:使用4位七段显示器来显示现在的时
2、间,显示格式为“时分”,由LED闪动作为秒计数表示,到响应时间打铃,可冬夏季切换。可以设定作息时间,并进行到时提示。能够根据预先设定好的作息时间表自动启停控制电路,完成对外部设备的实时控制。1.2 设计目的增强对单片机的认识,与理解,提高时间能力与水平。学会使用proteus仿真软件,充分把所学电路、模数电理论与实践结合,了解和掌握单片机设计软件与硬件设计结合过程、方法和实现,以及掌握单片机的内部模块的应用。1.3 设计意义用单片机及c语言编程模拟学校作息时间,到时打铃,以及冬季夏季手动切换打铃时间。第2章 系统总体方案选择与说明由按键控制模块控制单片机最小系统的时间、月份、年以及打铃时间,在
3、有单片机控制数码管显示以及蜂鸣器。本次设计实现的功能主要有:使用4位七段显示器来显示现在的时间,显示格式为“时分”,由LED小数点闪动作为秒计数表示。可以设定作息时间,并进行到时提示。能够根据预先设定好的作息时间表自动启停控制电路,完成对外部设备的实时控制。由按键输入控制设置年月日以及当前时间、并可设置闹钟定时,时间到由蜂鸣器发出响声。 图2-1第3章 硬件电路设计3.1 按键控制模块按键控制模块主要有由五个按键组成:K1、K2、K3、K4、K5。分别接P1.3-P1.7口。K1的功能是模式切换键;K2的作用是加一;K3的作用是闹钟使能;K4的作用是减一;K5的作用是冬夏季切换。图3-1当需要
4、设定时间或是校正时间,即可按下模式切换键来进行。校正时间:按第一次K1键,进入小时校正状态,通过按K2、K4键进行小时校正,按一下K2键则加一,按一下K3键则减一。按第二次K1键,进入分校正状态,通过按K2、K4键进行分钟校正。按第三次K1键,进入小时设定状态,此时若不需要设置则不操作。按第四次K1键,进入分钟设定状态,若此时不需要设置则不操作。按第五次K1键进入月份校正状态,通过按K2、K4键进行月份校正。按第六次K1键,进入日校正状态,通过按K2、K4键进行日校正。按下第七次K1键进入年份校正状态,通过按K2、K4键来进行年份校正。校正完毕后,再按一次K1键,则退出时间校正状态,并显示当前
5、校正后的准确时间。设定时间:按第一次K1键进入小时校正状态,此时若不需要设置,则不操作;以此类推。第三次按下K1键,进入小时设定状态,通过按K2、K4键进行小时设定。按下第四次K1键,进入分钟设定状态,通过按K2、K4键进行分钟设定。设定完毕后,按一下K3键(闹钟使能)。继续按K1键,若不需要设置,则不操作,以此类推,到按最后一次K1键则退出时间设定状态并显示当前时间,当时间与我们设定的时间一致时,通过闹钟电路响声提示。若要关闭闹钟,此时再按一次K3键即可停止响声。若k5=1,执行冬季打铃时间。若k5=0,则执行夏季打铃时间。3.2 时间显示模块本设计采用四位七段共阳数码管做显示模块,其中前两
6、位做时、月份显示,其余两位作为分、日显示,选取前两位的一个dp点作为秒点。单片机P0.0-P0.7 分别接七段数码管的abcedfg和dp引脚。P2.0-P2.3分别作为四个七段数码管的片选端。图3-2时间显示模块主要由四位数码管来显示,配合按键控制模块的校正与设定时间,相应的显示。时间正常显示时,LED每闪动60次,分钟自动加一;每六十分钟小时自动加一;每24小时天自动加一。3.3 打铃模块单片机p3.7口控制蜂鸣器,若数码管显示时间与设定的学校作息时间相同,蜂鸣器模拟打铃一分钟。图3-3打钟模块快的主要功能:闹铃。当设定时间与当前时间一致时,则闹钟自动闹铃进行提示,一分钟后,自动退出响铃状
7、态,若按K3键,闹钟退出响铃状态。第4章 应用软件设计4.1系统软件设计思想本系软件设计中,利用单片机定时器设计时间计时处理,采用单片机内部的T0定时器溢出中断来实现,工作在T1方式下,定时50微妙,则连续中断20次即为一秒,得到了我们所需时间的最小单位。该设计用C51编写程序,由于汇编语言的移植性比较差,而C语言则比较灵活。许多子函数都可以直接移植过去。在程序中除了有主函数外还包含许多子函数,如延时函数、按键扫描函数、初始化函数、时间显示函数、设定闹钟显示函数、设定日期显示函数、设定年份显示函数、月份选择函数、年份显示辅助函数、冬夏季作息时间切换函数。4.2 系统主程序在主控程序循环中主要工
8、作为扫描是否有按键,若有按健则做相应的功能处理,同时也扫描显示器显示时间数据,并检查所设置的时间是否到了。时间计时处理程序是等过了1s后,则更新时间数据,将最新的时、分的数据转换为数字数据并显示在七段显示器上。图3-2主程序流程图4.3 中断子程序中断子程序的主要功能:提供时间基准。当连续中断20次时,即为一秒,此时秒加一。当秒值为60时,分钟加一,同时秒清零;当分钟值为60时,小时加一,同时分钟值清零。当小时为24时,天值加一,同时小时清零。由于每月天数不定,1、3、5、7、8、10、12月为31天,当计数到此类月份时,天值为32时,月值加一,同时天值为1;4、6、9、11月为30天,当计数
9、到此类月份时,天值为31时,月值加一,同时天值为1。如果是闰年,则2月为29天,当计数到此类月份时,天值为30时,月值加一,同时天值为一。如果不是闰年,则2月为28天,当计数此类月份时,天值为29时,月值加一,同时天值为一。当月值为13时,则年值加一,同时月值为一。图3-3定时器中断函数4.4 按键扫描子程序按键扫描子程序是程序计中相当重要的一部分。按键扫描子程序的功能是:扫描是否有按键按下,若有键按下,则执行相应功能。是否有键按下 返回模式按键切换处理k1相应设定变量加一 打铃使能相应设定变量减一YNK2K3K4设计中包含了防抖动程序,延时20ms,判断是否为抖动,若不是抖动则执行相应程序功
10、能。第5章 系统仿真调试5.1 软件简介本次课程设计仿真主要采用proteus。Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。5.2软件仿真启动Proteus进行仿真时显示的初始化时间。初始界面仿真图如图:图5-1时间校正:当我们需要正确的显示时间即可进行时间校正,按一下K1即进入小时校正状态,通过K2加一或K4减一来进行小时校正,再按一次K1键即可进行分钟校正,校正原理同小时校正相同。其仿真图如图5-2所示。图5-2日期校正:当我们需要与当前
11、日期保持一致时,则可以使用日期校正功能,连续按动五次K1键,则进入月份校正状态,通过K2加一键或K4减一键进行校正月份,再按一次K1键,则可进行日期校正,校正原理同月份校正原理相同。其仿真图如图5-3。图5-3年份校正:当我们需要保持年份与当前年份一一致时,则可以进行年份校正。连续按动七次K1键,即进入年份校正状态,通过K2加一键或K4减一键进行校正。其仿真图如图5-4所示。图5-4到时打铃:当单片机显示时间与设定学校打铃时间相同时,蜂鸣器响。如图5-5所示。图5-5第6章 硬件调试与结果分析 结束语此次课程设计为期两个星期,围绕着利用最小单片机系统设计模拟学校作息时间打铃系统,实现了时间计时
12、,时间调整,时间暂停,到点响铃和冬夏季切换等功能。使用4位七段显示器来显示现在的时间,显示格式为“时分”,由LED小数点闪动作为秒计数表示。可以设定作息时间,并进行到时提示。能够根据预先设定好的作息时间表自动启停控制电路,完成对外部设备的实时控制。由按键输入控制设置年、月、日以及当前时间并可设置闹钟定时,显示时间与设计作息时间相同时由蜂鸣器发出响声。设计之初,由于忽略了数码管共阴与共阳的问题,导致在硬件调试的时候未能成功,修改后,导致秒点不能闪烁,一直未能找出原因,最后发现是忽略了与、或之间没转换。在设计冬夏季切换时,对主函数初始化问题理解不透彻,致使一开始不能切换。在设计打铃时间表时,还可以
13、采用查表法,此方法相比可以节约程序空间。致谢通过两周的课程设计,利用单片机把复位电路,显示电路,电源电路,继电器电路,电铃电路连接起来,在通过单片机的编程实现设计要求。单片机作息时间控制系统是利用定时器计时处理来做秒计数,当所设置的时间到了,则发出一阵声响,启动继电器,由继电器可以控制收音机开启或者关闭。时,分,秒数据是存在变量内并写入七段显示管的缓冲区内,由显示管扫描中定时时扫描而显示出时间。我由最初的不知所措到后来的获益良多,觉得这两周过得很充实,也积累了一些设计的宝贵经验。这些离不开我的团队对我的帮助,更离不开王老师的悉心指导。参考文献附录A 系统硬件电路原理图附录B 程序清单#incl
14、ude<REG52.H>#define uint unsigned int#define uchar unsigned charuchar code a10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;sbit K1=P14;sbit K2=P15;sbit K3=P16;sbit K4=P17;sbit sd=P10;sbit BEEP=P37;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;u
15、char 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_time(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
16、_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)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
17、)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;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+;da
18、y=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(k5=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&
19、;&(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(y=1&&(h=8&&m=47)BEEP=0;else BEEP=1
20、; 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&am
21、p;&x!=0)|x=7)&&cnt>=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)m
22、onth+;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;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=
23、1;break;case 12:if(day=32)month+;day=1;break;void set_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=0);switch(x)case 0:break;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【初中生物】真菌-2024-2025学年七年级生物上册同步教学课件(人教版2024)
- 【初中生物】微生物的分布-2024-2025学年七年级生物上册同步备课课件(人教版2024)
- 2024就智能工厂建设与运营的合资合同
- 2024年度清雪业务承包合同
- 2024年度特许经营与加盟合同
- 2024建设工程的项目合作协议合同范本
- 2024个人小额贷款合同
- 2024股份合伙人合同范本
- 2024年工程设计合作伙伴协议
- 2024年度原材料采购担保合同
- 工业自动化系统集成项目验收方案
- 新教科版科学六年级上册全册实验汇总 (超全)
- 王洪图黄帝内经80课时讲稿
- 摊铺机司机班组级安全教育试卷
- 重症肌无力指南
- 限制被执行人驾驶令申请书
- 项目主要施工管理人员情况
- 个人借条电子版模板
- 关于学习“国语普通话”发声亮剑【三篇】
- 玻璃厂应急预案
- 婴幼儿游戏照料(婴幼儿回应性照护课件)
评论
0/150
提交评论