单片机课程论文设计-电子钟设计_第1页
单片机课程论文设计-电子钟设计_第2页
单片机课程论文设计-电子钟设计_第3页
单片机课程论文设计-电子钟设计_第4页
单片机课程论文设计-电子钟设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1 安徽工程大学机电学院安徽工程大学机电学院 课程设计说明书课程设计说明书 专业:计算机科学与技术 题目:电子钟 学 生 姓 名:yaomin 指 导 教 师 :谢永宁 2012 年 6 月 6 日 2 目录 前言 3 课程设计任务书4 第一章关于电子钟5 5 第二章方案论证6 2.1 数字时钟方案 6 2.2 数码管显示方案6 第三章硬件系统设计7 3.1 总体设计 7 3.2 模块设计 7 第四章软件系统设计18 第五章系统仿真与测试19 5.1.系统仿真19 5.2 测试结果19 第六章实验心得2121 第七章参考文献2222 附录2323 前前言言 3 我们生活在一个信息时代,各种电子产品层出不穷,作为一个计算机专业的 学生, 了解这些电子产品的基本组成和设计基本原理是十分必要的,我们学习的 是理论知识,而课程设计正是对我们学习的理论知识的实践与巩固。 单片机自 20 世纪 70 年代问世以来,以其极高的性能价格比,受到人们的重 视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境 要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点, 在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家 用电器、电力电子、机电一体化设备等各个方面,本设计是基于单片机的定时闹 钟设计。单片机是在一块半导体芯片上集成了 CPU、存储器以及输入和输出接 口电路的微型计算机;其集成度高、功能强、通用性好,特别是它具有体积小、 重量轻、能耗低、价格便宜、抗扰、能力强和使用方便等特点。它不仅仅是一项 技术性上的突破,同时也是对能源方面的有效节约与有效利用,因此深受国家有 关技术部门和能源部门的重视和支持。 其组合而成的配件产品在日常生活的使用 过程中非常方便、简单且实用,深受着广大消费者的喜爱,从而使单片机技术在 社会中得到了广泛的发展和应用。目前,已成为测量控制应用系统中的优选机种 和新电子产品的关键部件。特别是 20 世纪 70 年代问世以来,以其极高的性能价 格比,受到人们的重视和关注,应用很广、发展很快,推广率高,市场利润率高。 而 51 单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对 它的学习、应用,以 AT89S51 芯片为核心,辅以必要的电路,设计了一个简易 的电子时钟,它由 4.5V 直流电源供电,通过数码管能够准确显示时间,调整时 间,从而到达学习、设计、开发软、硬件的能力。数字电子钟具有走时准确,一 钟多用等特点,在生活中已经得到广泛的应用。虽然现在市场上已有现成的电子 钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来 越高,数字钟不但可以显示当前的时间,而且可以显示期、农历 、以及星期等, 给人们的生活带来了方便。另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可 自选, 使一款电子钟具备了多媒体的色彩。 单片机具有体积小、 功能强可靠性高、 价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具, 而且已渗入到人们工作和和生活的各个角落, 有力地推动了各行业的技术改造和 产品的更新换代,应用前景广阔。 时钟电路在计算机系统中起着非常重要的作用, 是保证系统正常工作的 基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常 工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了 单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两 种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现, 但误差很大, 主要用在对时间精度要求不高的场合; 二是用专门的时钟芯片实现, 在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有: DS1302,DS12887,X1203 等都可以满足高精度的要求。 本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本 设计由单片机 AT89S51 芯片和 LED 数码管为核心,辅以必要的电路,构成了一 个单片机电子时钟。 4 安徽工程大学机电学院 本科课程设计任务书 2009届机电学院 计算机科学与技术专业 课程设计题目: 电子钟电子钟 原始资料 1、设计的主要内容 设计一个电子钟,利用四个数码管,在其上显示分、秒;用 4 个小键盘分别 进行分+1、分-1、秒+1、秒-1 改变时间值。 基本要求: 、设计实验电路(要求利用实验仪的硬件资源) 、分析实验原理 、列出实验接线表 、采用汇编语言编写实验程序 、通过实验验证功能的实现 、编写课程设计说明书 2、设计参考 本程序设计中有几个要点: A、设计一个 1s 时钟,作为时间的基准。可通过定时器来实现,由于定时限 制,我们可以设定定时时钟为 50ms 中断一次,然后用一个计数器计数 20 次,即 50ms*20=1000ms=1s。 B、分与时都可采用软件计数器来实现。60 秒为 1 分,60 分为 1 小时。 C、由于实际应用中要求显示为十进制数,而在程序中处理的数据都为十六进制,因此 在程序中要对显示缓冲区的数据进行十进制调整。 指导教师(签字) 完成日期年月日 接受任务书学生(签字) 5 第一章第一章关于电子时钟关于电子时钟 1957 年,Ventura 发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟开 始迅速发展起来。 现代的电子时钟是基于单片机的一种计时工具, 采用延时程序产生一定的 时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满 二十四小时小时清零。从而达到计时的功能,是人民日常生活补课缺少的工具。 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英 表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电 子钟用集成电路计时时,译码代替机械式传动,用 LED 显示器代替指针显示进而显示时间, 减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选 的灵活性好。 该电子时钟由 AT89S51, , 六段数码管等构成, 采用晶振电路作为驱动电路, 由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟, 六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多 种不同的功能, 按下又松开, 可以实现屏蔽数码管显示的功能, 达到省电的目的; 直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续 两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。 6 第二章第二章方案论证方案论证 2.12.1 数字时钟方案数字时钟方案 本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节 分别存放时钟的时、分、秒信息。利用定时器与软件结合实现 1 秒定时中断,每 产生一次中断,存储器内相应的秒值加 1;若秒值达到 60,则将其清零,并将相 应的分字节值加 1;若分值达到 60,则清零分字节,并将时字节值加 1;若时值 达到 24,则将十字节清零。该方案具有硬件电路简单的特点。但由于每次执行 程序时, 定时器都要重新赋初值, 所以该时钟精度不高。 而且, 由于是软件实现, 当单片机不上电,程序不执行时,时钟将不工作。 2.2数码管显示方案数码管显示方案 动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每 一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示, 但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关, 也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动 态显示节省了 I/O 口,降低了能耗。 7 第三章第三章硬件系统设计 3.1 总体设计 计时方案 利用 AT89S51 单片机内部的定时/计数器进行中断时, 配合软件延时实现时、 分、秒的计时。该方案节省硬件成本,且能使读者在定时/计数器的使用、中断 及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而 对学好单片机技术这门课程起到一定的作用。 控制方案 AT89S51 的 P0 口和 P2 口外接由八个 LED 数码管(LED8LED1)构成的显 示器,用 P0 口作 LED 的段码输出口,P2 口作八个 LED 数码管的位控输出线, P1 口外接四个按键 A、B、C 构成键盘电路。 AT89S51 是一种低功耗, 高性能的 CMOS 8 位微型计算机。 它带有 8K Flash 可编程和擦除的只读存储器(EPROM),该器件采用 ATMEL 的高密度非易失 性存储器技术制造,与工业上标准的 80C51 和 80C52 的指令系统及引脚兼容, 片内 Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。简易电子 钟的功能不复杂, 采用其现有的 I/O 便可完成, 所以本设计中采用此的设计方案。 3.13 具体设计分析 利用单片机(AT89S51)制作简易电子时钟,由六个 LED 数码管分别显示 小时十位、小时个位、分钟十位、分钟个位、秒钟十位、秒钟个位。结合本设计 实验来说,要求显示的时间为时,分,秒,并且都用两位数码管来实现显示。因 此,具体设计程序时,应尽可能多用一些子程序与数据暂寄存器单元。本程序设 计中, 在主程序之外, 可以设置时间值处理子程序, 时间值显示前的处理子程序, 按键情况扫描子程序,1S 定时中断子程序以及 5ms 延时消除按键抖动子程序等 多个小型的子程序。另外,可以设置一些数据单元作为数据寄存器。用 28H, 2AH,2BH 和 2CH 地址单元分别作为显示位数的扫描指针值寄存器,时寄存器, 分寄存器和秒寄存器,再用 20H 地址单元作为显示寄存器 系统框图 8 3.2 模块设计 硬件资源 AT89S51 芯片说明 AT89S51 是一个低功耗,高性能 CMOS 8 位单片机,片内含 4k Bytes ISP(In-system programmable)的可反复擦写 1000 次的 Flash 只读程序存 储器,器件采用 ATMEL 公司的高密度、非易失性存储技术制造,兼容标准 MCS-51 指令系统及 80C51 引脚结构,芯片内集成了通用 8 位中央处理器 和 ISP Flash 存储单元,功能强大的微型计算机的 AT89S51 可为许多嵌入 式控制应用系统提供高性价比的解决方案。 AT89S51 具有如下特点: 40 个引脚, 4k Bytes Flash 片内程序存储器, 128 bytes 的随机存取数据存储器(RAM),32 个外部双向输入/输出(I/O) 口,5 个中断优先级 2 层中断嵌套中断,2 个 16 位可编程定时计数器,2 个 全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。 此外,AT89S51 设计和配置了振荡频率可为 0Hz 并可通过软件设置 省电模式。空闲模式下,CPU 暂停工作,而 RAM 定时计数器,串行口, 外中断系统可继续工作,掉电模式冻结振荡器而保存 RAM 的数据,停止芯 片其它功能直至外中断激活或硬件复位。同时该芯片还具有 PDIP、TQFP 和 PLCC 等三种封装形式,以适应不同产品的需求。 选用的 AT89S51 与同系列的 AT89C51 在功能上有明显的提高,最突出是的 可以实现在线的编程。用于实现系统的总的控制。其主要功能列举如下: AT89S51 引脚图 9 1、为一般控制应用的 8 位单片机 2、晶片内部具有时钟振荡器(传统最高工作频率可至 33MHz) 3、内部程式存储器(ROM)为 4KB 4、内部数据存储器(RAM)为 128B 5、外部程序存储器可扩充至 64KB 6、外部数据存储器可扩充至 64KB 7、32 条双向输入输出线,且每条均可以单独做 I/O 的控制 8、5 个中断向量源 9、2 组独立的 16 位定时器 10、1 个全双工串行通信端口 11、8751 及 8752 单芯片具有数据保密的功能 12、单芯片提供位逻辑运算指令 AT89S51 各引脚功能介绍: VCC: ATAT89S51 电源正端输入,接+5V。 VSS: 电源地端。 XTAL1: 单芯片系统时钟的反向放大器输入端。 XTAL2: 系统时钟的反向放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接 上一只石英振荡晶体系统就可以动作了, 此外可以在两个引脚与地之间加入一个 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。 RESET: AT89S51 的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平 提升至高电平并保持两个机器周期以上的时间,AT89S51 便能完成系统重置的各 项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址 0000H 处开始读入程序代码而执行程序。 EA/Vpp: EA为英文External Access的缩写,表示存取外部程序代码之意,低电平 动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部 EPROM 中)来执行程序。因此在 8031 及 8032 中,EA 引脚必须接低电平,因为其 内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电 平。 此外, 在将程序代码烧录至 8751 内部 EPROM 时, 可以利用此引脚来输入 21V 的烧录高压(Vpp) 。 ALE/PROG: ALE 是英文Address Latch Enable的缩写,表示地址锁存器启用信号。 ATAT89S51 可以利用这支引脚来触发外部的 8 位锁存器(如 74LS373) ,将端口 0 的地址总线(A0A7)锁进锁存器中,因为 ATAT89S51 是以多工的方式送出地址 及数据。平时在程序执行时 ALE 引脚的输出频率约是系统工作频率的 1/6,因此 可以用来驱动其他周边晶片的时基输入。此外在烧录 8751 程序代码时,此引脚 会被当成程序规划的特殊功能来使用。 PSEN: 此为Program Store Enable的缩写,其意为程序储存启用,当 8051 被设成 10 为读取外部程序代码工作模式时(EA=0) ,会送出此信号以便取得程序代码,通 常这支脚是接到 EPROM 的 OE 脚。ATAT89S51 可以利用 PSEN 及 RD 引脚分别启用 存在外部的 RAM 与 EPROM,使得数据存储器与程序存储器可以合并在一起而共用 64K 的定址范围。 PORT0(P0.0P0.7) : 端口 0 是一个 8 位宽的开路电极(Open Drain)双向输出入端口,共有 8 个 位,P0.0 表示位 0,P0.1 表示位 1,依此类推。其他三个 I/O 端口(P1、P2、P3) 则不具有此电路组态,而是内部有一提升电路,P0 在当作 I/O 用时可以推动 8 个 LS 的 TTL 负载。如果当 EA 引脚为低电平时(即取用外部程序代码或数据存储 器) ,P0 就以多工方式提供地址总线(A0A7)及数据总线(D0D7) 。设计者 必须外加一个锁存器将端口 0 送出的地址锁住成为 A0A7,再配合端口 2 所送 出的 A8A15 合成一组完整的 16 位地址总线,而定位地址到 64K 的外部存储器 空间。 PORT2(P2.0P2.7) : 端口 2 是具有内部提升电路的双向 I/O 端口,每一个引脚可以推动 4 个 LS 的 TTL 负载, 若将端口 2 的输出设为高电平时, 此端口便能当成输入端口来使用。 P2 除了当作一般 I/O 端口使用外,若是在 ATAT89S51 扩充外接程序存储器或数 据存储器时,也提供地址总线的高字节 A8A15,这个时候 P2 便不能当作 I/O 来使用了。 PORT1(P1.0P1.7) : 端口 1 也是具有内部提升电路的双向 I/O 端口,其输出缓冲器可以推动 4 个 LS TTL 负载,同样地,若将端口 1 的输出设为高电平,便是由此端口来输入数 据。如果是使用 8052 或是 8032 的话,P1.0 又当作定时器 2 的外部脉冲输入脚, 而 P1.1 可以有 T2EX 功能,可以做外部中断输入的触发引脚。 PORT3(P3.0P3.7) : 端口 3 也具有内部提升电路的双向 I/O 端口, 其输出缓冲器可以推动 4 个 TTL 负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计 时计数控制及外部数据存储器内容的读取或写入控制等功能。 其引脚分配如下: P3.0:RXD,串行通信输入。 P3.1:TXD,串行通信输出。 P3.2:INT0,外部中断 0 输入。 P3.3:INT1,外部中断 1 输入。 P3.4:T0,计时计数器 0 输入。 P3.5:T1,计时计数器 1 输入。 P3.6:WR:外部数据存储器的写入信号。 P3.7:RD,外部数据存储器的读取信号。 11 74LS47 芯片芯片 74LS47 芯片 74LS47 是 BCD-7 段数码管译码器/驱动器, 74LS47 的功能用于将 BCD 码转化成数码块中的数字,通过它解码, 可以直接把数字转换为数码管的显示数 字, 从而简化了程序。 74LS47 译码器原理: 译码为编码的逆过程。 它将编码时赋予代码的含义“翻译”过来。 实现译码的逻辑 电路成为译码器。译码器输出与输入代码有唯一的对应关系。74LS47 是输出 低电平有效的七段字形译码器,它在这里与数码管配合使用, 下表列出了 74LS47 的真值表,表示出了它与数码管之间的关系。 输 入 输 出 显示数字符号 LT RBI A3 A2 A1 A0 BI RBO a b c d e f g 110000100 0 0 0 0 1 0 1X0001110 0 1 1 1 1 1 1X0010100 1 0 0 1 0 2 1X0011100 0 0 1 1 0 3 1X0100110 0 1 1 0 0 4 1X0101101 0 0 1 0 0 5 1X0110111 0 0 0 0 0 6 1X0111100 0 1 1 1 1 7 1X1000100 0 0 0 0 0 8 1X1001100 0 1 1 0 0 9 XXXXXX011 1 1 1 1 1 熄灭 100000011 1 1 1 1 1 熄灭 0XXXXX100 0 0 0 0 0 8 12 74LS138 芯片 74LS138 74HC138:74LS138 为 3 线8 线译码器,共有 54/74S138 和 54/74LS138 两种线路结构型式,其 74LS138 工作原理如下 当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为 低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低 电平译出。 74LS138 的作用: 利用 G1、/(G2A)和/(G2B)可级联扩展成 24 线译码器;若外接一个反 相器还可级联扩展成 32 线译码器。 若将选通端中的一个作为数据输入端时,74LS138 还可作数据分配器 无论从逻辑图还是功能表我们都可以看到 74LS138 的八个输出引脚,任何 时刻要么全为高电平 1芯片处于不工作状态,要么只有一个为低电平 0,其余 7 个输出引脚全为高电平 1。如果出现两个输出引脚同时为 0 的情况,说明该 芯片已经损坏。 71LS138 有三个附加的控制端、和。当、时,输出为高电平(S1),译码 器处于工作状态。否则,译码器被禁止,所有的输出端被封锁在高电平,如表 3.3.5 所示。这三个控制端也叫做“片选”输入端,利用片选的作用可以将多篇连 接起来以扩展译码器的功能。 13 用与非门组成的 3 线-8 线译码器 74LS138 带控制输入端的译码器又是一个完整的数据分配器。在下图电路中如果把 作为“数据”输入端(同时),而将作为“地址”输入端,那么从送来的数据只 能通过所指定的一根输出线送出去。这就不难理解为什么把叫做地址输入了。例 如当101 时,门的输入端除了接至输出端的一个以外全是高电平,因此的数据 以反码的形式从输出,而不会被送到其他任何一个输出端上。 3 线-8 线译码器 74LS138 的功能表 14 晶振电路 下图所示为时钟电路原理图,在 AT89S51 芯片内部有一个高增益反相放大 器, 其输入端为芯片引脚 XTAL1, 输出端为引脚 XTAL2。 而在芯片内部, XTAL1 和 XTAL2 之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。 时钟电路产生的振荡脉冲经过触发器进行二分频之后, 才成为单片机的时钟脉冲 信号。 晶振电路 复位电路 单片机复位的条件是:必须使 RST/VPD 或 RST 引(9)加上持续两个机器 周期(即 24 个振荡周期)的高电平。例如,若时钟频率为 12 MHz,每机器周期 为 1s,则只需 2s 以上时间的高电平,在 RST 引脚出现高电平后的第二个机 器周期执行复位。单片机常见的复位如图所示。电路为上电复位电路,它是利用 电容充电来实现的。在接电瞬间,RESET 端的电位与 VCC 相同,随着充电电流 的减少,RESET 的电位逐渐下降。只要保证 RESET 为高电平的时间大于两个机 器周期,便能正常复位。该电路除具有上电复位功能外,若要复位,只需按图中 的 RESET 键,此时电源 VCC 经电阻 R1、R2 分压,在 RESET 端产生一个复位 高电平。 单片机复位电路 15 数码显示模块设计 数码显像管 数码管是一种把多个 LED 显示段集成在一起的显示设备。有两种类型, 一种是共阳型,一种是共阴型。共阳型就是把多个 LED 显示段的阳极接在一起, 又称为公共端。共阴型就是把多个 LED 显示段的阴极接在一起,即为公共商。 阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。通 常的数码管又分为 8 段,即 8 个 LED 显示段,这是为工程应用方便如设计的, 分别为 A、B、C、D、E、F、G、DP,其中 DP 是小数点位段。而多位数码管, 除某一位的公共端会连接在一起, 不同位的数码管的相同端也会连接在一起。 即, 所有的 A 段都会连在一起,其它的段也是如此,这是实际最常用的用法。数码 管显示方法可分为静态显示和动态显示两种。 静态显示就是数码管的 8 段输入及 其公共端电平一直有效。动态显示的原理是,各个数码管的相同段连接在一起, 共同占用 8 位段引管线;每位数码管的阳极连在一起组成公共端。利用人眼的 视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加 有效的数据信号, 当全段扫描速度大于视觉暂留速度时, 显示就会清晰显示出来。 共阴数码管 系统采用动态显示方式, 用 P0 口来控制 LED 数码管的段控线, 而用 P2 口来 控制其位控线。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每 16 一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视 觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。 数码管的引脚图 按键模块按键模块 时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器、时个位和 时十位计数器及星期计数器电路构成,其中秒个位和秒十位计数器、分个位和分 十位计数器为 60 进制计数器,时个位和时十位计数器为 24 进制计数器。 按键模块电路原理图。 17 18 第四章软件系统设计 基本的程序流程应该是:在主程序中检测各个时间按钮是否有动作若有, 就储存并修改相关的的时间寄存器的值,若没有,就继续检测。在计时子程序中 将各时间寄存器的值逐个加 1,每加一次就要检查是否已超过显示的上限值,这 样在后面就便于处理,在扫描显示子程序中,将扫描位数指针与 20H 相加,从 而得到相应的显示数据;然后按照显示的位数加显示数就的格式,将数据从 P1 口输出到数码管上去显示,当然还有定时中断子程序,在这里,它实现计时 1S 的时间延时。 19 开 始 定时器 T0 初始化 设置显示初值为 12:00:00 设置定时 4ms 初值 设中断 250 次 设置中断允许 秒寄存器值加 1 秒按键了? 秒寄存器值加 使秒寄存器清 0 秒按键松 开了? N 分按键了? 分寄存器值加 1 秒寄存器 60? 秒按松 开了? 分按键 松开? 时寄存器 值20 使分寄存器清 0 时寄存器值加 1 使寄存器清 0 启动 T0 中断 N Y 时按键了? N N N N Y 20 第五章系统仿真与实验测试 5. .1 系统仿真 运用 proteus 软件进行仿真现在 proteus 软件中建立一个新的文件, 再根据 自己的要求选择所需的器件,把器件进行适当的排位后进行连接,连接后运行软 件进行仿真。 5.2 实验测试 电子时钟主要的设计要求是能够实现时钟的一般功能, 以及包括时间的调整 功能, 这个基于单片机的电子时钟基本上实现了上述功能,能够通过时间调整电 路对时间进行调整以及复位。下述为仿真图: 12:00:00 时刻的仿真效果图 21 第六章实验心得 单片机作为我们主要的专业课程之一,我觉得单片机课程设计很有必要,而 且很有意义。但当拿到题目时,确实不知道怎么着手,有些迷茫,上网查资料, 问老师,在老师的帮助下,历时两个星期,解决一个又一个的困难,终于完成任 务。 在这次课程设计中,运用到了很多以前的专业知识,虽然过去从未独立应用 过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设 计的一大收获。另外,要做好一个课程设计,就必须做到:在设计程序之前,对 所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一 个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整 个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的 好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的 思路, 这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很 正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到 同样的问题。课程设计结束了,但是从中学到的知识会让我受益终身。发现、提 出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活 中。设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一 次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对 以前所学过的知识理解得不够深刻,掌握得不够牢固,不能灵活运用。通过这次 设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会 了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。另外, 要非常感谢我的指导老师,是他指引我克服一个由一个的困难,让我学会对困难 无所畏惧,以及对问题的一些很重要的思考方法。 通过这次课程设计,我感觉收获了很多:我逐步加深了对单片机系列知识及 其系统的认识。这个设计题目并不怎么新颖,但从中体现到了个系统开发设计的 过程,足以让我们受益匪浅。让我更进一步的提高了动手能力,也重新复习了一 次单片机的程序编程能力, 在这期间, 让我更加深刻了体会到了汇编程序的思路, 加强了对编程能力的理解和对相应资料的查阅我学会对困难无所畏惧, 以及对问 题的一些很重要的思考方法。 22 第七章参考文献 1.安徽工程大学微型计算机及接口技术实验指导书 2.贾金铃微型计算机原理及应用理论、实验、课程设计 重庆大学出版社 3.殷代红微型计算机原理及应用实验化学工业出版社 4. 刘乐善微型计算机接口技术及应用华中科技大学出版社 5. 李敬兆汇编语言程序设计中国科学技术大学出版社 6.刘乐喜微机计算机接口技术及应用M.华中科技大学出版社. 7.石东海单片机数据通信技术从入门到精通.M.西安电子科技大学出版 社. 8.谢自美等电子线路设计、实验、测试.M.华中科技大学出版社 23 附录 源程序代码 ORG 00H;主程序起始地址 JMP START;主程序 START ORG 0BH;定时器 T0 中断起始地址 JMP TIM0;定时器 T0 中断子程序 TIM0 START:MOV SP;#70H;设置堆栈指针 MOV 28H,#00;设置显示位数扫描指针初值为 0 MOV 2AH,#12H;设置时钟显示寄存器初值为 12H MOV 2BH,#00;设置分钟显示寄存器初值为 00H MOV 2CH,#00;设置秒钟显示寄存器初值为 00H MOV TMOD,#01H;设置定时器 T0 工作在方式 1 MOV TH0,#0F0H;定时 4ms 的初值,即 0F060H MOV TL0,#60H;初值的低位 MOV IE,#82H;定时器 T0 中断允许 MOV R4,#250;保证后面实现中断 250 次,即 1s 的延时 SETB TR0;启动定时器 T0 LOOP:JB P0.0,N2;若秒没有按键,就转去下一步检查分 CALL DELAY;延时 5ms 消除抖动 MOV A,2CH;将秒寄存器的值载入累加器 A ADD A,#01H;A 的内容加 1 DA A;十进制调整 MOV 2CH,A;A 的值存入秒寄存器 CJNE A,#60H,N1;看是否已经是 60 秒,若不是就继续检查 24 MOV 2CH,#00;已经是 60 秒,就清空秒寄存器的值 N1:JNB P0.0,$;秒按键还没有放开就循环等待 CALL DELAY;延时 5ms,消除抖动 N2:JB P0.1,N4;若分没有按键,就转去下一步检查时钟 CALL DELAY;延时 5ms,消除抖动 MOV A,2BH;将分寄存器的值载入累加器 A ADD A,#01H;A 的内容加 1 DA A;十进制调整 MOV 2BH,A;A 的值存入分寄存器 CJNE A,#60H,N3;看是否已经是 60 分 MOV 2BH,#00;已经是 60 分,就清空秒寄存器的值 N3:JNB P0.1,$;分按键还没有放开就循环等待 CALL DELAY;延时 5ms,消除抖动 N4:JB P0.2,LOOP;若时没有按键,就转回去继续检查看是否秒有按键 CALL DELAY;延时 5ms,消除抖动 MOV A,2AH;将时寄存器的值载入累加器 A ADD A,#01H;A 的内容加 1 DA A;十进制调整 MOV 2AH,A;A 的值存入时寄存器 CJNE A,#24H,N5;看是否已经是 24 时,若不是就继续检查 MOV 2AH,#00;已经是 24 时,就清空寄存器的值 N5:JNB P0.2,$;时钟按键还没有放开就循环等待 CALL DELAY;延时 5ms,消除抖动 JMP LOOP;返回重新检查看是否有按键 25 ;*定时器 T0 中断子程序* TIM0:MOV TH0,#0F0H;定时初值重设 MOV TL0,#60H PUSH ACC;将累加器 A 的值暂存于堆栈 PUSH PSW;将 PSW 的值暂存于堆栈 DJNZ R4,X2;计时中断不满 1s 就退出继续中断

温馨提示

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

评论

0/150

提交评论