电子日历单片机课程设计报告
单片机课程设计-电子日历

湖南科技大学信息与电气工程学院《课程设计报告》题目:电子日历专业:通信工程班级: 3班姓名:黄夏妮学号: 1304040322指导教师:陈君2016年 6 月 16 日单片机原理与应用课程设计评阅书信息与电气工程学院课程设计任务书2015—2016学年第二学期专业:通信工程班级: 3班学号: 1304040322 姓名:黄夏妮课程设计名称:单电片机原理与应用设计题目:电子日历完成期限:自 2016 年 6 月 6 日至 2016 年 6 月 17 日共 2 周设计依据、要求及主要内容(可另加附页):设计依据:本方案以STC15F2K60S2单片机作为主控核心,与时钟芯片、LED显示、按键等模块组成硬件系统,通过《单片机原理与应用》这门课的课程设计,学生应能对STC15系列单片机有一个全面的认识,掌握以STC15系列单片机为核心的电子电路的设计方法和应用技术。
设计要求:(1)利用STC15F2K60S2单片机作为主控器组成一个电子日历和电子钟。
(2)利用LED分别显示当前时间和日历。
(3)利用尽可能少的开关实现:校正日历和时间(4)定制闹钟(时、分、表)设计内容:该课程设计是利用STC15F2K60S2单片机内容的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。
设计的电子时钟通过数码管显示,并通过按键实现时间和暂停、启动控制等。
我们选择的方法是单片机开发设计使用的传统方法,通过本次设计,可以了解整个单片机开发的流程。
文章首先介绍了单片机的基本知识,然后同时给出了框图,流程图等。
论文涵盖了从系统设计,编程,原理图等产品开发的基本过程。
指导教师(签字):批准日期:年月日摘要本设计是根据我们所学的单片机课程,按照大纲要求利用STC15F2K60S2单片机作为主控器组成一个电子日历和电子钟。
随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类对时钟进行不断研究,不断创新纪录。
单片机万年历电子钟设计报告含电路图和源程序

万年历设计报告学院:武夷学院班级:09电信1班组员:林巧文一、设计要求与方案论证21.1 设计要求:21.1.1根本要求21.1.2发挥局部21.2 系统根本方案选择和论证21.2.1单片机芯片的选择方案和论证:21.2.2 显示模块选择方案和论证:21.2.3时钟芯片的选择方案和论证:31.3 电路设计最终方案决定3二、理论分析与计算32.1,秒数的产生由定时器T0产生:3三.系统的硬件设计与实现43.1 电路设计框图:43.2 系统硬件概述:43.3 主要单元电路的设计53.3.1单片机主控制模块的设计53.3.2显示模块的设计53.3.3闹钟模块的设计73.3.4电源稳压模块7四、系统的软件设计74.1程序流程框图74.2闹钟模块流程图:74.3按键调整模块流程图:7五、测试方案与测试结果分析75.1 测试仪器 (7)5.2软件测试平台 Keil C5185.3 模块测试85.3.1显示模块测试85.4测试结果分析与结论85.4.1测试结果分析85.4.2 测试结论 (8)六、作品总结9参考文献9附录一:系统电路图9附录三:系统C程序10一、设计要求与方案论证1.1 设计要求:根本要求〔1〕准确显示:时、分、秒〔24小时制〕〔2〕显示星期〔3〕显示公历〔4〕时间、日期、星期可调节〔5〕断电记忆功能发挥局部〔1〕闹钟功能〔2〕显示阴历〔3〕显示24节气〔4〕其他1.2 系统根本方案选择和论证单片机芯片的选择方案和论证:方案一:采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进展调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的屡次拔插会对芯片造成一定的损坏。
方案二:采用AT89S52,片内ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进展调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片屡次拔插,所以不会对芯片造成损坏。
电子日历单片机课程设计报告

