单片机方波脉冲计数控制—毕业设计说明书_第1页
单片机方波脉冲计数控制—毕业设计说明书_第2页
单片机方波脉冲计数控制—毕业设计说明书_第3页
单片机方波脉冲计数控制—毕业设计说明书_第4页
单片机方波脉冲计数控制—毕业设计说明书_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、电 子 科 技 大 学 微 机 综 合 设 计 设 计 报 告 目录一、设计题目2二、设计内容与要求2三、设计目的和意义2四、设计任务分析2五、系统硬件电路35.1 电路原理图绘制75.1.1 电路图绘制要点75.1.2 硬件电路制作85.2 硬件电路说明85.2.1 单片机基本知识85.2.2 AT89S51单片机介绍11145.2.4 数码管显示电路部分17六、软件设计20程序流程图206.2程序源代码22八、调试过程27 硬件调试278.1.1 静态调试278.1.2 动态调试278.2 软件调试29 调试收获与改进意见29九、设计总结30十、参考文献31一、设计题目 用8031单片机控

2、制可测方波1100Hz,并显示每分钟计数的脉冲。二、设计内容与要求 设计方波脉冲控制显示系统,用51单片机控制输出方波输出,频率范围为1100Hz,并用数码管显示每分钟计数的脉冲数和当前频率,用两个按键分别控制频率的增减,同时用一个复位键,可以快速回到起始状态。三、设计目的和意义1、 通过方波脉冲控制系统的设计,将单片机原理课上所学的知识融会贯通、加深理解。培养独立设计、制作和调试单片机应用系统的能力,熟悉单片机应用系统的软硬件调试方法和系统的设计开发过程,为今后的工作实践活动夯实基础。2、 通过方波脉冲计数控制系统的设计,掌握51系列单片机的内部定时/计数器的功能和使用方法;掌握单片机外部中

3、断的应用和程序的编程方法;掌握数码管的使用和编程方法。通过设计方案分析、选择和设计,设计并搭制硬件电路,编写控制程序等一系列工作,掌握单片机应用的基本方法,更重要的是学会一种科学的解决问题的逻辑思维,和完成任务的方法。3、 培养一个解决困难问题的积极心态,为今后在工作上奠定坚实的基础。四、设计任务分析设计题目要求用单片机控制可测方波脉冲1100Hz,并显示每分钟计数的脉冲数。由要求可知道,任务包括方波的产生和方波脉冲数的显示两个部分。方波由单片机内部定时器来产生,通过改变其定时初值来改变方波的频率,在硬件电路中可利用按键来控制频率的增减。方波的波形利用示波器来观察。由此,可有几个方案来实现题目

4、的要求。方案一:51单片机最小系统,外接上一个数码管显示电路用以显示每分钟的脉冲数。数码管的断码选择端直接与单片机的P0口连接,位码选择端与P2口连接。利用改变定时初值的方式来改变方波频率。这个方案的优点是硬件电路简单,节省元器件,程序编写容易。但是缺点也明显,只用一个数码管,无法显示当前的脉冲频率,而且无法用硬件实现频率的+1,-1的变化。虽然实现了题目的基本功能,但是功能简单有限,也就达不到课程设计的目的了。以下是方案一的电路图:图1 方案一原理图方案二:51单片机最小系统,加上两个数码管显示电路,分别显示脉冲数和频率。此外,每个数码管用74HC573数据锁存器来驱动,增加两个按键用来控制

5、频率的增减。这个方案的优点是能利用数码管显示当前的频率和脉冲数,并且能用按键控制频率的大小。数码管利用数据锁存器驱动,驱动能力更强,还可以支持I/O口扩展。缺点是,数码管电路布线比较困难,跳线多。综合分析以后,我们决定用方案二,虽然方案二难度相比方案一而言难度加大了,但是功能实现得很彻底。当然,面对PCB布局布线的困难,我们只能采用双面板的形式。我们也相信,这个对我们而言将更具挑战性。下面就对方案二进行详细分析。五、系统硬件电路硬件电路主要包括51单片机最小系统(晶振电路和复位电路)、数码管显示电路。原理图如下。图1 51单片机最小系统原理图图2 51单片机最小系统PCB图图3 数码管显示电路

