《单片机系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机系统课程设计报告.docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、安徽经济治理学院单片机课程设计报告设计题目:系别:专业:班级:姓名:学号:成绩:2023 年11 月4 日.目 录一、设计任务和性能指标31.1 设计任务31.2 性能指标3二.设计方案3三、系统硬件设计43.1 单片机的最小系统43.2 时钟电路 DS130243.3 显示电路的设计73.4 键盘接口的设计7四、系统软件设计74.1 主程序设计74.2 阴历子程序设计84.3 显示子程序设计8五、调试及性能分析85.1 调试步骤85.2 性能分析9六、心得体会10参考文献11附录 1 系统硬件电路图12附录 2 程序清单12一、设计任务和性能指标1.1 设计任务利用单片机及外围接口电路 (键
2、盘接口和显示接口电路 )设计制作一个日历时钟,用 LED 把日期时间实时显示出来。要求用 Protel 画出系统的电路原理图要求以最少组件,实现系统设计所要求的功能,印刷电路板要求布局合理,线路清楚,绘出程序流程图,并给出程序清单要求思路清楚,尽量简洁,主程序和子程序分开,使程序有较强的可读性。1.2 性能指标1. 日历:年(2 位) 、月(2 位) 、日(2 位)2. 时钟:时(2 位) 、分(2 位) 、秒(2 位)3. 星期(1 位)4. 校对键:确认键 、加键、翻屏键5. 阴历日期推算并显示:月 2 位、日2 位、指示阴历闰月发光二极管一个二.设计方案依据系统设计的功能的要求,初步确定
3、设计系统由主控模块、时钟模块、显示模块、键扫描接口电路共四个模块组成,电路系统构成框图如图 1.1 所示。主控芯片使用 51 系列 AT89C52 单片机,承受高性能的静态 80C51 设计,由先进工艺制造,并带有非易失性 Flash 程序存储器。它是一种高性能、低功耗的 8 位COMS 微处理芯片,市场应用最多。时钟芯片使用美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟芯片 DS1302。承受 DS1302 作为主要计时芯片、可以 做到计时准确。更重要的是,DS1302 可以在很小的电流的后备电源2.55.5V 电源,在2.5V 时耗电小于 300nA)下连续计时,
4、并可编程选择多种充电电流对后备电源进展慢速充电,可以保证后备电源根本不耗电。承受串行数据传输,与单片机硬件连接简洁,假设使用时钟芯片 DS12887,将承受并行数据传输,占用更多的硬件资源。因此为节约单片机端口,时钟芯片承受 DS1302。.图 2.1 日历时钟显示系统构成框图显示模块承受一般的共阴 LED 数码管,也可承受 LCD 显示,但考虑其造价较高铺张资源,故使用 LED 显示。键盘承受线性连接,连接方式相对简洁,使用查询法实现调整功能。三、系统硬件设计3.1 单片机的最小系统ATMEL 公司生产的 AT89C52 单片机它是硬件电路的核心局部,时钟电路晶振使用 11.0592MHz,
5、复位电路实行按键复位方式。具体连接见附录 1。3.2 时钟电路 DS1302A.DS1302 的性能实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进展计数;用于高速数据暂存的 31*8 位的 RAM;最少引脚的串行 I/O;2.5-5.5V 的电压工作范围;2.5V 时耗电小于 300nA;用于时钟或 RAM 数据读/写的单字节或多字节脉冲方式数据传送方式;简洁的 3 线接口;可选的慢速充电至 Vcc1的力量。DS1302 时钟芯片包括实时时钟/日历和 31 字节的静态 RAM。它经过一个简洁的串行接口与微处理器通信。实时时钟 /日历供给秒、分、时、日、周、月和年等信息。对于小于 31
6、 天的月和月末的日期自动进展调整,还包括闰年校正的功能。时钟的运行可以承受 24h 或带 AM上午/PM下午的 12h 格式。承受三线接口与 CPU 进展同步通信,并可承受突发方式一次传送多字节的时钟信号或RAM 数据。DS1302 有主电源和后备电源双电源引脚: Vcc1 在单电源与电池供电的系统中供给低电源,并供给低功率的电池备份; Vcc2 在双电源系统中供给主电源,在这种运用方式中, Vcc1 连接到备份电源,以便在没有主电源的状况下能保存时间信息以及数据。DS1302 由较大者供电。当Vcc2大于Vcc1+0.2V 时 ,Vcc2给 DS1302 供电;当 Vcc2 小于 Vcc1
7、时,DS1302 由 Vcc1 供电。B.DS1302 数据操作原理DS1302 在任何数据传送时必需先初始化,把 RST 脚置为高电平,然后把 8 位地址和命令字装入移位存放器,数据在 SCLK 的上升沿被输入。无论是读周期还是写周期,开头 8 位指定 40 个存放器中哪个被访问到。在开头 8 个时钟周期, 把命令装入移位存放器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲在单字节方式下为 8 加 8,在多字节方式下为 8 加字节数, 最大可达 248 个字节数。假设在传送过程中置 RST 脚为低电平,则会中止本次数据传送,并且 I/O 引脚变为高阻态。上电运行时,在
8、Vcc2.5V 之前, RST 脚必需保持低电平.只有在 SCLK 为低电寻常,才能将 RST 置为高电平。DS1302 的引脚及内部构造图如图 3.1 所示,表 3.1 为各引脚功能。引脚号引脚名称功能图 3.1 DS1302 引脚及内部构造1Vcc2主电源2,3X1,X2振荡源,外接 32.768KHZ 晶振4GND地线5RST复位/片选线6I/O串行数据输入/输出端双向7SCLK串行数据输入端8Vcc1后备电源表3.1DS1302 引脚功能DS1302 与单片机的具体连接见附录 1,它的掌握字如图 3.2 所示。掌握字的最高有效位位 7必需是规律 1;假设为 0,则不能把数据写到 DS1
9、302 中。位 6 假设为 0,则表示存取日历时钟数据;为1 表示存取 RAM 数据。位 5 - 1A4-A0指示操作单元的地址。最低有效位位 0假设为 0,表示要进展写操作;为 1 表示要进展读操作。掌握字节总是从最低位开头输入/输出。765432101RAMCKA4A3A2A1A0RAMK图 3.2DS1302 的掌握字DS1302 共有 12 个存放器,其中有 7 个存放器与日历、时钟有关,存放的数据为 BCD 码形式。其日历、时间存放器及其掌握字见表 2.2,其中奇数为读操作, 偶数为写操作。DS1302 的晶振选用 32.768KHz。3.3 显示电路的设计显示局部承受一般的共阴数码
10、管显示,使用动态扫描,以便削减硬件电路。考虑到一次扫描 7 位数码管显示时会消灭闪耀状况,设计时承受屡次调用显示子程序解决这个问题。驱动数码管的芯片承受驱动力量较强的 74HC373,使用单片机的 P0 口作为并行输出,74HC373 是高电平锁存,用P1.4 口作为 74HC373 时钟掌握端口,即置1掌握端。由于数码管承受共阴接法,使用 P2.0 口-P2.6 口作为数码管的位选,同时参加 74LS04 作为反向驱动。74HC373 在得到高电平后, 将 8 位数据锁存,并行输出送至数码管各段选掌握口。由于 P0 口内部无上拉电阻,因此需要承受外接上拉电阻的方法,以提高带负载力量,同时还使
11、用发光二极管来指示阴历的闰月。具体连接见附录 1。3.4 键盘接口的设计键盘只有 4 个,其中 1 个用于单片机上电复位,其余三个用一般按键接 10K 上拉电阻,分别掌握移位对应硬件电路图中的 S4 键,、翻屏对应硬件电路图中的 S3、加一键对应硬件电路图中的S2,使用查询法来完成读键功能。其具体连接见附录 1。四、系统软件设计4.1 主程序设计由于使用了时钟芯片 DS1302,阳历只需从 DS1302 各存放器中读出年、周、月、日、时、分、秒等数据,再经处理即可。在首次对 DS1302 进展操作之前, 必需对它进展初始化,然后从 DS1302 中读出数据,再经过处理后,送给显示缓冲单元。然后
12、调用阴历更程序,依据阳历日期推算出阴历日期。在调用更阴历程序后,要读取键值。此时假设掌握键有效,则进入时间调整局部。调整时间用 3 个调整按键,1 个作为移位、掌握用,1 个定义为掌握按键,用于翻屏,另外1 个按键用作加 1 键。在调整时间过程中,要调整的位与未调整位应有所区分,所以增加了闪耀功能,即调整的位始终在闪耀,直到调整下一位。闪耀的原理就是,让调整的一位每隔肯定时间熄灭一次,利用计数器 0, 方式 1,初值设为 0,由于晶振为 11.0592MHZ,所以当计数到达 60ms 左右时会溢出,让计数器 T0 中断 6 次,就送给调整位熄灭符,再次中断 6 次时,再送正常显示的值,不断交替
13、,直到调整该位完毕。此时送正常显示值给该位,再进入下一位调整闪耀程序。主程序流程图见图 4.1。4.2 阴历子程序设计阴历程序的实现是依靠阳历日期来推算的。 要依据阳历来推算阴历日期,首先要设计算法。推算的方法是依据阳历当前日期在一年中的天数来计算阴历日 期。计算出的阳历天数为该年的第几天,存放在R2 和 R3 中。计算出天数后,如果大于#FFH,则把#FFH 存放在 R2 中,余数存放在 R3 中。由于整体算法很简单, 需要计算从 2023 年到 2050 年阴、阳历之间的关系,制成表格,用 DPTR 查表的方法来送显示,因此这里只给出流程图解释说明,阴历程序流程图如图 4.2 和图4.3
14、所示。4.3 显示子程序设计为编程便利将翻屏局部放到了显示子程序中,在子程序入口首先推断翻屏键是否有效,假设有效将翻屏标志位加 1,取相应的显示缓冲区首地址,即从另一存储单元开头显示,到达翻屏效果。 373 为高电平锁存,其 CLK 端接单片机P1.4,在给它地址锁存信号时只需将 P1.4 置 1,应留意置 1 后要将其归 0,便利锁存。程序流程图如图 4.5 所示。五、调试及性能分析5.1 调试步骤调试分为硬件调试和软件调试。 硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。具体步骤及测试结果如下:(1) 检查电源与地线是否全部连接上,用万用表比照电路原理图测试各导线是否完全连接,测试结
15、果全部连接线都已连接好;(2) 检验DS1302 和单片机的晶振是否起振,用示波器观看波形;测试结果波形都很好;(3) 检查各芯片的功能是否正常,检测按键的导通状况。测试结果正常。软件调试主要是程序调试,将整个日历时钟显示程序依据实现功能分为各子模块进展调试,首先都要在试验台上进展调试。具体步骤如下:(1) 显示程序调试。在单片机试验课中我们已经做过 LED 显示试验,所以这局部相对简洁,很快便调试无误了。我们设计的硬件显示局部与试验台虽然并不一样,但相差并不多,经改动后在单路板上也调试通过了;(2) 时间调整程序的调试。这局部也先在试验台上调试过,此时显示程序已经无误,我们直接观看数码管的显
16、示状况,首先在单片机的内存单元中置成了当时的时间,然后看时间调整键是否好用,这局部在试验台上调试无误后可直接在电路板上使用;(3) 阴历子程序的调试。由于阴历程序格外长,我们在敲完程序后就检查了几便。其调试方法是在存放阳历的内存单元中置成当天的日期,在程序执行后看转换的是否正确。阴历子程序主要是依据参考书编写的,在调试过程中觉察在阳历为一月份时转换的不对,经我们在试验台上单步调试找到了错误的缘由,阴历子程序调试成功,在电路板上直接使用即可(4) 阳历日期和时间的读取。试验台中并没有时钟芯片,这局部只能在电路板焊接完成后才能进展调试,经我们查阅资料后,这局部在电路板上一次性通过。5.2 性能分析
17、单片机上电复位后,七个数码管显示为全零状态,这是由于还没有给 DS1302 初值,它此时并没有开头振荡,所以从 DS1302 读取的值都是 0;按下掌握键进入时间调整状态,此时在我们调整哪一位时哪一位就会处于闪耀状态,按下加1 键被调整的那一位就会加 1,而且没有按键抖动现象;在给 DS1302 写入初值后, 它开头振荡,通过移位掌握键、翻屏键的作用可以查看显示的年、月、日、周、时、分、秒是否正确,在调试时我们写入的初值是当时的时间: 06 年 12 月 21 日 14 点 55 分,通过翻屏,可以看到数码管显示的很稳定,时间的显示也很准确; 在翻到显示阴历那一屏是可以看到当时的阴历日期是十一
18、月二日,阴历转换没有错误;当我们将日期置为 2023 年 9 月 1 日时,由于当天是阴历闰七月的初九, 用于指示阴历闰月的发光二极管正常发光。由于课程设计时间比较短,我们没有大量的时间去观看时钟走的是否准确,在走过一段时间后时间显示上可能会有肯定的误差,我们可以再外接 GPS,承受GPS 授时校正,提高时间的精度。我们的日历可以把阳历任意置成某一自然后查看当时的阴历是几月初几,实现了阴历的自动转换,星期的自动转换也可以编写程序实现,这样既可以跳到指定日期查看阴历,也可以查看当天是星期几了,所以我们的日历在性能上还有不完善的地方,在以后的学习当中,我们将尽力把这些功能也完善好。六、心得体会这次
19、课程设计是对我们学习微机原理及单片机课程的检验及实际应用力量的一次提高。我们所设计的是电子日历时钟显示系统。所能指示的时间范围从2023 年到 2050 年。由于是时间显示系统,因此在时间显示上我们力求做到精准。时钟芯片 DS1302 本身并无阴历计数功能,因此我们承受软件实现了阳历到阴历的局部。阴历算法格外简单,我们找到相关资料,实现阳历与阴历的转换。显示局部是整个系统的核心局部,因此我们重点集中在这一局部的模块调试上。由于我们承受的是 P0 口作为并行输出,但却没有考虑到其内部无上拉电阻,P0 口输出电压较低,因此数码管无法显示。我们在教师的帮助下参加了上拉电阻,数码管开头正常显示, 但亮
20、度不够 ,我们认真 的分析了用 于驱动数码 管显示的74HC273,最终找到了其中的缘由。74HC273 驱动力量不强,输出电压不够,导致了数码管显示不清楚,为此我们转变了驱动芯片,使用 74HC373 作为显示驱动芯片,数码管的显示最终到达了预期的较为抱负的效果。为了更靠近真实的状况,在调整时间时我们又参加了闪耀程序,以示区分。原理图的设计时我们使用了 Protel 99 SE 这个强大的绘图工具,由于一些实际的器件在器件库中无法找到,我们只有自己制作,在这个过程中我们学到了很多的学问和方法。在制作 PCB 印刷电路板的时候,很多器件的封装与实际尺寸存在很大的差异,为了获得准确的封装,我们实
21、际测量了所给器件的大小与规格, 自己制作与之匹配的封装库,这让我们明白实践是出真知的唯一途径,只有亲自动手,实际才能测试才能获得最牢靠的设计数据。固然我们也消灭了严峻的失误, 由于对电源与地的距离估量缺乏,导致两者过近,消灭了短接的危急。因此我们不得不重处理这个问题,这个教训也告诫了我们,对于任何小的细节都不能掉以轻心,小的疏忽也会造成大的损失。对于电路图和电路板都应当实行科学慎重的态度,这是保证是的根本试验结果产生的前提,在正式焊接前,对电路板的核查测试应当细心备至,反复检测才不会导致最终的失败。程序的编写过程也给了我们很大的收获。在编写程序之前,我们查阅了大量的相关资料,力求做到标准清楚。
22、在把握了整体的思路后,我们先从程序流程图着手, 将整个程序分成假设干模块,分开编写,一边觉察问题一边解决问题,并在试验板上检验程序测试状况,依据现象不断修改。在这个过程中我们体会到编程的技巧,设置子程序的合理性,同时对单片机最小系统的设计有了整体的理解和深刻的体会,使我们的思维的熬炼与力量培育有了很大的提高和长足的进步。本次课程设计虽然时间很短,但收获却很大。首先我们对单片机最小系统的设计有了整体的把握,对程序编写的合理与标准性有了深刻的理解,建立起程序设计的一般思路,以及 Protel 99 SE 的使用方法,其强大的功能给我们供给了很大的帮助,通过原理图的设计过程,使我们生疏到了这个软件的
23、重要性,我们会以此为契机,在日后的学习中会连续使用它,使其发挥更大的功能。经过三个星期的课程设计,我们得到了充分的熬炼,不仅对单片机的学习有了深刻的理解,同时也增加了我们的毅力和处理突发问题的力量。学习是要付出肯定的艰辛与努力的,做事情肯定要有不怕困难的吃苦精神,唯有坚持不懈,发扬团队协作才能够抑制困难,取得最终的成功。 信任本次课程设计对我们以后的学习将会有很大的影响,我们肯定会乐观地总结阅历与教训,改进缺乏,争取在日后做得更好。固然要感谢教师和同学们的 帮助,在我们束手无策,陷入逆境的时候赐予热忱的帮助,使我们顺当渡过难关。课程设计是一次很好的实践动手时机,通过实践,我们的学问得到了应用,真正实现了学问的学以致用,理论联系实际,我们会更加留意实践力量的熬炼, 留意动手力量的培育。参考文献1 徐维祥、刘旭敏. 单片微型机原理及应用. 大连:大连理工大学出版社,1996 2 李光飞、楼然苗、胡佳文、谢象佐.单片机课程设计与实例指导.北京: 北 京航空航天大学出版社,20233 余永权. 89 系列 FLASH 单片机原理及应用. 北京:电子工业出版社,20234 李群芳,黄建. 单片机微型计算机与接口技术. 北京:电子工业出版社,20235 楼然苗、李光飞 . 51 系列单片机设计实例 . 北京: 北京航空航天大学出版社,2023附录 1 系统硬件电路图附录 2程序清单.