




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 1 1、绪言、绪言 近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控 检测技术日新月异。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一 个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,利用软件和 硬件相结合,以完善整个系统。 首先在绪论中介绍了本课题的课题背景、研究意义,完成的功能及设计方法。本系统 中单片机的编程用汇编语言。指令的执行速度快,节省存储空间。使硬件在软件的控制 下协调运作。正文中首先简单描述系统硬件工作原理,且附以系统硬件设计框图,并介 绍了单片机微处理器的基本原理,论述了本次设计所应用的各硬件接口技术和各个接口 模块的功能及工作过程, 并具体描述了 89S51、74LS164、 LED 数码管的外接电路接口的 软、硬件调试。其次阐述了程序的流程和实现过程。本文撰写的主导思想是软、硬件相 结合,以硬件为基础,来进行各功能模块的编写。 1.11.1 课题的开发背景课题的开发背景 单片微机又称微控制器(MCU Micro Ctroller Unit) ,在全世界的年产量已近 100 亿片,在中 国大陆,年用量约为 6 亿片,而且还在不断增长,简单的如玩具,家用电器,复杂的如仪器仪表,工 业控制,军用设备等等。几乎每一个领域都可以看到单片机的应用。单片微机的应用带来了“智能化” , “傻瓜化” ,使控制更灵活,设备更精确,并符合“绿色”电子的要求。Intel 公司的 MCS51 单片 机在我国流行了 20 多年,至今仍在发展。特别是 MCS51 实施技术开放以后,由于 Philips,IISS,Atmel,WINBIND,ADI,DALLAS,Siemens 等知名公司的介入,在 MCS51 基础上 形成了新一代的 80C51 系列单片机,这使 80C51 的应用领域更宽广。另外在 80C51 单片机中采用了 Flash ROM,基于 Flash ROM 的 ISP(in system programmable)技术,软件上已有 C 编译器和实时多 任务操作系统等,使得单片机在目标板上可以在线实时仿真,从而提高了工作效率,缩短了开发周期, 适应了商品经济的发展。 1.2 课题设计的意义 毕业设计是教学和工程实践的重要结合点,要求学生在设计中明确什么是正确的设计思想和设计 2 方法。学生在岗位之前必须通过工程知识和专业技能的严格训练,完成向工程技术人员的过渡,使自 己走上工作岗位后有能力综合利用学过的理论知识和专业技能解决工程实际问题。 1.2.1.1.2.1.毕业设计的要求和应注意的事项毕业设计的要求和应注意的事项 毕业设计要求学生初步掌握工程设计的程序和方法,综合进行工程知识和工程技能的训练。学 生必须全面的掌握本专业的基本理论知识和专业技能,有较强的分析,解决问题的能力和较高的综合 素质。学校和教师在坚持以教学为主的同时应侧重于学生解决工程实际问题能力的培养。作为工科毕 业生,应根据在教师指导选定的毕业设计题目,经过综合实习或顶岗实习,结合生产实际独立完成一 项电类专业的模拟工程设计或工程设计。在设计过程中以实践为主,注重综合能力的发掘和培养。 毕业设计一定要注重培养学生多角度观察问题和抓住工程技术关键的能力。学生在毕业设计中 应注意发现有争议、有疑问、有难度的技术敏感点,寻找交叉学科的结合部,抓住实习中碰到的偶然 现象和事件,利用新信息、新技术、新知识进行别人尚未涉足或刚刚开始涉足的工程技术领域的探索 和开发。通过独立设计一个工程技术课题,使自己能较快地对国外引进设备中的新技术、新装置进行 消化吸收。能用目前较先进的装置和技术对现有电气控制系统及设备进行技术改造,充分提高运用新 科技、新信息、新技术成果和装置的能力。同时应该注意,毕业设计是一项复杂、细致的劳动,任何 设计都不可能脱离前人的经验和积累的资料凭空想象出来。合理地掌握和使用已有的技术和设计方法, 可以避免重复劳动。任何不同的课题都有其特定的设计要求和具体技术指标,学生必须正确处理资料 和创新的关系,使用资料和创新的能力都有提高。 我是在上学期学单片机这本书的,掌握了单片机的基本结构、内部结构、引脚分配、功能存储器 结构、地址空间、80C51的工作方式、指令系统、中断、串口通信、定时器/计数器、单片机的系统扩 展及接口技术。通过设计本同步串行通信板,进一步加深了对单片机的认识,锻炼了自己的动手能力。 特别是对接口设计和串行同步通信的方法有了更深的了解。另外通过查资料,掌握了 74LS164、AT89C51、7805等芯片的功能及各个引脚的作用。 1.31.3 课题设计采用的方法课题设计采用的方法 在设计阶段,经分析决定采用 51 单片机、74LS164 芯片,总线采用 ISA 方式,51 单片机程序采 用汇编语言编写。 课题的设计采用先粗略设计后精确设计,先纸上设计后用软件设计的方法。软硬件设计相结合, 先硬件设计后软件设计,通过硬件的设计而后设定软件设计中的端口地址。利用 Protel 99 SE 画出整 3 体电路图(关于 Protel 99 SE 的信息会在第三章系统软件设计中会有介绍) 。然后用 Keil C 中写出 89S51 的通信程序。最后进行调试。 即:硬件电路调试软件测试综合测试。 2 2 系统硬件设计系统硬件设计 2.12.1 单片机单片机 80518051 简介简介 单片机是把 CPU、内存及 I/O 压缩在同一块芯片上,再外加一些电子元件便可以构成一套简易的 控制系统。如此一来可以降低硬件成本,由于单片机芯片设计及制造技术的限制,在面积有限的芯片 上无法设计出太大的内存空间,因此单片机上 ROM 及 RAM 的容量都比较小,不过却也加入了位输入输 出控制,计时计数器及外部中断的控制功能,有些单片机还有串行传输的接口,甚至还提供有 A/D(模 拟至数字转换)及 D/A(数字至模拟转换)的接口,可谓麻雀虽小五脏俱全。MCS 是 Intel 的注册商标, 80C51 较 8051 采用的 CMOS 设计,使其功耗更小。 2.1.12.1.1 80518051 特性特性 8051 单片机是 INTEL 公司在 8048 的基础上,对其功能加以改进所开发出来的 8 位单片机,图 1 1 是 8051 单片机内部的组成结构图。 图 1-18051 的内部结构 4 8051 主要功能如下: (1)为一般控制应用的 8 位单片机;(2)芯片内部有时钟振荡器(传统最高工作频率可达 12MHz); (3)内部只读存储器(ROM)为 4K 字节;(4)内部随机存储器(RAM)为 128 字节;(5)外部只读存储 器可扩充至 64K 字节;(6)外部随机存储器可扩充至 64K 字节;(7)32 条双向输入输出线,且每条 均可以单独做 IO 的控制;(8)5 个中断向量源;(9)2 组独立的 16 位定时器;(10)1 个全双工 串行通信端口;(11)8751 及 8752 单片机具有数据保密的功能;(12)单片机提供逻辑运算指令。 2.1.22.1.2 80518051 的引脚的引脚 在本设计中用到的引脚有: ALEPROG 是英文“Address Latch Enable”的缩写,表示地址锁存允许信号。805l 可以利用这 个引脚来触发外部的 8 位锁存(如 74LS373),将端口 O 的地址总线(AOA7)锁存进入锁存器中,因为 图 21 89S51 引脚图 5 8051 是以多工的方式送出地址及数据。平时在程序执行时引脚的输出频率约是系统工作频率的 16, 因此可以用来驱动其他外围芯片的时钟输入。此外在烧录 875l 程序代码时,此引脚会被当成特殊功能 特殊功能的引脚来使用。 P3.6:/WR,外部随机存储器的写入信号。 P3.7:/RD,外部随机存储器的读取信号。 端口 P0 是一个 8 位宽的漏极开路(open Drain)双向输入输出端口,共有 8 位,P0.0 表示 P0 口的 位 0,P0.1 表示位 1,依此类推。其他三个 IO 端口(Pl、P2、P3)则不具有此电路结构,而是内部有 一提升电路,P0 在当做 I/O 用时可以推动 8 个 LS 的 TTL 负载。如果当 EA 引脚为低电位时(即取用外 部程序代码或随机存储器),P0 就以多工方式提供地址总线(A0A7)及数据总线(D0D7)。必须外加 一锁存器将端口 P0 送出的地址锁存为 A0A7,再配合端口 P2 所送出的 A8A15 合成一完整的 16 位 地址总线而寻址到 64K 的外部内存空间。 Vcc运行和程序校验时接电源正端。 Vss接地。 XTAL1输入到单片机内部振荡器的反向放大器。当采用外部振荡器时,对 HMOS 单片机,此引 脚应接地;对 CHMOS 单片机,此引脚作驱动端。 XTAL2反向放大器的输出,输入到内部时钟发生器。当采用外部振荡器时,XTAL2 接收振荡器 信号,对 CHMOS 单片机,此引脚应悬浮。 RESET复位输入信号,高电平有效。在振荡器工作时,在 RST 上作用两个机器周期以上的高电 平,将器件复位。 2.22.2 ATMELATMEL 系列单片机系列单片机 在本设计中使用的是 ATMEL 公司的 89S51 单片机。 ATMEL 89C51 系列单片机的特点有: 189C51 工作频率可达 20MHz。 2. 89C51 具有 4K 字节可电气烧录及擦除的程序空间,可以快速擦除程序并烧录新的程序,方便实 验。 3. 89C52 具有 8K 字节可电气烧录及擦除的程序 ROM。 489C51 具有 20K 字节可电气烧录及擦除的程序 ROM。 589C1051(1K)、89C2051(2K)为 20 引脚包装,没有 I/O 端口 P0 及 P2。适合做更小型的电路设计。 6 2.32.3 LEDLED 数码管的相关介绍数码管的相关介绍 2.3.12.3.1 LEDLED 显示器的工作原理显示器的工作原理 发光二极管一般为砷化镓半导体二极管, 在发光二极管两端加上正向电压,则发光二极管发 光。 而数码管 LED 是由若干发光二极管组合而成的,一般的“8”字型 LED 由 “a,b,c,d,e,f,g,dp”8 个发交二极管组成,如下图所示,每个发光二极管称为一个字段。 七段 LED 有共阴极和共阳极两种结构形式。 显示电路一般分为静态显示和动态下显示两类。 (1)共阳极接法 把发光二极管的阳极连在一起构成公共阳极。便用时公共阳极。使用时公共阳极接 Vcc,当 某阴极端为低电平时,该段发光二极管就导通发光。 (2)共阴极接法 把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接 GND,当某阳极端为高电平 时, 该段发光二极管就导通发光。 七段 LED 包含七段发光二极管和小数位发光二极管,共需位 I/O 口线控制,其代码为一个 字节。七段 LED 字型码见下表 7 七段字型码七段字型码 显示字 符 共阴极字型 码 共阳极字型 码 03FHC0H 106HF9H 25BHF10H 34FHF11H 466HF12H 56DHF13H 67DHF14H 707HF15H 87FHF16H 96FHF17H A77HF18H B7CHF19H C39HF20H D5EHF21H W79HF22H F71HF23H P73HF24H U3EHF25H R31HF26H y6EHF27H H76HF28H L38HF29H “灭“ 00HF30H - 2.3.22.3.2 LEDLED 显示电路显示电路 由 N 个 LED 显示块可构成 N 位 LED 显示器。N 位 LED 显示器需要 N 根位选线和 8 X N 根段选线。 根据显示电路不同,位选线和段选线的联接方式不同,实际所需的位选线和段选线的根数也不一样。 显示电路主要有静态显示和动态显示两种。 (1)静态显示电路 LED 显示器工作在静态显示时,其公共阳极(或阴极)接电源(或地) ,一直处于显示有效状态,所 以每一位的显示内容必须由锁存器加以锁存,显示各位相互独立。 静态显示时,LED 的亮度高,控制容易,但功耗大,所需口线多。若显示位数增多,则静态显示方 式很难适应。一般需要采用动态显示方式。 (2)动态显示电路 8 对于动态显示,一般将所有位的段选线的同名端联在一起,由一个 8 位 I/O 口控制,形成段选线 的多位复用。而各位的公共阳极或公共阴极则分别由相应的 I/O 口线控制,实现各位形成段的分时选 通,即同一时刻被选通位是能显示相应的字符,而其他所有位都是熄灭的。由于人眼有视觉暂留现象, 只要租位显示间隔足够短,则会造成多位同时点亮的假象。这就需要单片机不断地对显示进行控制, 牺牲单片微机的 CPU 时间来换取元件的减少以及显示功耗的降低。动态显示电路如下图所示: 数码管 动态显示电路 工作过程:将字形代码字形锁存器锁存,这时所有的显示块都有可能显示同样的字符;再将需要 显示的位置代码送入字位锁存器锁存。为防止闪烁,每位显示时间在 12ms,然后显示另一位,CPU 需要不断地进行显示刷新。 2.42.474LS16474LS164 的介绍的介绍 所谓时钟脉冲端,其实就是需要高、低、高、低的脉冲,不管这个脉冲是怎么来的,比如,我们 用根电线,一端接T,一端用手拿着,分别接高电平、低电平,那也是给出时钟脉冲,在74LS164获得 时钟脉冲的瞬间(再讲清楚点,是在脉冲的沿),如果数据输入端(第1,2引脚)是高电平,则就会 有一个1进入到74LS164的内部,如果数据输入端是低电平,则就会有一个0进入其内部。在给出了8个 字形锁存器 驱动器 字位锁存器 驱动器 数码管 数码管 数码管 数码管 数码管 9 脉冲后,最先进入74LS164的第一个数据到达了最高位,然后再来一个脉冲会有什么发生呢?再来一个 脉冲,第一个脉冲就会从最高位移出,就象车站排队买票,栏杆就那么长,要从后面进去一个人,前 面必须要从前面走出去一个人才行。 74LS164工作原理为:在P3.0的一个脉冲作用下,P3.1的一个值就写入了74LS164中。现向四个 seg7中发送上图数字0、1、2、3,其七段共阴码分别为0x3f,0x06,0x5b,0x4f,二进制代码分别为 0011 1111、0000 0110、0101 1011、0100 1111,编写程序写入即可。 74LS164是一个串行输入并行输出的移位寄存器。并带有清除端。 其中; Q0Q7 并行输出端 。 A,B串行输入端。 MR 清除端, 为0时,输出清零。 CP 时钟输入端。 74LS164 引脚定义 74LS164逻辑表 74LS164 电路原理: 51单片机与74LS164静态显示接口(转)学习2007-04-21 13:55在单片机应用系统中,显示器显 示常用两种方法:静态显示和动态扫描显示。所谓静态显示,就是每一个显示器都要占用单独的具有 锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不 用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小。 可以提供单独锁存的I/O接口电路很多,这里以常用的串并转换电路74LS164为例,介绍一种常用静态 显示电路,以使大家对静态显示有一定的了解。 10 MCS-51单片机串行口方式0为移位寄存器方式,外接6片74LS164作为6位LED显示器的静态显示接口,把 8031的RXD作为数据输出线,TXD作为移位时钟脉冲。74LS164为TTL单向8位移位寄存器,可实现串行输 入,并行输出。其中A、B(第1、2脚)为串行数据输入端,2个引脚按逻辑与运算规律输入信号,共一 个输入信号时可并接。T(第8脚)为时钟输入端,可连接到串行口的TXD端。每一个时钟信号的上升沿 加到T端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。R(第9脚)为 复位端,当R=0时,移位寄存器各位复0,只有当R=1时,时钟脉冲才起作用。Q1Q8(第3-6和10-13引 脚)并行输出端分别接LED显示器的hga各段对应的引脚上。在给出了8个脉冲后,最先进入 74LS164的第一个数据到达了最高位,然后再来一个脉冲会有什么发生呢?再来一个脉冲,第一个脉冲 就会从最高位移出,搞清了这一点,下面让我们来看电路,6片7LS164首尾相串,而时钟端则接在一起, 这样,当输入8个脉冲时,从单片机RXD端输出的数据就进入到了第一片74LS164中了,而当第二个8个 脉冲到来后,这个数据就进入了第二片74LS164,而新的数据则进入了第一片74LS164,这样,当第六 个8个脉冲完成后,首次送出的数据被送到了最左面的164中,其他数据依次出现在第一、二、三、四、 五片74LS164中。 3 3 系统软件设计系统软件设计 3.1 Protel 99 SE(本软件设计的电路图见附录 A) 随着电子工业发展的日新月异,大规模集成电路的应用已越来越普遍。电子设计自动化 EDA(Electronic Design Automation)如今已成为不可逆转的潮流。Protel 就是一套建立在 PC 环境 下的 EDA 电路集成设计系统。 本设计中用到的是 Protel 99 SE。Protel 99 SE 具有强大的自动设计的功能,高速有效的编辑 功能,简洁方便的设计过程管理 PDM(Product Data Management),可完整的实现电子产品从电学概 念设计到生成物理生产数据的全过程,以及这中间的所有分析,仿真和验证。其主要的功能模块,包 括电路原理图设计,印刷电路板设计,无网格布线器,可编程逻辑器件设计,电路图模拟/仿真等,它 集成了电路设计与开发环境。 在 Protel 99 SE 中,所有的设计文档都保存在同一个而且是单一的设计库中,这个设计库则由设 11 计管理器 Design Explore 负责管理。设计管理器主要包括 Design Team 和 Documents 两部分。 在 Protel 99 SE 中,其设计时面向一个设计小组的,设计组的成员和特点都在 Design Team 管理器中进 行管理,可以在 Design Team 中定义设计组的成员,授予设计组成员不同的权限。在 Protel 99 SE 中, 所有的设计文档都被包含在这个管理器中,有电路图 sch 文件,印刷电路板 PCB,报表 Peport 文件, PCB 板作 PCB 制作 PCB Fabrication 文件,仿真分析文件等。 3.23.2 KeilKeil C C 基础基础(本软件设计的程序见附录 B) eil C51 是美国eil Software 公司出品的系列兼容单片机语言软件开发系统。eil C51 软件提供丰富的库函数和功能强大的集成开发调试工具 ision2, ision2 全 Windows 界面, eil C51 生成的目标代码效率分非常高,编译后多数语句生成的汇编代码很紧凑,容易理解。在开 发大型软件时更能体现高级语言的优势。ision2 是eil C51 的集成开发环境,通常叫做eil C51 的调试器。它具有对 C51 代码进行编辑,编译,与库以及其他目标程序进行连接,以及调试,仿 真,最后生成 HEX 文件的功能。它的人机界面友好,操作方便。在使用eil Software 工具时,其项 目开发流程与其他软件开发项目的流程极其相似:()创建一个项目,从器件库中选择目标器件, 配置工具设置;()用51 或汇编语言创建源程序;()用项目管理器生成应用程序文件; ()修改源程序中的错误;()测试连接应用。 3.33.3 S51S51 编程电缆线编程电缆线 伟煌 S51 编程电缆线说明 本设计中用到了编程电缆线,所以作一简单的介绍:本下载线为简易型编程器,针对 ATMEL89S51/S52/S53 进行编程,采用并口编程模式,方便简捷。 操作说明: 1、 将电脑的并口模式设置为 ECP 模式(在 CMOS 中设置) 。 2、 将光盘中的”89S51 下载线软件”文件夹拷到硬盘上,再将伟煌下载电缆.exe 文件图标发送到 WINDOWS 桌面上。 3、 将下载电缆线插到计算机并口上,并和用户板上 89S51 连好(如下连线: P15,P16,P17,RST,GND,VCC)。注:电缆线上的白插座上 1(红点)对应的是 VCC,余下的依 次为:GND、RST、P17、P16、P15。 4、 检查所有的连线是否连好,确信无误后接上 5V 直流电源。 5、 点击图标,打开文档后,将编程器端口选为 LPT1(端口 378H) ,器件选为 89S51 或 89S52(51E 板出厂默认为 89S51) 。 12 6、 打开要烧写的 BIN 文件,先点击擦除芯片,然后点击写 FLASH ROM 即可进行编程,处于擦除和 编程状态时下载线指示灯点亮,任务完成后指示灯熄灭,MCU 自动进入运行状态。 7 若要进行加密,则可将写锁定位设置成 Lock Bit-3,点击写加密锁定位即可。 通过上述方法就可以把程序下载到 89S51 中,这样就完成了程序的烧录工作。 3.4 电子钟的原理 该电子钟是依靠硬件和软件结合而完成的,可以完整地显示时、分、秒,共六位信息。其中时两 位,分两位,秒两位。调节时间时可以快速的针对性地调节每一位。单片机送出串行的显示段选码信 号,该串行信号经过 74LS164 的串变并后输出并行信号,该并行信号再共给各个 LED 数码管。共给数 码管的信号是一样的,所以 LED 显示的数据都应该是一样的,但是经过字选码(即选通信号),就会 显示不同的数字,因为人的眼睛有视觉短暂停留习惯,在某一个时刻只有一只数码管在显示数字,就 是因为眼睛的视觉停留才感觉到看到的六个数码管是同时亮的,利用这一视觉停留的现象就可以完成 该显示功能。当 T1 时刻送出的数据为 AFH ,然后再送给某只 LED 一个选通的电平信号,这只 LED 就 会显示 AFH 对应的数字,T2 时刻送出的数据为 BEH,然后再送给另外一只 LED 一个选通的电平信号, 则这只 LED 就会显示 BEH 对应的数字,同样的在 T3T6 时刻也有数据和选通信号送出,这样每个 LED 都显示不同的数据。比如,此刻显示 13 41 28,代表十三时四十一分二十八秒,要调节为 15 27 42, 现调整按键 SW1,连续按两下;再调整按键 SW4,长按或连续按使分显示到 27;最后调整按键 SW5,长 按或连续按使秒显示到 42。说明:SW1 为时加按键,SW2 为时减按键,SW3 为分加按键,SW4 为分减按 键,SW5 为秒加按键,SW6 为秒减按键。 本电子钟共分为以下几个部分: 1 电源部分,输入该电路板的外部电源电压为+9V 的直流电压,然后经过电解电容的滤波,并经 过小高频电容的防干扰后送给三端稳压块 7805,输出比较稳定的+5V 的直流电压,共给单片机和其他 元器件工作。 2 MCU 部分,提供字形显示码(串行数据);小按键为单片机提供复位信号;振荡信号部分,通 过一只晶振和两只起振电容为单片机提供 11.0592MHz 的正弦波信号;移位脉冲部分,为 74LS164 数据 的移位提供移位脉冲信号。 3 开关部分,共有六只按钮开关 SW1SW6,每只按键一端的引脚都连接在一起,按键的另一端通 过一只提供偏置电流的电阻连接到三极管的基极,并且每只按键对应一只三极管,该处的三极管相当 13 于一只开关,是利用三极管的性质而设计的,当基极的电流达到饱和电流时,三极管就会饱和使集电 极和发射极导通。当然基极没有电流时,三极管的集电极和发射极是截止的,即是断开的。P0 口不断 的送出选通信号,该信号控制三极管的通断从而控制 LED 的选通,利用按键可以把信号送给 P0 口,从 而达到调整显示时间的目的。 4 串行变并行数据部分,利用八位串行移位寄存器 74LS164 实现数据的转换,只要为 74LS164 提 供一个使能信号和一个移位脉冲信号,74LS164 就可以正常工作,使用十分方便。另外,送出的八位 数据后面每一位数据的通道上都要加一个限流电阻,防止总的电流过大,烧坏 LED 和三端稳压块 7805,经过计算应该选用 1K 欧姆的电阻,这样电流既不会过大,LED 显示的亮度也不会太暗。因为 7805 提供的电流是有限的。如果电流的功耗太大,7805 不能够提供大电流,就会使 7805 不能正常工 作,发烫而烧坏。 5 显示部分,由六位共阳极的七段数码管组成。分别显示两位“时”,两位“分”,两位“秒”。 4 4 系统调试系统调试 4.14.1 硬件调试硬件调试 按照如下顺序进行调试,发现问题并作出解决。 1 电源调试。现象:三端稳压块 7805 无输出,触摸 7805 有炙热感。 原因:7805 的第一脚为输 出,2 脚接地,3 脚接 OUT,3 个脚顺序接反了,所以会有发烫的现象。还应注意的是,一般要求输入 端的电压应该高于输出端电压 2.5V 才会有稳定的输出。 即输入端的电压应该在 7.5V 之上,但太高也 不行,电压过高会导致耗散功率太大,热量不能及时的散出去而导致三段稳压块烧坏。调整之后仍有 发烫的现象。说明稳压块后面的电路出现了问题。 用示波器分别观察 89S51 的 20 脚、40 脚、74LS164 的 7 脚、14 脚。发现电压分别为 5V、0V、5V、0V。当有 5V 时并非很平滑的 5V,而是在 5V 左右的有毛刺的电平。此时三端稳压块仍有 发烫的现象。立即关掉电源,发现每个 IC 即 89S51 和 74LS164 的电源和地线都接反了。 调整好之后 用示波器再次测试得到预期的结果-电源正常。 2 检查单片机的振荡信号。示波器的探头放在单片机的 18 脚和 19 脚即 XTAL2 和 XTAL1 上示波器 14 显示无信号,这时单片机不能正常工作。说明外部的振荡器件出现了问题,要么是晶振要么是起振电 容出现了问题。晶振是新的所以损坏的机率比较小,想到可能是起振电容有问题。然后查看电容上面 印有的标称值发现是 1UF 的,更替为 30PF 的电容后,在示波器上看到频率为 11MHz 的正弦波信号(虽 然用的晶振的频率为 11.0592MHz,但由于示波器的精度问题,就不可能看到频率读数显示为 11.0592MHz) ,说明单片机的震荡信号正常,可以为单片机提供工作的震荡信号。 3 把程序烧录到单片机,然后进行测试,发现单片机没有输出信号。先写一段程序使单片机的 32 脚(P0.7)输出为 250Hz 的方波,下载好之后把单片机插到 40 脚的 IC 座,32 脚并没有方波信号输出 (这时的程序仅有输出方波的功能,已经编译通过是绝对没有错误问题的),说明硬件还是没有完全调 试通过。在该毕业设计中 MCU 只有三个地方可调:1 40 脚 VCC,2 18 和 19 脚振荡信号,3 复位信 号。在调试的第一步和第二步已经把电源和振荡信号调好,所以只可能是复位信号出现了问题。电源 通电之后,从三端稳压块的第三脚引出一条线,在 MCU 的第九脚轻触,再看单片机的 32 脚,看到示波 器上面有 250Hz 的方波出现。说明复位信号确实有问题。原来复位电路接法如下图 a。 图 a MCU 无法复位,原因是开机瞬间,MCU 没有达到稳定状态,RST 就由低变为高再变为低而复位, (也可以理解为复位信号的持续时间没有达到 24 个振荡周期之上) 。调整方法:加大电容容量。而设 计中换为另外一种复位方式-按键复位。如图 b。 15 图 b 按照上图所示的电路连接元器件,开机后按下复位按钮,在单片机的 32 脚 250Hz 的方波出现。另 外还可以按照课本上的第三种接法:外部脉冲复位,即在开机后外部给出一个脉冲信号,同样也要使 脉冲宽度要大于两个机器周期(24 个振荡周期) 。但考虑到成本问题,不用了。 4 因为 250Hz 的正弦波信号是作为 74LS164 的 CLOCK(CLK)信号,即 74LS164 的移位信号,是和 74LS164 的第八脚相连的,用示波器观察第八脚,却发现没有任何信号。单片机的 32 脚有 CLK 信号, 而和其相连的 74LS164 的第八脚却没有信号,说明连接出现了问题。用万用表查看发现两个管脚是断 开的。原来 74LS164 的第八脚和 GND 连在了一起。重新焊接之后,第八脚上面有了 CLK 信号。 5 利用程序一直送出一组串行数据,用示波器在单片机的 33 脚可以看出。 单片机的 33 脚是和 74LS164 的 1 脚和 2 脚连在一起的,按照习惯把两个串行输入端 A 和 B 连接起来,用示波器在这两个 脚上也看到了数据,在 74LS164 的输出端应该有并行的数据送出来。用示波器只看到了同样的高电平, 说明 74LS164 的外围电路不对,查阅 74LS164 相关资料发现它的第九脚为使能信号端,空置着没用。 正确的接法应该是接+5V。接好之后测试发现 74LS164 的输出端有数据送出。再看 LED 上也有数字显示。 至此 74LS164 部分调试完毕。 6 单片机和 74LS164 的电源都已经调试通过,用手触摸三端稳压块感觉还是烫的,每个 IC 消耗的 电流大约几十 mA,这两个 IC 的电流加起来也不过四五十 mA,在这种情况下是不会这么烫的,说明其 他电路流过的电流比较大,再次查看分析电路,出现问题的地方可能是共阳极数码管消耗的功率太大, 从而导致 7805 发烫。如果数码管的每段消耗 10mA 电流,则 40 段就会消耗 400mA。在一般情况下每段 LED 通过 34mA 的电流就能正常发光,为了减小 7805 的温度和减弱共阳极数码管的亮度,决定在 74LS164 和共阳极数码管之间加上限流电阻,经过计算电阻选用 1K 的阻值,使每段通过的电流在 34mA。这样使得总共的消耗的电流才一百多 mA,7805 才不会那么烫。把所有的电阻焊接后,再打开 16 电源,果真三端稳压块没有原来那么烫。这样加上了限流电阻后主要有两个好处:1 减小了总功耗, 延长了器件的寿命;2 减小了 LED 中通过的电流,减弱了 LED 的亮度,防止 LED 长时间工作而烧坏。 7 最大的一个问题:接通电源后,LED 虽有显示,全显示为一个 8 字型,而非开机时显示 0 字型, 在显示数据时,数码管的 G、D 两节始终显示 ,用万用表测试发现是显示 G 和 D 的两个引脚和电源连 在一起。 8 去耦电容没加,电源杂波较大,输出显示不稳,有错位现象,原因是电源本来就不稳,加上了 三端稳压和滤波电容后得到比较干净的电源,此时显示的数据比较稳定。 9 对三极管进行调试,三极管与数码管的共阳极相连。R9R14 为各个三极管基极提供偏置电流, 使三极管达到饱和,当 P0 口有高电平送出时,三极管饱和,相对应的 LDi 为高电平,LED 发光。 最后,结合计算机对电子时钟板进行全面调试,具体为 AT89S51 接受数据,然后传给 74LS164 芯 片,通过 74LS164 芯片向 LED 数码管一位一位传送数据。另外,可以通过人为的对开关的按键控制 数据显示。 4.2 软件调试 软件部分主要完成数据的发送、74LS164 移位脉冲信号的输出、定时和中断。 1 首先向 74LS164 发送字型码,使 LED 显示对应的数字。 将字型码送入字型锁存器锁存,这时所有的显示块都有可能显示。 同样的字符;再将需要显示的位置代码送入字位锁存器锁存。为防止闪烁,每位显示时间在 12mS, 然后显示另一位,单片机需要不断的进行显示刷新。 在这之前应该定义好单片机的引脚并对内存初始化。因为端口 3 是一个双向 I/O 端口,每个 脚 有内部升压电阻,可以直接驱动外部电路。所以把单片机的 12 脚即 P3.2 作为按键的公共端,并 定义每个按钮的另一端: SW1 BIT P0.0 SW2 BIT P0.1 SW3 BIT P0.2 SW4 BIT P0.3 SW5 BIT P0.4 17 SW6 BIT P0.5 DIG1 BIT P0.0 DIG2 BIT P0.1 DIG3 BIT P0.2 DIG4 BIT P0.3 DIG5 BIT P0.4 DIG6 BIT P0.5 之所以 DIG1DIG6 定义的引脚和按键定义的引脚重复,是因为按键和每个 DIG 共用同一个引 脚,每个引脚用于控制对应的 LED 的选通,并且通过单片机检测按键引脚电平的高低来对时分秒 进行加减。 2 定义好程序段的起始地址和数据段的起始地址后就可以初始化内存了: ORG 0000H JMP MAIN MAIN: MOV SP,#40H MOV PSW,#00H MOV R0,#7FH CLR_RAM : MOV A,#00H DJNZ R0,A MOV P1,#0FFH MOV P2,#0FFH MOV P0,#0FFH MOV P3,#0FFH 3 这样单片机经过复位以后就开始正常工作,从主程序开始执行,可以看到四个口输出的全都是高 电平。此时,想测试以下 LED 显示是否正常,以下几条指令往 P0.6 送数据即可, MOV BUFF_164, #08H PUSH ACC SND164_LP: RLC A MOV DAT164,C DJNZ BUFF_164, SND164_LP POP ACC 18 RET 本段程序是利用串行传送数据的思想,即先把要发送的数据发送到专用寄存器 A,然后把累加器 A 中的数据循环左移。当然这之前是一定要把各个寄存器定义好的,否则会是错误百出,我原来想当 然的把 0C0H 发送到 P0 口,用示波器在 P0.6 引脚看信号,只发现该引脚一直都是低电平, 不论怎么 调试输出的结果都是低电平,还是向在实习的公司工作的人才知道了所以然:原来我用的方法是把八 位的数据直接送到一个口上,当然,每个引脚只能占到一位的数据。后来在他的讲解下我才知道关键 是把八位的数据变成串行数据输出,即用循环移位的方法把数据一位一位的送出去,由于在学校的时 候自己写的程序不多,再加上我们学校开设的硬件反面的课程不是很多,所以对程序与硬件之间的关 系不是太了解,但是经过反复的翻书、查阅资料,使自己在程序和硬件方面比以前都得到了很大的提 高。 然后,我把每八位数据对应的数字都试过了一遍,从 0F 直到所有的显示都完全正确,其实也是把 书本上面的字型码又验证了一遍而已,发现和书上给的字型码是完全一致的。所以决定程序中使用以下数 形表: TAB_LED: DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H,88H,83H,0A7H DB 0A1H,86H,8EH 4 每次仅仅发送数据是不行的,还要和每一位的选通码结合起来,才能实现数据的动态显示。要 不然就是一个实实在在的静态显示的例子。所以要用到了定时和中断。考虑到时间的精确性,决定每 4MS 中断一次,1S 中断 250 次,4MS 的时间既不会使六个数码管有闪烁感,也使中断的编程容易一 些。 由于 89S51 的计数器是往上计数的,晶振为 12MHZ,所以机器好周期位 1US,定时器初值的计 算方法如下;溢出率=1/T=Fosc/12(2L-TC),溢出率为定时时间的倒数; T 为定时时间;Fosc 为振荡器 的频率;L 为计数器的长度;TC 为定时器的初值;带入公式:计算初值为(65536-4000) 。编程如下: MOV TMOD,#21H ;设定定时器的工作方式:T1 为方式 2(自动重装载的 8 位计数) T0 为方式 1(16 位计数器) MOV TH0,#HIGH(65536-4000) ;T0=4MS MOV TL0,#LOW(655536-4000) SETB TR0 ;启动 T0 MOV IE,#10000011B ;设置中断使能:外部中断 0 允许中断 19 MOV IP,#00000010B ;T0 中断优先 原来调试之前,并没有加上 SETB TR0 这一条指令,所以 T0 并不正完成计数,使得后面的程 在 在工作时出现了异常,不能够在规定的地方中断。加上去就恢复了正常。 5 在课本的 149 页也讲到了扩展的多个外部中断的方法:SW1SW6 六个按键每个按键的引脚都 连接在一起,然后在连接到 P3.2 口,P3.2 口实际上是外部中断零的引脚。六个扩展外部中断源有一个 或几个出现低电平,引起 INT0 低电平出发中断,所以这些中断源都是电平触发方式。当满足外部中 断请求条件时,则 CPU 响应中断;转入 0003H 单元开始执行中断服务程序。在这里为什么是 0003H 单 元呢?翻阅资料便可以发现原来外部中断矢量地址是 0003H。不过,在刚开始写程序时并没有把这个 地址加进去,所以即使有了中断出发电平也不能使中断触发,这个 0003H 是我在编写软件时遇到的最 大的问题之一,光是解决这个问题就花了好长时间。当翻看课本时才发现原来老师讲课时就给我们画 下了重点,要我们记住几个中断的中断矢量地址。而我们却忽略了。如下的六条指令便完成扩展外部 中断。 JNB SW1,SW1_OK ;SW1=0 则转 SW1_OK,否则执行下一条指令 JNB SW2,SW2_OK ;SW2=0 则转 SW2_OK,否则执行下一条指令 JNB SW3,SW3_OK ;SW3=0 则转 SW3_OK,否则执行下一条指令 JNB SW4,SW4_OK ;SW4=0 则转 SW4_OK,否则执行下一条指令 JNB SW5,SW5_OK ;SW5=0 则转 SW5_OK,否则执行下一条指令 JNB SW6,SW6_OK ;SW6=0 则转 SW6_OK,否则执行下一条指令 当然在第一条语句之前还不能忘记加上这两条指令: PUSH PSW PUSH ACC 这是相当重要的两条指令,因为执行中断之前一定要完成一项任务就是要保护现场和寄存器 的 值。以上两条指令便是完成保护现场的功能。 6 当然下一步便是响应中断执行中断服务子程序。基本上中断服务子程序基本完成两个功能:1 判 断对应位是否符合相应位的条件,比如时是否大于 24,分和秒是否大于 60;2 判断之后执行相应的操 20 作-对应位的加(减) 。比如说如果扫描到 SW1 有中断信号触发中断,则执行中断服务子程序 SW1_OK, 判断时是否等于 24,如果等于 24 则执行下一条指令 MOV HOR, #00H,就是说满 24 小时就 要归零。如果等于 24 小时则转到有另外一个子程序 SW1_OVER,该子程序是对相应的位进行操作,即 加或减。程序如下: SW1_OK: MOV A, HOR ;把小时的值存到 A CJNE A,#24, SW1_OVER ;判断是否等于 24,如否则跳到 SW1_OVER MOV HOR, #00H SW1_OVER: INC HOR ;时加一 JMP RETURN SW2_OK: MOV A,HOR ;把小时值存到 A CJNE A,#00,SW2_OVER ;判断是否等于 0,如否则跳到 SW2_OVER MOV HOR,#23 ;如值等于 0,则将变量赋值为 23 SW2_OVER: DEC HOR JMP RETURN 7 把字型码发送出去以后就要让它在对应的位上显示出来,我原来使用这样的方法做的程序: 在 P0.6 端口一直发送数据,然后给每个 LED 的公共端一个选通信号,因为 LED 是共阳极的,所以选通 信号只要是一个高电平时间为 4MS 左右的脉冲即可。接着在每个 LED 的公共端都会有这样的脉冲送 进来,也就是说,我在一个口上面送出这样的脉冲出来,只是把时间空置的比较好而已。接下来我看 到了变化显示的数字,可过了短短的几分钟的时间,就看到了显示的数字有闪烁感,也就是说我的选 通时间控制的精度不够好。然后我分析了原因,发现因为晶振精度的问题,在每一个脉冲时间都会有 零点几个微秒的误差,所以累加起来,就是后面看到的结果。 所以我决定采用另外一种方法:首先判断发送的数据是时的还是分的还是秒的,如果是时,则把 数据除以 10,得到商和余数,那么在时的两位上分别显示,即一位显示时高一位显示时低。更重要的 一步是通过不断的扫描 P0 口,判断只要有哪一位有被选通的信号,就会根据判断利用数据指针到内 部数据存储器中(TAB_LED 表)中读取字型码(也就是查表的方法) ,然后就是把这些字型码发送出 去。 用编码实现二进制到十进制的转换,即把二进制数变成十进制数,利用除法思想,数据除以十得 21 到十进制的商和余数,商和余数放在两个存储器中,也就是对应的数码管显示的数字。 MOV A,DATA ;把内存或寄存器的值先存入 A,做被除数 MOV B,#10 ;把立即数 10 存入到寄存器 B 做除数 DIV AB ;将 AB 相除,商存入 A,余数存入 B RET ;子程序返回 定时器的一次中断显示一位数码管,由于一次中断的时间非常短,则使人视角造成 6 位数码管同 时显示的感觉。该段程序实现动态显示 MOV A,BUFF_LED_LP ;把扫描标记变量存入 A,做被除数 MOV B,#06 ;把 6 存入到 B,作为除数 DIV AB ;将 AB 相除 MOV A,B ;将余数存入到 A 中 RL A MOV DPTR,#TAB_SCAN JMP A+DPTR ;跳到对应的数码管 用查表方把数值 MOV DPTR,#TAB_LED ;取表首地址 MOVC A,A+DPTR ;根据指针读取表值 22 结 论 23 致致 谢谢 毕业设计的过程中,他们更是细心的详细的为我讲解不懂的知识,给我提供了好多 器件让我做试验,还提供仪器仪表给我使用。使得我的毕业设计能够顺利地做下去。 在此特别感谢。 参考资料参考资料 1 1 沈美明、温冬婵沈美明、温冬婵.IBM-PC.IBM-PC 汇编编语言程序设计(第二版)汇编编语言
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版正规加盟合同书标准范例
- 两人购买机器合同样本
- 股票配资合同-范本
- 租车协议范本
- 代加工胶囊合同样本
- 会展演出合同样本
- epc投资意向合同样本
- 四年级数学教案-《垂直与平行》教学设计
- 亲子研学活动合同样本
- 个人信用合同样本
- 职工代表提案培训
- 轧钢工技能理论考试题库(含答案)
- 精益六西格玛黄带认定考试题库及答案
- 脱毒甘薯种薯(苗)病毒检测技术规程DB41-T 987-2014
- 《回归分析》 课件 第1章 绪论
- 2024年资格考试-对外汉语教师资格证考试近5年真题集锦(频考类试题)带答案
- 2024-2025学年上海黄浦区高三下学期第一次考试化学试题含解析
- 第十六届全国水利职业院校技能大赛(智能节水系统设计与安装)理论考试题库(含答案)
- 甘肃省科研经费管理办法
- 【课件收藏】幼儿园《古朗月行》教学课件
- 电气自动化行业中的职业生涯规划书
评论
0/150
提交评论