6、原理图图4 数码管显示电路PCB图图5 元器件清单5.1 电路原理图绘制5.1.1 电路图绘制要点绘制电路原理图要熟悉运用绘制软件(Protel 99 SE或者Altium Designer软件),绘制的最终目的是得到美观、清晰的图。因而在绘制前根据需要,对绘图环境参数设计;绘制时正确元件载入(特别是元器件的封装形式一定要选着正确)与编辑;元件载入后正确连线,调整得到美观的原理图电路图绘制注意事项:1、元器件之间连线用Wire命令而不是用Line命令,虽然从表面上看,两者都是直线,只是颜色稍有些不同,但用Wire命令放置的导线是具有电气特性的,而用Line命令放置的直线是不具有电气意义的,两者

7、具有根本区别的。2、注意理解说明文字(Annotation)和网络标号(NetLabel)的区别:说明文字是没有电气特性的,只是纯粹的文字解释,而网络标号是有电气特性的,它可以把电路图具有相同网络标号的电气连线是连在一起的,即在两个以上没有相互连接的网络中,把应该连接在一起的电气连接点定义成相同的网络标号,可以使它们在电气含义上属于真正的同一网络。 3、导线的端点与元件引脚的端点相连,而不是把导线和元件的引脚重叠,最常见的错误是当导线与元件引脚重叠时,这时软件会自动在元件引脚的端点加一节点,这时再把节点删除掉,认为就这样就正确了,实际上如果只是为了得到一张原理图,这样做并没有什么不妥,但却不能

8、得到正确的网络表。4、导线与导线之间不要有重叠。5、不要在同一地方放两个以上相同的元件(如两个电源地符号重叠在一起)。6、在放置电源地符号时,电源地符号的显示类型(Style)为PowerGround,这时PowerPort的属性对话框中网络标号(Net)的内容默认是不显示的,因此有些初学者在放置电源地符号时,没有留意网络标号的内容,致使有网络标号(Net)的内容网络标号为“GND”,有些网络标号的内容却为“VCC”,如果纯粹只为得到一张原理图,这样做是没有问题的,但是若利用自动布线来设计PCB板时,却会造成电源和地短路,从而使整块PCB板报废。正确的做法是在放置电源地符号符号,把PowerP

9、ort的属性对话框中网络标号(Net)的内容全部设置为GND。 7、在绘制电路原理图时,通常总线、总线分支线和网络标号是一起存在的,要注意总线和总线分支线不具有电气特性的,而网络标号是具有电气特性的,因此在放置总线时不能用加粗了的导线来替代,也不能用导线来替代总线分支线,总线分支线和元件引脚之间不能直接连在一起,而应通过导线接在一起,网络标号应放在导线上,不能放在元件引脚上,不能用说明文字(Annotation)来替代网络标号(NetLabel)。8、元器件封必需要有合适的封装方式。没封装会影响后面生产PCB原理图。封装形式不正确,后面生产PCB原理图时,期间的形式可能跟元器件的真实外形尺寸不

10、相似。5.1.2 硬件电路制作 材料准备 元器件测试 PCB制作组装和焊接 测试5.2 硬件电路说明5.2.1 单片机基本知识图6 单片机的基本组成单片机各部分的组成及功能的说明:(1)处理器单片机的中央处理器(CPU)是单片机的核心,完成运算和控制操作。中央处理器主要包括运算器和控制器两部分。单片机CPU和通用微处理器基本相同,只是增加了“面向控制”的处理功能,如位处理、查表、多种跳转等。(2)运算器运算器主要用来实现算术、逻辑运算和位操作。其中包括算术和逻辑运算单元ALU、累加器ACC、B寄存器、程序状态字PSW和两个暂存器。ALU是运算电路的核心,实质上是一个全加器,完成基本算术和逻辑运

