单片机课程设计报告(作息时间表)
单片机作息时间控制
成绩课程名称单片机原理与应用课程设计课题名称单片机作息时间控制器专业自动化班级学号姓名指导老师2015年6月29日电气信息学院课程设计任务书课题名称单片机作息时间控制器姓名专业自动化班级1202学号指导老师课程设计时间2015年6月29日-2015年7月10日一、任务及要求本课题要求以单片机为核心,设计一个具有定时和计数功能的智能化作息时间控制器,用于学校教学楼的时间控制,实现时间基准定时,并配合“启动”、“复位”等按键的操作,并按作息时间显示的内容要求有有以下功能:(1)按作息时间接通/断开电铃;(2)课间接通/断开播放音乐设备;(3)时间的设置与值显示(显示的内容要求有时、分、秒各两位)设计要求:(1)确定系统设计方案;(2)进行系统的硬件设计;(3)完成必要的参数计算与元器件选择;(4)完成应用程序设计;(5) 应用系统的硬件和软件的调试。
二、进度安排第一周:周一:集中布置课程设计任务和相关事宜,查资料确定系统总体方案。
周二~周三:完成硬件设计和电路连接周四~周日:完成软件设计第二周:周一~周三:程序调试周四~周五:设计报告撰写。
周五进行答辩和设计结果检查。
三、参考资料[1]王迎旭等.单片机原理及及应用[M]. 2版.机械工业出版社,2012[2]胡汉才.单片机原理及其接口技术[M].3版.清华大学出版社,2010.[3]戴灿金.51单片机及其C语言程序设计开发实例[M].清华大学出版社,2010第1章总体方案设计 (4)1.1 设计要求 (4)1.2优点及意义 (4)1.3 系统硬件电路设计 (4)1.4初步设计思路 (5)第2章硬件电路设计 (6)2.1时钟电路设计 (6)2.2 复位电路设计 (6)2.3 键盘电路设计 (6)2.4 显示电路设计 (7)2.5继电器电路 (8)2.6 I/O接口的分配 (8)第3章应用软件设计 (9)3.1 主程序设计 (9)3.2 子程序设计 (9)3.2.1 显示子程序 (9)3.2.2 响铃子程序 (11)3.2.3键盘扫描子程序 (12)第4章系统调试与性能分析 (13)第5章总结 (15)参考文献 (16)附录 (17)附录A硬件电路原理图 (17)附录B 程序清单 (18)第1章 总体方案设计1.1 设计要求本课题要求以单片机为核心,设计一个具有定时和计数功能的智能化作息时间控制器,用于学校教学楼的时间控制,实现时间基准定时,并配合“启动”、“复位”等按键的操作,并按作息时间显示的内容要求有有以下功能:(1)按作息时间接通/断开电铃; (2)课间接通/断开播放音乐设备;(3)时间的设置与值显示(显示的内容要求有时、分、秒各两位)1.2优点及意义本课题要求设计一个具有定时和计数功能的智能化作息时间控制器,用于学校教学楼的时间控制,实现时间基准定时。
单片机课程设计安排表(综合硬件系统设计)
19周:星期1上午、星期2下午、星期3上午、星期4下午、星期5上午(组装与调试、地点在实验室)
20周星期1下午、星期2上午、星期3下午(组装与调试、地点在实验室)、星期4上午上机检查、星期5(撰写论文、地点在图书馆、实验室或宿舍)
填表人
邓胡滨
填表日期
2011、6、17
指导件系统设计
班级
信息工程学院计算机科学技术专业计算机2008-1班
教研室
课程设计地点
单片机实验室
时间
201年6月27日至2011年7月8日
第19周至第20周
计划安排(一.学生班级与人数、分组情况。二.具体场所。三.课程设计题目。四、进度安排。)
一、学生班级与人数、分组情况:计算机2008-1班共32人,每2人一组
星期1上午星期2下午星期3上午星期4下午星期5上午组装与调试地点在实验室20周星期1下午星期2上午星期3下午组装与调试地点在实验室星期4上午上机检查星期5撰写论文地点在图书馆实验室或宿舍填表人填表日期2011617指导教师含实验室老师教研室审核意见教研室主任签名
2006.9
信息工程学院、软件学院
单片机课程设计安排表
二、具体场所:在微机接口与单片机实验室;
三、课程设计题目:1:LED、步进电机和喇叭的控制2:实时时钟3:智能抢答器4、数字电压表设计5、自动交通管理系统6:基于单片机的函数发生器设计和开发7、夜班防睡控制/记录器8、简易家电定时控制装置9、数字温度计设计10、用单片机控制直流电动机并测量转速11、可编程作息时间控制器程序设计12、两个单片机之间的串行通信接口设计13、数字频率计
四、进度安排:
19周星期1下午、星期2上午、星期3下午、星期4上午、星期5下午(组装与调试、地点在实验室)
基于单片机的作息时间控制器设计
单片机原理及系统课程设计专业:电气工程及其自动化班级:姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2014 年1 月13 日单片机原理及系统课程设计报告基于单片机的作息时间控制器设计1. 课程设计目的(1)进一步熟悉和掌握单片机的最小系统结构及其工作原理。
(2)掌握单片机的接口技术和键盘扫描、数码管显示的原理及拓展使用方法。
(3)通过课程设计,提高综合运用所学知识的能力,掌握单片机程序设计、调试,应用电路设计、分析及调试检测。
2. 设计方案及原理本设计是作息时间控制器,设计其实现的功能主要有:使用4位七段显示器来显示当前的时间,由LED闪动作为秒计数表示,显示格式为“时分”,并可显示日期,显示格式为“月日”,年份单独显示。
由4个按键来作功能设置,可以设置现在的日期、时间及定时设置时间,一旦设置的时间到则作出相应动作:发光二极管闪亮,同时播放音乐。
单数码管显示模块片机最按键控制模块小系闹钟模块统系统方框图图13. 硬件设计3.1单片机AT89C52提供以下标准功能:8K字节FLASH闪存,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
3.2 按键控制模块按键设定部分比较简单,因为本系统按键少,所以在设计上采用了独立按键方式,程序的编制上也采用了简单的扫描方式。
按键控制模块主要有由四个按键1单片机原理及系统课程设计报告组成:K1、K2、K3、K4、。
其中K1的功能是模式切换键;K2的作用是加一;K3的作用是闹钟使能;K4的作用是减一。
K1KKK按键控制模23.3 数码管显示模块时间显示模块主要由四位七段数码管来显示,配合按键控制模块的校正与设定时间,相应的显示。
基于单片机的作息时间控制钟系统设计
基于单片机的作息时间控制钟系统设计LG GROUP system office room 【LGA16H-LGYY-LGUA8Q8-LGA162】课设计任务书摘要片机作息时间控制系统设计的目的和意义:着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智能化发展,作为高新技术之一的单片机以其体积小、功能强、价格低廉、使用灵活等优势,显示出了很强的生命力。
进入21世纪以来,开发推出单片机的公司很多,各种高性能单片机芯片市场也异常活跃,新技术的不断采用,更加使单片机的种类、性能以及应用领域不断扩大和提高。
因其功耗低,超高型,低成本,功能完整,在国内越来越受到用户的重视和广泛使用。
随着科技的进步和技术不断的提升。
一块大而复杂的模拟电路花费了您巨大的精力,繁多的元器件增加了您的成本。
而现在,只需要一块几厘米见方的单片机,写入简单的程序,就可以使您以前的电路简单很多。
相信您在使用并掌握了单片机技术后,不管在您今后开发或是工作上,一定会带来意想不到的惊喜。
以AT89S52为核心控制器件的作息时间控制钟,由键盘、声音输出模块、电源转换模块和存储模块四部分组成。
它利用AT89S52的定时/计数器来计算时间,并用存储器记录数据,保证了系统的可靠性。
AT89S52单片机是整个设计的核心控制器件,根据从键盘接受的数据控制整个系统的工作流程。
整体性好,人性化强、可靠性高,实现了对时间控制的智能化,摆脱了传统由人来控制时间的长短的不便,是现代学校必不可少的设备。
本次校园作息时间控制系统主要用于学校,对一些以24小时为周期的开关量进行自动控制。
如上下课打铃及扩音设备的开与关。
采用AT89S52单片机来实现对上述开关量的控制,利用24C02芯片来存储数据,设有六位数码管、可以实时显示时间、系统还设有输入键盘,用以修改实时时钟,体现了系统简单、工作稳定可靠、价廉、控制时间精确及系统体积小等优点。
关键词:作息时间控制; AT89S52; 24C02目录1 绪论 (1)背景介绍..................................................作息时间控制钟概述 (1)2 硬件介绍 (2)硬件仿真环境介绍 (2)系统整体设计 (2)控制钟硬件设计 (3)系统整体电路图 (4)3作息时间控制钟软件设计 (6)总体介绍 (6)软件环境介绍 (6)流程图介绍 (6)系统主程序 (6)系统数据读写子程序 (10)显示子程序 (14)报警扫描子程序 (19)键盘扫描子程序 (20)设置时钟子程序 (22)T1定时器中断子程序 (25)4 系统调试 (28)5结论 (29)6附录 (24)参考文献 (30)主要元件列表 (31)1 绪论背景介绍随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智能化发展,作为高新技术之一的单片机以其体积小、功能强、价格低廉、使用灵活等优势,显示出了很强的生命力。
基于单片机的作息时间钟的设计
内容摘要单片机是为了实现控制功能而设计的一种微型计算机。
由于单片机是在一块芯片上集成了一台微型计算机所需要的CPU、输入/输出部件和时钟电路等,因此,它具有体积小,使用灵活、成本低、易于产品化和抗干扰能力强,可以在恶劣的环境下实现可靠工作的特点。
设计的作息时间系统硬件上采用了AT89C52单片机,并且采用了单片机可以直接驱动的LM016L液晶显示屏,比市场上大部分LED数码显示管提供更多显示内容。
此外系统还设置了5个按钮可以随时调整当前时间,以保证与标准时间相吻合。
在软件设计方面,系统最大的创新点是不仅能够实现显示年、月、日信息外,而且可以自动识别闰年、闰月及每月的天数。
还可以根据学校、工厂等单位的作息时间表按时打铃、播放音乐、广播体操和其他节目等。
以单片机控制作为设计的创新点让整个系统结构简单、体积小巧、可靠性高、操作简单、扩展性强。
关键词作息时间控制;51单片机;LM016L显示屏;供电电路Design Time Clock Based on MCU091307326 Wu Ning tutor Professor Zhou PengAbstractA single-chip microcomputer is designed in order to realize the control function. Because the microcontroller is CPU, memory, input / integrated on a single chip of a microcomputer required output components and clock circuit, therefore, it has the advantages of small volume, flexible use, low cost, easy production and strong anti-interference ability, features can achieve reliable operation in harsh environments.Hardware schedule system design using AT89C52 single chip, LM016L LCD screen and innovation by the single chip can be directly driven, provides more display contents than the market most of the LED digital display. In addition the system also set up 5 buttons can be adjusted at any time to coincide with the current time, to ensure the standard time. In the aspect of software design, innovation system is the biggest can display year, month, day of information, and can automatically identify the leap year, month and monthly. Also according to the schools, factories and other units schedule on time bell, playing music, broadcast gymnastics and other programs.SCM control as a design innovation so that the whole system is simple in structure, small volume, high reliability, simple operation, expansion and strong.KeywordsTime schedule control; 51 microcontroller; LM016Ldisplay;The power supply circuit目录第一章绪论 (1)1.1课题研究意义 (1)1.2 国内外研究现状 (1)1.3 研究内容 (2)第二章核心芯片及元件介绍 (3)2.1 A T89C52简介 (3)2.1.1AT89C52芯片的引脚 (4)2.1.2AT89C52特点 (7)2.2 LM016L显示屏 (8)2.2.1显示屏主要技术参数: (9)2.2.2引脚功能说明 (9)2.2.3显示屏的指令说明及时序 (11)2.2.4显示屏的RAM地址映射 (13)第三章硬件电路设计 (15)3.1总体电路设计: (15)3.2硬件系统各部分电路设计 (15)3.2.1系统复位电路的设计 (15)3.2.2系统时钟电路的设计: (16)3.2.3闹铃电路设计: (17)3.2.4显示电路设计: (18)3.2.5定时调试按键电路设计 (19)3.2.6电源电路设计 (20)第四章软件设计 (21)4.1主模块设计 (21)4.2显示模块设计 (22)4.3时间设定模块设计 (22)4.4闹铃功能的实现 (23)第五章软件仿真及结果分析 (25)5.1单片机仿真图 (25)5.2电源仿真图 (26)5.3响铃实现仿真图 (26)5.4性能及结果误差分析 (27)第六章结论与展望 (28)6.1结论 (28)6.2展望 (28)致谢 (30)参考文献 (31)附录 (32)基于单片机的作息时间钟的设计091307326 伍宁指导老师周鹏教授第一章绪论1.1课题研究意义科技的进步需要技术不断的提升。
(完整word版)单片机课程设计,校园作息时间系统
湖南工程学院课程设计课程名称微机原理与应用课题名称单片机作息时间控制器专业自动化班级0702学号200701020216姓名罗琦指导教师王迎旭、李晓秀、林国汉2010年 6 月20日湖南工程学院课程设计任务书课程名称微机原理与应用课题单片机作息时间控制器专业班级自动化0702学生姓名罗琦学号200701020216指导老师王迎旭、李晓秀、林国汉审批任务书下达日期2010年 6 月7日任务完成日期2010年 6 月20日、目录第一章引言 (7)1.1简介及技术要求 (7)1。
2计时方案 (7)1.3键盘/显示方案 (7)第二章硬件设计.........................................................8 2.1 电路原理图 (8)2。
2 系统工作流程 (9)2。
3 系统使用说明 (10)第三章系统软件设计 (10)3。
1 软件设计 (10)3。
2 系统工作流程 (11)第四章程序模块设计 (15)4.1主程序模块 (16)4。
2定时中断服务程序模块 (18)4.3扫描显示模块 (22)4.4键扫描子程序 (23)4。
5键值处理子程序 (27)4.6移位键处理程序模块 (30)第五章调试及分析 (32)第六章课程总结 (33)参考文献 (34)附录 (35)第1章引言因为单片机的种类多,而型号杂,也是我们学习中的困难,所以就MCS—51系列的产品来说,就是一个典型的学习方法.对于类似汇编的单片机编程过程,也是一个十分有趣的过程.为了更好的说明,我以上介绍先从应用电路切入,同时介绍它们的使用方法,以便能快速掌握它们的应用。
1。
1简介及技术要求校园作息时间控制系统主要用于学校,对一些以24小时为周期的开关量进行自动控制。
如上下课打铃及扩音设备的开与关、教学楼照明的定时开与关、学生宿舍灯及校园路灯的定时开关的控制。
技术要求如下:(1)定时准确,月误差《=10%。
单片机控制作息时间
表1.1 作息时间控制表时间事件动作6:00 宿舍通电,教室灯开D1亮、D2亮8:00 第一节上课铃响LS1响,延时15S 8:45 第一节下课铃响LS1响,延时15S 8:55 第二节上课铃响LS1响,延时15S 9:40 第二节下课铃响LS1响,延时15S 10:00 第三节上课铃响LS1响,延时15S 10:45 第三节下课铃响LS1响,延时15S 10:55 第四节上课铃响LS1响,延时15S 11:40 第四节下课铃响LS1响,延时15S 14:30 第五节上课铃响LS1响,延时15S 15:15 第五节下课铃响LS1响,延时15S 15:25 第六节上课铃响LS1响,延时15S 16:10 第六节下课铃响LS1响,延时15S 16:30 第七节上课铃响LS1响,延时15S 17:15 第七节下课铃响LS1响,延时15S 17:25 第八节上课铃响LS1响,延时15S 18:10 第八节下课铃响LS1响,延时15S19:30 第九节上课铃响路灯开LS1响,延时15SD3亮20:15 第九节下课铃响LS1响,延时15S 20:25 第十节上课铃响LS1响,延时15S 21:10 第十节下课铃响LS1响,延时15S 23:00 宿舍灯熄灭,路灯熄灭,教室等灭D1灭、D2灭、D3灭#include<REG52.H>#define uint unsigned int#define uchar unsigned charuchar code a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//***************************************************************************** ********sbit K1=P1^4;sbit K2=P1^5;sbit K3=P1^6;sbit K4=P1^7;sbit sd=P3^6;sbit BEEP=P3^7;uchar m=5,h=20,sec=58,cnt=0,x,y,qian,bai,shi,ge;uchar set_h=12;uchar set_m=58;uchar month=7;uchar day=5;uchar th0_f;uchar tl0_f;uint year=2010;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);//时间显示辅助函数changedata(uchar *song,uchar *diao,uchar *jie);音乐符号串解释函数void play(uchar *songdata);//奏乐函数//世上只有妈妈好uchar code mamahao[]={"6.5_35|`16_5_6-|35_6_53_2_|1_,6_5_3_2-|""2.3_55_6_|321-|5.3_2_1_,6_1_|,5--"};uchar code freq[36*2]={0xA9,0xEF,//00220HZ ,1 //00x93,0xF0,//00233HZ ,1#0x73,0xF1,//00247HZ ,20x49,0xF2,//00262HZ ,2#0x07,0xF3,//00277HZ ,30xC8,0xF3,//00294HZ ,40x73,0xF4,//00311HZ ,4#0x1E,0xF5,//00330HZ ,50xB6,0xF5,//00349HZ ,5#0x4C,0xF6,//00370HZ ,60xD7,0xF6,//00392HZ ,6#0x5A,0xF7,//00415HZ ,70xD8,0xF7,//00440HZ 1 //120x4D,0xF8,//00466HZ 1# //130xBD,0xF8,//00494HZ 2 //140x24,0xF9,//00523HZ 2# //150x87,0xF9,//00554HZ 3 //160xE4,0xF9,//00587HZ 4 //170x3D,0xFA,//00622HZ 4# //180x90,0xFA,//00659HZ 5 //190xDE,0xFA,//00698HZ 5# //200x29,0xFB,//00740HZ 6 //210x6F,0xFB,//00784HZ 6# //220xB1,0xFB,//00831HZ 7 //230xEF,0xFB,//00880HZ `10x2A,0xFC,//00932HZ `1#0x62,0xFC,//00988HZ `20x95,0xFC,//01046HZ `2#0xC7,0xFC,//01109HZ `30xF6,0xFC,//01175HZ `40x22,0xFD,//01244HZ `4#0x4B,0xFD,//01318HZ `50x73,0xFD,//01397HZ `5#0x98,0xFD,//01480HZ `60xBB,0xFD,//01568HZ `6#0xDC,0xFD,//01661HZ `7 //35};//******************************//音乐符号串解释函数changedata(uchar *song,uchar *diao,uchar *jie) {uchar i,i1,j;char gaodi;uchar banyin;uchar yinchang;//Òô³¤uchar code jie7[8]={0,12,14,16,17,19,21,23};*diao=*song;for(i=0,i1=0;;){gaodi=0;banyin=0;yinchang=4;if((*(song+i)=='|') || (*(song+i)==' ')) i++;switch(*(song+i)){case ',': gaodi=-12;i++;break;case '`': gaodi=12;i++;break;}if(*(song+i)==0){*(diao+i1)=0;*(jie+i1)=0;return;}j=*(song+i)-0x30; i++;j=jie7[j]+gaodi;yinc: switch(*(song+i)){case '#':i++;j++;goto yinc;case '-':yinchang+=4;i++;goto yinc;case '_':yinchang/=2;i++;goto yinc;case '.':yinchang=yinchang+yinchang/2;i++;goto yinc;}*(diao+i1)=j;*(jie+i1)=yinchang;i1++;}}//****************************************** //奏乐函数void play(uchar *songdata){uchar i,c,j=0;uint n;uchar diaodata[40];uchar jiedata[40];changedata(songdata,diaodata,jiedata);TR1=1;for(i=0;diaodata[i]!=0;i++) {tl0_f=freq[diaodata[i]*2];th0_f=freq[diaodata[i]*2+1];for(c=0;c<jiedata[i];c++){for(n=0;n<24;n++){scankey();if(y==0) {TR1=0;return;}display();}}TR1=0;for(n=0;n<500;n++);TR1=1;}TR1=0;}void time0(void) interrupt 1{TH0=0x3c;TL0=0xb0;cnt++;if(y==1&&(set_h==h&&set_m==m))sd=~sd;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;case 2:if(year%4==0){if(day==30){month++;day=1;}}else{if(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;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;}if(month==13){month=1;year++;}}}}if(x==0)bianhuan1();}}timer1() interrupt 3{TL1=tl0_f;TH1=th0_f; //调入预定值BEEP=~BEEP; //取反音乐输出IO}void main(void){init();while(1){display();scankey();if(y==1&&(set_h==h&&set_m==m))play(mamahao);else BEEP=0;}}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=a[qian];if(x%2==1&&cnt>=10)P0&=0x00;delay(20);P2=0xfd;P0=a[bai];if(x%2==1&&cnt>=10)P0&=0x00;else if(x==0&&cnt>=10)P0|=0x80;delay(20);P2=0xfb;P0=a[shi];if(((x%2==0&&x!=0)||x==7)&&cnt>=10)P0&=0x00;delay(20);P2=0xf7;P0=a[ge];if(((x%2==0&&x!=0)||x==7)&&cnt>=10)P0&=0x00;delay(20);}void m_choose(void){switch(month){case 1:if(day==32)day=1;else if(day==0)day=31;break;case 2:if(year%4==0){if(day==30)day=1;else if(day==0)day=29;}else{if(day==29)day=1;else if(day==0)day=28;}break;case 3:if(day==32)day=1;else if(day==0)day=31;break;case 4:if(day==31)day=1;else if(day==0)day=30;break;case 5:if(day==32)day=1;else if(day==0)day=31;break;case 6:if(day==31)day=1;else if(day==0)day=30;break;case 7:if(day==32)day=1;else if(day==0)day=31;break;case 8:if(day==32)day=1;else if(day==0)day=31;break;case 9:if(day==31)day=1;else if(day==0)day=30;break;case 10:if(day==32)day=1;else if(day==0)day=31;break;case 11:if(day==31)day=1;else if(day==0)day=30;break;case 12:if(day==32)day=1;else if(day==0)day=31;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;case 1:h++;if(h==24)h=0;bianhuan1();break;case 2:m++;if(m==60)m=0;bianhuan1();break;case 3:set_h++;if(set_h==24)set_h=0;set_time();break;case 4:set_m++;if(set_m==60)set_m=0;set_time();break;case 5:day++;m_choose();set_day();break;case 6:month++;if(month==13)month=1;set_day();break;case 7:year++;bianhuan();break;}}}if(K3==0){delay(20);if(K3==0){while(K3==0);y++;if(y==2)y=0;}}if(K4==0){delay(20);if(K4==0){while(K4==0);switch(x){case 0:break;case 1:h--;if(h==255)h=23;bianhuan1();break;case 2:m--;if(m==255)m=59;bianhuan1();break;case 3:set_h--;if(set_h==255)set_h=23;set_time();break;case 4:set_m--;if(set_m==255)set_m=59;set_time();break;case 5:day--;m_choose();set_day();break;case 6:month--;if(month==0)month=12;set_day();break;case 7:year--;bianhuan();break;}}}}void delay(uchar t) //延时0.1毫秒 {uchar i;do{for(i=0;i<23;i++);;;} while(t--);}附2:系统原理图 XTAL218XTAL119ALE 30EA 31PSEN 29RST 9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD 17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52234567891RP1RESPACK-8LS1SPEAKERR1200模式切换加一使能闹钟减一D1LED-RED R21k Q1NPN K1K2K3K4C133pF X1CRYSTAL C233pFC310uF R310k。
单片机时间和作息时间控制.doc
单片机时间和作息时间控制毕业设计报告的题目:单片机时间报告及作息时间控制综述——4335435433543354335435 4335435435 435435435 435435435 43543435 3543543第一章前言——4 35435435 354354 35435 3544 35435 354 35435 3544 35435 354 3544 35 35435435435 34 3544 34 35435 34 34 3 单片机概论——5335433543354335433543354354335435435435354 62.3单片机的选择——5535354354354354——3335 4335433543354 354354354 35454 354 354 92.4单片机特性概论3333——.433——3434354 单片机概论——5335433543354335433543354354335435435435354 62.3单片机的选择——5535354354354354——3335 4335433543354 354354354 35454 354 354 92.4单片机特性概论3333——.433——3434354 本文主要介绍了SPCE061A芯片。
这个例子被设计成一个具有报时和控制休息时间功能的时钟。
它利用单片机的2Hz时基对年历进行计时和计算,并利用单片机的语音功能进行报告。
本文详细讨论了整个功能的实现,包括硬件电路和软件。
第一章前言1.1设计任务和要求(1)。
作息时间可以控制电铃(2)。
作息时间可以启动和停止音乐播放器的功能,单片机作息时间控制如下: l使用4位7段显示来显示当前时间。
L的显示格式为“时分”,发光二极管闪烁计数秒,表示L有4个功能设置键。
可以设置当前时间和显示定时设置时间L。
时间一到,就会发出声音。
同时,继电器启动,可以控制播放器的开关。
1.2原理表明,本例的设计是一个具有报时功能和作息时间的控制时钟。
单片机课程作息时间控制设计报告
单片机课程作息时间控制设计报告1. 引言单片机是现代电子技术的重要组成部分,在工业自动化、电子产品控制等领域都有广泛应用。
本次设计目的是通过单片机实现课程作息时间的自动控制,以解决学校师生在课程安排上的繁琐和误差问题。
2. 设计方案2.1 系统功能本系统通过采集外部的时间信息,并通过单片机进行处理和控制,最终实现对学校课程作息时间的自动控制。
2.2 硬件设计本系统的硬件设计主要包括单片机、时钟模块和显示模块。
单片机负责控制整个系统的运行以及与外部硬件的交互,时钟模块提供系统需要的准确时间信息,显示模块用于显示当前的时间和课程信息。
2.3 软件设计本系统的软件设计主要包括时间采集模块、时间处理模块和课程控制模块。
时间采集模块负责从时钟模块获取当前的时间信息,时间处理模块用于处理时间数据,课程控制模块根据时间数据决定当前课程的状态和下一节课的时间。
3. 工作流程3.1 初始化系统启动时,单片机初始化各个硬件模块,并从时钟模块获取当前的时间信息。
3.2 时间采集单片机通过时钟模块定时采集当前的时间信息,并将其存储在内部存储器中。
3.3 时间处理时间处理模块从内部存储器中读取当前的时间信息,并根据预设的课程时间表以及当前的时间,确定当前课程的状态(上课、下课或休息)。
3.4 课程控制课程控制模块根据当前课程的状态,通过单片机控制相关设备的开关,实现对课程作息时间的控制。
4. 技术难点4.1 时间信息的准确获取为了保证系统的准确性,需要选择一款精度较高的时钟模块,并采用合适的算法来处理时间数据。
4.2 课程时间表的灵活性不同学校的课程安排可能不同,因此需要设计一个灵活可变的课程时间表,以适应不同学校的需求。
5. 结论通过单片机实现课程作息时间的自动控制,可以提高学校课程安排的效率,减少学生和老师的繁琐操作。
本设计报告详细介绍了系统的硬件和软件设计,以及系统的工作流程和技术难点。
在实际应用中,可以根据具体需求进行相应的改进和调整,以满足不同学校的需求。
可编程作息时间控制器设计单片机课程设计
单片机系统计 设课 程 成绩评定表 可编程作息时间控制器设计设计课题 : 电气工程学院学院名称 : :专业班级 :学生姓名 :号 学 指导教师: :设计地点 :设计时间单片机系统计设 课 程可编程作息时间控制器设计课程设计名称: :级 业 班 专 : 姓 名学生 :学 号: 师 指 导 教 课程设计地点: 课程设计时间:1、引言 01.1研究背景和用途 (2)1.2设计思想及基本功能 (3)1.3研究内容及采方法 (3)3 ...................................................................................................... (1)主要研究内容3 ...................................................................................................... 2)主要采用方法(4............................................................................................................................ .2、总体设计方案4 .......................................................................................................................... 2.1 方案选取4........................................................................................................................... .2.2系统框图5................................................................................................................... .2.3系统工作原理5................................................................................................................. 3、硬件电路及芯片介绍5单片机............................................................................................................... 3.1 A T89C518....................................................................................................... 3.2 1602LCD液晶显示器9.................................................................................................................... 3.3其他重要元件9独立式键盘地接口电路: (1)9 ............................................................................................................. )蜂鸣器:(210............................................................................................................. 硬件电路设计图.3.4 10......................................................................................................................... .、4 系统软件设计............................................................................................................. 11.主程序软件设计4.1 ......................................................................................................... 11 键盘扫描程序设计.4.212.......................................................................................................... 4.3时钟调节程序设计13.................................................................................................. 4.4闹钟时间调节程序设计14............................................................................................. 闹钟时间判断子程序设计.4.515.......................................................................................................................................... 总结5、16献...................................................................................................................................... 考文参16 ............................................................................................................................................ 附录:、引言1研究背景和用途1.120世纪末,电子技术得到了飞速地发展.在其推动下,现代电子产品乎渗透到了社会地各个领域,有力地推动和提高了社会生产力地发展与信息化程度,同时也使现代电子产品性能进一步提升,产品更新换代地节奏也越来越快.时间对然而遇到.于人来说总是那么珍贵,工作地忙碌性和繁杂让人容易忘记当前时间.对于学校.重大事情地时候,一旦忘记时间,就会给自己或他人造成更大地麻烦如今,在电子计算机基础上发展而来地可编程作息时间.来说作息时间尤为重要控制器,它可以利用电子计算机地内部时间,通过程序判断处理,完成对作息时间地精确控制,并且由于是程序控制,所以可通过改变程序而进而灵活改变可编程时间控制器可实现.作息时间,同时可以实时显示时间,并实现打铃功能对时间控制地智能化,摆脱由人控制时间地长短不同地不便,并且可以在必要.时人工切入控制,完美地满足作息时间控制设计思想及基本功能1.2该系统能够实现以往地人工控制时间具有地功能,即到达所规定地时间后打铃地功能,再在选取设计方案和采取元器件方次功能地前提下,还具有以往方式不具备地时间显示功能..面,该系统本着简单实用经济地思想,尽量简化电路,以最经济地方式达到设计要求可编程作息时间控制器具备以下功能:)可以通过键盘进行时间设定1 ()具有屏幕显示地功能(2.(3)到达所设定地时间,能够进行上下课打铃研究内容及采方法1.3)主要研究内容(1用C语言编写作息时间控制程序,按照给定地时间模拟控制,上下课打铃、灯光控制(屏幕显示),并且具备日期和时钟显示.给定地时间可修改,可模拟手动控制,用扬声器模拟打铃.(2)主要采用方法程需要用到延时程序,所以把延时程序单独做成一个子程序,然后在需要地时候调用它,使得时间显示程序更加精炼,此时日期和时钟显示功能已经完成;而后设计灯光控制(屏幕显示),采用比较跳转地方式即可,当到达设定地时间区域时通过比较来判断是亮灯还是灭灯;随后是上下课打铃地模拟,需要调用DOS 显示功能,将设定好地时间在屏幕上显示出来,然后调用PC机内部时钟,判断时钟与给定时间是否相同,进而判断是否响铃,若响铃则调用设定好地响铃程序,并实现屏幕模拟显示;给定时间修改是调用键盘I/O中断功能号,获取键值地方法来进入,先确定应该修改哪个响铃,再将新地响铃时间数.据存入要修改时钟地缓冲区,并将其覆盖来实现;模拟手动控制、用扬声器模拟打铃,同样采用调用键盘I/O中断功能号,获取键值地方法,判断是否与设定地手动按键相同,若相同则进入手动控制,进入后调用响铃程序,而后自动退出响铃,开始其他响应功能.2、总体设计方案2.1 方案选取通常通过单片机对时钟模块进行设计有两种方案:一是通过单片机内部地定时器计数器,采用软件编程实现时钟技术,一般为软时钟,这个方法硬件线路简单,系统功能一般与软件设计有关,通常用在对时间精度要求不高地场所;二是采用时钟芯,它地功能强大,功能部件集中在芯片内部,自动产生时钟等相关功能.硬件成本相对较高,软件编程简单.通常用在对时钟要求较高地场所.综合两者特点,此次设计精度不高,而且根据设计思想地经济性,采用第一种方案.2.2系统框图系统框图2.3系统工作原理显示器设计一个简易地可编程作息时间控制器,若LCD使用AT89C51单片机结合字符型程序执行后工作指示灯.LCD选择有背光显示地模块,在夜晚或黑暗地场合中也可使用路可调闹钟组4闪动,表示程序开始执行,同时显示系统时间.作息时间控制器是由LED其中操作键..当四路闹钟中地任一路到时,均会点亮灯、打铃成,从而实现打铃等功能分地调整、设置//时地调整、显示闹钟设置地时间K1~K4地功能分别为:设置限制地时间.设置完成、闹钟更换闹钟地时间/、硬件电路及芯片介绍3 单片机3.1 AT89C51 本设计地核心硬件就是8051芯片,这里选择了AT89C51,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read OnlyMemory)地低电压,高性能CMOS8位微处理器,俗称单片机.该器件采用A TMEL高密度非易失存储器制造技术制造,与工业标准地MCS-51指令集和输出管脚相兼容.由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL地AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉地方案.引脚图图3.1 AT89C51引脚及其功能:P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流.当P1口地管脚第一次写1时,被定义为高阻输入.P0能够用于外部程序数据存储器,它可以被定义为数据/地址地第八位.在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高.P1口:P1口是一个内部提供上拉电阻地8位双向I/O口,P1口缓冲器能接收输出4TTL门电流.P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉地缘故.在FLASH编程和校验时,P1口作为第八位地址接收. P2口:P2口为一个内部上拉电阻地8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入.并因此作为输入时,P2口地管脚被外部拉低,将输出电流.这是由于内部上拉地缘故.P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址地高八位.在给出地址口输出其特P2时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,“1”殊功能寄存器地内容.P2口在FLASH编程和校验时接收高八位地址信号和控制信号.P3口:P3口管脚是8个带内部上拉电阻地双向I/O口,可接收输出4个TTL门电流.当P3口写入“1”后,它们被内部上拉为高电平,并用作输入.作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉地缘故. P3口也可作为AT89C51地一些特殊功能口,如下所示:备选功能口管脚P3(串行输入口)P3.0 RXD)P3.2 /INT0(外部中断0 P3.1 TXD(串行输出口)外部输入)P3.4 T0(记时器0 P3.3 /INT1(外部中断1)外部输入)P3.5 T1(记时器1(外部数据存储器写选通)P3.6 /WR(外部数据存储器读选通)P3.7 /RD. 口同时为闪烁编程和编程校验接收一些控制信号P3. 脚两个机器周期地高电平时间当振荡器复位器件时,要保持RST RST:复位输入. ALE/PROG:当访问外部存储器时,地址锁存允许地输出电平用于锁存地址地地位字节.在FLASH编程期间,此引脚用于输入编程脉冲.在平时,ALE端以不变地频率周期输出正脉冲信号,此频率为振荡器频率地1/6.因此它可用作对外部输出地脉冲或用于定时目地.然而要注意地是:每当用作外部数据存储器时,将跳过一个ALE脉冲.如想禁止ALE 地输出可在SFR8EH地址上置0.此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用.另外,该引脚被略微拉高.如果微处理器在外部执行状态ALE禁止,置位无效.PSEN:外部程序存储器地选通信号.在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效.但在访问外部数据存储器时,这两次有效地/PSEN信号将不出现.EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器.注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器.在FLASH编程期间,此引脚也用于施加12V编程电源(VPP).. XTAL1:反向振荡放大器地输入及内部时钟工作电路地输入XTAL2:来自反向振荡器地输出. P1.0口接K1按键,P1.1口接K2按键,P1.2口接K3按键,P1.3口接K4按键,P2.0口接RS口,P2.1口接RW口,P2.2口接E口,P2.3口接发光二极管D2阳极,P2.4口接发光二极管D1阳极,P2.5口接电阻R3,P3口地8个口依次和LCD地数据口D0~D7.液晶显示器3.2 1602LCD LM016L 液晶模块采用HD44780 控制器.HD44780 具有简单而功能较强地指令集,可以实现字符移动、闪烁等功能.LM016L 与单片机MCU(Microcontroller Unit)通讯可采用8 位或者4 位并行传输两种方式.HD44780 控制器由两个8 位寄存器、指令寄存器(IR)和数据寄存器(DR)、忙标志(BF)、显示数据RAM(DDRAM)、字符发生器ROM(CGROM)、字符发生器RAM(CGRAM)、地址计数器(AC).IR 用于寄存指令码,只能写入不能读出;DR 用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM 读出地数据.BF 为1 时,液晶模块处于内部处理模式,不响应外部操作指令和接受数据.DDRAM 用来存储显示地字符,能存储80 个字符码.CGROM 由8 位字符码生成5*7 点阵字符160 种和5*10 点阵字符32 种,8 位字符编码和字符地对应关系,可以查看参考文献[3]中地表4.CGRAM 是为用户编写特殊字符留用地,它地容量仅64 字节.可以自定义8 个5*7 点阵字符或者4 个5*10 点阵字符.AC 可以存储DDRAM 和CGRAM地地址,如果地址码随指令写入IR,则IR 自动把地址码装入AC,同时选择DDRAM 或者CGRAM 单元.LM016L 液晶模块地引脚功能见表:引脚图3.2 LCD1602图. 为地电源脚:VSS 第1. 5V正电源2脚:VDD接第第3脚:VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K地电位器调整对比度.. 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器RS脚:4第第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作.当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据.第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令. 第7~14脚:D0~D7为8位双向数据线.将respack-8地1口接电源,2~8口顺序和P3口相连接,并和LCD地数据口D1~D7相接,VSS 接地,VDD接电源,VEE接滑动变阻器,RS口接P2.0口,RW口接P2.1口,E口接P2.2口.其他重要元件3.3(1) 独立式键盘地接口电路:在单片机应用系统中,有时只需要几个简单地按键向系统输入信息.这时,可将每个按键接在一根I/O接口线上,这种方式地连接称为独立式键盘.每个独立式按键单独占有一根I/O接口线,每根I/O接口线地工作状态不会影响到其他I/O接口线.这种按键接口电路配置灵活,硬件结构简单,但每个按键必须占用一根I/O接口线,I/O接口线浪费较大.故只在按键数量不多时采用这种按键电路.在此电路中,按键输入都采用低电平有效.上拉电阻保证了按键断开时,I/O接口线有确定地高电平.当I/O接口内部有上拉电阻时,外电路可以不配置上拉电阻.独立式键盘3.3 图(2)蜂鸣器:将发出有规律地P2.5将蜂鸣器地一端电源,另一端接至晶闸管集电极,当需要闹钟响时,电平使得晶闸管导通,从而使得蜂鸣器发出声响.蜂鸣器接线图图3.4.口相接K1~K4上拉电阻键分别与单片机地P1.0~P1.3 (3)respack-8:硬件电路设计图3.4 将respack-8地1口接电源,2~8口顺序和P3口相连接,并和LCD地数据口D1~D7相接.发光二极管D1和P2.4口相连接用以显示秒计时,发光二极管和P2.3口相连接用以显示闹钟时地广播,按键K1~K4分别与单片机地P1.0~P1.3口相接,以实现按键地多功能使用.系统整体电路图图3.54、系统软件设计.系统软件主要包括主程序、显示子程序、键盘扫描子程序、定时子程序等.本章节系统地介绍了可编程作息控制器地主程序和主要功能子程序地设计流程,具体地代码见附录.主程序软件设计4.1 主程序无限循环,采用了程序结构地模块化,避免了一些函数地不必要地重复书写.主要完成LCD初始化,单片机初始化,键盘扫描和显示时间等功能.主程序流程图如图所示:主程序流程图图4.1键盘扫描程序设计4.2 由于键位未按下,输出高电平,键位按下,输出低电平,因此可以通过检测输出线路上地电平高低来判断有无按键按下.但是无论按下键位还是松开键位都会产生抖动.如果抖动不做处理,必然会出现错误.抖动消除有两种方法:硬件消除和软件消除.硬件消除是通过在按键输出电路上加上一定硬件线路来消除抖动,一般采用R-S触发器.软件消除是利用延时来跳过抖动过程.一般情况下,延时10ms就可以跳过抖动过程了,然后又单片机开始执行相应地命令,下图为键盘程序设计流程图:键盘扫描程序流程图4.2图时钟调节程序设计4.3 按下K1键,进入始终调节模式,可是可以通过按下K1,K2按键来调节时钟时和分地大小,设置完毕后,按下K3,返回时钟显示模式.流程图如下时钟调节流程图4.3图闹钟时间调节程序设计4.4 按下K3键进入闹钟模式,此时显示器第二行显示闹钟时间,K1和K2可调节闹钟地时间,设置完毕后,按下K3键完成设置此时会显示设置好地闹钟时间,250ms过后,自动返回时钟模式.流程图如下:闹钟时间调节程序流程图4.4图闹钟时间判断子程序设计4.5 闹钟时间地判别主要是通过设定时间与实时时间逐位对比确定是否进行闹铃,流程图如图所示图4.5闹钟时间判断子程序流程图5、总结在整个设计过程中,充分发挥人地主观能动性,自主学习,学到了许多没学到地知识.这次课程设计地制作过程是我地一次再学习,再提高地过程.在课程设计中我充分地运用了大学期间所学到地知识.我从资料地收集中,掌握了很多单片机、LED数码管地知识,让我对我所学过地知识有所巩固和提高,并且让我对当今单片机、LED地最新发展技术有所了解.在整个过程中,我学到了新知识,增长了见识.在今后地日子里,我仍然要不断地充实自己,争取在所学领域有所作为.脚踏实地,认真严谨,实事求是地学习态度,不怕困难、坚持不懈、吃苦耐劳地精神是我在这次设计中最大地收益.我想这是一次意志地磨练,是对我实际能力地一次提升,也会对我未来地学习和工作有很大地帮助.在此次设计中,知道了做凡事要有一颗平常地心,不要想着走捷径,一步一脚印.也练就了我地耐心,做什么事都在有耐心.此次课程设计中学了很多很多东西,这是最重要地.献文参考2004 [1] 张毅刚主编,单片机原理及应用,北京:高等教育出版社,2008 程序设计,北京:机械工业出版社,C51 [2] 陈涛编著,单片机应用及2007 入门实用教程,北京:机械工业出版社,[3] 周润景主编,PROTEUS2010皮大能主编,单片机课程设计指导书,北京:北京理工大学出版社,[4][5] 楼然苗主编,单片机实验与课程设计(Proteus仿真版),浙江:浙江大学出版社,2010附录:***************作息时间控制器。
单片机课程设计-作息时间控制器
河南理工大学—电子设计综合训练报告作息时间控制器姓名:学号:专业班级:指导老师:所在学院:2010 年7 月2 日本设计是作息时间控制器,由单片机最小系统、按键模块、数码管显示模块、闹钟模块组成。
采用单片机AT89S52与12MHZ晶振相连;通过按键K1、K2、K3、K4控制时间的校正、闹钟时间设定;数码管显示模块用来显示时间,显示格式为“时分”,并能够根据需要显示年、月、日,由数码管小数点闪动作为秒计数;闹钟模块进行到时提醒并作出相应动作:发光二极管闪亮,同时播放音乐。
本设计中,利用单片机定时器设计时间计时处理,采用单片机内部的T0 定时器溢出中断来实现,工作在T1 方式下,定时50 微妙,则连续中断20 次即为一秒,得到了我们所需时间的最小单位秒,60 秒为一分,60 分为一小时,24 小时为一天,1、3、5、7、8、10、12 月为31 天,4、6、9、11 月为30 天,闰年二月为29 天,非闰年二月为28 天,12 个月为一年。
采用这种时间设计思想来进行时间设置。
在整个系统的设计中,单片机的P0 口输出显示信号,P1 口按键输入控制、P2 口用来扫描,为动态显示、P3 口闹钟模块。
该设计用C51 编写程序,由于汇编语言的移植性比较差,而C 语言则比较灵活。
许多子函数都可以直接移植过去。
摘要 (1)目录 (2)1概述 (1)1.151 单片机简介 (1)1.2设计要求及功能 (1)1.3本设计实现的功能 (1)2系统总体方案及硬件设计 (2)2.1系统总体方案框图 (2)2.2按键控制模块 (3)2.3时间显示模块 (4)2.4闹钟模块 (4)3软件设计 (5)3.1系统软件设计思想 (5)3.2系统主程序 (5)3.3中断子程序 (6)3.4按键扫描子程序 (8)4Proteus 软件仿真 (9)4.1Proteus 软件简介 (9)4.2Proteus 软件仿真 (9)5课程设计体会 (13)参考文献: (14)附1:源程序代码 (15)附2:系统原理图 (25)1 概述1.1 51 单片机简介单片微型计算机简称单片机,即把组成微型计算机的各个功能部件,如中央处理器、随机存储器、只读存储器、I/O接口电路、定时器/计数器以及串行通信接口等集成在一块芯片上,构成一个完整的微型计算机。
基于单片机的作息时间控制器系统设计课程
基于单片机的作息时间控制器系统设计课程第一步是系统的需求分析。
在这个任务中,学生需要了解人们在日常生活中的作息规律,并确定系统的主要功能和特点。
学生需要设计一个可以根据设定时间点自动控制不同设备的系统,比如定时开关灯、开关窗帘、调节室内温度等。
在需求分析的过程中,学生需要考虑不同的需求,比如工作日和休息日的时间表不同等。
第二步是系统的硬件设计。
学生需要选择合适的单片机以及其他必要的传感器和执行器。
学生需要学习如何连接和配置这些硬件设备,并学会使用适当的编程语言来控制它们。
学生还需要设计电源电路以供系统运行,并考虑系统的稳定性和安全性。
第三步是系统的软件设计。
学生需要学习如何编写单片机的程序,以实现所需的功能。
学生需要掌握基本的编程概念和语法,并学会如何使用特定的开发环境和库。
学生需要编写可以读取时间的程序,并在设定的时间点执行相应的操作。
学生还需要考虑灵活性问题,比如能否通过手机或者电脑远程控制系统。
最后一步是系统的测试和调试。
学生需要使用合适的测试方法和工具来验证系统的功能和性能。
学生需要学习如何查找和修复软硬件问题,并考虑如何提高系统的可靠性和稳定性。
通过这门课程的学习,学生可以了解到基于单片机的系统设计的基本原理和方法。
学生通过设计和实现作息时间控制器系统,不仅可以提高自己的实践能力,还可以培养自己的创新思维和解决问题的能力。
在进一步研究基于单片机的作息时间控制器系统设计课程中,学生还可以学习更多的相关知识和技能。
一方面,学生可以学习更深入的电子技术知识。
他们可以了解电子元器件的工作原理和特性,学会使用不同的传感器来检测环境参数,比如温度、湿度和光照强度等。
他们还可以学习如何设计合适的电路来保护系统免受电压干扰和过载等问题的影响。
此外,学生还可以了解电源电路和通信接口的设计,以满足系统的需求。
另一方面,学生可以学习更高级的编程技术。
他们可以学习如何使用C语言来编写更复杂的程序,并学会使用编程工具来调试代码和优化性能。
毕业设计24单片机对作息时间的控制
毕业设计24单片机对作息时间的控制作息时间的控制对于个人的健康和生活效率有着重要的影响。
借助技术手段,比如使用单片机来控制作息时间,可以更加智能和便捷地管理自己的生活。
本文将介绍一种基于24单片机的作息时间控制系统。
首先,我们需要确定系统的硬件组成。
我们选择使用24单片机作为核心控制器。
24单片机集成了高效的计时计数器和中断控制器,可以很方便地用来实现作息时间的控制。
此外,我们还需要一个LCD显示屏来显示时间和相关信息,以及一些按钮用于调整时间和设置作息规则。
接下来,我们需要确定系统的基本功能。
我们的目标是实现根据用户的需求智能地控制作息时间,包括起床、午饭、午休、晚饭、睡觉等重要时间节点。
系统的流程如下:1.初始化系统,包括设置当前时间、作息规则和相关参数。
2.在LCD显示屏上显示当前时间和作息规则。
3.监测按钮的按下情况,如果用户需要调整时间或设置作息规则,则进入相应的设置界面。
4.实时更新当前时间,并判断是否到达作息规则中的时间节点。
5.如果到达一些时间节点,触发相应的操作,比如发出提醒声音、显示提示信息等。
6.等待下一个时间节点,继续更新当前时间,循环执行步骤4和步骤5在设置界面,用户可以通过按钮来调整当前时间、作息规则和其他相关参数。
设置界面的操作包括增加/减少时间、修改作息规则、保存设置等。
系统的优势在于将作息时间的控制智能化和自动化,用户只需设定好规则和相关参数,系统就可以自动地进行时间的监测和控制,提醒用户按时进行各项活动,避免错过重要时间节点。
最后,我们可以进行系统的测试和调试。
在测试过程中,我们可以模拟各种场景和时间段,验证系统的稳定性和功能的有效性。
通过测试和调试,我们可以对系统进行进一步的优化和改进。
综上所述,基于24单片机的作息时间控制系统可以有效地管理个人的作息时间,提高生活效率和健康水平。
通过将单片机的计时计数器和中断控制器与LCD显示屏和按钮等硬件组件结合起来,我们可以实现智能化和自动化的作息时间控制。
单片机课程设计作息时间控制器设计报告
单片机课程设计作息时间控制器设计报告XX大学单片机课程设计报告作息时间控制器设计姓名:学号:专业班级:自动化班指导老师:所在学院:电气工程与自动化学院2022年X月X日摘要本设计是作息时间控制器的设计,由单片机AT89C52芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机电子作息时间控制器。
该功能的实现主要通过软件编程来完成,降低了硬件电路的复杂性,成本也有所降低。
设计内容包括了秒信号指示、时间“时”和“分”显示电路、按键调整电路、供电电源以及闹铃指示电路等几部分的设计。
采用四个开关来控制作息时间控制器的工作状态,分别为:K1、设置时间和闹钟的小时;K2、设置小时以及设置闹钟的开关;K3、设置分钟和闹钟的分钟;K4、设置完成退出。
当作息时间控制器达到课程设计的要求,在到达设定的定时时间时蜂鸣器便被控制立即发出声音,持续一分钟,而后按K4键退出显示闪烁状态,即恢复时钟状态。
显示采用的四位数码管电路,定时提示采用蜂鸣器发声指示。
本设计方案也可以经过改进作为实现定时控制系统的控制定时电路。
关键词:作息时间单片机显示定时目录1概述31.1课程设计的目的和意义31.2单片机课程设计的要求31.3作息时间控制器的设计要求32系统总体方案及硬件设计42.1系统总体设计42.2系统各个部分的电路设计53软件的设计83.1概述83.2主模块的设计83.3显示模块设计93.4时间设定模块设计93.5闹铃功能的实现104Proteus软件仿真124.1仿真结果124.2性能及误差分析145课程设计体会15参考文献15附1程序源代码16附2原理图261概述1.1课程设计的目的和意义综合利用所学单片机知识完成一个单片机应用系统设计并仿真、由硬件实现,从而加深对单片机软硬知识的理解,获得初步的应用经验,为走出校门从事单片机应用的相关工作打下良好基础。
1.2单片机课程设计的要求1、进一步熟悉和掌握单片机的内部结构和工作原理,了解单片机应用系统设计的基本方法和步骤;2、掌握单片机仿真软件Proteus的使用方法;3、掌握键盘和显示器在的单片机控制系统中的应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计报告项目:作息时间表系统设计班级:通信工程04本姓名:XX ———X号实验指导老师: 李强一、题目作息时间表系统设计——用89C51设计一个6位LED数码显示“作息时间表系统”,显示时间为00—00—00 ~ 23时—59分—59秒,每秒自动加一。
另设计4个按钮,分别是“分状态”按键、“分加1”按键、“时状态”按键,“时加1”按键。
用于进行小时和分钟的调整。
这就是一个完整的具有时、分、秒显示的单片机实时钟系统。
二、增加功能在上述实时钟系统的基础上,在控制软件钟增加一个“作息时间表”,如图1 所示,并增加对该表的查询功能模块,依据对该表的查询结果,控制喇叭,进行课间打铃提示,完成单片机作息时间表系统的设计。
也完成本次课程设计。
三、内容提要本设计利用单片机的定时器/计数器定时和记数的原理,结合sl-100、sl-200系统上的集成电路芯片8052、LED数码管以及按键来设计计时器。
将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。
其中本设计中的四个开关按键:其中一个按键按下去时,系统进入秒调整状态,然后,秒加1键每按一次,秒计时器加1。
时状态按下时,系统进入时调整状态,时按键每按一次,时计数器加1。
本设计运行开始时,各按键回到各初始位置,即都处于1状态。
计时显示从00:00:00开始,依据秒加1为单位进行显示计时。
三、实验目的1、通过本次课程设计加深对单片机课程的全面认识复习和掌握,对嵌入式系统的应用进一步的了解。
2、掌握定时器、外部中断的设置和编程原理。
3、通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
四、意义该实验通过单片机的定时器/计数器定时和计数原理,设计单片机作息时间表系统,拥有正确的计时、显示、时间调整等功能,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义。
五、本人所做工作根据相关的单片机材料,利用所学的单片机知识,结合sl-100单片机微机实验系统中的软件和硬件(集成电路芯片8952,七段数码管,开关电路及时钟信号电路,按键等),编写能够实现该设计的软件程序,最后将软、硬件有机的结合起来,进行有效的调试,达到完成该实验课程设计的目的要求。
六、设计内容用A T89C51设计一个6位LED数码显示“实时钟”,显示时间为00:00:00秒,每秒自动加一。
另设计一个“时状态”按键和一个“时加 1 ”按键。
再增加一个“分状态”按键和一个“分加1”按键。
在以上设计的基础上,在在控制软件系统中增加作息时间表功能,驱动喇叭去完成作息时间控制的功能。
七、设计思路及描述该实验要求进行计时并在数码管上显示时间,则可利用sl-100单片机实验系统中的芯片AT89C52,中的P3管脚做为外部按键输入,并实现各个按键的功能;定时器T0作为每10~50毫秒加一的定时器。
在内部RAM中开辟10~50MS计数器,秒计数器、分计数器、时计数器。
单片机依据定时器T0的定时时间,进行秒、分、时的累加,并将秒、分、时数据转换为7段LED显示段码,送LED显示器,从而完成单片机实时钟系统的设计。
注意,为了输出显示方便,时、分、秒的累加计时可以采用BCD码运算。
八、原理图九、课程设计参考汇编程序;******************************* ; 按键可调作息时间电子钟;;; Date 2007.7.6; Created by 李强;*******************************;*******************************; 显示缓冲区定义;*******************************Seclequ 50hSech equ 51hMinl equ 52hMinh equ 53hHourl equ 54hHourh equ 55h;*******************************; 时钟计数单元定义;*******************************ms equ 56hsec equ 57hmin equ 58hhour equ 59hflash equ 5ahtimec equ 5bhbpcount equ 5chcodep equ 5dh;*******************************; 按键定义;*******************************keym bit p3.0keym1 bit p3.1keym_1 bit p3.2keyh bit p3.3keyh1 bit p3.4keyh_1 bit p3.5;keytime bit p3.6;按键状态标志m_key bit 00hh_key bit 01hflashb bit 02htime bit 03htimeg bit 04h;*******************************; 共阳数码管段码;*******************************; DispTab:; db 0c0h,0f9h,0a4h,0b0h,99h; db 92h,82h,0f8h,80h,90h,0ffhorg 0080hTab:DB 0C0H, 0F9H, 0A4H, 0B0H, 99H ; 01234DB 92H, 82H, 0F8H, 80H, 90H ; 56789DB 88H, 83H, 0C6H, 0A1H, 86H; ABCDEDB 8EH,0FFh;******************************* ; 作息时间码;******************************* org 00b0htimetab:db 00h,00h,15hdb 00h,00h,30hdb 00h,01h,00hdb 10h,00h,15hdb 00h,03h,00hdb 13h,00h,15hdb 20h,30h,00hdb 00h,00h,45hdb 0ffh,0ffh,0ffh;******************************* ; 中断地址表设置;******************************* org 0000hajmp mainorg 0003hretiorg 000bhajmp intt0org 0013hretiorg 001bhajmp intt1org 0023hreti;******************************* ; main程序;******************************* org 0100hmain:mov sp,#60hmov r7,#0fhmov r0,#50hmov a,#00hmov 20h,aclr m_keyclr h_keyclrd: mov @r0,ainc r0djnzr7,clrdmov tmod,#11hmov th0,#3chmov tl0,#0b0hmov th1,#3chmov tl1,#0b0hmov ms,#00hmov flash,#00hsetb easetb et0setb et1setb tr0clr timegclr tr1cont: lcalldisplaylcallkeytest;jnb time,contlcallbeepajmp cont;******************************* ; beep程序;******************************* beep:mov timec,hourmov codep,#0fdhmov dptr,#timetabbeph: mov a,codepinc ainc ainc amov codep,amovc a,@a+dptrmov b,axrl a,#0ffhjz exitbmov a,bcjne a,timec,bephmov timec,mindec codepdec codepbepm: mov a,codepinc ainc ainc amov codep,amovc a,@a+dptrmov b,axrl a,#0ffhjz exitbmov a,bcjne a,timec,bepmmov timec,secdec codepdec codepbepsec: mov a,codepinc ainc ainc amov codep,amovc a,@a+dptrmov b,axrl a,#0ffhjz exitbmov a,bcjne a,timec,bepsecsetb timegclr codep;ajmp exitbbexitb: ;clr timegexitbb: clr codepclr timecret;******************************* ; keytest 程序; key0--P3.0,状态键盘; key1==P3.1,加1键;******************************* keytest:setb keymsetb keym1setb keyhsetb keyh1setb keym_1setb keyh_1jnb keym,keydelayjnb keym1,keydelayjnb keym_1,keydelayjnb keyh,keydelayjnb keyh1,keydelayjnb keyh_1,keydelay;jnb keytime,keydelayajmp exitskey keydelay:lcall delay10msjnb keym,keympjnb keym1,keym1pjnb keym_1,keym_1pjnb keyh,keyhpjnb keyh1,keyh1pjnb keyh_1,keyh_1p;jnb keytime,keytimepajmp exitskeykeymp: ajmp keympp keym1p:ajmp keym1pp keym_1p:ajmp keym_1pp keyhp: ajmp keyhpp keyh1p: ajmp keyh1pp keyh_1p:ajmp keyh_1pp ;keytimep:ajmp timep;timep: jnb keytime,$; jbc m_key,exitkeyt; jbc h_key,exitkeyt; cpl time; ajmp exitskey keympp:jnb keym,$jbc m_key,exitkeytjbc h_key,exitkeytsetb m_keysetb et1setb tr1clr tr0ajmp exitskey exitkeyt:ajmp exitkeykeyhpp: jnb keyh,$jbc m_key,exitkeyjbc h_key,exitkeysetb h_keysetb et1setb tr1clr tr0ajmp exitskey keym1pp:jnb keym1,$ jnb m_key,exitkeymov a,minadd a,#1da amov min,acjne a,#60h,$+3jc exitsmmov min,#00h exitsm: ajmp exitskey keym_1pp:jnb keym_1,$ jnb m_key,exitkeymov a,minjnz exitm_1mov a,#60hexitm_1:clr csubb a,#1mov b,aanl a,#0fhcjne a,#0fh,exmmov a,bsubb a,#06hsjmp $+3exm: mov a,bmov min,aajmp exitskey keyh_1pp:jnb keyh_1,$ jnb h_key,exitkeymov a,hourjnz exith_1mov a,#24hexith_1:clr csubb a,#1mov b,aanl a,#0fhcjne a,#0fh,exhmov a,bsubb a,#06hsjmp $+3exh:mov a,bmov hour,aajmp exitskeykeyh1pp:jnb keyh1,$jnb h_key,exitkeymov a,houradd a,#1da amov hour,acjne a,#24h,$+3jc exitshmov hour,#00hexitsh: ajmp exitskeyexitkey:setb tr0clr et1clr tr1exitskey:ret;*******************************; display 程序;******************************* display:mov a,sec ;显示缓冲区更新mov b,aanl a,#0fhmov secl,amov a,banl a,#0f0hswap amov sech,amov a,minmov b,aanl a,#0fhmov minl,amov a,banl a,#0f0hswap amov minh,amov a,hourmov b,aanl a,#0fhmov hourl,amov a,banl a,#0f0hswap amov hourh,a; 显示更新mov dptr,#Tabmov a,seclmovc a,@a+dptrmov p0,amov p2,#0fehlcalldelay1msmov a,sechmovc a,@a+dptrmov p0,amov p2,#0fdhlcalldelay1msjnb m_key,dminjnb flashb,dminmov minl,#16mov minh,#16 dmin: mov a,minl movc a,@a+dptrmov p0,amov p2,#0fbhlcalldelay1msmov a,minhmovc a,@a+dptrmov p0,amov p2,#0f7hlcalldelay1msjnb h_key,dhourjnb flashb,dhourmov hourl,#16mov hourh,#16 dhour:mov a,hourlmovc a,@a+dptrmov p0,amov p2,#0efhlcalldelay1msmov a,hourhmovc a,@a+dptrmov p0,amov p2,#0dfhlcalldelay1msret;******************************* ; 延时程序;******************************* delay1ms:mov r7,#10d1ms: mov r6,#100djnzr6,$djnzr7,d1msretdelay10ms:mov r7,#100d10ms: mov r6,#100djnzr6,$djnzr7,d10msret;******************************* ; T0 50ms 中断程序;******************************* intt0: ;lcall beeppush accpush psw;lcall beepclr tr0clr cmov a,#0b8hadd a,tl0mov tl0,amov a,#3chaddc a,#0mov th0,asetb tr0mov a,msinc amov ms,acjne a,#20,eoutmov ms,#00hadd a,#1da amov sec,acjne a,#60h,eoutmov sec,#00hmov a,minadd a,#1da amov min,acjne a,#60h,eoutmov min,#00hmov a,houradd a,#1da amov hour,acjne a,#24h,eoutmov hour,#00heout: jnb timeg,eeoutmov tmod,#21hmov th1,#156mov tl1,#156setb tr1;cpl p3.3inc bpcountmov a,bpcountcjne a,#100,eeoutmov bpcount,#0clr timegclr timecsetb p3.3mov tmod,#11hclr tr1clr timecclr codepeeout: ;lcall beeppop pswpop accreti;******************************* ; T1 50ms 中断程序;******************************* intt1:push pswjnb timeg,exit_int1;mov th1,#0d8h;mov tl1,#0f0hcpl p3.3;inc bpcount;mov a,bpcount;cjne a,#200,exitt1;mov bpcount,#00h;clr timeg;clr tr1;setb p3.3sjmp exitnt1exit_int1:;mov tmod,#11hinc flashmov a,flashcjne a,#5,exitnt1mov flash,#0cpl flashb ;闪烁标志取反exitnt1:mov th1,#3chmov tl1,#0b0hexitt1: pop pswpop accretiend十、课程设计C51参考程序clock.c 文件/*******************************电子表C源程序Date 2007.7.11Created by 李强*******************************/ #include"clock.h"/*******************************主程序********************************/main(){TMOD=0x11;ET0=1;ET1=1;EA=1;TH0=0x3c;TL0=0xb0;TH1=0x3c;TL1=0xb0;TR0=1;while(1){disp();beep();key();}}clock.h 文件#include<at89x51.h>/*******************************数据类型声明********************************/#define uint unsigned inttypedef unsigned char uchar;/*******************************全局数据类型声明********************************/typedef struct { /* structure of the time record */uchar hour; /* hour */ uchar min; /* minute */ uchar sec; /* second */ uchar ms; /* 50 ms */}time;typedef struct { /* structure of the time record */uchar hourh; /* hour */ uchar hourl;uchar minh; /* minute */ uchar minl;uchar sech;uchar secl; /* second */}timebuf;typedef struct { /* structure of the time record */uchar hour; /* hour */ uchar min; /* minute */ uchar sec; /* second */ }timetab;/*******************************函数原型声明********************************/void delay1ms();void delay10ms();void disp();void beep();void scankey();void key_min_state();void key_min_plus();void key_min_sub();void key_hour_state();void key_hour_plus();void key_hour_sub();void key();function.c 文件#include"clock.h"/*******************************数码管共阳段码表********************************/uchar code DispCode[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};/*******************************初始时间值********************************/extern timebuf data dtimebuf = { 0, 0, 0, 0, 0, 0 }; extern time data ctime = { 12, 0, 0, 0 };uint count;uint count_flash;bit beeph;bit flash_flag;/*******************************作息时间表********************************/timetab code code_time[10]={12,30,15,12,30,30,12,30,45,12,20,45,12,03,00,12,01,00,0xff,0xff,0xff,};/*******************************按键I/O口定义/********************************/sbit keymin = 0xb0;sbit keymin_plus = 0xb1;sbit keymin_sub = 0xb2;sbit keyhour = 0xb3;sbit keyhour_plus = 0xb4;sbit keyhour_sub = 0xb5 ;/*******************************时间调整定义********************************/bit min_flag;bit hour_flag;/*******************************显示函数实现********************************/void disp(){dtimebuf.secl=DispCode[ctime.sec%10];dtimebuf.sech=DispCode[ctime.sec/10];dtimebuf.minl=DispCode[ctime.min%10];dtimebuf.minh=DispCode[ctime.min/10];dtimebuf.hourl=DispCode[ctime.hour%10];dtimebuf.hourh=DispCode[ctime.hour/10];if(flash_flag){if(min_flag){P0=dtimebuf.secl;P2=0xfe;delay1ms();P0=dtimebuf.sech;P2=0xfd;delay1ms();P0=dtimebuf.hourl;P2=0xef;delay1ms();P0=dtimebuf.hourh;P2=0xdf;delay1ms();}if (hour_flag){P0=dtimebuf.secl;P2=0xfe;delay1ms();P0=dtimebuf.sech;P2=0xfd;delay1ms();P0=dtimebuf.minl;P2=0xfb;delay1ms();P0=dtimebuf.minh;P2=0xf7;delay1ms();}}else{P0=dtimebuf.secl;P2=0xfe;delay1ms();P0=dtimebuf.sech;P2=0xfd;delay1ms();P0=dtimebuf.minl;P2=0xfb;delay1ms();P0=dtimebuf.minh;P2=0xf7;delay1ms();P0=dtimebuf.hourl;P2=0xef;delay1ms();P0=dtimebuf.hourh;P2=0xdf;delay1ms();}}/******************************* timer0 中断函数实现********************************/ void intt0(void) interrupt 1 using 1{TH0=0x3c;TL0=0xb0;if(++ctime.ms==20){ctime.ms=0;if(++ctime.sec==60){ctime.sec=0;if(++ctime.min==60){ctime.min=0;if(++ctime.hour==24)ctime.hour=0;}}}}/*******************************beep()函数实现********************************/void beep(){uchar i=0;while(code_time[i].hour!=0xff){if((ctime.hour==code_time[i].hour)&&(ctime.min==code_time[i].min)&&(ctime.sec== code_time[i].sec)){TMOD=0x21;TH1=6;TL1=6;TR1=1;count=0;beeph=1;return;};i++;}}/*******************************key()函数实现********************************/void key(){P3=0xff;while(P3!=0xff){delay10ms();while(P3!=0xff){switch(P3){case 0xfe:key_min_state();break;case 0xfd:key_min_plus();break;case 0xfb:key_min_sub();break;case 0xf7:key_hour_state();break;case 0xef:key_hour_plus();break;case 0xdf:key_hour_sub();break;default:break;}}}}void key_min_state(){while(!keymin);if(hour_flag){hour_flag=0;flash_flag=0;TR1=0;return;}min_flag=!min_flag;if(min_flag){TMOD=0x11;flash_flag=1;TR1=1;}else{flash_flag=0;TR1=0;}}void key_min_plus(){while(!keymin_plus);if(hour_flag){hour_flag=0;flash_flag=0;TR1=0;return;}if(min_flag){if(++ctime.min==60)ctime.min=0;}}void key_min_sub(){while(!keymin_sub);if(hour_flag){hour_flag=0;flash_flag=0;TR1=0;return;}if(min_flag){if(--ctime.min==0xff)ctime.min=59;}}void key_hour_state(){while(!keyhour);if(min_flag){min_flag=0;flash_flag=0;TR1=0;return;}hour_flag=!hour_flag;if(hour_flag){TMOD=0x11;flash_flag=1;TR1=1;}else{flash_flag=0;TR1=0;}}void key_hour_plus(){while(!keyhour_plus);if(min_flag){min_flag=0;flash_flag=0;TR1=0;return;}if(hour_flag){if(++ctime.hour==24)ctime.hour=0;}}void key_hour_sub(){if(min_flag){min_flag=0;flash_flag=0;TR1=0;return;}while(keyhour_sub);if(hour_flag){if(--ctime.hour==0xff)ctime.hour=23;}}delay.c 文件#include"clock.h"/******************************* 延时函数实现********************************/void delay10ms(){uint i;for(i=0;i<10000;i++);}void delay1ms(){uint i;for(i=0;i<500;i++);}十一、课程设计总体要求1、认真审题,看懂题目的要求!选择适当的课题,不益太简单或者太难。