湖南科技大学信息与电气工程学院《单片机原理与应用课程设计报告》题目:电子日历专业:电子信息工程班级:姓名:学号:指导教师:2016年 07月13日单片机原理与应用课程设计评阅书信息与电气工程学院课程设计任务书2015-2016学年第 2学期专业:电子信息工程学号:姓名:课程设计名称:设计题目:完成期限:自 2016 年 7 月 4 日至 2015 年 7 月 15 日共 2 周设计依据、要求及主要内容(可另加附页):设计依据:STC15F2K60S2单片机的定时/计数器,74HC59芯片的串并输出,数码管显示。
实验要求:(1)、利用STC15F2K60S2单片机作为主控器组成一个电子日历和电子钟。
(2)、利用LED分别显示当前时间和日历。
(3)、利用尽可能少的开关实现:校正日历和时间(4)、定制闹钟(时、分、表)。
主要内容:本系统是用STC15F2K60S2单片机的T0定时器的16位自动重装来产生1ms节拍,程序运行于这个节拍下,通过计数1000次从而自动定时于1s,以实现时钟的仿真。
另外通过STC15F2K60S2单片机的IO方式控制74HC595驱动8位数码管。
数码管可以实时显示秒,分,小时,日期,月份和年等信息,并且实现闹铃功能时,数码管闪烁显示。
矩阵式键盘采用编程扫描方式,可以实现秒,分,小时,日期,月份和年信息的校准。
同时通过STC15F2K60S2单片机的外部中断INT0实现年月日与时分秒显示的切换。
指导教师(签字):批准日期:年月日本设计是基于51系列的单片机进行的实时日历和时钟显示设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。
在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。
实时日历和时钟显示的设计过程在硬件与软件方面进行同步设计。
硬件部分主要由STC15F2K60S2单片机,LED显示电路,以及调时按键电路等组成,系统通过74HC595驱动8位数码管现实数据,所以具有人性化的操作和直观的显示效果。
单片机课程设计报告电子万年历

单片机课程设计报告电子万年历单片机课程设计报告:电子万年历一、设计简介在本次单片机课程设计中,我们选择了电子万年历作为设计主题。
电子万年历是一种结合了数字电路、单片机技术和实时时钟(RTC)技术的电子产品,它具有显示年份、月份、星期、日、时、分、秒的功能,还可以根据用户的需求进行定时、闹钟、报时等功能。
二、硬件设计我们采用了基于8051内核的单片机作为主控芯片。
该单片机具有丰富的I/O 端口,适于实现各种复杂的输入输出操作。
此外,它还内置了定时器和中断控制器,可以很方便地实现实时时钟功能。
1.显示模块:为了方便用户查看时间信息,我们选用了LCD显示屏作为显示设备。
LCD屏具有功耗低、体积小、显示内容丰富等优点。
2.实时时钟(RTC)模块:我们采用了常用的DS1302芯片作为实时时钟模块。
该芯片可以提供秒、分、时、日、星期、月、年的信息,而且还有可编程的报警功能。
3.按键模块:为了实现人机交互,我们设计了一组按键。
用户可以通过按键来调整时间、设置闹钟等。
4.电源模块:为了保证系统的稳定工作,我们采用了稳定的5V直流电源。
三、软件设计我们采用了C语言编写程序。
程序主要由以下几个部分组成:1.主程序:主程序主要负责读取RTC模块的时间信息,并控制LCD显示屏显示时间。
同时,主程序还要检测按键输入,根据用户的需求进行相应的操作。
2.RTC驱动程序:为了正确地读取和设置DS1302芯片的时间信息,我们编写了相应的驱动程序。
驱动程序包括初始化和读写寄存器两部分。
3.按键处理程序:按键处理程序用于检测按键输入,并根据按键值执行相应的操作。
比如,用户可以通过按键来增加或减少时间,设置闹钟等。
4.LCD显示程序:LCD显示程序用于控制LCD显示屏的显示内容。
在本设计中,我们使用了点阵字符库,将时间信息以字符的形式显示在LCD屏上。
四、测试与验证为了确保我们的电子万年历设计正确无误,我们进行了以下的测试和验证:1.硬件测试:首先,我们对硬件电路进行了测试,确保每个模块都能正常工作。
单片机课程设计(论文)电子万年历的设计