11、算。算术运算包括加、减、乘、除、增量、减量、BCD码运算;逻辑运算包括“与”、“或”、“异或”、左移位、右移位和半字节交换,以及位操作中的位置位、位复位和位取反等。暂存器1和暂存器2是ALU的两个输入,用于暂存参与运算的数据。ALU的输出也是两个:一个是累加器,数据经运算后,其结果又通过内部总线返回到累加器;另一个是程序状态字PSW,用于存储运算和操作结果的状态。累加器是CPU使用最频繁的一个寄存器。ACC既是ALU处理数据的来源,又是ALU运算结果的存放单元。CPU中的数据传送大多通过累加器实现,因此累加器又是数据的中转站。如单片机与片外ROM或I/O扩展口进行数据交换必须通过ACC来进行。

12、B寄存器在乘法和除法指令中作为ALU的输入之一,另一个输入来自ACC。运算结果存于AB寄存器对中。(3)控制器控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件。控制器只要包括程序计数器PC、PC增量器、指令寄存器、指令译码器、定时及控制逻辑电路等。其功能是控制指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。程序计数器PC(Program Counter)是控制器中最基本的寄存器,是一个独立的计数器,存放着下一条将要从程序存储器中取出指令代码的地址。PC的基本工作过程是:读指令时,PC将其内容送给地址寄存器,作为所取指令的地址给程序存储器,然后程序存储器按此地址输出

13、指令字节,同时PC自动加1,指向下一条指令的地址。PC的变化轨迹决定了程序的流程。PC是不可访问的,顺序执行程序时自动加1;执行转移程序时,自动将其内容更改成指向转移目的地址。程序计数器的计数宽度决定了程序存储器的地址范围。在AT89单片机中,PC是一个16位的计数器,可对64KB程序存储器进行寻址。复位时PC的内容为0000H,说明程序应从程序存储器0000H单元开始执行。指令寄存器是用来存放指令操作码的专业寄存器。执行程序时,首先要从程序存储器中取出指令,送给指令寄存器;指令寄存器再将其输出到指令译码器;指令译码器将该指令进行译码,根据指令性质送到定是逻辑和条件转移逻辑电路,产生定时控制信

14、号,完成程序的执行过程。定时及控制逻辑电路根据指令的性质发出一系列定时和控制信号,控制计算机个组成器件进行相应的操作,执行指令。(4)存储器单片机内部的存储器分为程序存储器和数据存储器。程序存储器主要用来存储指令代码和一些常数及表格。程序在开发调试成功之后就永久性地驻留在程序存储器中,在停机断电状态下代码也不会丢失。程序存储器在操作运行过程中只读不写,因而又被称为只读存储器Rom(Read Only Memory)。标准型AT89单片机的程序存储器采用4KB的快速擦写存储器Flash Memory,编程和擦除完全是电气实现的。编程和擦除速度快,可以使用通用的编程器脱机编程,也可以在线编程。Fl

15、aash的应用,是AT89系列单片机的显著特点之一。在单片机中,用随机存储器RAM(Random Access Memory)来存储程序运行期间的工作变量和数据,所以又称为数据存储器。一定容量的RAM集成在单片机内,提高了单片机的运行速度,也降低了功耗。标准型AT89单片机含有1288位RAM,采用单字节地址。实际上片内的字节地址空间是256个(00HFFH),其中高128字节地址(80HFFH)被特殊功能寄存器SFR占用,用户只能使用低128字节单元(00H7FH)来存放可读/写的数据。(5)外围接口电路CPU与外部设备的信息交换都要通过接口电路来进行。这主要是为了解决CPU的高速处理能力和

16、外部设备的低速运行之间的速度匹配问题,并可以有效地提高CPU的工作效率;同时也提高了CPU对外的驱动能力。输出接口电路具有锁存器和驱动器,输入接口电路具有三态门控制,成为接口电路的基本特征。由于受集成度的影响,片内存储器和外围接口电路的规模和数量都受到一定的限制。为了适应外部复杂的控制功能,单片机具有较强的扩展功能,可以方便地扩展外部存储器ROM、RAM和I/O口等。(6)时钟振荡电路时钟振荡电路是CPU所需要的各种定时控制信号的必备单元。CPU只有在时序信号和控制信号的协调工作下,才能执行各种指令。单片机芯片内部有时钟电路,但石英晶体和微调电容需要外接。系统的主控芯片选用AT89S51单片机

