单片机课程设计_基于89c51的数字电子钟设计.doc_第1页
单片机课程设计_基于89c51的数字电子钟设计.doc_第2页
单片机课程设计_基于89c51的数字电子钟设计.doc_第3页
单片机课程设计_基于89c51的数字电子钟设计.doc_第4页
单片机课程设计_基于89c51的数字电子钟设计.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

单片机系统课程设计单片机系统课 程 设 计成绩评定表设计课题 : 基于89c51的数字电子钟设计 学院名称 : 电气工程学院 专业班级 : 学生姓名 : 学 号 : 指导教师 : 设计地点 : 设计时间 : 指导教师意见:成绩: 签名: 年 月 日 单片机系统课 程 设 计课程设计名称: 基于89c51的数字电子钟设计 专 业 班 级 : 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计地点: 课程设计时间: 单片机系统 课程设计任务书学生姓名专业班级学号题 目课题性质工程设计课题来源选题指导教师 主要内容(参数)利用89c51设计数字电子钟,实现以下功能:1. 通过数码管显示时间,年月日时分秒;2. 具有整点报时功能;3. 可对时间进行手动校正。任务要求(进度)第1-2天:熟悉课程设计任务及要求,查阅技术资料,确定设计方案。第3-4天:按照确定的方案设计单元电路。要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。第5-6天:软件设计,编写程序。第7-8天:实验室调试。第9-10天:撰写课程设计报告。要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。主要参考资料1 张迎新单片微型计算机原理、应用及接口技术(第2版)m北京:国防工业出版社,20042伟福lab6000系列单片机仿真实验系统使用说明书3 阎石数字电路技术基础(第五版)北京:高等教育出版社,2006审查意见系(教研室)主任签字: 年 月 日 目录 1引言.5 1.1用途.5 1.2功能.62总体方案设计. . .7 2.1方案设计.7 2.2软件实现方法.7 2.3系统整体设计框图.83硬件电路设计.6 3.1电源电路设计.6 3.2晶振电路.7 3.3复位电路.8 3.4时钟电路.9 3.4.1ds1302芯片介绍.8 3.4.2ds1302在本设计中的应用.12 3.5键盘电路.13 3.6显示电路.13 3.7整点报时电路.164系统软件设计.17 4.1主程序软件设计.17 4.2键盘子程序设计.18 4.3日历时钟子程序设计.19 4.4显示子程序设计.20 4.5整点报时子程序的设计.215总结. .22 参考资料.236附录.24附录1:系统原理图.24附录2:部分源程序.251 引言1.1 用途随着人民生活水平的提高,人民消费有一定的改善。许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有cpu控制器或者是单片机。单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、通讯设备、日常消费类产品和玩具等。并且已经深入到工业生产的各个环节以及人民生活的各个方面,如车间流水线控制、自动化系统等、智能型家用电器(冰箱、空调、彩电)等。用单片机来控制的小型家电产品具有便携实用,操作简单的特点。而数字时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,这就要求人们不断设计出新型时钟。现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用led显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:ds1302,ds12887,x1203等都可以满足高精度的要求。本文设计的日历和时钟的显示广泛用于小型智能家用电子产品,如电子钟。利用单片机进行控制,实时时钟芯片ds1302进行记时,外加整点报时电路和显示电路,可实现时间的调整和显示。电子钟既可广泛应用于家庭,也可应用于银行、邮电、宾馆、医院、学校、企业、商店等相关行业的大厅,以及单位会议室、门卫等场所。因而,此设计具有相当重要的现实意义和实用价值。1.2 功能本设计在实现一般的数字电子钟的要求前提下,结合单片机知识以及电路知识,本着使电路工作稳定,降低能耗,减少器件的使用,节约成本,现实使用价值高的原则而设计。本设计具体可以完美实现以下几个功能:(1)能准确实时显示年、月、日、时、分、秒、星期。(2)可以对时间随时进行手动校正。(3)采用24小时制。(4)使用led显示时间参数。(5)上电后,电子钟显示“2013年12月31日23时59分59秒星期2”。(6)当年、月、日、时、分、秒高位为0时做消隐处理,只显示单个数字以增强其可读性。2总体方案设计2.1方案设计led数码管动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了i/o口,降低了能耗。采用ds1302时钟芯片实现时钟,ds1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,ram做为数据暂存区,工作电压2.5v5.5v范围内,2.5v时耗电小于300na.2.2软件实现方法以单片机at89c51为主控制器,时间数据通过时钟芯片ds1302来读取,并通过led数码管显示出来,并用键盘来完成对当前时间的调整。2.3系统整体设计框图 结合以上方案设计,系统的整体设计框图方案如下:图2-3系统整体设计框图3硬件电路设计3.1电源电路设计单片机正常工作电压为5v,因此设计的电源电路主要是提供单片机工作电压。图3-1是为单片机提供电压的电源电路。在这个电路中采用了三端集成稳压器lm7805,可以输出5v的直流电压以供给单片机,另外,用一个刀开关控制电源的断开与接通。图3-1电源电路图3.2晶振电路 单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本设计采用内部时钟方式,因此只需外接晶振源,就能产生一定频率的时钟信号送到单片机的内部的各个单元。电路中的两个电容的作用有两个:一是帮助振荡器起振(c1c2的值大,起振的速度慢;反之,速度快。);二是对振荡器的频率起到微调的作用(c1c2的值大,频率略有减少,反之,频率略有提高)。本设计选用12mhz的晶振,c1、c2的值采用30pf。晶振电路如下图所示。 图3-2单片机晶振电路图3.3复位电路89c51单片机系统在刚通电后,必须复位。复位电路的主要功能是使单片机进行初始化,在初始化的过程中需要在复位引脚rst上加大于2个机器周期的高电平,使单片机处于复位状态。复位后的单片机地址初始化为0000h,然后继续从0000h单元开始执行程序。在复位电路中提供复位信号,等到系统电源稳定后,再撤销复位信号。但是为了在复位按键稳定的前提下,电源稳定后还要经一定的延时才撤销复位信号,以防在按键过程中引起的抖动而影响复位。当单片机运行出错或进入死循环时,可使单片机复位后重新运行。图3-3所示的rc复位电路可以实现上述基本功能。图3-3复位电路图3.4时钟电路3.4.1ds1302芯片介绍 低功耗时钟芯片ds1302可以对年、月、日、时、分、秒进行计时,且具有闰年补偿等多种功能。ds1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析以及对异常数据出现的原因的查找有重要意义。采用ds1302作为记录测控系统中的数据记录,其软硬件设计简单,时间记录准确,既避免了连续记录的大工作量,又避免了定时记录的盲目性,给连续长时间的测量、控制系统的正常运行及检查都来了很大的方便,可广泛应用于长时间连续的测控系统中。在测量控制系统中,特别是长时间无人职守的测控系统中,经常需要记录某些具有特殊意义的数据及其出现的时间。记录及分析这些特殊意义的数据,对测控系统的性能分析及正常运行具有重要的意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且某些测控系统可能不允许。而在系统中采用ds1302则能很好地解决这个问题。ds1302的性能特性如下:(1) 实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;(2) 用于高速数据暂存的318位ram;(3) 最少引脚的串行i/o;(4)用于时钟或ram数据读/写的单字节或多字节(脉冲方式)数据传送方式;(5)简单的3线接口;(6)可选的慢速充电(至vcc1)的能力;(7)2.55.5v电压工作范围;(8)2.5v时耗电小于300na。ds1302时钟芯片包括实时时钟/日历和31字节的静态ram。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24h或带am(上午)/pm(下午)的12h格式。采用三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或ram数据。ds1302有主电源/后备电源双电源引脚:vcc1在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;vcc2在双电源系统中提供主电源,在这种运用方式中,vcc1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。ds1302由vcc1或vcc2中较大者供电。当vcc2大于vcc1+0.2v时,vcc2给ds1302供电;当vcc2小于vcc1时,ds1302由vcc1供电。ds1302数据操作原理:ds1302在任何数据传送时必须先初始化,把rst脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在sclk的上升沿被输入。无论是读周期还是写周期,开始8位指定40个寄存器中哪个被访问到。在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字节数。图3-4-1ds1302管脚图 如果在传送过程中置rst为低电平,则会终止本次数据传送,并且i/o引脚变为高阻态。上电运行时,在vcc=2.5v之前,rst脚必须保持低电平。只有在sclk为低电平时,才能将rst置为高电平。ds1302的管脚图如图3-4-1所示,表3-4-2为各引脚的功能。表3-4-2ds1302引脚功能表ds1302的控制字如图3-4-3所示。控制字节的最高有效位(位7)必须是逻辑1;如果它为逻辑0,则不能把数据写入到ds1302中。位6如果为0,则表示存取日历时钟数据;为1表示存取ram数据。位51(a4a0)指示操作单元的地址。最低有效位(位0)如为0,表示要进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出。图3-4-3控制字节的含义为了提高对32个地址的寻址能力(地址/命令位15逻辑1),可以把时钟/日历或ram寄存器规定为多字节(burst)方式。位6规定时钟或ram,而位0规定读或写。在时钟/日历寄存器中的地址931或ram寄存器中的地址31不能存储数据。在多字节方式中,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写ram时,为了传送数据不必写所有31字节。不管是否写了全部31字节,所写的每一字节都将传送至ram。数据读写程序如图3-4-4所示。表3-4-5片内时钟数据寄存器3.4.2ds1302在本设计中的应用实时时钟芯片ds1302采用串行数据传输,可为掉电保护电源提供可编程的充电功能,也可以关闭充电功能,芯片采用32768hz晶振。要特别说明的是,备用电源bt1可以用电池或超级电容(10万f以上)。虽然ds1302在主电源掉电后耗电很小,但如果要长时间保证时钟正常,最好选用小型充电电池。如果断电时间较短(几小时或几天),可以用漏电较小的普通电解电容代替(100f就可以保证1小时的正常走时),本设计采用3v的锂电子电池。ds1302在第一次加电后,需进行初始化操作。初始化后就可以按正常方法调整时间。ds1302的时钟电路如图3-4-6所示。图3-4-6ds1302时钟电路3.5键盘电路本设计用到四个独立式键盘分别接到p1口的低4位,为保证p1口低4位在按键无按下时为高电平,特在p1口的低四位外接上拉电阻。键盘电路如图3-5所示。按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的i/o端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免cpu多次处理按键的一次闭合,应采用措施消除抖动。因此本设计采用独立式按键,直接用i/o口线构成单个按键电路,每个按键占用一条i/o口线,每个按键的工作状态不会产生互相影响。图3-5键盘电路各按键对应的功能如下:(1)k1键为功能移位键,依据按下的次数对应选中调节年、月、日、时、分、秒或者星期,具体在键盘子程序中详细介绍。(2)k2键为数字“+“键,按一下则对应的数字加1。(3)k3键为数字“-”键,按一下则对应的数字减1。(4)k4键为总返回键。3.6显示电路显示电路中用到的元器件介绍:(1)数码管led led显示器由若干个发光二极管组成,当发光二极管导通时,相应的一个笔画或一个点就发光。控制相应的管导通,就能显示出对应字符。各段led显示器需要由驱动电路驱动。在七段led显示器中,通常将各段发光二极管的阴极或阳极连在一起作为公共端。将各段发光二极管连在一起的叫共阳极显示器,用低电平驱动;将阴极连在一起的叫共阴极显示器,用高电平驱动。静态显示有并行输出和串行输出两种方式。静态显示就是每一个显示器各笔画段都要独占具有一个锁存功能的输出口线,cpu把要显示的字形代码送到输出口上,就可以使显示器上显示所需的数字或符号,此后,即使cpu不在去访问它,因为各笔画段借口具有锁存功能,显示的内容也不会消失。数码管动态显示是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a、b、c、d、e、f、g、dp的同名端连在一起,另外为每个数码管的公共极com增加位元选通控制电路,位元选通由各自独立的i/o线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通com端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。透过分时轮流控制各个led数码管的com端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的i/o口,而且功耗更低。(2)译码器74ls13874ls138译码器是通过3条线来达到控制8条线的状态,就是通过3条控制线a0、a1、a2不同的高低电平组合来控制y0y7的输出状态,其中4和5为使能地端,与8引脚共同接地,当接高电平时y0到y7输出高电平。6号脚为使能端,为高电平时有效。当需要级联时只需要改变使能端信号引脚即可,连接方法简单。若将选通端中的一个作为数据输入端时,74ls138还可作数据分配器。74ls138封装如图3-6-1所示。图3-6-174ls138封装图(3)8d锁存器7437374373是8d透明锁存器,可驱动数码管。其功能如下:三态总线驱动输出置数全并行存取缓冲控制输入使能输入有改善抗扰度的滞后作用原理:74hc373的八个锁存器都是d型锁存器,当使能(g)为高时,q输出将随数据(d)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,i/o通道,双向总线驱动器和工作寄存器。74373的引脚图如下:图3-6-274hc373引脚图显示电路设计:本设计采用16个共阴极数码管,其中ds1-ds4显示年,ds5-ds6显示月,ds7-ds8显示日,ds9-ds10显示时,ds11-ds12显示分,ds13-ds14显示秒,ds15显示星期,ds16用于整点报时时的闪烁位。在显示部分硬件电路设计中用两个74373分别驱动前8个数码管和后8个数码管,采用总线的连接方式,并在74373与led之间加上限流电阻,阻值为100欧姆。两个74373的输入端均与p0口相连,即p0口为led的段选端,用于向led输入数型码,并接上拉电阻,阻值均为10k欧姆。p3口的低3位分别接两个74ls138译码器的a、b、c端,用p3.3、p3.4分别接两个译码器的使能端e3。两个译码器的16个输出端分别接16个数码管,用于led的位选端。图3-6-3显示电路3.7整点报时电路 整点报时电路由pnp型三极管8550、电阻与蜂鸣器构成,当p1.7输出低电平时,蜂鸣器就会发声,其设计电路如下图所示。图3-7整点报时电路4系统软件设计 软件的设计是设计控制系统的应用程序。其任务是在整体设计和硬件设计的基础上,确定程序结构,分配片内ram资源,划分功能模块,然后进行主程序和各模块程序的设计,最后连接起来成为一个完整的应用程序,再与硬件相结合完成相应功能。4.1主程序软件设计流程图如图4-1所示,可以看到主程序采用模块化设计。从主程序流程图看出,主程序的组成是通过分别调用各子程序组成总体系统功能,能很直观的看出主程序所要完成的功能,首先是初始化各模块,之后调用键盘完成时间的调整,调用日历子程序完成日历时钟的初始化和时间数据的读写,调用显示子程序显示数据,最后又转到键盘程序来回循环。初始化部分主要有初始化定时器部分和和一些寄存器、标志位、初始化时间等。(1)对定时器t0初始化时,首先置初值,cpu开中断,定时器t0开中断,并且开始计数,而对定时器t1初始化时,首先置初值,定时器t1关中断,并且停止计数,只有收到命令时才能产生中断。(2)寄存器的初始化主要是初始化执行程序时用到的部分ram空间,防止程序执行时带来混乱。(3)标志位初始化是对时间调整时判断是调分还是调时,以及整点报时等而专设的位标志,初始化过程中标志位全部置0,即开始时是处于显示状态,而不是调整状态或者整点报时状态,这一点在程序中相当明了。(4)初始化时间是开机时显示的时间,并通过调用日历时钟的写程序来完成时间的置初值。 图4-1主程序流程图4.2键盘子程序设计多功能键盘程序的设计是本设计的难点,也是完成本设计的重点,由于本设计为15位显示,所以对于日期与时间的调整,相应的程序会非常的冗长,但是键盘对年月日时分秒星期的调整思路、流程大体一样,所以在程序设计上并不是那么难。当有键按下时,调用10ms延时程序,再判断是否有键按下无则返回,若有先调用显示程序再判断是否松开,否则再转到显示程序,这样避免了在按键松开之前能正常显示。其中k1键功能最多,通过判断k1键按下的次数来判断是调时间还是定时,并对对应的位置闪烁。本键盘深度为7级,即连续按下k1键8次时则返回到原来界面。当判断键值为1时则为调秒状态,对应的秒低位闪烁,为2时为调分状态并分闪烁,为3时为调时状态并时闪烁,为4时为调日状态并日闪烁,为5时为调月状态并月闪烁,为6时为调年状态并年闪烁,为7时为调星期状态并星期闪烁。k2为加1键,k3为减1键,k4为总返回键,即在调时见时不用只有按下k1键值为8才返回,而通过按下k4键即可返回。由于键盘流程图非常复杂,在此只表示秒,如图4-2所示,其余相仿省略。图4-2键盘子程序流程图4.3日历时钟子程序设计ds1302与cpu的连接,是通过sclk、i/o、rst,即三线连接方式。日历时钟ds1302的读写需要初始化时序、读时序、写时序等。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机启动写时序开始,如果要求单总线器件回送是低位在先。读写都是16位数据,高8位是地址,低8位是数据,在读写时要严格遵从读写时序,否则读写将会失效。当rst为高电平时,所有的数据传送被初始化,允许对ds1302进行操作。如果在传送过程中rst置为低电平,则会终止此次数据传送,i/o引脚变为高阻态。上电运行时,在vcc2.5v之前,rst必须保持低电平。只有在sclk为低电平时,才能将rst置为高电平,这一点我们要一定注意。当rst置为高电平时,在串行时钟的sclk的上升沿,ds1302从i/o端口读入一位数据,8个串行时钟脉冲就可以读入一字节的数据。在串行时钟的下降沿,ds1302向i/o端口输出一位数据,8个串行时钟脉冲就可以输出一字节的数据。日历时钟的读写流程图如下图所示。图1时钟读 图2时钟写图4-3日历时钟读与写流程图4.4显示子程序设计本设计的显示部分具有消隐和闪烁功能,当时分秒等高位为0时显示消隐,但低位不能显示消隐,因此对于读时间显得更加明了。闪烁功能也是本设计的一个难点,本设计采用8个位标志位,其中一个标志位通过用定时器0产生一个周期大约为每秒1.5次,使闪烁时效果达到最好。此时定时器采用定时中断的工作方式,这样可以充分利用cpu资源。另外7个标志位是年月日时分秒星期等的位标志位,当标志位置1时即开闪烁,与用中断产生的标志位相结合,即在一个周期内为0时消隐,为1时开显示,这样可以使在调时间时对应的位闪烁。显示子程序流程图如下图所示。 图4-4显示子程序流程图4.5整点报时子程序的设计 本设计设置了四个整点报时标志位,分别是秒个位为零、秒十位为零、分个位为零、分十位为零等标志位,只要当秒个位、秒十位、分个位、分十位为零,则分别使相应的零标志位置1。当四个标志位均为1时,则启动报时,在此仅用蜂鸣器蜂鸣10s代替。在整点报时状态下,数码管ds16显示数字8并闪烁。整点报时子程序的流程图如下图所示。图4-5整点报时子程序流程图5总结 不知不觉,为期两周的单片机课程设计已经结束,在这次设计过程中收获真的很多。首先要谈一下对这次设计全过程的一个认识和感受:硬件系统关系到所要设计的电子产品好怀,如系统抗干扰性等,所以要合理的安排尽量减少干扰提高性能。单片机是很容易受干扰的控制器,当采用外部晶振时,应尽量让其靠近单片机减少对其干扰,防止程序乱飞现象。同时还可以采用隔离等方式减少干扰,硬件系统设计的好坏很大部分来源于经验,所以要有动手的好习惯。软件设计是核心部分,具有多样化,灵活性高,易移植等优点,要深深理会各指令的含义才能更加熟练应用,中断的合理利用可以减少cpu利用资源,具有执行效率高等优点,本设计用到定时器中断以减少对cpu的占用,更好的处理其他功能。软件的设计大部分采用模块化设计的方法以方便调试,并使其可读性大大增强,方便更改和移植。 在软硬件的设计过程中,通过查找各方面的相关资料,学到了很多的知识,比如学会了ds1302时钟芯片的应用,学会了74373、74138等这些芯片在电路中所起的作用,尤其是熟悉并掌握了protel和visio等软件,深刻的意识到它们在单片机开发系统中所起的作用。本次设计最大的感受就是在进行项目设计中,一定要保持严谨的头脑,总揽全局,面面俱到,每一个细节都应该深知熟虑,做到万无一失,只有这样才能完美的设计出一个具有实用的产品。自己感觉本设计就在万年历、时间牌等方面,具有现实实用价值。当然还有很多纰漏瑕疵,相信在以后的学习生涯中,一定会逐步改善和完善相关功能,所以还需要继续努力。 然而,本次课程设计离不开李老师及时认真的指导,在此特别向李老师表示衷心的感谢。以及给予我帮助的所有同学说一声:谢谢!我相信,在今后的学习道路中,只要勤于思考,勇于探索,敢于创新,一定会取得更大的进步。参考资料:1杨家成单片机原理与应用及c51程序设计北京:清华大学出版社,20072夏路易,石宗义protel99se电路原理图与电路板设计教程北京:北京希望电子出版社,20043邓兴成单片机原理与实践指导北京:机械工业出版社,20104阎石.数字电子技术基础.北京:高等教育出版社,2009.5张迎新单片微型计算机原理、应用及接口技术北京:国防工业出版社,20076李丽荣,张常全,郑建红.51单片机应用设计.北京:北京理工大学出版社,2007.6附录附录1附录2:部分源程序zhuanbit50h闪烁标志位辅助标志位zhuan1bit51h年开闪烁的标志位zhuan2bit52h月开闪烁的标志位zhuan3bit53h日开闪烁的标志位zhuan4bit54h时开闪烁的标志位zhuan5bit55h分开闪烁的标志位zhuan6bit56h秒开闪烁的标志位zhuan7bit57h星期开闪烁的标志位buzzer1bit58h秒个位为零标志位buzzer2bit59h秒十位为零标志位buzzer3bit5ah分个位为零标志位buzzer4bit5bh分十位为零标志位org0000hljmpstart开始并初始化org000bh定时/计数t0中断ljmpzduanorg001bh定时/计数t1中断ljmpzduan2zduan:movth0,#00h使zhuan由正到负周期大约为1.5即当开闪烁时每秒大约闪烁1.5次环境movtl0,#00hdjnzr7,zduan1循环指令cplzhuan闪烁标志位求反movr7,#3zduan1:reti中断返回zduan2:movth1,#0fchmovtl1,#43hcplp3.0retiorg0100hstart:movsp,#70h设堆栈movtmod,#11ht0,ti工作方式1movth0,#00hmovtl0,#00hmovth1,#0fchmovtl1,#43hsetbea开放cpusetbet0开放t0中断setbtr0启动t0工作clrzhuan1初始化标志位clrzhuan2clrzhuan3clrzhuan4clrzhuan5clrzhuan6clrzhuan7clrbuzzer1clrbuzzer2clrbuzzer3clrbuzzer4movr7,#3mov5fh,#00h初始化寄存器mov30h,#59h时间赋初始值mov31h,#59hmov32h,#23hmov33h,#31hmov34h,#12hmov35h,#02hmov36h,#13hsetbp1.4启动设置写保护寄存器mova,#10001110b命令字节,07h寄存器写acallwbytemova,#00h允许写数据字节acallwbyteclrp1.4rst=0,停止传送movr0,#30h数据存放首地址movr2,#8写8个字节setbp1.4启动连续写8个字节mova,#0beh设多字节写命令字lcallwbytechushi:mova,r0取数据lcallwbyte写一个字节incr0djnzr2,chushi循环写8个字节;主程序main:lcalljian调键盘子程序lcallrili调日历时钟程序lcallxian调显示程序lcallbaoshi调报时程序sjmpmain;键盘程序jian:movp1,#0ffh初始mova,p1cplajnzji1判键按下ljmpjian4ji1:lcalldelay调延时cplajnzji2ljmpjian4ji2:jnbp1.1,jian3判k2键为0转jnbp1.2,jian3判k3键为0转jian0:movp1,#0ffhjnbp1.3,jian3判k4键为0转jnbp1.0,jian1判k1键为0转ljmpjianxjian1:lcalldelay调延时去抖动jbp1.0,jianx为1就是键抖动jian11:lcallxian调显示jnbp1.0,jian11判键k1松开mova,5fhadda,#1寄存器加1mov5fh,acjnea,#8,jianxljmpjian3jianx:mova,5fhcjnea,#1,jia1比较转移指令a不等于1时,转移ljmptiaom转调秒子程序jia1:mova,5fhcjnea,#2,jia2ljmptiaof转调分子程序jia2:mova,5fhcjnea,#3,jia3ljmptiaos转调时子程序jia3:mova,5fhcjnea,#4,jia4ljmptiaor转调日子程序jia4:mova,5fhcjnea,#5,jia5ljmptiaoy转调月子程序jia5:mova,5fhcjnea,#6,jia6ljmptiaon转调年子程序jia6:ljmptiaox转调星期子程序jian3:clrzhuan1标志位清0clrzhuan2clrzhuan3 clrzhuan4clrzhuan5clrzhuan6clrzhuan7mov5fh,#00hjian2:lcallxian调显示子程序mova,p1cplajnzjian2jian4:ret;调秒tiaom:setbzhuan6秒闪烁标志位置1lcallxianjnbp1.1,miaoz加转移jnbp1.2,miaoj减转移ljmpjian0miaoz:lcalldelay调延时去抖动jnbp1.1,miaoz1ljmpjian0miaoz1:lcallxianjnb p1.1,miaoz1判键k2松开mov a,30h取秒数据add a,#1加1da a十进制调整指令 mov 30h,a送回秒寄存器cjne a,#60h,miaoz2mov 30h,#00h秒值过60为0ljmp miaoz2miaoj:lcall delay;调延时去抖动jnb p1.2,miaoj1ljmp jian0miaoj1:lcall xianjnb p1.2,miaoj1判键k3松开mov a,30h取秒数据movb,#10hdiv aba除以bmov 61h,b数据个位放到61hmov b,#10mul aba乘以badd a,61h不带进位加法dec aa减1mov b,#10div ab swap aadd a,bmov 30h,acjne a,#96h,miaoz2mov 30h,#59hmiaoz2:mov a,30hanl a,#0fh分离低四位mov 40h,a存数据到寄存器mov a,30hswap a半字节交换anl

温馨提示

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

评论

0/150

提交评论