收藏 分销(赏)

单片机方波脉冲计数控制-设计说明书.doc

上传人:天**** 文档编号:4755612 上传时间:2024-10-12 格式:DOC 页数:32 大小:486.50KB
下载 相关 举报
单片机方波脉冲计数控制-设计说明书.doc_第1页
第1页 / 共32页
单片机方波脉冲计数控制-设计说明书.doc_第2页
第2页 / 共32页
点击查看更多>>
资源描述
桂 林 电 子 科 技 大 学 微 机 综 合 设 计 设 计 报 告 指导老师:吴 兆 华 学 生:fdb 学 号:1000150310 目录 一、设计题目 2 二、设计内容与要求 2 三、设计目的和意义 2 四、设计任务分析 2 五、系统硬件电路 3 5.1 电路原理图绘制 7 5.1.1 电路图绘制要点 7 5.1.2 硬件电路制作 8 5.2 硬件电路说明 8 5.2.1 单片机基本知识 8 5.2.2 AT89S51单片机介绍 11 5.2.3最小系统控制部分 14 5.2.4 数码管显示电路部分 17 六、软件设计 20 6.1程序流程图 20 6.2程序源代码 22 八、调试过程 27 8.1 硬件调试 27 8.1.1 静态调试 27 8.1.2 动态调试 27 8.2 软件调试 29 8.3 调试收获与改进意见 29 九、设计总结 30 十、参考文献 31 一、设计题目 用8031单片机控制可测方波1~100Hz,并显示每分钟计数的脉冲。 二、设计内容与要求 设计方波脉冲控制显示系统,用51单片机控制输出方波输出,频率范围为1~100Hz,并用数码管显示每分钟计数的脉冲数和当前频率,用两个按键分别控制频率的增减,同时用一个复位键,可以快速回到起始状态。 三、设计目的和意义 1、 通过方波脉冲控制系统的设计,将单片机原理课上所学的知识融会贯通、加深理解。培养独立设计、制作和调试单片机应用系统的能力,熟悉单片机应用系统的软硬件调试方法和系统的设计开发过程,为今后的工作实践活动夯实基础。 2、 通过方波脉冲计数控制系统的设计,掌握51系列单片机的内部定时/计数器的功能和使用方法;掌握单片机外部中断的应用和程序的编程方法;掌握数码管的使用和编程方法。通过设计方案分析、选择和设计,设计并搭制硬件电路,编写控制程序等一系列工作,掌握单片机应用的基本方法,更重要的是学会一种科学的解决问题的逻辑思维,和完成任务的方法。 3、 培养一个解决困难问题的积极心态,为今后在工作上奠定坚实的基础。 四、设计任务分析 设计题目要求用单片机控制可测方波脉冲1~100Hz,并显示每分钟计数的脉冲数。由要求可知道,任务包括方波的产生和方波脉冲数的显示两个部分。方波由单片机内部定时器来产生,通过改变其定时初值来改变方波的频率,在硬件电路中可利用按键来控制频率的增减。方波的波形利用示波器来观察。 由此,可有几个方案来实现题目的要求。 方案一:51单片机最小系统,外接上一个数码管显示电路用以显示每分钟的脉冲数。数码管的断码选择端直接与单片机的P0口连接,位码选择端与P2口连接。利用改变定时初值的方式来改变方波频率。这个方案的优点是硬件电路简单,节省元器件,程序编写容易。但是缺点也明显,只用一个数码管,无法显示当前的脉冲频率,而且无法用硬件实现频率的+1,-1的变化。虽然实现了题目的基本功能,但是功能简单有限,也就达不到课程设计的目的了。以下是方案一的电路图: 图1 方案一原理图 方案二:51单片机最小系统,加上两个数码管显示电路,分别显示脉冲数和频率。此外,每个数码管用74HC573数据锁存器来驱动,增加两个按键用来控制频率的增减。这个方案的优点是能利用数码管显示当前的频率和脉冲数,并且能用按键控制频率的大小。数码管利用数据锁存器驱动,驱动能力更强,还可以支持I/O口扩展。缺点是,数码管电路布线比较困难,跳线多。 综合分析以后,我们决定用方案二,虽然方案二难度相比方案一而言难度加大了,但是功能实现得很彻底。当然,面对PCB布局布线的困难,我们只能采用双面板的形式。我们也相信,这个对我们而言将更具挑战性。下面就对方案二进行详细分析。 五、系统硬件电路 硬件电路主要包括51单片机最小系统(晶振电路和复位电路)、数码管显示电路。原理图如下。 图1 51单片机最小系统原理图 图2 51单片机最小系统PCB图 图3 数码管显示电路原理图 图4 数码管显示电路PCB图 图5 元器件清单 5.1 电路原理图绘制 5.1.1 电路图绘制要点 绘制电路原理图要熟悉运用绘制软件(Protel 99 SE或者Altium Designer软件),绘制的最终目的是得到美观、清晰的图。因而在绘制前根据需要,对绘图环境参数设计;绘制时正确元件载入(特别是元器件的封装形式一定要选着正确)与编辑;元件载入后正确连线,调整得到美观的原理图 电路图绘制注意事项: 1、元器件之间连线用Wire命令而不是用Line命令,虽然从表面上看,两者都是直线,只是颜色稍有些不同,但用Wire命令放置的导线是具有电气特性的,而用Line命令放置的直线是不具有电气意义的,两者具有根本区别的。 2、注意理解说明文字(Annotation)和网络标号(Net Label)的区别:说明文字是没有电气特性的,只是纯粹的文字解释,而网络标号是有电气特性的,它可以把电路图具有相同网络标号的电气连线是连在一起的,即在两个以上没有相互连接的网络中,把应该连接在一起的电气连接点定义成相同的网络标号,可以使它们在电气含义上属于真正的同一网络。   3、导线的端点与元件引脚的端点相连,而不是把导线和元件的引脚重叠,最常见的错误是当导线与元件引脚重叠时,这时软件会自动在元件引脚的端点加一节点,这时再把节点删除掉,认为就这样就正确了,实际上如果只是为了得到一张原理图,这样做并没有什么不妥,但却不能得到正确的网络表。 4、导线与导线之间不要有重叠。 5、不要在同一地方放两个以上相同的元件(如两个电源地符号重叠在一起)。 6、在放置电源地符号时,电源地符号的显示类型(Style)为Power Ground,这时Power Port的属性对话框中网络标号(Net)的内容默认是不显示的,因此有些初学者在放置电源地符号时,没有留意网络标号的内容,致使有网络标号(Net)的内容网络标号为“GND”,有些网络标号的内容却为“VCC”,如果纯粹只为得到一张原理图,这样做是没有问题的,但是若利用自动布线来设计PCB板时,却会造成电源和地短路,从而使整块PCB板报废。正确的做法是在放置电源地符号符号,把Power Port的属性对话框中网络标号(Net)的内容全部设置为GND。 7、在绘制电路原理图时,通常总线、总线分支线和网络标号是一起存在的,要注意总线和总线分支线不具有电气特性的,而网络标号是具有电气特性的,因此在放置总线时不能用加粗了的导线来替代,也不能用导线来替代总线分支线,总线分支线和元件引脚之间不能直接连在一起,而应通过导线接在一起,网络标号应放在导线上,不能放在元件引脚上,不能用说明文字(Annotation)来替代网络标号(Net Label)。 8、元器件封必需要有合适的封装方式。没封装会影响后面生产PCB原理图。封装形式不正确,后面生产PCB原理图时,期间的形式可能跟元器件的真实外形尺寸不相似。 5.1.2 硬件电路制作 材料准备 元器件测试 PCB制作 组装和焊接 测试 5.2 硬件电路说明 5.2.1 单片机基本知识 图6 单片机的基本组成 单片机各部分的组成及功能的说明: (1)处理器 单片机的中央处理器(CPU)是单片机的核心,完成运算和控制操作。中央处理器主要包括运算器和控制器两部分。 单片机CPU和通用微处理器基本相同,只是增加了“面向控制”的处理功能,如位处理、查表、多种跳转等。 (2)运算器 运算器主要用来实现算术、逻辑运算和位操作。其中包括算术和逻辑运算单元ALU、累加器ACC、B寄存器、程序状态字PSW和两个暂存器。 ALU是运算电路的核心,实质上是一个全加器,完成基本算术和逻辑运算。算术运算包括加、减、乘、除、增量、减量、BCD码运算;逻辑运算包括“与”、“或”、“异或”、左移位、右移位和半字节交换,以及位操作中的位置位、位复位和位取反等。 暂存器1和暂存器2是ALU的两个输入,用于暂存参与运算的数据。ALU的输出也是两个:一个是累加器,数据经运算后,其结果又通过内部总线返回到累加器;另一个是程序状态字PSW,用于存储运算和操作结果的状态。 累加器是CPU使用最频繁的一个寄存器。ACC既是ALU处理数据的来源,又是ALU运算结果的存放单元。CPU中的数据传送大多通过累加器实现,因此累加器又是数据的中转站。如单片机与片外ROM或I/O扩展口进行数据交换必须通过ACC来进行。 B寄存器在乘法和除法指令中作为ALU的输入之一,另一个输入来自ACC。运算结果存于AB寄存器对中。 (3)控制器 控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件。控制器只要包括程序计数器PC、PC增量器、指令寄存器、指令译码器、定时及控制逻辑电路等。其功能是控制指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。 程序计数器PC(Program Counter)是控制器中最基本的寄存器,是一个独立的计数器,存放着下一条将要从程序存储器中取出指令代码的地址。PC的基本工作过程是:读指令时,PC将其内容送给地址寄存器,作为所取指令的地址给程序存储器,然后程序存储器按此地址输出指令字节,同时PC自动加1,指向下一条指令的地址。PC的变化轨迹决定了程序的流程。PC是不可访问的,顺序执行程序时自动加1;执行转移程序时,自动将其内容更改成指向转移目的地址。程序计数器的计数宽度决定了程序存储器的地址范围。在AT89单片机中,PC是一个16位的计数器,可对64KB程序存储器进行寻址。复位时PC的内容为0000H,说明程序应从程序存储器0000H单元开始执行。 指令寄存器是用来存放指令操作码的专业寄存器。执行程序时,首先要从程序存储器中取出指令,送给指令寄存器;指令寄存器再将其输出到指令译码器;指令译码器将该指令进行译码,根据指令性质送到定是逻辑和条件转移逻辑电路,产生定时控制信号,完成程序的执行过程。 定时及控制逻辑电路根据指令的性质发出一系列定时和控制信号,控制计算机个组成器件进行相应的操作,执行指令。 (4)存储器 单片机内部的存储器分为程序存储器和数据存储器。 程序存储器主要用来存储指令代码和一些常数及表格。程序在开发调试成功之后就永久性地驻留在程序存储器中,在停机断电状态下代码也不会丢失。程序存储器在操作运行过程中只读不写,因而又被称为只读存储器Rom(Read Only Memory)。 标准型AT89单片机的程序存储器采用4KB的快速擦写存储器Flash Memory,编程和擦除完全是电气实现的。编程和擦除速度快,可以使用通用的编程器脱机编程,也可以在线编程。 Flaash的应用,是AT89系列单片机的显著特点之一。 在单片机中,用随机存储器RAM(Random Access Memory)来存储程序运行期间的工作变量和数据,所以又称为数据存储器。一定容量的RAM集成在单片机内,提高了单片机的运行速度,也降低了功耗。 标准型AT89单片机含有128×8位RAM,采用单字节地址。实际上片内的字节地址空间是256个(00H—FFH),其中高128字节地址(80H—FFH)被特殊功能寄存器SFR占用,用户只能使用低128字节单元(00H—7FH)来存放可读/写的数据。 (5)外围接口电路 CPU与外部设备的信息交换都要通过接口电路来进行。这主要是为了解决CPU的高速处理能力和外部设备的低速运行之间的速度匹配问题,并可以有效地提高CPU的工作效率;同时也提高了CPU对外的驱动能力。输出接口电路具有锁存器和驱动器,输入接口电路具有三态门控制,成为接口电路的基本特征。 由于受集成度的影响,片内存储器和外围接口电路的规模和数量都受到一定的限制。为了适应外部复杂的控制功能,单片机具有较强的扩展功能,可以方便地扩展外部存储器ROM、RAM和I/O口等。 (6)时钟振荡电路 时钟振荡电路是CPU所需要的各种定时控制信号的必备单元。CPU只有在时序信号和控制信号的协调工作下,才能执行各种指令。单片机芯片内部有时钟电路,但石英晶体和微调电容需要外接。 系统的主控芯片选用AT89S51单片机。AT89S51单片机是低功耗的、具有4KB在线可编程Flash存储器的单片机,与51系列单片机的指令系统和引脚兼容。片内Flash可允许在线重新编程,也可使用通用非易失性存储器编程器编程。它将通用CPU和在线可编程Flash集成在一个芯片上,形成了功能强大、使用灵活和具有较高性能价格比的微控制器。 5.2.2 AT89S51单片机介绍 AT89S51单片机是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器,既可在线编程(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位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作 输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻 拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存 储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器 的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89S51的一些特殊功能口,如下表格所示: 表2 P3口管脚功能 管脚 功能 管脚 功能 P3.0 RXD(串行输入口) P3.4 T0(计数器0外部输入) P3. 1 TXD(串行输出口) P3.5 T1(计数器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时, /EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system 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)电路,片内时钟振荡器。 2、AT89S51的运行模式 (1)空闲模式 在空闲模式下,CPU处于睡眠状态,振荡器和所有片内外围电路仍然有效。空闲模式可由软件设置进入(设IDL=1)。在这种模式下,片内RAM和SFR中的内容保持不变。空闲模式可通过任何一个允许中断或硬件复位退出。 若用硬件复位方式结束空闲模式,则在片内复位控制逻辑发生作用前长达约两个机器周期时间内,器件从断点处开始执行程序。片内硬件禁止访问内部RAM,但不禁止访问端口。为避免采用复位方式退出空闲模式时对端口的不应有的访问,在紧随设置进入空闲指令(即设IDL=1)的后面,不能是写端口或外部RAM的指令。 (2)掉电模式 引起掉电模式的指令是执行程序中的最后一条指令(使PD=1的指令)。在掉电模式下,振荡器停止工作,CPU和片内所有外围部件均停止工作,但片内RAM和SFR中的内容保留不变,直到掉电模式结束。 退出掉电模式可用硬件复位或任何一个有效的外部中断INT0和INT1。复位可重新设置SFR中的内容,但不改变片内RAM中的内容。在Vcc电源恢复到正常值并维持足够长的时间之后,允许振荡器恢复并达到稳定,方可进行复位,以退出掉电模式。 3、MCS-51系列单片机的并行I/O口 接口电路是微机必不可少的组成部分,并行输入确出接口是CPU和外部进行信息交换的主要通道。MSC-51系列单片有4个8位并行双向I/O口P0~P3,共32根I/O线。每一根线能独立用作输入或输出。单片机可以外接键盘、显示器等外围设备.还可以进行系统扩展,以解决硬件资源不足问题。4个并行口都是双向口,既可以输入又可以输出。P0、P2口经常作外部扩展存储器时的数据、地址线,P3口除作I/O口外,每一根都有第二功能。这4个I/O口结构基本相同,但仍存在差别。 (1) P1口是最常用的I/O口。如图4所示,因为不作数据地址线,其结构中没有数据地址线,也没有多路开关MUX,输出驱动电路接有上拉电阻。P1口输入输出时与P0作I/O时相似,输出数据时.先写入锁存器,经Q端反相,再经场效应管反相输出到引脚。输入时,先向锁存器写l,使v管截止.外部引脚信号由下方读缓冲器送入内部总线,完成读引脚操作。P1口也可以读锁存器。外部提升电阻将引脚拉升至高电平,但输人的低电平信号能将其拉低,不会影响低电平的输入。 图8 P1口一位结构 (2)P3口为双功能口,当P3口作为通用I/O口使用时,它为准双向口,且每位都可定义为输入或输出口,其工作原理同P1口类似。 (3)P3口还具有第二功能,其引脚描述,P3口特殊功能 口线 特殊功能 信号名称 P3.0 RXD 串行输入口 P3.1 TXD 串行输出口 P3.2   外部中断0输入口 P3.3   外部中断1输入口 P3.4 T0 定时器0外部输入口 P3.5 T1 定时器1外部输入口 P3.6 WR 写选通输出口 P3.7 RD 读选通输出口 5.2.3最小系统控制部分 (1)晶振电路 图9 晶振电路 晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化。 晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。 一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容,请注意一般IC的引脚都有等效输入电容,这个不能忽略。 一般单片机中的晶振的负载电容为22pf或30pf ,如果再考虑元件引脚的等效输入电容,则两个30pf的电容构成晶振的振荡电路就是比较好的选择。 在单片机中,晶振电路的设计一定要和单片机靠近,路线尽量短,路线过长有可能会导致工作不稳定,时有时无,而且还有尽量避免在高频电路附近工作。在89S51中晶振起振的两端稳定电压是1.7V/2.1V,用的是两个30Pf的电容。我们因此选择两个30Pf的电容与12MHZ的晶振一起构成晶振回路。 判断单片机芯片及时钟系统是否正常工作有一个简单的办法,就是用万用表测量单片机晶振引脚(XTAL2、XTAL1脚)的对地电压,以正常工作的单片机用数字万用表测量为例:XTAL2脚对地约2.24V, XTAL1脚对地约2.09V。对于怀疑是复位电路故障而不能正常工作的单片机也可以采用模拟复位的方法来判断,单片机正常工作时第9脚对地电压为零,可以用导线短时间和+5V连接一下,模拟一下上电复位,如果单片机能正常工作了,说明这个复位电路没有问题。 电源引脚Vcc和Vss Vcc:电源端,接+5V。 Vss:接地端。 时钟电路引脚XTAL1和XTAL2 XTAL1:接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,若使用外部TTL时钟时,该引脚必须接地。 XTAL2:接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,若使用外部TTL时钟时,该引脚为外部时钟的输入端。 系统扩展时,ALE用于控制地址锁存器锁存P0口输出的低8位地址,从而实现数据与低位地址的复用。 系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路(如图5所示)。AT89S单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。 外部程序存储器读选通信号,是读外部程序存储器的选通信号,低电平有效。 程序存储器地址允许输入端 /VPP。 当为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFH时,将自动转向执行片外程序存储器指令。当为低电平时,CPU只执行片外程序存储器指令。 输入/输出口引脚P0、P1、P2和P3。 P0口(P0.0~P0.7):该端口为漏极开路的8位准双向口,负载能力位8高LSTTL负载,它为8位地址线和8位数据线的复用端口。 P1口(P1.0~P1.7):它是一个内部带上拉电阻的8位准双向I/O口,P1口的驱动能力为4个LSTTL负载。 P2口(P2.0~P2.7):它为一个内部带上拉电阻的8位准双向I/O口,P2口的驱动能力也为4个LSTTL负载。在访问外部程序存储器时,它作存储器的高8位地址线。 P3口(P3.0~P3.7):P3口同样是内部带上拉电阻的8位准双向I/O口,P3口除了作为一般的I/O口使用之外,其还具有特殊功能。 (2)复位电路 复位使单片机处于起始状态,并从此状态开始运行MCS5-51单片机RST引脚为复位端,该引脚连续保持2个机器周期(24个时钟振荡周期)以上的高电平。可使单片机复位。本文使用的是外部复位电路,单片机在启动后要从复位状态开始运行,因此上电时要完成复位工作,称上电复位,如图10-a所示。上电瞬间电容两端的电压不能发生突变,只有RST端为高电平+5v,上电后电容通过及RC电路放电RST端电压逐渐下降,直至低电平0V,如图10-c所示。适当选择R、C的值,使RST端的高I电平维持2个机器周期以上即可完成复位。单片机L在运行过程中,出于本身或外并干扰的原因会导致出错。这时可按复位键以重新开始远行,按键复位可分为按键电平复位或按健脉冲复位,如图10-b所示。按键脉冲复位和上电平复值的原理是一样的,都是利用RC电路的放电原理,如图10-d所示。让RST端能保持一段时间的高电平,以完成复位,按键电平复位时,按键时间也应保持在两个机器周期以上。 (a) 上电复位 (b) 按键电平复位 (c) RC放电过程 (d) 电平复位过程 图10 单片机常用复位电路 5.2.4 数码管显示电路部分 (1)74HC573介绍 74HC573是一种包含八进制3态非反转透明锁存器,常用于数码管、按键等的控制,图11是其引脚图。 图11 74HC573引脚图 输入是和标准 CMOS 输出兼容的;加上拉电阻,他们能和 LS/ALSTTL 输出兼容。 当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。 ×\u36755X出能直接接到 CMOS,NMOS 和 TTL 接口上 ×\u25805X作电压范围:2.0V~6.0V ×\u20302X输入电流:1.0uA ×CMOS 器件的高噪声抵抗特性 ·三态总线驱动输出   ·置数全并行存取   ·缓冲控制输入   ·使能输入有改善抗扰度的滞后作用      原理说明:   M54HC563/74HC563/M54HC573/74HC573的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出   将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,   新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器。 数据锁存 当输入的数据消失时,在芯片的输出端,数据仍然保持; 这个概念在并行数据扩展中经常使用到。 图12 74HC573真值表 1脚三态允许控制端低电平有效 1D~8D为数据输入端 1Q~8Q为数据输出端 LE为锁存控制端;OE为使能端 图13 74HC573内部原理图 (2)数码管介绍 数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。 ① 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 ② 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。 图14 四位数码管引脚图 四位数码管引脚如上图所示,在实际判别中,让有小数点的端对着自己,上面引脚的功能为1,a,f,2,3,b下面引脚为e,d,p,c,g,4。 此次设计采用共阴极接法的数码管,高电平点亮。通过软件程序定义断码和位码,通过74HC573锁存器将断码和位码送到数码管即可控制各个位的数码管显示的数字。 六、软件设计 6.1程序流程图 6.2程序源代码 #include"reg52.h" unsigned char count; unsigned char fenmu; // fenmu用来表示方波频率 sbit pwm=P3^0; // 表示脉冲电平状态 sbit jia=P3^7; sbit jian=P3^6; // P3.6,P3.7口控制方波频率的增减 unsigned char jd,b; sbit dula=P2^6; // P2.6口输出数码管断码 sbit wela=P2^7; // P2.7口输出数码管位码 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;j>0;j--) for(k=125;k>0;k--); } void Time0_Init() // 内部定时器0初始化、写入初值 { TMOD=0X00; EA=1; // CPU中断开放 TH0=(8192-4607)/32; TL0=(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)) //一个方波脉冲高电平时间为 100/fenmu ms pwm=1; else pwm=0; count=(count+1); count=count%(200/fenmu); //方波周期为200/fenmu ms } // 此方波的占空比为50% void keyscan() // 按键扫描 { if(jia==0) // 按键按下时为低电平 { delay(10); // 调用消抖 if(jia==0) { if(fenmu>=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() //共阴极数码管显示方波频率以及每分钟脉 冲数 { 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;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服