目录1设计要求 (2)2方案论证与对比 (2)液晶显示器控制方式选择 (2)2.2并行接口动态显示电路选择 (2)2.3LCD液晶显示器的接口方法选择 (3)液晶显示器限流电阻选择 (4)3系统硬件电路的设计 (5)主控模块AT89C52 (5)3.2显示模块电路设计 (6)4系统软件设计 (7)4.1系统软件概述 (7)4.2主要子程序设计 (8)4.2.1 时钟中断服务子程序设计 (8)时间调整子程序设计 (9)4.2.3 判断闰年子程序设计 (9)4.2.4 精度分析分析与计算 (10)4.2.5 第一次初值的设置 (10)4.2.6 重载初值的方法 (10)5系统仿真与测试 (11)5.1系统仿真 (11)功能测试 (11)6总结 (12)参考文献 (13)1设计要求本课题以AT89C52单片机为核心,设计并制作出智能LCD电子钟,具有以下基本功能:能进行时间、年份、日期、星期显示;能区分是否闰年;能检测室温并显示。
扩展功能部分可以通过控制按键使时间暂停、可以调整校正时间并通过按键切换轮流显示时间、年份、日期、星期。
2方案论证与对比2.1液晶显示器控制方式选择采用LCD液晶显示,具有超精致影像画质、十足平面显示、节省空间、节省能源等优点,但按控制方式不同,LCD可分为被动矩阵式LCD及主动矩阵式LCD两种。
可根据不同需要采用不同的方式。
方案一被动矩阵式LCD被动矩阵式LCD在亮度及可视角方面受到较大的限制,反应速度也较慢。
由于画面质量方面的问题,使得这种显示设备不利于发展为桌面型显示器,但成本低廉。
方案二主动矩阵式LCD目前应用比较广泛的主动矩阵式LCD,也称TFT-LCD(Thin Film Transistor-LCD,薄膜晶体管LCD)。
TFT液晶显示器是在画面中的每个像素内建晶体管,可使亮度更明亮、色彩更丰富及更宽广的可视面积。
与CRT显示器相比,LCD显示器的平面显示技术体现为较少的零件、占据较少的桌面及耗电量较小,但CRT技术较为稳定成熟。
单片机简易日历课程设计

单片机简易日历课程设计一、课程目标知识目标:1. 理解单片机的基础知识,掌握其内部结构和功能;2. 学习简易日历的原理,了解日期、时间与单片机编程的关系;3. 掌握C语言编程基础,运用其进行单片机程序设计。
技能目标:1. 能够独立完成单片机的硬件连接,进行基本的程序下载与调试;2. 运用C语言编写简易日历程序,实现日期、时间的显示与修改;3. 培养学生动手实践能力,提高问题分析及解决能力。
情感态度价值观目标:1. 培养学生对单片机编程的兴趣,激发创新意识;2. 培养学生的团队协作精神,提高沟通与交流能力;3. 培养学生严谨、细心的学习态度,养成良好的编程习惯。
分析课程性质、学生特点和教学要求,本课程旨在通过单片机简易日历的设计与实现,让学生掌握单片机基础知识、编程技能,并培养其团队协作和创新能力。
课程目标具体、可衡量,便于教学设计和评估。
通过本课程的学习,学生将能够独立完成单片机程序的编写与调试,为后续相关课程打下坚实基础。
二、教学内容1. 单片机基础知识:介绍单片机的内部结构、工作原理及功能,涉及教材第1章内容;- 单片机硬件结构及引脚功能;- 单片机工作原理及指令系统。
2. C语言编程基础:学习C语言基础知识,掌握基本语法,为单片机编程打下基础,涉及教材第2章内容;- 数据类型、变量与常量;- 运算符、表达式及语句;- 控制结构(顺序、选择、循环)。
3. 简易日历原理:学习日期、时间的计算方法,了解日历程序设计思路,涉及教材第3章内容;- 日期、时间的基本概念;- 日历程序设计思路及算法。
4. 单片机程序设计:结合C语言,学习单片机程序编写与调试,实现简易日历功能,涉及教材第4章内容;- 单片机程序框架及编程规范;- 简易日历程序的编写与调试;- 硬件连接及程序下载。
5. 实践操作:安排学生进行单片机简易日历的实践操作,巩固所学知识,涉及教材第5章内容;- 硬件连接与程序下载;- 程序调试与优化;- 团队合作、沟通交流。
单片机课程设计报告电子日历设计

