单片机系统课程设计报告范例Word文档格式.docx
《单片机系统课程设计报告范例Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机系统课程设计报告范例Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
三、系统硬件设计2
3.1单片机的最小系统2
3.2时钟电路DS13022
3.3显示电路的设计5
3.4键盘接口的设计5
四、系统软件设计5
4.1主程序设计5
4.2阴历子程序设计6
4.3显示子程序设计6
五、调试及性能分析6
5.1调试步骤6
5.2性能分析7
六、心得体会8
参考文献10
附录1系统硬件电路图11
附录2程序清单11
一、设计任务和性能指标
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。
图2..1日历时钟显示系统构成框图
显示模块采用普通的共阴LED数码管,也可采用LCD显示,但考虑其造价较高浪费资源,故使用LED显示。
键盘采用线性连接,连接方式相对简单,使用查询法实现调整功能。
三、系统硬件设计
3.1单片机的最小系统
ATMEL公司生产的AT89C52单片机它是硬件电路的核心部分,时钟电路晶振使用11.0592MHz,复位电路采取按键复位方式。
具体连接见附录1。
3.2时钟电路DS1302
A.DS1302的性能
�实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;
�用于高速数据暂存的31*8位的RAM;
�最少引脚的串行I/O;
�2.5-5.5V的电压工作范围;
�2.5V时耗电小于300nA;
�用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方
式;
�简单的3线接口;
�可选的慢速充电(至Vcc1)的能力。
DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。
它经过一个简单
的串行接口与微处理器通信。
实时时钟/日历提供秒、分、时、日、周、月和年等信息。
对于小于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为各引脚功能。
图3.1DS1302引脚及内部结构
引脚号
引脚名称
功能
1
Vcc2
主电源
2,3
X1,X2
振荡源,外接32.768KHZ晶振
4
GND
地线
5
RST
复位/片选线
6
I/O
串行数据输入/输出端(双向)
7
SCLK
串行数据输入端
8
Vcc1
后备电源
表3.1DS1302引脚功能
DS1302与单片机的具体连接见附录1,它的控制字如图3.2所示。
控制字的最高有效位(位7)必须是逻辑1;
如果为0,则不能把数据写到DS1302中。
位6如果为0,则表示存取日历时钟数据;
为1表示存取RAM数据。
位5-1(A4-A0)指示操作单元的地址。
最低有效位(位0)如果为0,表示要进行写操作;
为1表示要进行读操作。
控制字节总是从最低位开始输入/输出。
76543210
RAMCK
A4
A3
A2
A1
A0
RAMK
图3.2DS1302的控制字
DS1302共有12个寄存器,其中有7个寄存器与日历、时钟有关,存放的数据为BCD码形式。
其日历、时间寄存器及其控制字见表2.2,其中奇数为读操作,偶数为写操作。
DS1302的晶振选用32.768KHz。
3.3显示电路的设计
显示部分采用普通的共阴数码管显示,使用动态扫描,以便减少硬件电路。
考虑到一次扫描7位数码管显示时会出现闪烁情况,设计时采用多次调用显示子程序解决这个问题。
驱动数码管的芯片采用驱动能力较强的74HC373,使用单片机的P0口作为并行输出,74HC373是高电平锁存,用P1.4口作为74HC373时钟控制端口,即置‘1’控制端。
由于数码管采用共阴接法,使用P2.0口-P2.6口作为数码管的位选,同时加入74LS04作为反向驱动。
74HC373在得到高电平后,将8位数据锁存,并行输出送至数码管各段选控制口。
由于P0口内部无上拉电阻,因此需要采用外接上拉电阻的方法,以提高带负载能力,同时还使用发光二极管来指示阴历的闰月。
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左右时会溢出,让计数器T0中断6次,就送给调整位熄灭符,再次中断6次时,再送正常显示的值,不断交替,直到调整该位结束。
此时送正常显示值给该位,再进入下一位调整闪烁程序。
主程序流程图见图4.1。
4.2阴历子程序设计
阴历程序的实现是依靠阳历日期来推算的。
要根据阳历来推算阴历日期,首先要设计算法。
推算的方法是根据阳历当前日期在一年中的天数来计算阴历日期。
计算出的阳历天数为该年的第几天,存放在R2和R3中。
计算出天数后,如果大于#FFH,则把#FFH存放在R2中,余数存放在R3中。
由于整体算法很复杂,需要计算从2000年到2050年阴、阳历之间的关系,制成表格,用DPTR查表的方法来送显示,因此这里只给出流程图解释说明,阴历程序流程图如图4.2和图
4.3所示。
4.3显示子程序设计
为编程方便将翻屏部分放到了显示子程序中,在子程序入口首先判断翻屏键是否有效,如果有效将翻屏标志位加1,取相应的显示缓冲区首地址,即从另一存储单元开始显示,达到翻屏效果。
373为高电平锁存,其CLK端接单片机P1.4,在给它地址锁存信号时只需将P1.4置1,应注意置1后要将其归0,方便锁存。
程序流程图如图4.5所示。
五、调试及性能分析
5.1调试步骤
调试分为硬件调试和软件调试。
硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。
具体步骤及测试
结果如下:
(1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,测试结果所有连接线都已连接好;
(2)检验DS1302和单片机的晶振是否起振,用示波器观察波形;
测试结果波形都很好;
(3)检查各芯片的功能是否正常,检测按键的导通情况。
测试结果正常。
软件调试主要是程序调试,将整个日历时钟显示程序按照实现功能分为各子