

已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实习设计报实习设计报告告 第 页 共 20 页 目目 录录 一、一、 设计目的设计目的 . 二、二、任务要求任务要求. 三、三、功能说明功能说明. 四、四、实时时钟芯片实时时钟芯片 ds1302. 4.1 ds1302 主要的性能指标:. 4.2 ds1302 的基本组成和工作原理 4.3 ds1302 的寄存器. 4.4 ds1302 的复位. 五、五、硬件电路设计模块硬件电路设计模块. 5.1 电源电路 5.2 控制电路 5.3 led 显示电路. 5.4 ds1302 在系统中的硬件电路. 六、六、硬件安装及调试硬件安装及调试. 6.1 安装中注意的问题 6.2 布线布局说明 6.2 安装调试中出现的问题: 七、七、软件调试及设计软件调试及设计. 1.软件设计思想:. 2.程序流程图:(见下页). 八、八、设计中存在的问题设计中存在的问题. 1.ds1302 工作的稳定性加入辅助电容实现负载匹配 2.乱码显示. 九、九、设计总结设计总结. 十、十、附录附录. 附录一:元器件清单. 附录二:系统电路图. 附录三:设计 pcb 板图. 附录四:万年历实物图. 附录五:程序清单. 实习设计报实习设计报告告 第 页 共 20 页 一、 设计目的 通过一个复杂的产品的设计、组装、调试及软件实现,从而将所学的理论 知识与实践相结合,进一步巩固专业知识,掌握基本专业技能,切实加强动手 能力,通过对实际产品各功能系统的研究,提升对理论知识的认识,两者结合, 提高理论指导,解决实际问题的能力 为就业打下坚实的基础。 二、 任务要求 显示准确的北京时间(年、月、日、时、分、秒,年号只显示最后两位) ,12/24 小时显示切换。 随时可以调校时间。 可整点报时。 可掉电储存并记时。 允许通过转换功能键转换显示时间或日期。 三、 功能说明 本设计是基于 89c51 单片机的万年历,特点在于利用 ds1302 计时。采用两个三位共 阴数码管,及 7 个功能键。主要能实现时、分、秒显示,年、月、日显示,时、分、月、 日调整,闹铃设置。可内置时间初值,也可利用按键调整时间初值。 系统默认时间为 2006 年 10 月 21 日 11 时 59 分 50 秒。按键 p1.3、p1.4、 p1.5、p1.6 分别调整时加、时减、分加、分减。 按下 p1.1 键,显示切换到日历显示,led 显示年、月、日,初始值为 06 年 10 月 21 日。按键 p1.3、p1.4、 p1.5、p1.6 分别调整月加、月减、日加、日减。 p1.7 为设置键,对应一个红色发光二极管,按下 p1.7,设置键启动,红色二极管亮, 此时可调整时间日期;再按下 p1.7 键,设置功能关闭,同时红色发光二极管灭,此时 p1.3、p1.4、p1.5、p1.6 等调整键失效。 p1.0 键为闹铃控制键,默认情况下闹铃关,对应的绿色发光二极管灭,按下 p1.0, 闹铃开,同时绿色发光二极管亮,再按一下,闹铃关。闹铃开时,时间跳到设置的闹铃时 间时,蜂鸣器响时 1 分钟。 实习设计报实习设计报告告 第 页 共 20 页 四、实时时钟芯片 ds1302 ds1302 是 dallas 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和 31 字 节静态 ram,通过简单的串行接口与单片机进行通信,实时时钟/日历电路提供秒分时日日 期月年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过 am/pm 指示决定采 用 24 或 12 小时格式,ds1302 与单片机之间能简单地采用同步串行的方式进行通信仅需用 到三个口线 1res,复位 2i/o,数据线 3sclk,串行时钟时钟/ram 的读/写数 据以一个字节或多达 31 个字节的字符组方式通信 ds1302 工作时功耗很低保持数据和时钟 信息时功率小于 1mw。 ds1302 是由 ds1202 改进而来增加了以下的特性双电源管脚用于主电源和备份电源 供应 vcc1 为可编程涓流充电电源附加七个字节存储器它广泛应用于电话传真便携式仪器 以及电池供电的仪器仪表等。 4.1 ds1302 主要的性能指标: a)实时时钟具有能计算 2100 年之前的秒分时日日期星期月年的能力,还有闰 年调整的能力。 b)31 8 位暂存数据存储 ram c)串行 i/o 口方式使得管脚数量最少 d)宽范围工作电压 2.0 5.5v e)工作电流 2.0v 时,小于 300na f)读/写时钟或 ram 数据时有两种传送方式单字节传送和多字节传送字符组方 式 g)8 脚 dip 封装或可选的 8 脚 soic 封装根据表面装配 h)简单 3 线接口 i)与 ttl 兼容 vcc=5v j)可选工业级温度范围-40 +85 k)与 ds1202 兼容,在 ds1202 基础上增加的特性 l)对 vcc1 有可选的涓流充电能力 m)双电源管用于主电源和备份电源供应,备份电源管脚可由电池或大容量电 容输入 n)附加的 7 字节暂存存储器 4.2 ds1302 的基本组成和工作原理 ds1302 的管脚排列及描述如下图及表所示 实习设计报实习设计报告告 第 页 共 20 页 管脚描述 x1 x2 32.768khz 晶振管脚 gnd 地 rst 复位脚 i/o 数据输入/输出引脚 sclk 串行时钟 vcc1,vcc2 电源供电管脚 ds1302 内部寄存器 ch: 时钟停止位寄存器 2 的第 7 位 12/24 小时标志 ch=0 振荡器工作允许 bit7=1,12 小时模式 ch=1 振荡器停止 bit7=0,24 小时模式 wp: 写保护位寄存器 2 的第 5 位:am/pm 定义 wp=0 寄存器数据能够写入 ap=1 下午模式 wp=1 寄存器数据不能写入 ap=0 上午模式 tcs: 涓流充电选择 ds: 二极管选择位 tcs=1010 使能涓流充电 ds=01 选择一个二极管 tcs=其它禁止涓流充电 ds=10 选择两个二极管 ds=00 或 11, 即使 tcs=1010, 充电功能也被禁止 rs 位电阻典型位 实习设计报实习设计报告告 第 页 共 20 页 00 没有没有 01 r1 2k 10 r2 4k 11 r3 8k 4.3 ds1302 的寄存器 ds1302 共有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据位为 bcd 码形式。其日历、时间寄存器及其控制字见表 2。 此外,ds1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与 ram 相关 的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 ds1302 与 ram 相关的寄存器分为两类,一类是单个 ram 单元,共 31 个,每个单元组态为 一个 8 位的字节,其命令控制字为 cohfdh,其中奇数为读操作,偶数为写操作;再一类 为突发方式下的 ram 寄存器,此方式下可一次性读写所有的 ram 的 31 个字节,命令控制字 为 feh(写) 、ffh(读) 。 4.4 ds1302 的复位 通过把 输入驱动置高电平来启动所有的数据传送。 输入有两种功能:首 先, 接通控制逻辑,允许地址命令序列送入移位寄存器;其次, 提供了 终止单字节或多字节数据的传送手段。当 为高电平时,所有的数据传送被初始化, 允许对 ds1302 进行操作。如果在传送过程中置 为低电平,则会终止此次数据传送, 并且 i/o 引脚变为高阻态。上电运行时,在 vcc2.5v 之前, 必须保持低电平。 只有在 sclk 为低电平时,才能将 rst 置为高电平。 实习设计报实习设计报告告 第 页 共 20 页 五、硬件电路设计模块 5.1 电源电路 由于 c51 单片机的工作电压是 5v,而我们日常生活中用的电压一般是 220v 的市电, 因此我们需要设计一个电源转换电路,电路见下图。该电路可分为变压电路,整流电路, 滤波电路,稳压电路。整个电路输入是 220v 电压,输出是 5v 的电压,即为单片机和实时 时钟的正常工作电压。 1234 a b c d 4321 d c b a title numberrevisionsize a4 date:25-oct-2006sheet of file:f:sundanpcb万万万万万.ddbdrawn by: vin 1 gnd 2 vout 3 u3027805 c301 4700u c303 47u c302 0.1u in1 in2 c304 0.1u out d301 d302 d303 d304 d305 1n4001 t1 220v 7.5v1n 4001 1n 40011n 4001 1n 4001 1n 4001 图 3-2 稳压电源电路 5.2 控制电路 利用 at89c51 作为主控制器,在接口充足的情况下,考虑到编程容易,所以外接的 7 个按键开关采用独立式按键。p1 口作为键盘接口。p1 口所接电阻起上拉作用,没有键按下 时,将 p1 口置高电平。当有按键按下,该口拉为低电平。p1.0 口接的是报警蜂鸣器。 实习设计报实习设计报告告 第 页 共 20 页 123456 a b c d 654321 d c b a title numberrevisionsize b date:25-oct-2006sheet of file:f:sundanpcb万万万万万.ddbdrawn by: ea/vp 31 x1 19 x2 18 reset 9 rd 17 wr 16 int0 12 int1 13 t0 14 t1 15 p10 1 p11 2 p12 3 p13 4 p14 5 p15 6 p16 7 p17 8 p00 39 p01 38 p02 37 p03 36 p04 35 p05 34 p06 33 p07 32 p20 21 p21 22 p22 23 p23 24 p24 25 p25 26 p26 27 p27 28 psen 29 ale /p 30 txd 11 rxd 10 gnd 20 vcc 40 u1 8051 y1 c3 22p c2 22p vcc s6 r2 10k r1 1k s2s3s1s4 + c1 10u r3 1k r4 1k r5 1k r6 1k vcc r7 1k vcc s5 r9 1k s6s7 r8 1k q? npn u? bel l r10 1k d4 le d d5 le d 5.3 led 显示电路 该显示部分有 2 个 3 位共阴数码管和两个驱动(74ls07 和 74ls48 组成) 。根据实际 经验,虽然在不接驱动的情况下,数码管也可被驱动,但电流太小,亮度不够,因此采用 74ls07 驱动数码管位选,用 74ls48 来驱动段选。 123456 a b c d 654321 d c b a title numberrevisionsize b date:25-oct-2006sheet of file:f:sundanpcb万万万万万.ddbdrawn by: ea/vp 31 x1 19 x2 18 reset 9 rd 17 wr 16 int0 12 int1 13 t0 14 t1 15 p10 1 p11 2 p12 3 p13 4 p14 5 p15 6 p16 7 p17 8 p00 39 p01 38 p02 37 p03 36 p04 35 p05 34 p06 33 p07 32 p20 21 p21 22 p22 23 p23 24 p24 25 p25 26 p26 27 p27 28 psen 29 ale/p 30 txd 11 rxd 10 gnd 20 vcc 40 u1 8051 vcc vcc c4 104p vcc p00 r18 p03p06p05p04p07p02p01 r17 r16 r15 r14 r13 r12 r11 a bf c g d e dp a bf c g d e dp a bf c g d ee e 1 d 2 dp 3 c 4 g 5 b 7 万 8 f 10 万 9 6 a 11 万 12 dp ds1 a bf c g d e dp a bf c g d e dp a bf c g d ee e 1 d 2 dp 3 c 4 g 5 b 7 万 8 f 10 万 9 6 a 11 万 12 dp ds2 a1 a2 a3 a1 a4 a2 a3 a4 a 7 b 1 c 2 d 6 b1 4 lt 3 rb1 5 a 13 b 12 c 11 d 10 e 9 f 15 g 14 gnd 8 vcc 16 u2 7448 vcc 1a 1 1y 2 2a 3 2y 4 3a 5 3y 6 gnd 7 4a 9 4y 8 5a 11 5y 10 6a 13 6y 12 vcc 14 u2 y1y2y3y4y5y6 a b c d e f g ab cde f g abf cdeg p20 p21 p22 vcc vcc 5.4 ds1302 在系统中的硬件电路 ds1302 与 cpu 的连接仅需要三条线,即 sclk(7) 、i/o(6) 、rst(5) 。ds1302 与 cpu 连接的电路原理图如图所示。在单电源与电池供电的系统中提供低电源并提供低功率 的电池备份。在双电源系统中提供主电源,在这种运用方式下连接到备份电源, 实习设计报实习设计报告告 第 页 共 20 页 以便在没有主电源的情况下能保存时间信息以及数据。ds1302 由或两者中的较大者 供电。当大于 vcc1+0.2v 时,vcc2 给 ds1302 供电。当小于时,ds1302 由供电。 123456 a b c d 654321 d c b a title numberrevisionsize b date:26-oct-2006sheet of file:f:sundanpcb万万万万万.ddbdrawn by: ea/vp 31 x1 19 x2 18 reset 9 rd 17 wr 16 int0 12 int1 13 t0 14 t1 15 p10 1 p11 2 p12 3 p13 4 p14 5 p15 6 p16 7 p17 8 p00 39 p01 38 p02 37 p03 36 p04 35 p05 34 p06 33 p07 32 p20 21 p21 22 p22 23 p23 24 p24 25 p25 26 p26 27 p27 28 psen 29 ale/p 30 txd 11 rxd 10 gnd 20 vcc 40 u1 8051 y1 c3 22p c2 22p vcc 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 ds1302 u? y2 c3 22pc2 22p b1 p20 p21 p22 p20 p21 p22 r14 1k r15 1k r16 1k vcc 六、硬件安装及调试 6.1 安装中注意的问题 (1)晶体振荡器的接法:尽量要靠近 ic 插座,接地要尽量短,如果 ic 插座即 89c51 的接线太长,而晶体振荡器的频率很高,在这种情况下,接线会呈现感性。 (2)三极管(9013)极性判别:在安装过程中切记不能将三极管引脚接错,否则不仅 得不到设计想要的结果,还可能会烧坏三极管,影响到整个电路的性能。 (3)在安装集成芯片的过成中,注意不要将芯片反接,否则会将芯片烧坏,引起不必 要 的损失。 (4)在直接接用 220v 的市电时应在电源电路设计中考虑到安全问题,在电路中接入 保险丝,以便在电流超出电路板的负荷时能自动断开,不会造成事故。 6.2 布线布局说明 (1)在 pcb 设计中,布线与布局是一重要步骤:在整个 pcb 中,输入端与输出端的 边线应避免相邻平行, 以免产生反射干扰。必要时应加地线隔离,两相邻层的布线要互相 垂直,平行容易产生寄生耦合。 (2)电源与地线的外理:尽量加宽电源、地线宽度,最好是地线比电源线宽,它们的 关系是:地线电源线信号线,通常信号线宽为:0.20.3mm,最经细宽度可达 0.050.07mm,电源线为 1.22.5 mm。用大面积铜层作地线用,在印制板上把没被用上的地 方都与地相连接作为地线用。 (3)大面积导体中连接腿的外理:在大面积的接地(电)中,常用元器件的腿与其连 接,对连接腿的处理需要进行综合的考虑,就电气性能而言,元件腿的焊盘与铜面满接为 好,但对元件的焊接装配就存在一些不良隐患如:焊接需要大功率加热器。容易造成 实习设计报实习设计报告告 第 页 共 20 页 虚焊点。所以兼顾电气性能与工艺需要,做成十字花焊盘,称之为热隔离(heat shield)俗 称热焊盘(thermal) ,这样,可使在焊接时因截面过分散热而产生虚焊点的可能性大大减 少。 (4)数字电路与模拟电路的共地处理:本电路是由数字电路和模拟电路混合构成的。 因此在布线时需要考虑它们之间互相干扰的问题,特别是地线上的噪音干扰。数字电路的 频率高,模拟电路的敏感度强,对信号线来说,高频的信号线应尽可能远离敏感的模拟电 路器件,对地线来说,整个 pcb 对外界只有一个结点,所以必须在 pcb 内部进行处理数、 模共地的问题,而在板内部数字地和模拟地实际上应该是分开的,它们之间互不相连,只 是在 pcb 与外界连接的接口处(如插头等) ,数字地与模拟地有一点短接。 6.2 安装调试中出现的问题: 安装完后,各引脚电压正常,电源指示灯亮。进行软件调试过程中,出现以下问题。 1)晶振的波形没有出来, 原因:芯片的 5 脚虚焊,并且也存在接地问题 解决方法:将 5 脚重新再焊一次,并纠正接地后就可以正常的工作。 测晶振频率、波形,正确测量结果如下: 波形为正弦波,f=11.0592mhz 本设计测试时的结果如图 4-2 示 图 4-2 晶振测试图 2)芯片烧入程序后,程序不执行,检查发现 31 脚 ale 没有接+5v,更正后,执行正 常。 实习设计报实习设计报告告 第 页 共 20 页 3)有一个数码管的 a 画不亮。经检查发现,a 画的引脚与小数点 dp 的焊点连在一起 了,将焊点断开后即正常。 4)蜂鸣器没有工作,原因是电路接法错法,原接法如图(a) ,改正后的为(b) ,正确 的接法还有图(c) 。 q? npn u? bel l r10 1k r9 1k p1.0 vcc q? npn u? bel l r10 1k p1.0 vcc q? npn u? bell r10 1k p1.0 vcc (a)错误的 (b)正确的 (c)正确的 七、软件调试及设计 1.软件设计思想: 第一步:显示功能测试。利用软件逐个显示 led,从而检查显示电路,确定每个数字所对 应的段码值。 第二步:按键功能测试。利用软件测试按键部分功能是否 第三步:时间显示 第四步:时间可调测试 第五步:万年历可调测试 第六步:程序优化 2.程序流程图:(见下页) 实习设计报实习设计报告告 第 页 共 20 页 开始 系统初始化 送初值显示 loop 时钟自动加 1 调 key_set 调功能键处理 p1.2 按 下? 开设置,调时 间设置模块 p1.1 按 下? p1.7 按 下? 调闹铃设置切换到日历显示 调时间显示 p1.7 按 下? 开设置,调日 历设置模块 调日历显示,延 时 10s, 返回 loop 程序流程图 八、设计中存在的问题 实习设计报实习设计报告告 第 页 共 20 页 1.ds1302 工作的稳定性加入辅助电容实现负载匹配 在实际使用中,我们发现 ds1302 的工作情况不够稳定,主要表现在实时时间的传送有 时会出现误差,甚至整个芯片停止工作。我们对 ds1302 的工作线路进行了分析。从上图看 出,ds1302 的外部电路十分简单,唯一外接的元件是 32768hz 的晶体。通过实验发现:当 外接晶体电路振荡时,ds1302 计时正确;当外接晶体电路停振时,ds1302 计时停止。因此, 我们认为 32768hz 晶体是造成 ds1302 工作不稳定的主要原因。 ds1302 时钟脉冲的产生依赖外接晶体与其内部的电容配合。由于 ds1302 在芯片本身 集成了 6pf 的电容,所以,为了获得稳定可靠的时钟,必须选用具有 6pf 负载电容的晶体。 很多设计者在设计时仅注意晶体的额定频率值,而忽视了晶体的负载电容大小。在这里处 理的办法是:先测晶体的负载电容(记为 ci),若 ci6pf,则在晶体的一端增加一串联电容 cs 以产 生所需的负载电容 ci,即 1/ci=1/6pf1/cs,通过计算即可得出应增加的辅助电容的大小。 如此处理,ds1302 即可起振。 2.乱码显示 时间显示时,可正常显示;调整时间时,按加键或减键时,偶有乱码出现,经调试仍 没有解决问题。 九、设计总结 通过本次万年历的设计,安装及调试,我觉的我基本上完成了从理论到实践的过度, 懂的了如何在实际操作中运用所学的专业知识。我了解了贴片产品的工艺流程,焊接、组 装技术也得到了很大的提高,认识到无论是在硬件设计还是在软件设计中,都要细心、耐 心,每一个细小的环节都不容马虎,比如硬件检查,有的同学未经检查直接接 220v 电源, 结果导致自己的实验板和实验装置一起烧坏。通过实习我学会了理性的去设计、调试,遇 到问题不再盲目。 十、附录 附录一:元器件清单 实习设计报实习设计报告告 第 页 共 20 页 元器件名称数量元器件名称数量 敷铜板 115mmx90mm 1 三极管 9013 1 实时时钟芯片 ds1302 1 发光二极管 1 at89c511 470u 电容 1 6 位驱动器 7407 1 47u 电容 1 74481 10u 电容 1 3 位共阴 led 2 22p 电容 4 12m 晶振 1 104p 电容 3 32.768k 晶振 1dip401 7805 稳压管 1dip161 1n40015dip141 按键 8dip81 1k 排阻 1 220-15 变压器 1 4.7k 排阻 11 3.6v 电池 1k 电阻 6 附录二:系统电路图 ea/vp 31 x1 19 x2 18 reset 9 rd 17 wr 16 int0 12 int1 13 t0 14 t1 15 p10 1 p11 2 p12 3 p13 4 p14 5 p15 6 p16 7 p17 8 p00 39 p01 38 p02 37 p03 36 p04 35 p05 34 p06 33 p07 32 p20 21 p21 22 p22 23 p23 24 p24 25 p25 26 p26 27 p27 28 psen 29 ale/p 30 txd 11 rxd 10 gnd 20 vcc 40 u1 8051 y1 c3 22p c2 22p vcc vcc c4 104p s6 r2 10k r1 1k s2s3s1s4 + c1 10u r3 1k r4 1k r5 1k r6 1k vcc vcc vcc p00 r18 p03p06p05p04p07p02p01 r17 r16 r15 r14 r13 r12 r11 r7 1k vcc a bf c g d e dp a bf c g d e dp a bf c g d ee e 1 d 2 dp 3 c 4 g 5 b 7 万 8 f 10 万 9 6 a 11 万 12 dp ds1 a bf c g d e dp a bf c g d e dp a bf c g d ee e 1 d 2 dp 3 c 4 g 5 b 7 万 8 f 10 万 9 6 a 11 万 12 dp ds2 a1 a2 a3 a1 a4 a2 a3 a4 s5 r9 1k s6s7 r8 1k a 7 b 1 c 2 d 6 b1 4 lt 3 rb1 5 a 13 b 12 c 11 d 10 e 9 f 15 g 14 gnd 8 vcc 16 u2 7448 vcc 1a 1 1y 2 2a 3 2y 4 3a 5 3y 6 gnd 7 4a 9 4y 8 5a 11 5y 10 6a 13 6y 12 vcc 14 u2 y1y2y3y4y5y6 a b c d e f g ab cde f g abf cdeg 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 ds1302 u? y2 c3 22pc2 22p b1 p p20 p21 p22 p20 p21 p22 r14 1k r15 1k r16 1k vcc vcc vin 1 gnd 2 vout 3 u3027805 c301 4700u c303 47u c302 0.1u in1 in2 c304 0.1u out d301 d302 1n4001 d303 d304 d305 1n4001 q? npn u? bell r10 1k d4 led d5 led 万万万万 图 4-3 系统电路图 实习设计报实习设计报告告 第 页 共 20 页 附录三:设计 pcb 板图 附录四:万年历实物图 附录五:程序清单 ;本程序实现实时时钟模块 时钟芯片型号: ds1302 实习设计报实习设计报告告 第 页 共 20 页 ;ds1302 时钟上升沿输入命令或数据,下降 沿输出数据. ;/ / ;本程序使用的数码管为共阳极数码管. ; 显示的时间:分为 05,秒为 00,然后在这 个时间上累加.因数码管有限,只显示分 ; 和秒. t_clk bit p2.2 ;实时时钟时钟线引脚 t_io bit p2.1 ;实时时钟数据线引脚 t_rst bit p2.0 ;实时时钟复位线引脚 ;*40h-46h 存放 “秒 分 时 日 月 星期 年 “ second equ 40h minite equ 41h hour equ 42h org 0000h ajmp main org 0030h main: ;*主程序 设定初值 mov dptr,#tab ;送入表格地址 mov 40h,#50h ;秒赋初值 mov 41h,#59h ;分赋初值 mov 42h,#11h ;时赋初值 mov 43h,#22h ;日赋初值 mov 44h,#10h ;月赋初值 mov 45h,#00h ;星期赋初值 mov 46h,#06h ;年赋初值 clr p1.0 ;闹铃不响 clr p3.5 ;红色指示灯灭,设置禁 止, clr p3.6 ;绿色指示灯灭,闹铃禁 止 start: lcall set1302 ;调用初值设定子程序 ;* loop: lcall get1302 ;调用时钟子程序, 时钟自动加时 aaa: lcall exchange ;调用十六进制转 bcd 码子程序 mov r4, #6 ;刷新次数 tt1: lcall display ;调用动态扫描子程序 djnz r4,tt1 lcall key_set ;调键盘扫描 jnb p3.5,tt3 ;p3.5 为 1,绿 灯亮,开设置 lcall key1 tt3: jnb p3.6,loop mov a,41h cjne a,#00h,loop cpl p1.0 ;p3.6 为 1 时,调 用闹铃程序 ajmp loop nop nop key1:mov p1,#0feh key_hour_add:jb p1.3,key_hour_sub mov a,42h ;小时加一 inc a cjne a,#24h,hadd mov a,#00h hadd:mov 42h,a ljmp start key_hour_sub:jb p1.4,key_mini_add mov a,42h ;小时减一 dec a cjne a,#00h,hsub mov a,#24h hsub:mov 42h,a ljmp start key_mini_add:jb p1.5,key_mini_sub mov a,41h ;分加一 inc a cjne a,#60h,madd mov a,#00h madd:mov 41h,a ljmp start key_mini_sub:jb p1.6,ret_key1 mov a,41h ;分减一 dec a cjne a,#00h,msub mov a,#59h msub:mov 41h,a 实习设计报实习设计报告告 第 页 共 20 页 ljmp start ret_key1: ret nop ;*按键处理 key_date0:lcall delay10ms ;清抖 jb p1.2,key_date ljmp key_date0 key_time: ljmp loop ret key_set:jnb p1.2,key_date0 jb p1.1 ,ss cpl p3.6 ss:jb p1.7,ret1 cpl p3.5 ret1:ret key_set2:jnb p1.2,key_time jb p1.7,ret2 cpl p3.5 ret2:ret key_date:mov r5,#100 lcall set1302 ;调用初值设定子程 序 dd0:mov r6,#200 dd1:mov r7,#248 lcall get1302 lcall exchange lcall display2 lcall key_set2 jnb p3.5,dd2 lcall key2 dd2:djnz r7,dd2 djnz r6,dd1 djnz r5,dd0 ajmp loop key2:mov p1,#0feh jb p1.2, key_month_add lcall key_time key_month_add:jb p1.3,key_month_sub mov a,44h ;月份加一 inc a cjne a,#13h,moadd mov a,#00h moadd:mov 44h,a ljmp key_date key_month_sub:jb p1.4,key_date_add mov a,44h ;月份减一 dec a cjne a,#00h,mosub mov a,#12h mosub:mov 44h,a ljmp key_date key_date_add:jb p1.5,key_date_sub mov a,43h ;日加一 inc a cjne a,#31h,dadd mov a,#00h dadd:mov 43h,a ljmp key_date key_date_sub:jb p1.6,ret_key2 mov a,43h ;日减一 dec a cjne a,#00h,dsub mov a,#30h dsub:mov 43h,a ljmp key_date ret_key2:ret ;* * 十六进制-bcd 码转换 exchange: mov a,46h mov b,#10h div ab ;把 40h 高低 4 位分开 mov 36h,a ;高 4 位存入 31h 单元 mov a,b mov 35h,a ;低 4 位存入 30h 单元 mov a,44h mov b,#10h div ab ;把 40h 高低 4 位分开 mov 34h,a ;高 4 位存入 31h 单元 mov a,b 实习设计报实习设计报告告 第 页 共 20 页 mov 33h,a ;低 4 位存入 30h 单元 mov a,43h mov b,#10h div ab ;把 40h 高低 4 位分开 mov 32h,a ;高 4 位存入 31h 单元 mov a,b mov 31h,a ;低 4 位存入 30h 单元 ; mov a,42h mov b,#10h div ab ;把 41h 高低 4 位分开 mov 30h,a ;高 4 位存入 33h 单元 mov a,b mov 29h,a ;低 4 位存入 32h 单元 mov a,41h mov b,#10h div ab ;把 41h 高低 4 位分开 mov 28h,a ;高 4 位存入 33h 单元 mov a,b mov 27h,a ;低 4 位存入 32h 单元 mov a,40h mov b,#10h div ab ;把 40h 高低 4 位分开 mov 26h,a ;高 4 位存入 31h 单元 mov a,b mov 25h,a ;低 4 位存入 30h 单元 ret nop nop ;*;年月日显 示,时分秒显示,36h,35h; 34h,33h;32h,31h; 30h,29h; 28h,27h; 26h,25h ;* *时分秒显 示 display: mov r7,#100 ;动态扫描次数 dis: ;秒数码管低位 mov a,25h movc a,a+dptr mov p2,a ;秒低位段选码送 p0 口 clr p0.4;秒数码管低位开显示 lcall delay100us setb p0.4 ;秒数码管低位关显示 ;秒数码管高位 mov a,26h movc a,a+dptr mov p2,a ;秒高位段选码送 p0 口 clr p0.3 ;秒数码管高位开显示 lcall delay100us setb p0.3 ;秒数码管高位关显示 ;分数码管低位 mov a,27h ;分低位段选码送 p0 口 movc a,a+dptr mov p2,a ;分低位段选码送 p0 口 clr p0.2 ;分数码管低位开显示 setb p0.0 ;分小数点亮 lcall delay100us setb p0.2 ;分数码管低位关显示 clr p0.0 ;分小数点灭 ;分数码管高位 mov a,28h movc a,a+dptr mov p2,a ;分高位段选码送 p0 口 clr p0.5 ;分数码管高位开显示 lcall delay100us setb p0.5 ;分数码管高位关显示 ;时数码管低位 mov a,29h ;时低位段选码送 p0 口 movc a,a+dptr mov p2,a ;时低位段选码送 p0 口 clr p0.6 ;时数码管低位开显示 setb p0.0 ;时小数点亮 lcall delay100us setb p0.6 ;时数码管低位关显示 clr p0.0 ;时小数点灭 ;时数码管高位 mov a,30h movc a,a+dptr mov p2,a ;时高位段选码送 p0 口 clr p0.7 ;时数码管高位开显示 lcall delay100us 实习设计报实习设计报告告 第 页 共 20 页 setb p0.7 ;时数码管高位关显示 djnz r7,dis ret delay100us: mov r5,#50 djnz r5,$ ret delay1s: mov r5,#10 del0:mov r6,#200 del1:mov r7,#248 lcall get1302 ;调用时钟 子程序,时钟自动加时 lcall exchange ;调用十六 进制转 bcd 码子程序 mov r4, #6 ;刷新次数 ttt: lcall display ;调用动态扫 描子程序 djnz r4,ttt del2:djnz r7,del2 djnz r6,del1 djnz r5,del0 ret delay10ms: mov r6,#10 d1:mov r7,#248 djnz r7,$ djnz r6,d1 ret ;*年月日显示 display2: mov r7,#100 ;动态扫描次数 dis2: ;日数码管低位 mov a,31h movc a,a+dptr mov p2,a ;日低位段选码送 p0 口 clr p0.4 ;日数码管低位开显示 lcall delay100us setb p0.4 ;日数码管低位关显示 mov a,32h ;日数码管高 位 movc a,a+dptr mov p2,a ;日高位段选码送 p0 口 clr p0.3 ;日数码管高位开显示 lcall delay100us setb p0.3 ;日数码管高位关显示 ;月数码管低位 mov a,33h ;月低位段选码送 p0 口 movc a,a+dptr mov p2,a ;月低位段选码送 p0 口 clr p0.2 ;月数码管低位开显示 setb p0.0 ;月小数点灭 lcall delay100us setb p0.2 ;月数码管低位关显示 clr p0.0 ;月小数点灭 ;月数码管高位 mov a,34h movc a,a+dptr mov p2,a ;月高位段选码送 p0 口 clr p0.5 ;月数码管高位开显示 lcall delay100us setb p0.5 ;月数码管高位关显示 ;年数码管低位 mov a,35h ;年低位段选码送 p0 口 movc a,a+dptr mov p2,a ;年低位段选码送 p0 口 clr p0.6 ;年数码管低位开显示 setb p0.0 ;年小数点亮
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子签名协议书
- 工地聘用保安协议书
- 石材购货协议书
- 尾沙承包生产协议书
- 室内安装水管协议书
- 离婚子女协议书
- 高升专数学(文)全真模拟试题(2025年)+答题技巧与解析
- 工程合资入股协议书
- 小区车库补偿协议书
- 家庭开销计划协议书
- PAN纤维结晶度取向度和形貌的演变规律对其性能影响
- 岛津GCMS-TQ8040教材
- (完整版)化工原理各章节知识点总结
- 空调水管线试压冲洗方案
- 总公司与分公司承包协议[页]
- 食品经营设施空间布局图
- 预制箱梁运输及安装质量保证体系及措施
- GB∕T 36266-2018 淋浴房玻璃(高清版)
- 内科学-原发性支气管肺癌
- 航空煤油 MSDS 安全技术说明书
- 导热系数测定仪期间核查方法、记录 Microsoft Word 文档
评论
0/150
提交评论