




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘 要 单片机自 20 世纪 70 年代问世以来 以其极高的性能价格比 受到人们的重视和 关注 应用很广 发展很快 而 51 单片机是各单片机中最为典型和最有代表性的一 种 本文设计以 AT89S51 芯片为核心 辅以必要的外围电路 设计了一个结构简单 功能 齐全的电子时钟 它由 5V 直流电源供电 在硬件方面 除了 CPU 外 使用六个七段 LED 数码管来进行显示 LED 采用的是动态扫描显示 使用 74LS14 芯片进行驱动 通 过 LED 能够比较准确显示时 分 两个简单的按键实现对时间的调整 软件方面采用 汇编语言编程 整个电子钟系统能完成时间的显示 调时 定时闹钟和复位等功能 选用单片机最小系统应用程序 添加比较程序 时间调整程序及蜂鸣程序 通过 时间比较程序触发蜂鸣 实现闹钟功能 完成设计所需求的软件环境 介绍并使用 Keil 单片机模拟调试软件 测试程序的可行性 关键词 单片机技术 AT89S51 液晶驱动 电子闹钟 ABSTRACT Because of its extremely high performance price ratio the single chip computer SCC has been paid great attention to ever since it came out in 1970s of 20th Century and has gained an extensive applicable field and fast development Among all kinds of SCCs 51 SCC is the most typical and representative one This design adopting AT89S51 chip as the core part with some necessary peripheral circuits is a simple electronic clock which uses 5V DC as the power supply In hardware aspect besides the CPU six seven segment LED digi tubes are used for display which work in a dynamically scanning display mode and driven by 74SL14 chip The LEDs can accurately indicate hour and minute and two buttons can be used to adjust the time While in the software aspect the programming language is assembly language The whole electronic clock system has functions of time display adjustment bell setting and reset etc Choose the smallest SCM system applications add Comparison procedures time to adjust procedures and faint buzzing procedures Through relatively faint buzzing trigger procedures to achieve alarm clock function Completed the design needs of the software environment Keil introduced and the use of SCM software simulation debugging testing the feasibility Keywords technology of the one chip computer AT89S51 the liquid crystal is driven Electronic alarm clock 目 录 第 1 章 绪 论 1 1 1 单片机简介 1 1 2 电子闹钟的重要意义 1 1 3 本文的主要工作 2 第 2 章 AT89S51 单片机的硬件系统 3 2 1 AT89S51 单片机的特性 3 2 2 AT89S51 单片机的封装 3 2 3 存储空间 3 2 3 1 程序存储空间 4 2 3 2 数据存储空间 5 2 4 单片机最小应用系统电路 8 2 4 1 供电电路 8 2 4 2 程序存储器选择电路 8 2 4 3 时钟电路 9 2 4 4 复位电路 9 第 3 章 电子闹钟的硬件设计 11 3 1 系统要求 11 3 2 系统组成 11 3 3 系统设计 11 3 3 1 控制器 11 3 3 2 计数器 12 3 3 3 寄存器 12 3 3 4 分频器 12 3 3 5 显示电路 12 3 3 6 输入电路 13 3 3 7 计时器 13 3 3 8 振荡器 13 3 3 9 整体系统 14 3 4 硬件选择 14 第 4 章 电子闹钟的软件设计 16 4 1 子程序及其功能简介 16 4 2 程序设计 16 4 3 调试软件及其环境 17 4 3 1 Keil 单片机模拟仿真调试软件的安装和启动 18 4 3 2 工程的建立 20 4 3 3 源文件的输入 22 结 论 24 参考文献 25 致 谢 26 附 录 1 程序设计 27 附 录 2 外文文献及翻译 34 第 1 章 绪 论 1 1 单片机简介 单片机的全称是单片微型计算机 Single Chip Microcomputer 为了使用方便 它把组成计算机的主要功能部件 中央处理器 CPU 数据存储器 RAM 程序 存储器 ROM EPROM E2PROM 或 FLASH 定时 计数器和各种输入 输出接口 电路等都集成在一块半导体芯片上 构成了一个完整的计算机系统 与通用的计算机 不同 单片机的指令功能是按照工业控制的要求设计 因此它又被称为微控制器 Microcontroller MCS51 系列 1 单片机是美国 Intel 公司于 1980 年推出的一种 8 位单片机系列 该 系列的基本型产品是 8051 8031 和 8751 这 3 种产品之间的区别只是在片内程序存 储器方面 8051 的片内程序存储器 ROM 是掩膜型的 即在制造芯片时已将应用 程序固化进去 8031 片内没有程序存储器 8751 内部包含有用作程序存储器 4KB 的 EPROM 由于 8051 的编程需要制造商的支持 而 8751 的价格昂贵 因此 8031 获得了更为广泛的使用 MCS51 系列单片机优异的性能 价格比使得它从面世以来就获得用户的认可 Intel 公司把这种单片机的内核 即 8051 内核 以出售或互换专利的方式授权给一些 公司 如 Atmel Philips ADI 等 这些公司的这类产品也被称为 8051 兼容芯片 这 些 8051 兼容芯片在原来的基础上增加了许多特性 本文应用电路中采用了 Atmel 公 司的 AT89S51 芯片 它与 MCS51 单片机指令兼容 同时它的内部包含用作程序存储 器 4KB 的基于 FLASH 技术的只读存储器 采用这款芯片既克服了采用 8031 需要添 加外部程序存储器导致电路复杂的缺点 又克服了采用 8751 导致电路制作成本高的 缺点 1 2 电子闹钟的重要意义 20 世纪末 电子技术获得了飞速的发展 在其推动下 现代电子产品几乎渗透 了社会的各个领域 有力地推动了社会生产力的发展和社会信息化程度的提高 同时 也使现代电子产品性能进一步提高 产品更新换代的节奏也越来越快 时间对人们 来说总是那么宝贵 工作的忙碌性和繁杂性容易使人忘记当前的时间 忘记了要做的 事情 当事情不是很重要的时候 这种遗忘无伤大雅 但是 一旦重要事情 一时的 耽误可能酿成大祸 例如 许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电 时间 尤其在医院 每次护士都会给病人作皮试 测试病人是否对药物过敏 注射后 一般等待 5 分钟 一旦超时 所作的皮试试验就会无效 手表当然是一个好的选择 但是 随着接受皮试的人数增加 到底是哪个人的皮试到时间却难以判断 所以 要 制作一个定时系统 随时提醒这些容易忘记时间的人 钟表的数字化给人们生产生 活带来了极大的方便 而且大大地扩展了钟表原先的报时功能 诸如定时自动报警 按时自动打铃 时间程序自动控制 定时广播 定时启闭电路 定时开关烘箱 通断 动力设备 甚至各种定时电气的自动启用等 所有这些 都是以钟表数字化为基础的 因此 研究数字钟及扩大其应用 有着非常现实的意义 1 3 本文的主要工作 首先介绍设计电子闹钟所涉及的主要硬件和特性 然后说明软件设计的思路 程 序结构及流程 并在测试软件上进行调试修改 以完成电子闹钟的基本要求 即可随 意设定起始时间 有秒显示功能 有 12 24 时制选择 可设定闹钟 停电时由电池供 电等功能 第 2 章 AT89S51 单片机的硬件系统 2 1 AT89S51 单片机的特性 Atmel 公司的 AT89S51 芯片具有以下特性 1 指令集和芯片引脚与 Intel 公司的 8051 兼容 2 4KB 片内在系统可编程 Flash 程序存储器 3 时钟频率为 0 33MHz 4 128 字节片内随机读写存储器 RAM 5 32 个可编程输入 输出引脚 6 2 个 16 位定时 计数器 7 6 个中断源 2 级优先级 8 全双工串行通信接口 9 监视定时器 10 2 个数据指针 2 2 AT89S51 单片机的封装 AT89S51 单片机 2 具有多种封装形式 包括 PDIP40 PDIP42 PLCC44 和 TQFP44 最适合学校实验室使用的是 PDIP40 封装形式 它的外形如图 2 1 所示 PDIP40 封装形式的单片机芯片可以很方便地使用面包板来组成应用电路 2 3 存储空间 AT89S51 单片机 3 的程序存储空间和数据存储空间是分离的 每种存储空间的寻 址范围都是 64KB 上述存储空间在物理上可以被映射到 4 个区域 片内程序存储器 和片外程序存储器 片内数据存储器和片外数据存储器 存储空间的映射图如图 2 2 所示 当存储空间映射为外部存储器时 包括程序空间和数据空间 AT89S51 单片 机 P0 口的 8 个引脚 从 P0 0 AD0 到 P0 7 AD7 引脚从 39 到 32 以时分方 式被用作数据总线和地址总线的低 8 位 P2 口的 8 个引脚 从 P2 0 A8 到 P2 7 A15 引脚从 21 到 28 被用作地址总线的高 8 位 由于对外部程序存储器 和外部数据存储器的访问都是通过 P0 口和 P2 口实现 为了区分它们 外部程序存 储器由引脚 引脚 29 的输出信号控制 外部数据存储器的写或读操作分别由PSEN 引脚 P3 6 引脚 16 和引脚 P3 7 引脚 17 输出信号控制 WRRD 10 20 19 18 17 16 15 14 13 12 11 9 8 7 6 5 4 3 2 1 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40P1 0 P1 1 P1 2 P1 3 P1 4 MOSI P1 5 MISO P1 6 SCK P1 7 RST RXD P3 0 TXD P3 1 INT0 P3 2 INT1 P3 3 T0 P3 4 T1 P3 5 WR P3 6 RD P3 7 XTAL2 XTAL1 GND VCC P0 0 AD0 P0 1 AD1 P0 2 AD2 P0 3 AD3 P0 4 AD4 P0 5 AD5 P0 6 AD6 P0 7 AD7 EA VPP ALE PROG PSEN P2 7 A15 P2 6 A14 P2 5 A13 P2 4 A12 P2 3 A11 P2 2 A9 P2 0 A8 P2 2 A10 AT89S51 图 2 1 AT89S51 单片机 PDIP40 封装外形图 外部数据 存储空间 数据存储空间 FFFFH 0000H 内部数据 存储空间 特殊功能 寄存器 00H 7FH 80H FFH 内部程序 存储空间 0FFFH 0000H 外部程序 存储空间 程序存储空间 FFFFH 1000H EA 1 外部程序 存储空间 EA 0 图 2 2 AT89S51 单片机的存储器映射图 2 3 1 程序存储空间 程序存储空间可以被映射为内部程序存储器或者外部程序存储器 4 AT89S51 单 片机内部具有的 4KB 程序存储器被映射到程序存储空间的 0000H 0FFFH 区间 如 图 2 2 所示 这部分程序存储空间也可以被映射为外部程序存储器 它具体被映射为 哪一种程序存储器取决于引脚 引脚 31 所接的电平 当引脚为高电平 内EA EA 部程序存储器被映射到这部分程序存储空间 当引脚为低电平 外部程序存储器 EA 被映射到这部分程序存储空间 高于 0FFFH 的程序存储空间只能被映射为外部程序 存储器 目前 Atmel 公司生产的 8051 兼容芯片具有多种容量的内部程序存储器的型号 例如 AT89S52 单片机具有 8KB 内部程序存储器 T89C51RD2 单片机具有 64KB 内部 程序存储器 鉴于通常可以采用具有足够内部程序存储器容量的单片机芯片 用户在 使用中不需要再扩展外部程序存储器 这样在单片机应用电路中引脚 引脚 31 EA 可以总是接高电平 2 3 2 数据存储空间 如图 2 3 所示 数据存储空间 5 也可以被映射为内部数据存储器和外部数据存储 器 进入不同的数据存储器是通过不同的指令来实现的 这点与程序存储器不一样 AT89S51 的内部数据存储器有 256 字节 它们被分为两部分 高 128 字节和低 128 字节 低 128 字节的内部数据存储器是真正的 RAM 区 可以被用来写入或读出 数据 这一部分存储容量不是很大 但有很大的作用 它可以进一步被分为 3 部分 如图 2 3 所示 位寻址空间 4组工作寄存器 00H 08H 10H 18H 20H 07H 0FH 17H 2FH 1FH 7FH 11 01 10 00 通过程序状态 字 PSW 中的 位RS1和RS0 进行选择 通用数据存储器 30H 图 2 3 内部数据存储器 在内部数据存储器低 128 字节中 地址从 00H 1FH 的最低 32 个字节组成 4 组 工作寄存器 每组有 8 个工作寄存器 每组中的 8 个工作寄存器都被命名为从 R0 到 R7 在一个具体时刻 CPU 只能使用其中的一组工作寄存器 当前正在使用的工作 寄存器组由位于高 128 字节的程序状态字寄存器 PSW 中第 3 位 RS0 和第 4 位 RS1 的数据决定 程序状态字寄存器中的数据可以通过编程来改变 这种功能为 保护工作寄存器的内容提供了很大的方便 6 如果用户程序中不需要全部使用 4 组工 作寄存器 那么剩下的工作寄存器所对应的内部数据存储器也可以作为通用数据存储 器使用 工作寄存器在内部数据存储器中的地址映射如表 2 1 所示 表 2 1 工作寄存器地址映射表 0 组 RS1 0 RS0 0 1 组 RS1 0 RS0 1 2 组 RS1 1 RS0 0 3 组 RS1 1 RS0 1 地 址 寄 存 器 地 址 寄 存 器 地 址 寄 存 器 地 址 寄 存 器 00HR008HR010HR018HR0 01HR109HR111HR119HR1 02HR20AHR212HR21AHR2 03HR30BHR313HR31BHR3 04HR40CHR414HR41CHR4 05HR50DHR515HR51DHR5 06HR60EHR616HR61EHR6 07HR70FHR717HR71FHR7 表 2 2 字节地址与位地址的关系 位 地 址 字节地址D7D6D5D4D3D2D1D0 2FH7F7E7D7C7B7A7978 2EH7776757473727170 2DH6F6E6D6C6B6A6968 2CH6766656463626160 2BH5F5E5D5C5B5A5958 2AH5756555453525150 29H4F4E4D4C4B4A4948 28H4746454443424140 27H3F3E3D3C3B3A3938 26H3736353433323130 25H2F2E2D2C2B2A2928 24H2726252423222120 23H1F1E1D1C1B1A1918 22H1716151413121110 21H0F0E0D0C0B0A0908 20H0706050403020100 在工作寄存器区上面 内部数据存储器的地址从 20H 2FH 的 16 个字节范围内 既可以通过字节寻址的方式进入 也可以通过位寻址的方式进入 位地址范围从 00H 到 7FH 字节地址与位地址的对应关系如表 2 2 所示 内部数据存储器地址从 30H 7FH 部分仅可以用作通用数据存储器 内部数据存储器的高 128 字节被称为特殊功能寄存器 SFR 区 特殊功能寄存 器被用作 CPU 和在片外围器件之间的接口 它们之间的联系方框图如图 2 4 所示 程序存储器 MCS51核 特殊功能 寄存器 并行和串行接口 定时 计数器 中断管理 监视定时器等 其他外围器件 图 2 4 特殊功能寄存器 SFR 工作框图 表 2 3 AT89S51 单片机特殊功能存储器地址映射表 F8HFFH F0HBF7H E8HEFH E0HACCE7H D8HDFH D0HPSWD7H C8HCFH C0HC7H B8HIPBFH B0HP3B7H A8HIEAFH A0HP2AUXR1WDERSTA7H 98HSCONSBUF9FH 90HP197H 88HTCONTMODTL0TL1TH0TH1AUXR8FH 80HP0SPDP0LDP0HDP1LDP1HPCON87H CPU 通过向相应的特殊功能存储器写入数据实现控制对应的在片外围器件的工 作 从相应的特殊功能存储器读出数据实现读取对应的在片外围器件 7 的工作结果 在 AT89S51 单片机中 包括前面提到的程序状态字寄存器 PSW 的特殊功能 存储器共有 26 个 它们离散地分布在 80H FFH 的内部数据存储器地址空间范围内 如表 2 3 所示 在表 2 3 中 对于没有定义的存储单元用户不能使用 如果向这些存储单元写入 数据将产生不确定的效果 从它们读取数据将得到一个随机数 对于字节地址低位为 8H 或者 FH 的特殊功能存储器 既可以进行字节操作 也 可以进行位操作 例如前面提到的用来确定当前工作寄存器组的程序状态字寄存器 PSW 它的地址为 D0H 因此对它可以进行字节操作 也可以进行位操作 采用 位操作可以直接控制程序状态字寄存器中的第 3 位 RS0 或第 4 位 RS1 数据而 不影响其他位的数据 低位地址不为 8H 或 FH 的特殊功能存储器只可以进行字节操 作 当需要修改这些特殊功能存储器中的某些位时 对其他的位应注意保护 片外数据存储空间 8 可以被映射为数据存储器 扩展的输入 输出接口 模拟 数 字转换器和数字 模拟转换器等 这些外围器件统一编址 所有外围器件的地址都占 用数据存储空间的地址资源 因此 CPU 与片外外围器件进行数据交换时可以使用与 访问外部数据存储器相同的指令 CPU 通过向相应的外部数据存储器地址单元写入 数据实现控制对应的片外外围器件的工作 从相应的外部数据存储器地址单元读出数 据实现读取对应的片外外围器件的工作结果 2 4 单片机最小应用系统电路 单片机的最小应用系统电路指的是它可以正常工作的最简单电路组成 AT89S51 单片机的最小应用系统电路如图 2 5 所示 该系统中包含 4 个电路部分 2 4 1 供电电路 引脚 VCC 引脚 40 接 5V 电源 引脚 GND 引脚 20 接地线 为提高电路 的抗干扰能力 一个 0 1 F 器件标注为 104 的瓷片电容和一个 10 F 的电解电容通 常被接在引脚 VCC 和接地线之间 2 4 2 程序存储器选择电路 如前所述 Atmel 公司生产的 8051 兼容芯片具有多种容量的内部程序存储器的 型号 因此在使用中不需要再扩展外部程序存储器 这样在单片机应用电路中引脚 引脚 31 可以总是接高电平 EA P1 1 2 P0 0 AD0 39 P1 2 3 P0 1 AD1 38 P1 0 1 VCC 40 P1 3 4 P0 2 AD2 37 P1 4 5 P0 3 AD3 36 P1 5 MOSI 6 P0 4 AD4 35 P1 6 MISO 7 P0 5 AD5 34 P1 7 SCK 8 P0 6 AD6 33 RST 9 P0 7 AD7 32 P3 0 RXD 10 EA VPP 31 P3 1 TXD 11 ALE PROG 30 P3 2 INT0 12 PSEN 29 P3 3 INT1 13 P2 7 A15 28 P3 4 T0 14 P2 6 A14 27 P3 5 T1 15 P2 5 A13 26 P3 6 WR 16 P2 4 A12 25 P3 7 RD 17 P2 3 A11 24 XTAL2 18 P2 2 A10 23 XTAL1 19 P2 1 A9 22 GND 20 P2 0 A8 21 5V C4 10 C5 0 1 C1 10 F R1 10k C2C3 30pF30pF CRY 12MHz F 图 2 5 AT89S51 单片机最小应用系统电路 2 4 3 时钟电路 AT89S51 芯片的时钟频率可以在 0 33MHz 范围 单片机内部有一个可以构成 振荡器的放大电路 在这个放大电路的对外引脚 XTAL2 引脚 18 和 XTAL1 引脚 19 接上晶体和电容就可以构成单片机的时钟电路 图 2 5 所示的时钟电路由晶体 CRY 和电容 C2 与 C3 组成 单片机的时钟频率取决于晶体 CRY 的频率 如果采用 面包板来组装单片机应用电路 晶体 CRY 的推荐值为 12MHz 以下 电容 C2 与 C3 的取值范围为 30pF 50pF 时钟电路采用晶体的目的是提高时钟频率的稳定性 2 4 4 复位电路 对于 AT89S51 芯片 如果引脚 RST 引脚 9 保持 24 个时钟周期的高电平 单 片机就可以完成复位 通常为了保证应用系统可靠地复位 复位电路应使引脚 RST 保持 10ms 以上的高电平 只要引脚 RST 保持高电平 单片机就循环复位 当引脚 RST 从高电平变为低电平时 单片机退出复位状态 从程序空间的 0000H 地址开始 执行用户程序 图 2 5 所示复位电路由 C1 和 R1 组成 当系统加电时 由于 C1 两端的电压不能 突变 因此引脚 RST 为高电平 单片机进入复位状态 随着 C1 充电 它两端的电压 上升 使得引脚 RST 上电压下降 最终使单片机退出复位状态 合理地选择 C1 和 R1 的取值 系统就能可靠地复位 C1 的推荐值是 10 F R1 的推荐值是 10k 完成复位后 单片机不仅从程序空间的 0000H 地址开始执行用户程序 而且还 影响一些特殊功能存储器的初始状态 相应的特殊功能存储器的复位值如表 2 4 所示 DPTR 称为数据指针 它由两个特殊功能寄存器 DP0H 和 DP0L 组成 表 2 4 特殊功能存储器的复位值 特殊功能寄存器复 位 值特殊功能寄存器复 位 值 PC0000HTMOD00H ACC00HTCON00H B00HTH000H PSW00HTL000H SP07HTH100H DPTR0000HTL100H P0 P3FFHSCON00H IPXXX0 0000BSBUFXXXX XXXXB IE0XX0 0000BPCON0XXX 0000B 注 PC 称为程序指针 它被用来存储下一条要执行的指令地址 PC 的位置并不在特殊功能存储器区域 第 3 章 电子闹钟的硬件设计 3 1 系统要求 本课题设计的电子闹钟系统要求为 1 能随意设定走时起始时间 2 能设定闹铃时间 3 能指示秒节奏 即秒指示 4 12 小时 24 小时两种制式可选 5 采用交直流供电电源 7 具有走时误差修正能力 7 具有温度显示的功能 8 停电时单片机由电池供电 计时不会停止 3 2 系统组成 该数字闹钟包括以下几个组成部分 1 显示屏 由6个七 段数码管组成 用于显 示当前时间 时 分 秒 或设置的闹钟时间 2 KEY 键 用于输入新的时间或新的闹 钟时间时 对每位输入数字的确认 3 TIME 时间 键 用于确定新的时间设置 4 闹 钟键 用于确定新的闹钟时间设置 或显示已设置的闹钟时间 5 扬声器 在当前 时钟时间与闹钟时间相同时 发出蜂鸣声 3 3 系统设计 3 3 1 控制器 控制器是电子闹钟设计的核心部分 按设计要求产生相应的控制逻辑 以控制其 他各部分的工作 由程序计数器 指令寄存器 指令译码器 时序产生器和操作控制 器组成 它是发布命令的 决策机构 即完成协调和指挥整个计算机系统的操作 控制器主要功能如下 从内存中取出一条指令 并指出下一条指令在内存中位置对指令进行译码或测试 并产生相应的操作控制信号 以便启动规定的动作 指挥并控制 CPU 内存和输入 输出设备之间数据流动的方向 3 3 2 计数器 计数器 ALARM COUNTER 实际上是一个异步复位 异步置位的累加器 在中 央处理器 CPU 中 累加器 ACCUMULATOR 是一种暂存器 用来储存计算所产 生的中间结果 没有像累加器这样的暂存器 那么在每次计算 加法 乘法 移位等 等 后就必须要把结果写回到内存 也许然后再读回来 然而存取主内存的速度是比 从数学逻辑单元 ALU 到有直接路径的累加器存取更慢 计数器的作用是 通常情 况下进行时钟累加计数 必要时可以置入新的时钟值 然后从该值开始新的计数 3 3 3 寄存器 寄存器 ALARM REG 用于保存用户设置的闹钟时间 是一个异步复位寄存器 寄存器是中央处理器内的组成部份 是有限存贮容量的高速存贮部件 它们可用来暂 存指令 数据和位址 在中央处理器的控制部件中 包含的寄存器有指令寄存器 IR 和程序计数器 PC 在中央处理器的算术及逻辑部件中 包含的寄存器有累加器 ACC 3 3 4 分频器 分频器 DIVIDER 将高速的外部时钟频率分频成每一分钟一次的时钟频率 以便 进行时钟计数 由于石英晶体振荡器产生的频率很高 要得到秒脉冲 需要用分频电 路 例如 振荡器输出 4MHZ 信号 通过 D 触发器 74LS74 进行 4 分频变成 1MHZ 然后送到 10 分频计数器 74LS90 该计数器可以用 8421 码制 也可以用 5421 码制 经过 6 次 10 分频而获得 1HZ 方波信号作为秒脉冲信号 3 3 5 显示电路 显示器 DRIVER 根据需要显示当前时间 用户设置的闹钟时间或用户通过键盘 输入的新时间 同时判断当前时间是否已到了闹钟时间 实际上是一个多路选择比较 器 多路选择器是数据选择器的别称 在多路数据传送过程中 能够根据需要将其中 任意一路选出来的电路 叫做数据选择器 也称多路选择器或多路开关 3 3 6 输入电路 键盘缓冲器KEY BUFFER是一个移位寄存器 暂存用户键入的数字 并且实现 用户键入数字在显示器上从右到左是依次显示 寄存器的用途 1 可将寄存器内的 数据执行算术及逻辑运算 2 存于寄存器内的地址可用来指向内存的某个位置 即 寻址 3 可以用来读写数据到电脑的周边设备 AT89S51有8个8位数据寄存器 这些 8位寄存器可分别组成16位寄存器 AH AT89S51 时钟程序 定时器 T0 T1 溢出周期为 50MS T0 为秒计数用 T1 为调整时闪烁用 P3 7 为调整按钮 P1 口 为字符输出口 采用共阳显示管 中断入口程序 ORG 0000H 程序执行开始地址 LJMP START 跳到标号 START 执行 ORG 0003H 外中断 0 中断程序入口 RETI 外中断 0 中断返回 ORG 000BH 定时器 T0 中断程序入口 LJMP INTT0 跳至 INTTO 执行 ORG 0013H 外中断 1 中断程序入口 RETI 外中断 1 中断返回 ORG 001BH 定时器 T1 中断程序入口 LJMP INTT1 跳至 INTT1 执行 ORG 0023H 串行中断程序入口地址 RETI 串行中断程序返回 主 程 序 START MOV R0 70H 清 70H 7AH 共 11 个内存单元 MOV R7 0BH CLEARDISP MOV R0 00H INC R0 DJNZ R7 CLEARDISP MOV 20H 00H 清 20H 标志用 MOV 7AH 0AH 放入 熄灭符 数据 MOV TMOD 11H 设 T0 T1 为 16 位定时器 MOV TL0 0B0H 50MS 定时初值 T0 计时用 MOV TH0 3CH 50MS 定时初值 MOV TL1 0B0H 50MS 定时初值 T1 闪烁定时用 MOV TH1 3CH 50MS 定时初值 SETB EA 总中断开放 SETB ET0 允许 T0 中断 SETB TR0 开启 T0 定时器 MOV R4 14H 1 秒定时用初值 50MS 20 START1 LCALL DISPLAY 调用显示子程序 JNB P3 7 SETMM1 P3 7 口为 0 时转时间调整程序 SJMP START1 P3 7 口为 1 时跳回 START1 SETMM1 LJMP SETMM 转到时间调整程序 SETMM 1 秒计时程序 T0 中断服务程序 INTT0 PUSH ACC 累加器入栈保护 PUSH PSW 状态字入栈保护 CLR ET0 关 T0 中断允许 CLR TR0 关闭定时器 T0 MOV A 0B7H 中断响应时间同步修正 ADD A TL0 低 8 位初值修正 MOV TL0 A 重装初值 低 8 位修正值 MOV A 3CH 高 8 位初值修正 ADDC A TH0 MOV TH0 A 重装初值 高 8 位修正值 SETB TR0 开启定时器 T0 DJNZ R4 OUTT0 20 次中断未到中断退出 ADDSS MOV R4 14H 20 次中断到 1 秒 重赋初值 MOV R0 71H 指向秒计时单元 71H 72H ACALL ADD1 调用加 1 程序 加 1 秒操作 MOV A R3 秒数据放入 A R3 为 2 位十进制数组合 CLR C 清进位标志 CJNE A 60H ADDMM ADDMM JC OUTT0 小于 60 秒时中断退出 ACALL CLR0 大于或等于 60 秒时对秒计时单元清 0 MOV R0 77H 指向分计时单元 76H 77H ACALL ADD1 分计时单元加 1 分钟 MOV A R3 分数据放入 A CLR C 清进位标志 CJNE A 60H ADDHH ADDHH JC OUTT0 小于 60 分时中断退出 ACALL CLR0 大于或等于 60 分时分计时单元清 0 MOV R0 79H 指向小时计时单元 78H 79H ACALL ADD1 小时计时单元加 1 小时 MOV A R3 时数据放入 A CLR C 清进位标志 CJNE A 24H HOUR HOUR JC OUTT0 小于 24 小时中断退出 ACALL CLR0 大于或等于 24 小时小时计时单元清 0 OUTT0 MOV 72H 76H 中断退出时将分 时计时单元数据移 MOV 73H 77H 入对应显示单元 MOV 74H 78H MOV 75H 79H POP PSW 恢复状态字 出栈 POP ACC 恢复累加器 SETB ET0 开放 T0 中断 RETI 中断返回 闪动调时 程 序 T1 中断服务程序 用作时间调整时调整单元闪烁指示 INTT1 PUSH ACC 中断现场保护 PUSH PSW MOV TL1 0B0H 装定时器 T1 定时初值 MOV TH1 3CH DJNZ R2 INTT1OUT 0 3 秒未到退出中断 50MS 中断 6 次 MOV R2 06H 重装 0 3 秒定时用初值 CPL 02H 0 3 秒定时到对闪烁标志取反 JB 02H FLASH1 02H 位为 1 时显示单元 熄灭 MOV 72H 76H 02H 位为 0 时正常显示 MOV 73H 77H MOV 74H 78H MOV 75H 79H INTT1OUT POP PSW 恢复现场 POP ACC RETI 中断退出 FLASH1 JB 01H FLASH2 01H 位为 1 时 转小时熄灭控制 MOV 72H 7AH 01H 位为 0 时 熄灭符 数据放入分 MOV 73H 7AH 显示单元 72H 73H 将不显示分数据 MOV 74H 78H MOV 75H 79H AJMP INTT1OUT 转中断退出 FLASH2 MOV 72H 76H 01H 位为 1 时 熄灭符 数据放入小时 MOV 73H 77H 显示单元 74H 75H 小时数据将不显示 MOV 74H 7AH MOV 75H 7AH AJMP INTT1OUT 转中断退出 加 1 子 程 序 ADD1 MOV A R0 取当前计时单元数据到 A DEC R0 指向前一地址 SWAP A A 中数据高四位与低四位交换 ORL A R0 前一地址中数据放入 A 中低四位 ADD A 01H A 加 1 操作 DA A 十进制调整 MOV R3 A 移入 R3 寄存器 ANL A 0FH 高四位变 0 MOV R0 A 放回前一地址单元 MOV A R3 取回 R3 中暂存数据 INC R0 指向当前地址单元 SWAP A A 中数据高四位与低四位交换 ANL A 0FH 高四位变 0 MOV R0 A 数据放入当削地址单元中 RET 子程序返回 清零程序 对计时单元复零用 CLR0 CLR A 清累加器 MOV R0 A 清当前地址单元 DEC R0 指向前一地址 MOV R0 A 前一地址单元清 0 RET 子程序返回 时钟调整程序 当调时按键按下时进入此程序 SETMM cLR ET0 关定时器 T0 中断 CLR TR0 关闭定时器 T0 LCALL DL1S 调用 1 秒延时程序 JB P3 7 CLOSEDIS 键按下时间小于 1 秒 关闭显示 省电 MOV R2 06H 进入调时状态 赋闪烁定时初值 SETB ET1 允许 T1 中断 SETB TR1 开启定时器 T1 SET2 JNB P3 7 SET1 P3 7 口为 0 键未释放 等待 SETB 00H 键释放 分调整闪烁标志置 1 SET4 JB P3 7 SET3 等待键按下 LCALL DL05S 有键按下 延时 0 5 秒 JNB P3 7 SETHH 按下时间大于 0 5 秒转调小时状态 MOV R0 77H 按下时间小于 0 5 秒加 1 分钟操作 LCALL ADD1 调用加 1 子程序 MOV A R3 取调整单元数据 CLR C 清进位标志 CJNE A 60H HHH 调整单元数据与 60 比较 HHH JC SET4 调整单元数据小于 60 转 SET4 循环 LCALL CLR0 调整单元数据大于或等于 60 时清 0 CLR C 清进位标志 AJMP SET4 跳转到 SET4 循环 CLOSEDIS SETB ET0 省电 LED 不显示 状态 开 T0 中断 SETB TR0 开启 T0 定时器 开时钟 CLOSE JB P3 7 CLOSE 无按键按下 等待 LCALL DISPLAY 有键按下 调显示子程序延时削抖 JB P3 7 CLOSE 是干扰返回 CLOSE 等待 WAITH JNB P3 7 WAITH 等待键释放 LJMP START1 返回主程序 LED 数据显示亮 SETHH CLR 00H 分闪烁标志清除 进入调小时状态 SETHH1 JNB P3 7 SET5 等待键释放 SETB 01H 小时调整标志置 1 SET6 JB P3 7 SET7 等待按键按下 LCALL DL05S 有键按下延时 0 5 秒 JNB P3 7 SETOUT 按下时间大于 0 5 秒退出时间调整 MOV R0 79H 按下时间小于 0 5 秒加 1 小时操作 LCALL ADD1 调加 1 子程序 MOV A R3 CLR C CJNE A 24H HOUU 计时单元数据与 24 比较 HOUU JC SET6 小于 24 转 SET6 循环 LCALL CLR0 大于或等于 24 时清 0 操作 AJMP SET6 跳转到 SET6 循环 SETOUT JNB P3 7 SETOUT1 调时退出程序 等待键释放 LCALL DISPLAY 延时削抖 JNB P3 7 SETOUT 是抖动 返回 SETOUT 再等待 CLR 01H 清调小时标志 CLR 00H 清调分标志 CLR 02H 清闪烁标志 CLR TR1 关闭定时器 T1 CLR ET1 关定时器 T1 中断 SETB TR0 开启定时器 T0 SETB ET0 开定时器 T0 中断 计时开始 LJMP START1 跳回主程序 SET1 LCALL DISPLAY 键释放等待时调用显示程序 调分 AJMP SET2 防止键按下时无时钟显示 SET3 LCALL DISPLAY 等待调分按键时时钟显示用 AJMP SET4 SET5 LCALL DISPLAY 键释放等待时调用显示程序 调小时 AJMP SETHH1 防止键按下时无时钟显示 SET7 LCALL DISPLAY 等待调小时按键时时钟显示用 AJMP SET6 SETOUT1 LCALL DISPLAY 退出时钟调整时键释放等待 AJMP SETOUT 防止键按下时无时钟显示 显示程序 显示数据在 70H 75H 单元内 用六位 LED 共阳数码管显示 P1 口输出段码数据 P3 口 作 扫描控制 每个 LED 数码管亮 1MS 时间再逐位循环 DISPLAY MOV R1 70H 指向显示数据首址 MOV R5 0FEH 扫描控制字初值 PLAY MOV A R5 扫描字放入 A MOV P3 A 从 P3 口输出 MOV A R1 取显示数据到 A Hidden Message 延时程序 1MS 延时程序 LED 显示程序用 DL1MS MOV R6 14H DL1 MOV R7 19H DL2 DJNZ R7 DL2 DJNZ R6 DL1 RET 20MS 延时程序 采用调用显示子程序以改善 LED 的显示闪烁现象 DS20MS ACALL DISPLAY ACALL DISPLAY ACALL DISPLAY RET 延时程序 用作按键时间的长短判断 DL1S LCALL DL05S LCALL DL05S RET DL05S MOV R3 20H 8 毫秒 32 0 196 秒 DL05S1 LCALL DISPLAY DJNZ R3 DL05S1 RET END 程序结束 附 录 2 外文文献及翻译 Progress in computers The first stored program computers began to work around 1950 The one we built in Cambridge the EDSAC was first used in the summer of 1949 These early experimental computers were built by people like myself with varying backgrounds We all had extensive experience in electronic engineering and were confident that that experience would stand us in good stead This proved true although we had some new things to learn The most important of these was that transients must be treated correctly what would cause a harmless flash on the screen of a television set could lead to a serious error in a computer As far as computing circuits were concerned we found ourselves with an embarrass de riches For example we could use vacuum tube diodes for gates as we did in the EDSAC or pentodes with control signals on both grids a system widely used elsewhere This sort of choice persisted and the term families of logic came into use Those who have worked in the computer field will remember TTL ECL and CMOS Of these CMOS has now become dominant In those early years the IEE was still dominated by power engineering and we had to fight a number of major battles in order to get radio engineering along with the rapidly developing subject of electronics dubbed in the IEE light current electrical engineering properly recognized as an activity in its own right I remember that we had some difficulty in organizing a conference because the power enginee
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考点解析-冀教版七年级下册期末试题及参考答案详解(新)
- 大培训、大学习、大考试安全应急考试题库及答案
- 2025年快消品包装行业可持续设计理念研究报告
- 2025年物联网设备安全漏洞防护策略与解决方案深度剖析报告
- 2025至2030年中国个人护理用品连锁行业市场运营趋势分析及投资潜力研究报告
- 2025至2030年中国短保面包行业市场供需格局及投资规划建议报告
- 2025年度房地产销售代理与物业管理合作协议
- 2025版房地产投资担保协议下载模板
- 2025版版汽车零部件采购合同模板
- 2025年度环保产业保证担保合同模板
- 钢板桩支护工程监理细则
- 婚内财产分割协议书模板
- 食品行业采购管理流程及实施细则
- 2025年新版小学语文新课标标准课件
- 《功能高分子材料》课程教学大纲
- 企业反恐防暴安全
- 高标准农田建设项目方案投标文件(技术方案)
- 《大学生求职面试礼仪指南课件》
- 私募股权投资基金(双GP)合作框架协议书范本
- 城市经理人合作合同范本
- 2025年度合伙人股权代持风险防范及解除协议
评论
0/150
提交评论