目录第1章绪论 (1)1.1 概述 (1)1.2 单片机的发展历程 (1)第2章系统结构及主要元器件 (2)2.1系统结构 (2)2.2主要元器件 (2)第3章硬件设计 (3)3.1主控制模块 (3)3.2复位电路 (3)3.3晶振电路 (4)3.4 DS1302时钟模块 (4)3.5按键调节电路 (5)3.6显示模块 (6)第4章软件设计 (7)4.2程序设计 (7)第5章系统仿真及调试 (20)结论 (21)参考文献 (22)第1章绪论1.1 概述随着电子技术的迅速发展,特别是随着大规模集成电路产生而出现的微型计算机,给人类生活带来了极大的方便。
走入家庭,从洗衣机、微波炉到音响、汽车,到处都可以见到单片机应用的踪影。
如果说微型计算机技术的出现使现代科学研究得到了质的飞跃,那么也可以毫不夸张的说:“单片机技术的出现则是给现代工业测控领域带来了一次新的工业革命”。
目前,单片机以其可靠性高和智能性等特点被广泛应用到工业控制系统、数据采集系统、智能化仪器仪表、办公自动化等领域中,并已经进入家庭。
因此,单片机技术的开发和应用水平已经逐步成为一个国家自动化发展水平的标志之一。
1.2 单片机的发展历程单片机是微型计算机的一个重要分支,也是一种非常活跃和颇具生命力的机种,特别适用于工业控制领域。
1971年微处理器研制成功不久,就出现了单片机,但最早的单片机是1位的,处理能力有限。
单片机的发展共分四个阶段:第一阶段是初级阶段,功能非常简单;第二阶段是低性能阶段,以INTEL公司制造的MSC-48系列单片机为代表。
第三阶段为高性能单片机阶段,这个阶段推出的单片机普遍带有穿行接口,多级中断系统,16位定时器/计数器,片内ROM、RAM容量加大,直到现在仍被广泛应用,是目前应用数量较多的单片机。
第四阶段是8位单片机巩固发展以及16位单片机、32位单片机推出阶段,以满足不同的用户需要。
纵观单片机几十年的发展历程,单片机的今后发展方向将向多功能、高性能、高速度、低功耗、低价格、外围电路内装化以及内存储器容量增加和FLASH存储器化方向发展。
单片机8279电子日历课程设计报告