17、。AT89S51单片机是低功耗的、具有4KB在线可编程Flash存储器的单片机,与51系列单片机的指令系统和引脚兼容。片内Flash可允许在线重新编程,也可使用通用非易失性存储器编程器编程。它将通用CPU和在线可编程Flash集成在一个芯片上,形成了功能强大、使用灵活和具有较高性能价格比的微控制器。5.2.2 AT89S51单片机介绍 AT89S51单片机是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器,既可在

18、线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。图7 AT89S51引脚图AT89S51引脚简介:VCC:供电电压。GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向

19、I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作 输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻 拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存 储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据

20、存储器进行读写时,P2口输出其特殊功能寄存器 的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89S51的一些特殊功能口,如下表格所示: 表2 P3口管脚功能管脚功能管脚功能RXD(串行输入口)T0(计数器0外部输入)P3. 1TXD(串行输出口)T1(计数器1外部输入)/WR(外部数据存储器写选通)/RD(外部数据存储器读选通) RST:复

21、位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选

22、通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时, /EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system

23、 programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。1、AT89S51具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT

24、)电路,片内时钟振荡器。2、AT89S51的运行模式 (1)空闲模式 在空闲模式下,CPU处于睡眠状态,振荡器和所有片内外围电路仍然有效。空闲模式可由软件设置进入(设IDL1)。在这种模式下,片内RAM和SFR中的内容保持不变。空闲模式可通过任何一个允许中断或硬件复位退出。 若用硬件复位方式结束空闲模式,则在片内复位控制逻辑发生作用前长达约两个机器周期时间内,器件从断点处开始执行程序。片内硬件禁止访问内部RAM,但不禁止访问端口。为避免采用复位方式退出空闲模式时对端口的不应有的访问,在紧随设置进入空闲指令(即设IDL1)的后面,不能是写端口或外部RAM的指令。(2)掉电模式引起掉电模式的指令是

25、执行程序中的最后一条指令(使PD1的指令)。在掉电模式下,振荡器停止工作,CPU和片内所有外围部件均停止工作,但片内RAM和SFR中的内容保留不变,直到掉电模式结束。 退出掉电模式可用硬件复位或任何一个有效的外部中断INT0和INT1。复位可重新设置SFR中的内容,但不改变片内RAM中的内容。在Vcc电源恢复到正常值并维持足够长的时间之后,允许振荡器恢复并达到稳定,方可进行复位,以退出掉电模式。3、MCS-51系列单片机的并行I/O口接口电路是微机必不可少的组成部分,并行输入确出接口是CPU和外部进行信息交换的主要通道。MSC51系列单片有4个8位并行双向I/O口P0P3,共32根I/O线。每

26、一根线能独立用作输入或输出。单片机可以外接键盘、显示器等外围设备还可以进行系统扩展,以解决硬件资源不足问题。4个并行口都是双向口,既可以输入又可以输出。P0、P2口经常作外部扩展存储器时的数据、地址线,P3口除作I/O口外,每一根都有第二功能。这4个I/O口结构基本相同,但仍存在差别。(1) P1口是最常用的I/O口。如图4所示,因为不作数据地址线,其结构中没有数据地址线,也没有多路开关MUX,输出驱动电路接有上拉电阻。P1口输入输出时与P0作I/O时相似,输出数据时先写入锁存器,经Q端反相,再经场效应管反相输出到引脚。输入时,先向锁存器写l,使v管截止外部引脚信号由下方读缓冲器送入内部总线,

27、完成读引脚操作。P1口也可以读锁存器。外部提升电阻将引脚拉升至高电平,但输人的低电平信号能将其拉低,不会影响低电平的输入。图8 P1口一位结构(2)P3口为双功能口,当P3口作为通用I/O口使用时,它为准双向口,且每位都可定义为输入或输出口,其工作原理同P1口类似。 (3)P3口还具有第二功能,其引脚描述,P3口特殊功能口线特殊功能信号名称RXD串行输入口TXD串行输出口外部中断0输入口外部中断1输入口T0定时器0外部输入口T1定时器1外部输入口WR写选通输出口RD读选通输出口(1)晶振电路 图9 晶振电路晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网

28、络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化。 晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。 一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振,再

