安徽经济管理学院单片机课程设计报告设计题目:系别:专业:班级:姓名:学号:成绩:2011年11月4日目录一、设计任务和性能指标.........................................31.1设计任务...............................................31.2性能指标............................................................................................................3二.设计方案....................................................3三、系统硬件设计...............................................43.1单片机的最小系统..........................................................................................43.2时钟电路DS1302.............................................................................................43.3显示电路的设计...............................................................................................73.4键盘接口的设计...............................................................................................7四、系统软件设计...............................................74.1主程序设计........................................................................................................74.2阴历子程序设计...............................................................................................84.3显示子程序设计...............................................................................................8五、调试及性能分析.............................................85.1调试步骤............................................................................................................85.2性能分析............................................................................................................9六、心得体会..................................................10参考文献......................................................11附录1系统硬件电路图.........................................12附录2程序清单..............................................12-3-一、设计任务和性能指标1.1设计任务利用单片机及外围接口电路(键盘接口和显示接口电路)设计制作一个日历时钟,用LED把日期﹑时间实时显示出来。要求用Protel画出系统的电路原理图(要求以最少组件,实现系统设计所要求的功能),印刷电路板(要求布局合理,线路清晰),绘出程序流程图,并给出程序清单(要求思路清晰,尽量简洁,主程序和子程序分开,使程序有较强的可读性)。1.2性能指标1.日历:年(2位)、月(2位)、日(2位)2.时钟:时(2位)、分(2位)、秒(2位)3.星期(1位)4.校对键:确认键、加键、翻屏键5.阴历日期推算并显示:月(2位)、日(2位)、指示阴历闰月(发光二极管一个)二.设计方案按照系统设计的功能的要求,初步确定设计系统由主控模块、时钟模块、显示模块、键扫描接口电路共四个模块组成,电路系统构成框图如图1.1所示。主控芯片使用51系列AT89C52单片机,采用高性能的静态80C51设计,由先进工艺制造,并带有非易失性Flash程序存储器。它是一种高性能、低功耗的8位COMS微处理芯片,市场应用最多。时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片DS1302。采用DS1302作为主要计时芯片、可以做到计时准确。更重要的是,DS1302可以在很小的电流的后备电源(2.5~5.5V电源,在2.5V时耗电小于300nA)下继续计时,并可编程选择多种充电电流对后备电源进行慢速充电,可以保证后备电源基本不耗电。采用串行数据传输,与单片机硬件连接简单,如果使用时钟芯片DS12887,将采用并行数据传输,占用更多的硬件资源。因此为节省单片机端口,时钟芯片采用DS1302。-4-图2..1日历时钟显示系统构成框图显示模块采用普通的共阴LED数码管,也可采用LCD显示,但考虑其造价较高浪费资源,故使用LED显示。键盘采用线性连接,连接方式相对简单,使用查询法实现调整功能。三、系统硬件设计3.1单片机的最小系统ATMEL公司生产的AT89C52单片机它是硬件电路的核心部分,时钟电路晶振使用11.0592MHz,复位电路采取按键复位方式。具体连接见附录1。3.2时钟电路DS1302A.DS1302的性能�实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;�用于高速数据暂存的31*8位的RAM;�最少引脚的串行I/O;�2.5-5.5V的电压工作范围;�2.5V时耗电小于300nA;�用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;�简单的3线接口;�可选的慢速充电(至Vcc1)的能力。DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。它经过一个简单-5-的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24h或带AM(上午)/PM(下午)的12h格式。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多字节的时钟信号或RAM数据。DS1302有主电源和后备电源双电源引脚:Vcc1在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;Vcc2在双电源系统中提供主电源,在这种运用方式中,Vcc1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电;当Vcc2小于Vcc1时,DS1302由Vcc1供电。B.DS1302数据操作原理DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。无论是读周期还是写周期,开始8位指定40个寄存器中哪个被访问到。在开始8个时钟周期,把命令装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248个字节数。如果在传送过程中置RST脚为低电平,则会中止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST脚必须保持低电平.只有在SCLK为低电平时,才能将RST置为高电平。DS1302的引脚及内部结构图如图3.1所示,表3.1为各引脚功能。-6-图3.1DS1302引脚及内部结构表3.1DS1302引脚功能DS1302与单片机的具体连接见附录1,它的控制字如图3.2所示。控制字的最高有效位(位7)必须是逻辑1;如果为0,则不能把数据写到DS1302中。位6如果为0,则表示存取日历时钟数据;为1表示存取RAM数据。位5-1(A4-A0)指示操作单元的地址。最低有效位(位0)如果为0,表示要进行写操作;为1表示要进行读操作。控制字节总是从最低位开始输入/输出。765432101RAMCKA4A3A2A1A0RAMK图3.2DS1302的控制字DS1302共有12个寄存器,其中有7个寄存器与日历、时钟有关,存放的数据为BCD码形式。其日历、时间寄存器及其控制字见表2.2,其中奇数为读操作,偶数为写操作。DS1302的晶振选用32.768KHz。引脚号引脚名称功能1Vcc2主电源2,3X1,X2振荡源,外接32.768KHZ晶振4GND地线5RST复位/片选线6I/O串行数据输入/输出端(双向)7SCLK串行数据输入端8Vcc1后备电源-7-3.3显示电路的设计显示部分采用普通的共阴数码管显示,使用动态扫描,以便减少硬件电路。考虑到一次扫描7位数码管显示时会出现闪烁情况,设计时采用多次调用显示子程序解决这个问题。驱动数码管的芯片采用驱动能力较强的74HC373,使用单片机的P0口作为并行输出,74HC373是高电平锁存,用P1.4口作为74HC373时钟控制端口,即置‘1’控制端。由于数码管采用共阴接法,使用P2.0口-P2.6口作为数码管的位选,同时加入74LS04作为反向驱动。74HC373在得到高电平后,将8位数据锁存,并行输出送至数码管各段选控制口。由于P0口内部无上拉电阻,因此需要采用外接上拉电阻的方法,以提高带负载能力,同时还使用发光二极管来指示阴历的闰月。具体连接见附录1。3.4键盘接口的设计键盘只有4个,其中1个用于单片机上电复位,其余三个用普通按键接10KΩ上拉电阻,分别控制移位(对应硬件电路图中的S4键,)、翻屏(对应硬件电路图中的S3)、加一键(对应硬件电路图中的S2),使用查询法来完成读键功能。其具体连接见附录1。四、系统软件设计4.1主程序设计因为使用了时钟芯片DS1302,阳历只需从DS1302各寄存器中读出年、周、月、日、时、分、秒等数据,再经处理即可。在首次对DS1302进行操作之前,必须对它进行初始化,然后从DS1302中读出数据,再经过处理后,送给显示缓冲单元。然后调用阴历更新程序,根据阳历日期推算出阴历日期。在调用更新阴历程序后,要读取键值。此时如果控制键有效,则进入时间调整部分。调整时间用3个调整按键,1个作为移位、控制用,1个定义为控制按键,用于翻屏,另外1个按键用作加1键。在调整时间过程中,要调整的位与未调整位应有所区别,所以增加了闪烁功能,即调整的位一直在闪烁,直到调整下一位。闪烁的原理就是,让调整的一位每隔一定时间熄灭一次,利用计数器0,方式1,初值设为0,因为晶振为11.0592MHZ,所以当计数达到60ms左右时会-8-溢出,让计数器T0中断6次,就送给调整位熄灭符,再次中断6次时,再送正常显示的值,不断交替,直到调整该位结束。此时送正常显示值给该位,再进入下一位调整闪烁程序。主程序流程图见图4.1。4.2阴历子程序设计阴历程序的实现是依靠阳历日期来推算的。要根据阳历来推算阴历日期,首先要设计算法。推算的方法是根据阳历当前日期在一年中的天数来计算阴历日期。计算出的阳历天数为该年的第几天,存放在R2和R3中。