湖南科技大学信息与电气工程学院《单片机课程设计报告》题目:电子日历专业:电子信息工程班级: 2班姓名: ABC学号: **********指导教师: ***任务书题目电子日历时间安排2012年6月11——6月22日(第17、18周)目的:通过《单片机原理与应用》这门课的课程设计,学生应能对MCS-51单片机有一个全面的认识,掌握以MCS-51单片机为核心的电子电路的设计方法和应用技术。
1.进一步掌握8279键盘显示电路的编程方法。
2.进一步掌握定时器的使用和编程方法。
3.进一步掌握中断处理程序的编程方法。
要求:(1)利用8031作为主控器组成一个电子日历和电子钟。
(2)利用LED分别显示当前时间和日历。
(3)利用尽可能少的开关实现:校正日历和时间。
总体方案实现:用8031作为主控制器,并采用8279作为辅助芯片,控制键盘、LED数码管等的操作和显示。
指导教师评语:评分等级:()指导教师签名:一、课程设计的目的通过《单片机原理与应用》这门课的课程设计,学生应能对MCS-51单片机有一个全面的认识,掌握以MCS-51单片机为核心的电子电路的设计方法和应用技术。
1.进一步掌握8279键盘显示电路的编程方法。
2.进一步掌握定时器的使用和编程方法。
3.进一步掌握中断处理程序的编程方法。
二、实验要求(1)利用8031作为主控器组成一个电子日历和电子钟。
(2)利用LED分别显示当前时间和日历。
利用实验机上提供的8279键盘电路,数码显示电路,设计一个电子钟(日历),用小键盘控制电子钟(日历)的启停及初始值的预值。
电子钟做成如下两种格式(按F键两种格式可以切换):XX -XX-XX 由左向右分别为: 时、分、秒XX -XX-XX 由左向右分别为: 年、月、日1.C键:清除,显示00-00-00。
2.A键:启动,电子钟(日历)计时。
3.D键:停止,电子钟(日历)停止计时。
4.B键:设置初值:由左向右依次输入预置的时、分、秒(年、月、日)值,同时应具有判断输入错误的能力,若输入有错,则显示: 00-00-00 按B键即可重新输入预置值:5.F键:实现电子钟和日历的切换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南科技大学信息与电气工程学院《单片机原理与应用课程设计报告》题目:电子日历专业:电子信息工程班级:姓名:学号:指导教师:2016年 07月13日单片机原理与应用课程设计评阅书信息与电气工程学院课程设计任务书2015-2016学年第2学期专业:电子信息工程学号:姓名:课程设计名称:设计题目:完成期限:自 2016 年 7 月 4 日至 2015 年 7 月 15 日共 2 周设计依据、要求及主要内容(可另加附页):设计依据:STC15F2K60S2单片机的定时/计数器,74HC59芯片的串并输出,数码管显示。
实验要求:(1)、利用STC15F2K60S2单片机作为主控器组成一个电子日历和电子钟。
(2)、利用LED分别显示当前时间和日历。
(3)、利用尽可能少的开关实现:校正日历和时间(4)、定制闹钟(时、分、表)。
主要内容:本系统是用STC15F2K60S2单片机的T0定时器的16位自动重装来产生1ms节拍,程序运行于这个节拍下,通过计数1000次从而自动定时于1s,以实现时钟的仿真。
另外通过STC15F2K60S2单片机的IO方式控制74HC595驱动8位数码管。
数码管可以实时显示秒,分,小时,日期,月份和年等信息,并且实现闹铃功能时,数码管闪烁显示。
矩阵式键盘采用编程扫描方式,可以实现秒,分,小时,日期,月份和年信息的校准。
同时通过STC15F2K60S2单片机的外部中断INT0实现年月日与时分秒显示的切换。
指导教师(签字):批准日期:年月日本设计是基于51系列的单片机进行的实时日历和时钟显示设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。
在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。
实时日历和时钟显示的设计过程在硬件与软件方面进行同步设计。
硬件部分主要由STC15F2K60S2单片机,LED显示电路,以及调时按键电路等组成,系统通过74HC595驱动8位数码管现实数据,所以具有人性化的操作和直观的显示效果。
软件方面主要包括时钟程序、键盘程序,显示程序等。
本系统以单片机的汇编语言进行软件设计,为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了,以便更简单地实现调整时间及日期显示功能。
所有程序编写完成后,在wave软件中进行调试,确定没有问题后,在Protel99se 软件中嵌入单片机内进行仿真。
关键词:STC15F2K60S2;Protel99se;74HC595一.设计任务目的和要求 (2)1.1目的 (2)1.2要求 (2)二.总体的方案与论证 (2)2.1计时方案 (2)2.2显示方案 (2)2.3功能键方案 (2)三.系统硬件设计 (3)3.1主控制器 (3)3.2显示驱动 (4)3.3矩阵键盘扫描 (4)四.系统的软件设计 (5)4.1定时实现 (5)4.2实时时钟仿真实现 (6)4.3数码管显示实现 (7)4.4矩阵键盘扫描实现 (7)4.5显示切换和闹钟实现 (9)五.系统调试和测试结果分析 (10)六.结论总结和心得体会 (10)参考文献 (12)一.设计任务目的和要求1.1目的:本系统是用STC15F2K60S2单片机的T0定时器的16位自动重装来产生1ms 节拍,程序运行于这个节拍下,通过计数1000次从而自动定时于1s,以实现时钟的仿真。
另外通过STC15F2K60S2单片机的IO方式控制74HC595驱动8位数码管。
数码管可以实时显示秒,分,小时,日期,月份和年等信息,并且实现闹铃功能时,数码管闪烁显示。
矩阵式键盘采用编程扫描方式,可以实现秒,分,小时,日期,月份和年信息的校准。
同时通过STC15F2K60S2单片机的外部中断INT0实现年月日与时分秒显示的切换。
1.2要求:(1)、利用STC15F2K60S2单片机作为主控器组成一个电子日历和电子钟。
(2)、利用LED分别显示当前时间和日历。
(3)、利用尽可能少的开关实现:校正日历和时间(4)、定制闹钟(时、分、表)。
二.总体的方案和实现2.1计时方案:本次课程设计中可以通过两种方案实现计时,一是通过STC15F2K60S2单片机内部的定时器实现计时计数功能;二是通过PCF8653芯片实现计时功能。
在这里我选择使用STC15F2K60S2单片机内部的定时器来实现电子日历的计时功能。
另外,通过STC15F2K60S2单片机内部的中断系统来实现年月日和时分秒的切换。
2.2显示方案:本次课程设计中提供了8个数码管显示年月日和时分秒信息。
数码管工作原理分为共阳和共阴两种。
其中共阳极数码管的8个发光二极管的公共阳极接高电平,当某段驱动电路的输出段为低电平时,则该端所连接的字段导通点亮;而共阴极数码管的8个发光二极管的公共阴极接低电平,当某段驱动电路的输出段为高电平时,则该端所连接的字段导通点亮。
数码管显示分为静态显示和动态显示两种。
静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止,各数码管相互独立;动态显示是指一位一位通过扫描方式点亮各位数码管。
在这里我选定的是数码管共阴级工作状态,使用动态显示方式。
另外,使用74HC595芯片实现串并转换,从而驱动数码管工作。
2.3功能键方案:本次课程设计要求实现通过按键进行校正日历和时间。
键盘按照工作方式可以分为独立式键盘和矩阵式键盘。
其中独立式键盘是直接用I/O 口线构成单个按键电路,其特点是每个按键单独使用一根I/O 口线,按键间的工作是相互独立的;矩阵式键盘是由行数和列数组成,按键位于行、列数的交叉点上,通过扫描法进行键盘按键的识别。
本次课程设计我选用的是矩阵式键盘,选择50ms 扫描一次。
通过扫描后的键码值来选择按键的作用,以实现按键对日历和时间的校正工作。
三.系统的硬件设计3.1主控制器STC15F2K60S2单片机内部产生时钟周期,并检测外部中断执行指令本次课程设计用的是STC15F2K60S2单片机内部的定时器。
此时就会涉及到三个时钟问题。
分别为晶振时钟osc ƒ,系统时钟sys ƒ,和计数脉冲周期。
晶振时钟osc ƒ是STC15F2K60S2单片机实现定时功能的真正原因,而系统时钟sys ƒ是STC15F2K60S2单片机在现实工作中的工作频率,系统时钟和晶振时钟的关系为:sys osc /=N ƒƒ,由时钟分频器(CLK_DIV )设置。
而计数脉冲周期则是在定时过程中计数时的频率,由辅助寄存器AUXR 的T0x12或T1x12来设置。
硬件连接图如下:3.2显示驱动74HC595芯片来驱动8位数码管来现实数据,本次课程设计中,我们使用的是共阴极数码管,所以可以通过查找资料,提前定义好一个数码管显示状态的数组t_display。
之后就是考虑如何使数码管显示我们所需要的信息。
硬件连接图如下:3.3矩阵键盘扫描:实现在本次课程设计中,我选用的是矩阵式键盘,选用扫描法得到键码值,设定为50ms扫描一次。
原理图如下:四.系统软件设计:4.1定时实现本次课程设计用的是STC15F2K60S2单片机内部的定时器。
此时就会涉及到三个时钟问题。
分别为晶振时钟osc ƒ,系统时钟sys ƒ,和计数脉冲周期。
晶振时钟osc ƒ是STC15F2K60S2单片机实现定时功能的真正原因,而系统时钟sys ƒ是STC15F2K60S2单片机在现实工作中的工作频率,系统时钟和晶振时钟的关系为:sys osc /=N ƒƒ,由时钟分频器(CLK_DIV )设置。
而计数脉冲周期则是在定时过程中计数时的频率,由辅助寄存器AUXR 的T0x12或T1x12来设置。
通过软件检测,可知系统时钟为11.0592MHZ ,另外选择使用定时器T0来定时,因此将AUXR= 0x80,将T0x12置1使得计数脉冲等于系统时钟周期,即无频。
之后就是定时器的工作方式的设定,由工作方式寄存器TMOD 设置。
按照实验的需求,选择TO 定时/计数器,选择工作方式0的自动重装初始值的16位定时,功能选择为定时工作模式,要求是软件控制TRO 置1即可以启动定时器。
综上所述:将TMOD = 0x00;默认情况即可。
而后就是定时的初始值的设定。
这是因为定时器的核心电路是一个加1计数器,计数器在每输入一个脉冲,计数值加1。
当计数到计数器全为1时,再输入一个脉冲使计数值回0同时使计数器计满溢出标志位TF0置1,并向CPU 发出中断请求。
所以在这里需要一个初始值开始计数,从而实现定时。
初始值的的公式为:X=M-设定时间*计数脉冲频率,其中M=65536,定时时间为1ms ,之后就是将初始值赋给THO 和TLO 。
相应的设置程序如下:#define MAIN_Fosc 11059200L //定义系统时钟#define Timer0_Reload (65536UL -(MAIN_Fosc / 1000)) //定义定时1ms 的初始值 AUXR = 0x80; //T0x12=1 ,设置计数脉冲位1TTH0 = (u8)(Timer0_Reload / 256);//将初始值高8位 给TH0 TL0 = (u8)(Timer0_Reload % 256);//将初始值低8位 给TL0ET0 = 1; //定时器T0中断允许TR0 = 1; //启动定时器T0EA = 1; //打开总中断4.2实时时钟仿真实现因为定时器最大是16位的原因,使得最大累加次数为65536,无法做到定时1s,所以在本次课程设计中,我们是定时1ms,通过定时1000次1ms来定时1s。
之后,就是通过软件来实现时钟的仿真。
以1s为基础,实现秒的计数,接着就是完成秒的60进制,实现分的计数;完成分的60进制,实现时的计数……这样一步一步实现时钟仿真。
相应的设置程序如下:while(1){if(B_1ms) //1ms到,通过定时中断改变标志位{B_1ms = 0;if(++msecond >= 1000) //1S到{msecond = 0;RTC();}}//1s到进入时钟仿真函数/********************** Timer0 1ms中断函数 ************************/void timer0 (void) interrupt 1{ B_1ms = 1;}//1ms改变标志位/********************** RTC演示函数************************/void RTC(void)//时钟仿真函数{if(++second >= 60) //秒->分,60进制{second = 0;if(++minute >= 60){minute = 0;if(++hour >= 24)//分->时,60进制{hour = 0, ++day; //时->天,24进制if(mon==1||mon==3||mon==5||mon==7||mon==8||mon == 10||mon==12){if (day >= 31) {day =1;if(++mon >= 12){mon = 1; ++year;}}}//大月if(mon==4||mon==6||mon==9||mon==11){if (day >= 30) {day =1;++mon;}}//小月if(year%4 == 0){if(mon == 2)if(day >= 29){day = 1; ++mon;}}//闰年if(year%4 != 0){if(mon == 2)if(day >= 28){day = 1; ++mon;}}}}}}//平年4.3数码管显示实现在本次课程设计中,我们使用的是共阴极数码管,所以可以通过查找资料,提前定义好一个数码管显示状态的数组t_display。