29、有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容,请注意一般IC的引脚都有等效输入电容,这个不能忽略。一般单片机中的晶振的负载电容为22pf或30pf ,如果再考虑元件引脚的等效输入电容,则两个30pf的电容构成晶振的振荡电路就是比较好的选择。在单片机中,晶振电路的设计一定要和单片机靠近,路线尽量短,路线过长有可能会导致工作不稳定,时有时无,而且还有尽量避免在高频电路附近工作。在89S51中晶振起振的两端稳定电压是1.7V/2.1V,用的是两个30Pf的电容。我们因此选择两个30Pf的电容与12MHZ的晶振一起构成晶振回路。判断单片机芯片及时钟系

30、统是否正常工作有一个简单的办法,就是用万用表测量单片机晶振引脚(XTAL2、XTAL1脚)的对地电压,以正常工作的单片机用数字万用表测量为例:XTAL2脚对地约2.24V, XTAL1脚对地约2.09V。对于怀疑是复位电路故障而不能正常工作的单片机也可以采用模拟复位的方法来判断,单片机正常工作时第9脚对地电压为零,可以用导线短时间和5V连接一下,模拟一下上电复位,如果单片机能正常工作了,说明这个复位电路没有问题。电源引脚Vcc和VssVcc:电源端,接5V。Vss:接地端。时钟电路引脚XTAL1和XTAL2XTAL1:接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,若使用外部TT

31、L时钟时,该引脚必须接地。XTAL2:接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,若使用外部TTL时钟时,该引脚为外部时钟的输入端。系统扩展时,ALE用于控制地址锁存器锁存P0口输出的低8位地址,从而实现数据与低位地址的复用。系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路(如图5所示)。AT89S单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有

32、严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22F。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。外部程序存储器读选通信号,是读外部程序存储器的选通信号,低电平有效。程序存储器地址允许输入端 /VPP。 当为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFH时,将自动转向执行片外程序存储器指令。当为低电平时,CPU只执行片外程序存储器指令。输入/输出口引脚P0、P1、P2和P3

33、。P0口():该端口为漏极开路的8位准双向口,负载能力位8高LSTTL负载,它为8位地址线和8位数据线的复用端口。P1口():它是一个内部带上拉电阻的8位准双向I/O口,P1口的驱动能力为4个LSTTL负载。P2口():它为一个内部带上拉电阻的8位准双向I/O口,P2口的驱动能力也为4个LSTTL负载。在访问外部程序存储器时,它作存储器的高8位地址线。P3口():P3口同样是内部带上拉电阻的8位准双向I/O口,P3口除了作为一般的I/O口使用之外,其还具有特殊功能。(2)复位电路复位使单片机处于起始状态,并从此状态开始运行MCS5-51单片机RST引脚为复位端,该引脚连续保持2个机器周期(24

34、个时钟振荡周期)以上的高电平。可使单片机复位。本文使用的是外部复位电路,单片机在启动后要从复位状态开始运行,因此上电时要完成复位工作,称上电复位,如图10a所示。上电瞬间电容两端的电压不能发生突变,只有RST端为高电平5v,上电后电容通过及RC电路放电RST端电压逐渐下降,直至低电平0V,如图10c所示。适当选择R、C的值,使RST端的高I电平维持2个机器周期以上即可完成复位。单片机L在运行过程中,出于本身或外并干扰的原因会导致出错。这时可按复位键以重新开始远行,按键复位可分为按键电平复位或按健脉冲复位,如图10b所示。按键脉冲复位和上电平复值的原理是一样的,都是利用RC电路的放电原理,如图1

35、0d所示。让RST端能保持一段时间的高电平,以完成复位,按键电平复位时,按键时间也应保持在两个机器周期以上。(a) 上电复位 (b) 按键电平复位 (c) RC放电过程 (d) 电平复位过程图10 单片机常用复位电路5.2.4 数码管显示电路部分(1)74HC573介绍74HC573是一种包含八进制3态非反转透明锁存器,常用于数码管、按键等的控制,图11是其引脚图。图11 74HC573引脚图输入是和标准 CMOS 输出兼容的;加上拉电阻,他们能和 LS/ALSTTL 输出兼容。当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间

36、的数据会被锁存。u36755X出能直接接到 CMOS,NMOS 和 TTL 接口上u25805X作电压CMOS 器件的高噪声抵抗特性三态总线驱动输出置数全并行存取缓冲控制输入使能输入有改善抗扰度的滞后作用原理说明:M54HC563/74HC563/M54HC573/74HC573的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于

37、缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器。数据锁存当输入的数据消失时,在芯片的输出端,数据仍然保持; 这个概念在并行数据扩展中经常使用到。图12 74HC573真值表1脚三态允许控制端低电平有效1D8D为数据输入端1Q8Q为数据输出端LE为锁存控制端;OE为使能端图13 74HC573内部原理图 (2)数码管介绍数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(C

38、OM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都

39、由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5840根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都

40、接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。图14 四位数码管引脚图四位数码管引脚如上图所示,在实际判别

41、中,让有小数点的端对着自己,上面引脚的功能为1,a,f,2,3,b下面引脚为e,d,p,c,g,4。此次设计采用共阴极接法的数码管,高电平点亮。通过软件程序定义断码和位码,通过74HC573锁存器将断码和位码送到数码管即可控制各个位的数码管显示的数字。六、软件设计程序流程图6.2程序源代码#includereg52.hunsigned char count;unsigned char fenmu;/ fenmu用来表示方波频率sbit pwm=P30;/ 表示脉冲电平状态sbit jia=P37;sbit jian=P36;unsigned char jd,b;sbit dula=P26;sb

42、it wela=P27;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/ 数码管显示断码定义void delay(unsigned char i) unsigned char j,k;/ 按键消抖延时 for(j=i;j0;j-) for(k=125;k0;k-);void Time0_Init()/ 内部定时器0初始化、写入初值 TMOD=0X00; EA=1;/ CPU中断开放 TH0=(8192-4607)/32; TL0=(

43、8192-4607)%32;/定时5ms TR0=1;/ 启动定时器0 ET0=1;/ 定时器0中断允许void T0_time() interrupt 1/ 定时器中断 TH0=(8192-4607)/32; TL0=(8192-4607)%32; if(count=100) fenmu=99; count=0; fenmu=fenmu+1;while(jia=0); if(jian=0) delay(10); if(jian=0) if(fenmu=1) fenmu=2; count=0; fenmu=fenmu-1;while(jian=0); void display()/共阴极数码管

44、显示方波频率以及每分钟脉冲数 unsigned char qian, bai,shi,ge,fqian, fbai,fshi,fge; unsigned int a; a=60*fenmu;/ 脉冲数 qian=(a)/1000; bai =(a)%1000/100; shi =(a)%100/10; ge =(a)%10;/ 脉冲数数码管显示 fqian=fenmu/1000; fbai =fenmu%1000/100; fshi =fenmu%100/10; fge =fenmu%10;/ 方波频率数码管显示 dula=0; P0=tableqian; dula=1; dula=0; we

45、la=0; P1=0xfe; wela=1; wela=0; delay(5); dula=0; P0=tablebai; dula=1; dula=0; wela=0; P1=0xfd; wela=1; wela=0; delay(5); dula=0; P0=tableshi; dula=1; dula=0; wela=0; P1=0xfb; wela=1; wela=0; delay(5); dula=0; P0=tablege; dula=1; dula=0; wela=0; P1=0xf7; wela=1; wela=0; delay(5); dula=0; P0=tablefqia

46、n; dula=1; dula=0; wela=0; P1=0xef; wela=1; wela=0; delay(5); dula=0; P0=tablefbai; dula=1; dula=0; wela=0; P1=0xdf; wela=1; wela=0; delay(5); dula=0; P0=tablefshi; dula=1; dula=0; wela=0; P1=0xbf; wela=1; wela=0; delay(5); dula=0; P0=tablefge; dula=1; dula=0; wela=0; P1=0x7f; wela=1; wela=0; delay(

47、5);void main()/ 本程序的思路是利用主函数调用各个功能模块的子函数来实现所要求的功能 fenmu=1; count=0; Time0_Init(); while(1) keyscan(); display(); 七、系统功能分析与说明设计题目要求用单片机控制可测方波1100HZ,并显示每分钟计数的脉冲数。我们所设计的系统用了两个四位数码管,一个用以显示每分钟脉冲数,一个用以显示方波频率。同时,用P3.6,P3.7口外接按键,按键每按下一次,方波频率增(减)加1HZ,用P3.0口接示波器观察波形。方波由单片机内部定时器产生,方波的频率通过硬件触发软件来改变,通过程序来设置方波高低电

48、平的占空比。按题目的要求,在程序中设定了频率从1100HZ,所以方波频率最大只能为100HZ,最小显示1HZ。即系统复位后,数码管显示的方波频率为1HZ。若要产生频率更大的方波,可以在源程序中设置。八、调试过程 硬件调试8.1.1 静态调试电路的静态调试主要是检测线路通断情况和元器件极性是否正确,还有就是各芯片是否插装正确,是否与原理图一致。将电源断开,用万用表检测所有电路导线是否都导通,以及是否发生短路;对于需要连接PCB板两面的焊点尤其要注意检测板子两面是否导通;芯片是通过芯片插座与基板连接,所以要注意检测芯片引脚与焊盘是否导通;对于数码管,也可以利用万用表来检测其是否可以正常亮灭。8.1

49、.2 动态调试由于这个设计主要部分是单片机最小系统和数码管显示部分,所以调试的主要工作是对最小系统的调试。(1)晶振电路首先应该确认电源电压是否正常。用电压表测量接地引脚跟电源引脚之间的电压,看是否是电源电压,例如常用的5V。接下来就是检查复位引脚电压是否正常。分别测量按下复位按钮和放开复位按钮的电压值,看是否正确。然后再检查晶振是否起振了,一般用示波器来看晶振引脚的波形,注意应该使用示波器探头的“X10”档。另一个办法是测量复位状态下的IO口电平,按住复位键不放,然后测量IO口(没接外部上拉的P0口除外)的电压,看是否是高电平,如果不是高电平,则多半是因为晶振没有起振。另外还要注意的地方是,

50、如果使用片内ROM的话(大部分情况下如此,现在已经很少有用外部扩ROM的了),一定要将EA引脚拉高,否则会出现程序乱跑的情况。有时用仿真器可以,而烧入片子不行,往往是因为EA引脚没拉高的缘故(当然,晶振没起振也是原因之一)。经过上面几点的检查,一般即可排除故障了。如果系统不稳定的话,有时是因为电源滤波不好导致的。在单片机的电源引脚跟地引脚之间接上一个0.1uF的电容会有所改善。如果电源没有滤波电容的话,则需要再接一个更大滤波电容,例如220uF的。遇到系统不稳定时,就可以并上电容试试(越靠近芯片越好)。(2)复位电路当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上

51、的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。常用的上电复位电路如下图A中左图所示。图中电容C1和电阻R1对电源十5V来说构成微分电路。上电后,保持RST一段高电平时间,由于单片机内的等效电阻的作用,不用图中电阻R1,也能达到上电复位的操作功能(3)单片机复位后的状态单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RA

52、M区中的内容,21个特殊功能寄存器复位后的状态为确定值,见下表。值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的韧始化部分是十分必要的。A00H,表明累加器已被清零;特殊功能寄存器 初始状态 特殊功能寄存器 初始状态 A 00H TMOD 00H B 00H TCON 00H PSW 00H TH0 00H SP 07H TL0 00H DPL 00H TH1 00H DPH 00H TL1 00H P0P3 FFH SBUF 不定 IP *00000B SCON 00H IE 0*00000B PCON 0*B PSW00H,表明选寄存器0组为工作

53、寄存器组;SP07H,表明堆栈指针指向片内RAM 07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;Po-P3FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出;IP00000B,表明各个中断源处于低优先级;IE000000B,表明各个中断均被关断;系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。51单片机在系统复位时,将其内部的一些重要寄存器设置为特定的值,(在特殊寄存器介绍时再做详细说明)至于内部RAM内部的数据则不变。8.2 软件调试程序的编写我们使用的是Keil C51。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Ke

温馨提示

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

评论

0/150

提交评论