《单片机原理与应用》-课件全套 项目1-8 单片机认识及制作- 单片机综合应用_第1页
《单片机原理与应用》-课件全套 项目1-8 单片机认识及制作- 单片机综合应用_第2页
《单片机原理与应用》-课件全套 项目1-8 单片机认识及制作- 单片机综合应用_第3页
《单片机原理与应用》-课件全套 项目1-8 单片机认识及制作- 单片机综合应用_第4页
《单片机原理与应用》-课件全套 项目1-8 单片机认识及制作- 单片机综合应用_第5页
已阅读5页,还剩375页未读, 继续免费阅读

下载本文档

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

文档简介

项目一单片机认识及制作12任务1单片机认识任务2单片机最小系统电路制作单片机认识任务131.了解单片机的概念、特点及应用。2.掌握MCS-51系列单片机的内部结构。3.能识别MCS-51系列单片机的型号参数。4.能熟记MCS-51系列单片机的引脚功能。5.能绘制单片机引脚图。4单片机是自动控制、智能检测系统的核心部件,掌握其结构、功能和作用对于设计符合需求的智能产品是十分必要的。本任务要求认识MCS-51系列单片机中具有代表性的STC89C51单片机的型号参数、引脚和引脚功能,并绘制单片机引脚图,体会单片机的主要特点及用途。56一、单片机概述1. 单片机的概念单芯片微型计算机简称单片机,它是通过在一块芯片上集成了中央处理器(centralprocessingunit,CPU)、存储器、I/O接口电路等功能部件而构成的一个完整的单芯片微型计算机,通常单片机又被称为微控制单元(MCU)。2. 单片机的特点(1)体积小,成本低,有较高的性价比。(2)集成度高,有很高的可靠性,便于生产便携式产品。(3)功耗低,电压低,抗干扰能力强。(4)扩展功能强。单片机的系统扩展和系统配置较典型、规范,便于构成各种规模的应用系统。783. 单片机的应用由于单片机具有显著的优点,它已成为科技领域的有力工具和人们生活的得力助手,它的应用遍及多个领域,如图所示。单片机的应用领域9二、MCS-51系列单片机的内部结构MCS-51系列单片机的内部结构框图MCS-51系列单片机的内部结构框图如图所示,具有代表性的STC89C51单片机的内部结构框图如下图所示,STC89C51单片机内部主要包括CPU、振荡器及时钟电路、4个8位并行I/O接口、3个16位定时器/计数器、1个串行通信接口、数据存储器、程序存储器、特殊功能寄存器、中断系统等部分。10STC89C51单片机的内部结构框图11三、MCS-51系列单片机的型号参数、封装及引脚功能1. MCS-51系列单片机的型号参数MCS-51系列单片机是对所有兼容MCS-51内核指令系统的单片机的统称,其种类繁多,发展迅速。各大厂商生产的单片机都有自己的型号参数编码规则,用户依据单片机的型号参数可以方便地了解单片机性能、封装、适用范围等信息。122. MCS-51系列单片机的封装目前单片机的种类繁多,各企业推出了适用于相关领域的封装。MCS-51系列单片机比较主流的封装有PDIP、PLCC、LQFP和SOP四种形式。3. MCS-51系列单片机的引脚功能MCS-51系列单片机中比较典型的是STC89C51单片机,通常STC89C51单片机采用PDIP40封装,PDIP40封装的STC89C51单片机共有40个引脚,如图所示,可以将引脚划分为以下4类。13PDIP40封装的STC89C51单片机引脚(1)电源引脚1)VCC(40脚):接电源正极,典型正常工作电压为+5V。2)GND(20脚):接电源负极或接地。(2)时钟引脚1)XTAL1(19脚):内部时钟电路反相放大器输入端,接外部晶体振荡器(简称晶振)的一个引脚。当直接使用外部时钟源时,该引脚接外部时钟源的输出端。2)XTAL2(18脚):内部时钟电路反相放大器输出端,接外部晶振的一个引脚。当直接使用外部时钟源时,该引脚悬空。14(3)控制脚1)RST(9脚):复位脚。当该引脚出现持续两个机器周期以上的高电平时,单片机实现复位操作。2)/VPP(31脚):外部程序存储器选择输入端/电源输入端。当

引脚接低电平时,单片机访问外部程序存储器;当

引脚接高电平时,单片机访问内部程序存储器。3)ALE/(30脚):地址锁存控制信号/编程脉冲信号输入端。4)(29脚):外部程序存储器允许输出控制端。当CPU读取外部程序存储器时,

引脚为低电平,开始从外部程序存储器读指令。15(4)I/O接口引脚1)P0口(32~39脚):既可作为输入/输出端,又可作为地址总线低8位及数据总线复用。当P0口作为8位准双向输入/输出端时,由于P0口内部无上拉电阻,所以必须外接上拉电阻;当P0口作为地址/数据总线复用时,为低8位地址/数据总线AD0~AD7,无须外接上拉电阻。2)P1口(1~8脚):作为8位准双向输入/输出端,内部带有上拉电阻。其中,P1.0和P1.1引脚可用作定时器/计数器T2的外部计数输入端(T2引脚)和触发输入端(T2EX引脚)。163)P2口(21~28脚):既可作为8位准双向输入/输出端,内部带有上拉电阻,又可作为高8位地址总线A8~A15。4)P3口(10~17脚):可作为8位准双向输入/输出端,内部带有上拉电阻。除此之外,P3口各引脚还具有第二功能,见下表。17P3口各引脚的第二功能18P3口各引脚的第二功能单片机最小系统电路制作任务2191.掌握STC89C51单片机最小系统电路的组成。2.能分析并叙述STC89C51单片机复位电路的工作过程。3.能完成单片机最小系统电路的制作。4.能测试单片机最小系统电路。20单片机是一块集成度很高的芯片,但由于晶振、开关等电路无法集成到芯片上,所以要使单片机正常工作还需要添加外部电路。本任务要求用STC89C51单片机设计并制作单片机最小系统电路。为完成此任务,需要学习时钟电路、复位电路和电源电路等相关知识。2122一、时钟电路1. 内部时钟电路STC89C51单片机的内部时钟电路如下图a所示。在XTAL1和XTAL2引脚两端跨接一个晶振和两个瓷片电容构成振荡电路,通常瓷片电容取值为47pF,晶振频率取值为12~25MHz。23STC89C51单片机的时钟电路a)内部时钟电路b)外部时钟电路2. 外部时钟电路外部时钟电路是指单片机的时钟信号由外部时钟信号提供,脉冲信号由XTAL1引脚输入,XTAL2引脚悬空。STC89C51单片机的外部时钟电路如上图b所示,在单片机时钟信号频率的工作范围内,根据用户需要的时钟工作频率,从外部输入时钟信号。24二、复位电路STC89C51单片机的复位电路如下图所示。在振荡电路运行的情况下,要实现复位操作,必须使RST引脚至少保持两个机器周期的高电平,CPU在第二个机器周期内执行复位操作,以后每一个机器周期重复一次,直到RST引脚电平变低。复位期间不产生ALE及

信号。2526STC89C51单片机的复位电路a)上电复位电路b)按键复位电路1. 上电复位电路STC89C51单片机的上电复位电路如上图a所示,STC89C51单片机最小系统电路在接上电源的瞬间,初始状态的电容没有电荷,电容两端电压不能突变,这时单片机的RST引脚电压等于电源电压,单片机复位。随着电源给电容充电,电阻上的电压逐渐减小,最后变为0V,单片机正常工作,这一过程称为上电复位。272. 按键复位电路STC89C51单片机的按键复位电路如上图b所示,当按下按键时,单片机的RST引脚连接到+5V电源为高电平,单片机复位。松开按键后,单片机正常工作。在实际工程应用中,不加电阻R2也可实现按键复位功能。28三、电源电路STC89C51单片机采用+5V电源供电。单片机的VCC

引脚连接到+5V电源,通常在电源端连接10μF和0.1μF滤波电容,为单片机提供稳定电源。单片机+5V电压常用开关电源、直流稳压电源或电池串联供电等供电方式。29项目二单片机开发软件应用3031任务1

KeilμVision4软件应用任务2

Proteus7.10软件应用任务3

在系统编程软件应用KeilμVision4软件应用任务1321.了解KeilμVision4软件的工作界面。2.能使用KeilμVision4软件创建项目工程文件。3.能使用KeilμVision4软件新建源程序文件并编写源程序。4.能使用KeilμVision4软件编译、调试和执行程序。33单片机是通过程序实现各种控制功能的。KeilμVision4软件是基于Windows平台的单片机开发环境,集编写、编译、仿真等功能于一体的软件,是单片机初学者学习MCS-51系列单片机编程最流行的软件之一。本任务要求通过完成点亮一个LED程序的编写及运行,熟练掌握KeilμVision4软件的使用方法。为完成此任务,需要学习KeilμVision4软件等相关知识。3435一、KeilμVision4软件的工作界面KeilμVision4软件的工作界面包括主菜单栏、工具栏、工程文件管理窗口、程序编辑区、信息框等,如图所示。36KeilμVision4软件的工作界面37二、项目工程文件的创建1.在KeilμVision4软件中单击主菜单栏“Project”→“NewμVisionProject”,如图所示。单击“NewμVisionProject”382.在弹出的对话框中选择保存路径,新建一个空文件夹,把项目工程文件放到里面,以避免和其他文件混合,如新建一个名为“LED”的文件夹,如图所示。新建文件夹3.选中新建的文件夹“LED”,进入此文件夹,给这个项目工程文件命名并单击“保存”按钮,如图所示。39保存项目工程文件404.在弹出的对话框的“CPU”选项卡中选择单片机厂商,在“资料库目录”中找到并选中单片机型号“AT89C51”,如图所示。5.单击“OK”按钮,一个项目工程文件创建完毕,接下来需要新建一个源程序文件。选择单片机厂商和型号41三、源程序文件的新建单击主菜单栏“File”→“New”(如图所示)或单击工具栏中的“NEW”按钮新建一个源程序文件(文本文件),出现程序编辑区,如下图所示。新建源程序文件42程序编辑区四、源程序的编写在程序编辑区中,输入C语言源程序,如图所示。43输入C语言源程序五、将源程序文件添加到项目工程中编写好源程序后,将该文件保存到项目工程文件夹中,文件扩展名为“C”,单击“保存”按钮,如图所示。44保存C语言源程序文件六、源程序的编译编译源程序是指创建能被写入单片机内部存储器中运行的十六进制文件,供Proteus软件运行使用,KeilμVision4软件中的源程序编译步骤如下。1. 设置目标文件属性在编译源程序前,先要设置目标文件属性。将光标移至最上层目录“Target1”并单击鼠标右键,在弹出的快捷菜单中设置目标文件属性,也可以直接单击“TargetOptions”按钮

,进行目标文件属性设置,如图所示。4546设置目标文件属性2. 编译源程序单击工具栏中的“Buildtargetfiles”按钮

,进行源程序编译,也可以通过主菜单栏选择“Project”→“Buildtarget”实现源程序编译。473. 查看编译结果执行编译源程序后,在“BuildOutput”窗口中可以看到编译信息。如果编译成功,“BuildOutput”窗口中会显示编译成功的信息,如图所示,并在项目工程文件夹中生成对应的目标文件LED.hex。48编译成功的信息如果源程序编译出现错误,“BuildOutput”窗口中会显示错误和警告信息,如图所示,可双击错误提示,找到错误所在的程序行并修改源程序,修改后再编译。49错误和警告信息七、源程序的调试单击工具栏中的“Start/StopDebugSession”按钮

进入调试模式,也可以通过主菜单栏“Debug”→“Start/StopDebugSession”(如下图a)或者按组合快捷键Ctrl+F5实现,若再按一次该组合快捷键,则又切换回编辑模式。调试模式运行界面如下图b所示。5051调试运行a)通过主菜单栏进入调试模式b)调试模式运行界面52调试运行a)通过主菜单栏进入调试模式b)调试模式运行界面KeilμVision4软件提供了单步运行、运行到光标行、连续运行等多种调试方式,用户可以根据需要选择合适的命令调试源程序,也可以在设置断点后,连续执行源程序进行调试。如果当源程序运行到中间时想从头再来,只要单击“Reset”按钮

即可。5354常用调试快捷按钮的说明八、存储器的查看在调试源程序时,经常需要查看存储器的内容。在调试模式下,单击主菜单栏“View”→“MemoryWindows”,即可显示或隐藏存储器窗口。存储器窗口中包含4个标签,即有4个存储器(Memory)空间。在第一个存储器空间的“Address”中输入“C:0”,即可看到一段程序存储内容,在其他存储器空间的“Address”中分别输入“X:0”“D:0”“I:0”,即可查看外部数据存储器空间、直接寻址的内部存储器空间和间接寻址的内部存储器空间,如图所示。5556存储器窗口九、外围部件的查看若要查看单片机的外围部件,则可单击主菜单栏“Peripherals”→“I/O-Ports”→“Port0”(如图所示)或单击主菜单栏“Peripherals”→“Timer”等。5758查看单片机的外围部件Proteus7.10软件应用任务2591.了解Proteus7.10软件的工作界面。2.能使用Proteus7.10软件挑选元器件并完成元器件、电源和地的放置。3.能使用Proteus7.10软件绘制电路图。4.能使用Proteus7.10软件加载程序并进行仿真运行测试。60Proteus7.10软件是一个单片机虚拟硬件平台,同时也是较为先进的单片机和嵌入式系统设计与仿真平台,它以其特有的仿真技术解决了单片机及其外围电路的设计和协同仿真问题,可以在没有实际单片机硬件的条件下,利用此软件和KeilμVision4软件,进行源程序仿真调试,以验证程序的正确性。本项目任务1中已经用KeilμVision4软件编写好了点亮一个LED的源程序,本任务要求利用Proteus7.10软件模拟单片机硬件电路,进行单片机源程序的仿真调试。为完成此任务,需要学习Proteus7.10软件等相关知识。6162一、Proteus7.10软件的工作界面双击计算机桌面上的Proteus7.10软件图标进入软件的工作界面。Proteus7.10软件的工作界面包括标题栏、菜单栏、标准工具栏、绘图工具栏、元器件选择按钮、仿真工具栏、状态栏、预览窗口、列表窗口和电路图编辑窗口等,如图所示。63Proteus7.10软件的工作界面其中,绘图工具栏为电路图的绘制提供不同的操作工具,以实现不同的功能,常用绘图工具的按钮及其功能说明见下表。64常用绘图工具的按钮及其功能说明65常用绘图工具的按钮及其功能说明66常用绘图工具的按钮及其功能说明二、工程文件的新建打开Proteus7.10软件进入其工作界面,依次选择菜单栏“File”→“NewDesign”,弹出选择模板对话框,从中选择“DEFAULT”模板,单击“OK”按钮,如图所示,再单击标准工具栏中的“SaveDesign”按钮,在弹出的对话框中输入文件名后,单击“保存”按钮,完成新建工程文件的保存,文件自动保存为“led.dsn”,其中“dsn”为Proteus电路图默认的文件扩展名。6768选择模板对话框三、元器件的提取Proteus7.10软件提供了丰富的资源用于虚拟仿真实验,含有30多个元器件库、数千种元器件。69单击Proteus7.10软件工作界面中的“PickFromLibraries”按钮,如图所示。“PickFromLibraries”按钮可以进入元器件选择(“PickDevices”)窗口,如图所示。70元器件选择窗口也可以在电路图编辑窗口空白处单击鼠标右键,选择“Place”→“Component”→“FromLibraries”进入此窗口,如图所示。71选择“FromLibraries”四、元器件、电源和地的放置1. 元器件的放置(1)选中列表窗口中的元器件,将光标移至电路图编辑窗口中,此时光标变成笔状,单击并移动鼠标可选择元器件放置的位置。72(2)再次单击,完成元器件的放置。若需连续放置同一个元器件,继续单击即可。如图所示为按上述步骤放置好相应元器件的效果图。73元器件放置的效果图2. 电源(VCC)和地(GND)的放置单击绘图工具栏中的“TerminalsMode”按钮

,在列表窗口中选择“POWER”与“GROUND”,即对应电源(VCC)和地(GND),即可将其放置在电路图编辑窗口中,如图所示。74放置电源(VCC)和地(GND)五、元器件的编辑在电路图编辑窗口中双击元器件,或者选中元器件后单击鼠标右键,在弹出的快捷菜单中选择“EditComponent”,会出现“EditComponent”对话框,在该对话框中可以修改元器件属性等。75六、电路的连接Proteus7.10软件具有自动连线功能,只需要选择连接的起始端和末端,它就会自动寻找合适路径进行连接。具体操作为:将光标放置在元器件的一端,当出现红色小方框时,单击后会自动出现导线,将导线连接到其他元器件的一端,再次单击,完成电路连接。76如图所示为完成连接后的电路图。77完成连接后的电路图七、程序的加载保存工程文件后,双击电路图中的STC89C51单片机(U1),在“EditComponent”对话框的“ProgramFile”中添加KeilμVision4软件生成的HEX文件,如图所示。78加载程序文件八、仿真的运行单击仿真工具栏中的“Play”按钮

进行电路仿真运行,观察仿真运行结果,如图所示。79仿真运行结果从仿真运行结果可以观察到:元器件的旁边有小正方形,它们表示元器件端电平的变化,红色表示高电平,蓝色表示低电平,灰色表示未接入信号或高阻态。由于STC89C51单片机的P1、P2、P3口内部含有上拉电阻,复位后默认输出高电平,故引脚处显示红色;P0口没接外部上拉电阻,处于开漏输出状态,故引脚处显示灰色,表示高阻态。80在系统编程软件应用任务3811.理解在系统编程技术的相关知识。2.掌握STC51单片机开发板的使用方法。3.掌握在系统编程软件的操作方法。4.能使用在系统编程软件下载并运行单片机程序。82对于单片机初学者而言,用Proteus软件学习单片机是一种有效的方法,但该软件是虚拟的运行环境,实时性较弱,对一些需要基于实际硬件观察出来的效果仿真不明显,而单片机开发板可以弥补软件仿真的缺陷。本任务要求通过利用STC51单片机开发板在系统编程软件点亮一个LED学习单片机开发板在系统编程软件的使用方法。为完成此任务,需要学习在系统编程软件等相关知识。8384一、在系统编程在系统编程(in-systemprogramming,ISP)是指单片机开发板上的单片机芯片可以在需要时编程写入基于用户程序最终生成的二进制代码,无须将单片机取下并使用下载器烧录,已经编程的单片机芯片也可以用ISP方式擦除或再编程。ISP的优点是不用频繁地插拔芯片,下载速度快。ISP只能在具有ISP功能的芯片中进行程序烧录。二、STC51单片机开发板单片机开发板是帮助初学者快速学习单片机的工具。如图所示是一款STC51单片机通用的多功能开发板,集实验、开发于一体,此开发板将单片机常用的外围模块,集成在一小块电路板上,具有在系统编程功能,而且自带程序烧录功能,可以对常用的STC89C51、STC89C52等单片机进行程序下载和调试。8586STC51单片机开发板三、使用ISP软件下载用户程序到STC89C51单片机使用计算机利用ISP软件下载用户程序到STC89C51单片机的一般步骤如下。1.用KeilμVision4软件编写源程序。2.编译源程序,若有语法错误,重复步骤1、步骤2。3.在计算机上安装好USB转串口驱动程序CH340SER.EXE,连接好Micro-USB数据线(如图所示)。87Micro-USB数据线(1)先不要接入Micro-USB数据线到计算机的USB接口上。(2)运行USB转串口驱动程序,单击“安装”按钮,直至出现驱动安装成功对话框。(3)将单片机开发板的串口与单片机的USB接口连接。(4)查看USB接口的虚拟串口号,具体方法为:打开计算机的设备管理器,查看USB接口的虚拟串口号,并记住此串口号。4.在线下载用户程序。运行已安装的ISP软件,按照界面提示完成下载操作。88四、使用ISP软件在线调试STC89C51单片机1.将Micro-USB数据线的Micro-B公接口连接到STC51单片机开发板上的Micro-B母座接口,将Micro-USB数据线另一端的USB接口连接到计算机的USB接口。2.在计算机上查找虚拟串口号。(1)打开“计算机管理”窗口,单击“系统工具”→“设备管理器”,进入“设备管理器”窗口,如下图所示。8990“设备管理器”窗口(2)打开“端口”项,找到连接的虚拟串口号,如图所示,此时可以看到计算机上的虚拟串口号是COM3。91虚拟串口号3.关闭STC51单片机开发板上的电源。在桌面或者安装程序文件夹中找到并运行如图所示的软件。92普中ISP软件4.打开软件界面,在“芯片类型”中选择芯片类型,打开要下载更新的程序文件(HEX文件),单击“下载程序”按钮,如图所示。93选择单片机芯片类型等5.查看下载提示信息,如图所示。94查看下载提示信息6.程序下载完成后,STC89C51单片机会自动运行所下载的程序,观察STC51单片机开发板的运行效果,若STC51单片机开发板运行效果不符合程序功能,则需重新调试程序并在线下载运行。单片机开发板硬件连接及运行效果如图所示。95单片机开发板硬件连接及运行效果项目三单片机输入输出接口应用9697任务1

LED指示灯点亮设计

任务2

LED指示灯闪烁显示设计任务3

流水灯显示设计任务4

花样彩灯显示设计LED指示灯点亮设计任务1981.了解单片机I/O接口的电路结构及应用。2.掌握C51程序的构成。3.理解单片机的进制转换关系。4.能设计LED指示灯点亮电路。5.能编写LED指示灯点亮程序并进行仿真测试。6.能与他人分析讨论,发现并解决程序编写和调试问题。99在实际应用中,物联网设备通过LED指示灯显示其运行状态,LED指示灯亮代表物联网设备正在运行,LED指示灯灭则代表物联网设备停止运行。在电路设计中经常会通过单片机I/O接口控制外围设备,单片机对LED指示灯的输出控制是单片机入门的基本控制项目。本任务要求使用单片机控制LED指示灯点亮,如图所示。100101LED指示灯点亮本任务可通过单片机P0口的一个引脚外接一个LED实现设备运行指示灯电路的设计,编程控制单片机引脚输出高、低电平进而控制指示灯的亮与灭。为完成此任务,需要学习LED指示灯控制电路等相关知识。102103一、LED指示灯控制电路的认识LED指示灯可广泛应用于舞台和广告的灯光装饰。如图所示为LED的实物和电路符号,LED有正极和负极,当正极电压大于负极电压时,LED导通发光,反之则截止熄灭。通常当LED中的电流为5mA左右时,LED即可发光,电流越大,其亮度越强,但若电流过大,会烧毁LED。因此,通常给LED串联一个220Ω的电阻即可限制LED的电流,这个电阻被称为限流电阻。104LED的实物和电路符号a)LED的实物b)LED的电路符号105如图所示为典型的单片机控制LED指示灯电路,该电路中的LEDVD正极接+5V电压,VD负极接单片机的P2.4引脚。此时,单片机P2口的P2.4引脚输出低电平,实现VD点亮;同理,如果要让VD熄灭,则需让单片机P2口的P2.4引脚输出高电平。典型的单片机控制LED指示灯电路106二、单片机I/O接口的电路结构及应用MCS-51系列单片机有4个8位的并行I/O接口,即P0~P3口,它们都是双向通道,P0~P3口的每一条I/O接口线都能独立地作为输入或输出线使用,作为输入线使用时可以输入数据,作为输出线使用时可以输出数据。1. P0口的电路结构及应用P0口的位结构电路原理图如图所示。P0口的字节地址为80H。P0口是一个8位双向I/O接口,既可作为地址/数据总线接口使用,又可作为普通I/O接口使用,所以在P0口的电路中有一个多路转换开关MUX。在内部控制信号的作用下,MUX可以分别接通锁存器输出和地址/数据总线。107P0口的位结构电路原理图1082. P1口的电路结构及应用P1口的位结构电路原理图如图所示。P1口的位结构电路原理图109P1口的字节地址为90H。P1口是一个准双向口,其输出驱动部分与P0口不同,内部有上拉电阻与电源相连(没有高阻态),所以无须外加电阻就能直接驱动电路。P1口的每一条I/O接口线都可以分别被定义为输入或输出线使用,当I/O接口线由输出线转为输入线时,必须先向对应的锁存器写入“1”,所以P1口也被称为准双向口。3. P2口的电路结构及应用P2口的位结构电路原理图如图所示。110P2口的位结构电路原理图P2口的字节地址为A0H。P2口也是一个准双向口,它有两种使用功能:作为普通I/O接口或作为外部系统扩展时的高8位地址总线。P2口用于为系统提供高8位地址,因此同P0口一样,在电路中有一个MUX,但MUX的一个输入端的信号不再是地址/数据,而是单一的地址,这是因为P2口的第二功能只能作为高8位地址总线使用。1114. P3口的电路结构及应用P3口的字节地址为B0H,它也是一个准双向I/O接口,其第一功能是可作为普通I/O接口,此时与P1口相同,也是一个准双向I/O接口。另外,由于MCS-51系列单片机的引脚数目有限,因此在P3口的位结构电路中增加了引脚的第二功能,P3口的位结构电路原理图如图所示。112P3口的位结构电路原理图三、程序的识读1. 源程序示例1132. C51程序的构成一个C51程序由一个主函数main()和若干个模块化的子函数构成,有且只有一个main()函数。除了main()函数,用户还可以根据需要自行设计自定义函数。另外,在C51程序中,程序总是从main()函数开始执行。C51程序的基本构成如下。1141153. 关于头文件reg51.h头文件定义了MCS-51系列单片机内部所有的特殊功能寄存器,其部分内容如下。1164. 关于函数C51函数由函数说明和函数体两部分组成。函数体由一对大括号“{}”构成。常见的函数结构如下。117函数示例如下。118(1)函数说明函数说明即函数的第一行,包括函数类型、函数名、函数参数表(形参)。(2)函数体函数体即函数说明部分下面的大括号“{}”内的部分。如果一个函数内有多个大括号,则最外层的一对大括号内的部分为函数体。函数体一般包括以下部分。1)声明语句:定义所用到的变量。2)执行语句:由若干条语句组成。1195. 关于赋值语句C51语句即C51语言中的操作命令,用于单片机完成特定功能。一条完整的语句必须以“;”结束,一般一条语句经过编译后生成若干条机器指令。C51语句包括声明语句、赋值语句、表达式语句、循环语句、条件语句、开关语句、复合语句、空语句和返回语句等,下面主要讲解赋值语句。1206. 关于while语句while语句是循环语句,一般格式如下。121其中,表达式是循环条件,语句组为循环体,while语句的执行过程是计算表达式的值,当值为真(非0)时,执行语句组;当值为假(0)时,退出整个while语句。while语句的执行过程如图所示。122while语句的执行过程7. 关于注释注释内容可以单独写在一行,也可以写在一条语句之后。可采用/*……*/的形式为C51程序的任何一部分添加注释,即从“/*”开始到“*/”为止的内容都将被认为是注释;“//”表示单行注释,即此注释行中符号“//”后的文字被认为是注释。123四、标识符和关键字1. 标识符变量名、常量名、数组名、函数名、文件名与类型名等统称为标识符。C51语言规定标识符只能由字母、数字和下画线3种字符组成,且第一个字符不能是数字。要注意的是,C51语言中的大写字母与小写字母被认为是不同的字符,即Sum与sum是不同的标识符。1242. 关键字关键字是编程语言保留的特殊标识符,它们具有固定的名称和含义,在程序编写中,不允许标识符与关键字同名。KeilμVision4软件除了支持ANSIC标准的32个关键字,还根据MCS-51系列单片机的特点扩展了相关的关键字。在KeilμVision4软件的文本编辑器中编写C51程序后,系统会以不同颜色显示关键字,关键字的默认颜色为蓝色。125五、单片机的进制转换关系二进制数是用0和1两个数码表示的数,它的基数为2,进位规则是“逢2进1”,借位规则是“借1当2”,如8位二进制数“00110101”。十六进制数的进位规则是“逢16进1”,用0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F表示,对应的十进制数是0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15。C51语言中十六进制数前加“0x”。126LED指示灯闪烁显示设计任务21271.了解单片机内部的时间单位及时序。2.掌握C51的数据类型和C51程序的基本结构。3.能用do-while语句和for语句编写循环程序。4.能用for语句编写延时子函数。5.能设计LED指示灯闪烁显示电路。6.能编写LED指示灯闪烁显示程序并进行仿真测试。7.能与他人分析讨论,发现并解决程序编写和调试问题。128在生产环境中,经常需要到机房查看网络设备的运行情况,通过观察设备的指示灯判断设备运行状态是否良好。本任务要求编写单片机控制LED指示灯闪烁显示程序,实现LED指示灯闪烁显示功能,即LED灭0.3s,亮0.3s,循环往复,如图所示。129LED指示灯闪烁显示本任务可用单片机P2口的1个引脚外接1个LED实现LED指示灯闪烁显示的电路设计,编程控制单片机引脚输出低、高电平进而控制指示灯亮、灭,指示灯亮、灭时间间隔为0.3s,从而使其闪烁起来。为完成此任务,需要学习单片机内部的时间单位及时序、C语言程序设计等相关基础知识。130131一、单片机内部的时间单位及时序1. 单片机内部的时间单位单片机各部分能协调一致地工作是因为它们是在时钟脉冲的控制下,一个节拍一个节拍地去完成相应的工作,完成规定操作所需要的时间称为周期,MCS-51系列单片机各种周期的相互关系如图所示,这里涉及振荡周期、状态周期、机器周期和指令周期等概念。132MCS-51系列单片机各种周期的相互关系(1)振荡周期振荡周期是指为单片机提供定时信号的振荡源的周期,用P表示,若为内部产生方式,则单片机的振荡周期为石英晶体的振荡周期,通常振荡周期又称时钟周期。单片机外接的石英晶体有6MHz、11.0592MHz、12MHz和24MHz等规格。(2)状态周期状态周期用S表示。通常,MCS-51系列单片机的一个状态周期为一个振荡周期的2倍。133(3)机器周期单片机完成一个基本操作所需的时间称为一个机器周期,它是一个时间基准,就像日常生活中使用的秒一样。MCS-51系列单片机的一个机器周期包含12个振荡周期。(4)指令周期单片机完成一条指令所需要的时间称为指令周期。2. 单片机内部指令的执行时序单片机执行各种操作时,CPU严格按照规定的时间顺序完成相关的工作,这种时间上的先后顺序称为时序。134二、C51的数据类型C51定义了标准C语言的所有数据类型,同时对标准C语言进行了扩展,更加注意对系统资源的合理利用。C51的基本数据类型见下表。135C51的基本数据类型1. C51的基本数据类型(1)字符型(char)字符型(char)分为有符号字符型(signedchar)和无符号字符型(unsignedchar),默认为有符号字符型。有符号字符型数据长度为1B,表示的数值范围为-128~+127,无符号字符型表示的数值范围为0~255。136(2)整型(int)整型(int)分为有符号整型(signedint)和无符号整型(unsignedint),默认为有符号整型。无符号整型表示的数值范围为0~65535,有符号整型表示的数值范围为-32768~+32767,字节中的最高位表示数据的符号,“0”表示正数,“1”表示负数。137(3)长整型(long)长整型(long)分为有符号长整型(signedlong)和无符号长整型(unsignedlong),默认为有符号长整型。无符号长整型表示的数值范围为0~4294967295,有符号长整型表示的数值范围为-2147483648~+2147483647,字节中的最高位表示数据的符号,“0”表示正数,“1”表示负数。138(4)浮点型(float)浮点型(float)数据的长度为4B(32位),在十进制数中具有约7位有效数字,许多复杂的数学表达式都采用浮点型的变量类型。(5)指针型(*)指针型(*)本身就是一个变量,在这个变量中存放的是指向另一个数据的存储单元地址。指针变量要占据一定的内存单元,在C51中它的长度一般为1~3B。1392. C51扩展的数据类型为了更加有效地利用单片机的硬件资源,C51对标准C语言进行了扩展,增加了表所列的扩展的数据类型。140C51扩展的数据类型(1)位变量(bit)位变量(bit)可以定义一个位类型变量,但是不能定义位指针,也不能定义位数组。位变量的值只能是一个二进制位“0”或“1”。(2)特殊功能寄存器(sfr)特殊功能寄存器(sfr)占用1B,其数值范围为0~255,利用它可以访问单片机内部所有的8位特殊功能寄存器。定义方法为:sfr特殊功能寄存器=地址常数。141(3)位特殊功能寄存器(sfr16)位特殊功能寄存器(sfr16)占用2B,其数值范围为0~65535。定义方法与sfr相同。(4)可寻址位变量(sbit)可寻址位变量(sbit)的作用是可以访问芯片内部RAM的可寻址位或特殊功能寄存器的可寻址位。可寻址位变量(sbit)常用的定义格式有以下3种。1423. 常量常量包括整型(十进制、十六进制等)常量、浮点型常量、字符型常量和字符串常量等。4. 变量变量是一种在程序运行过程中其值能不断变化的量。要在程序中使用变量必须先用标识符作为变量名,并指出所用的数据类型等,这样编译系统才能为变量分配相应的存储空间。定义一个变量的格式如下。143其中,[]内的内容是可选项。变量的存储种类有4种,即自动(auto)、外部(extern)、静态(static)和寄存器(register)。(1)自动(auto)自动(auto)用于定义局部变量,这些变量在函数内部自动创建和销毁,它们具有块作用域特点。如果自动变量在定义时未初始化,其值默认为随机数。(2)外部(extern)外部(extern)用于声明在其他文件中定义的全局变量,表示变量可以在多个文件中共享。外部变量的初始值由定义时指定。144(3)静态(static)静态(static)用于修饰全局变量或局部变量,表示变量在程序运行期间一直存在。静态变量在程序开始运行时初始化,如果未明确指定初始值,则初始值为0;如果已明确指定初始值,则初始值为常量表达式指定的值。(4)寄存器(register)寄存器(register)用于定义局部变量,表示变量尽可能地存储在寄存器中以提高访问速度。寄存器变量是动态局部变量,具有局部作用域,存放在CPU的寄存器或动态存储区中,如果寄存器变量没有存放在通用寄存器中,便按自动变量处理。145三、宏定义C51语言同C语言一样,允许用一个标识符表示一个字符串,称为宏,该标识符称为宏名。宏定义语句用预处理命令“#define”来定义,在程序中可以用标识符代替定义后的字符串,格式如下。146此语句定义了PI表示圆周率π值3.1415926。此语句定义了uchar表示数据类型unsignedchar,经过定义的数据类型unsignedchar在程序中就可以用uchar来表示。147四、加减算术运算符1. 加运算符(+)加运算符(+)用于实现加法运算,示例如下。“y=x+1;”表示x值保持不变,把x值加1赋值给y。“x=x+1;”表示x值加1,x值发生变化。2. 自增运算符(++)自增运算符(++)用于将整数值增加1,示例如下。“x=i++;”表示先把i值赋值给x,i值再加1。“x=++i;”表示i值先加1,再赋值给x。1483. 减运算符(-)减运算符(-)用于实现减法运算,示例如下。“y=x-1;”表示x值保持不变,把x值减1赋值给y。“x=x-1;”表示x值减1,x值发生变化。4. 自减运算符(--)自减运算符(--)用于将整数值减少1,示例如下。“x=i--;”表示先把i值赋值给x,i值再减1。“x=--i;”表示i值先减1,再赋值给x。149五、循环语句1. do-while语句do-while语句的一般格式如下。150此循环与while循环的区别在于:它先执行一次循环中的语句组,再判断表达式是否为真,如果为真,则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环体。do-while语句的执行过程如图所示。151do-while语句的执行过程2. for语句在C51语言中,for语句使用较为灵活,它最简单的格式如下。152for语句的执行过程如图所示,描述如下。153for语句的执行过程(1)执行“循环变量赋初始值”,一般为一个赋值表达式。(2)判断“循环条件”,若其值为真(非0),则先执行for语句中指定的内嵌语句组,再执行第(3)步;若其值为假(0),则执行第(5)步。(3)执行“修改循环变量”,定义每一次循环后变量如何变化。(4)转回第(2)步继续执行。(5)循环结束,执行for语句下面的语句。154六、C51程序的基本结构设计程序时,应先根据程序的功能要求选用不同的程序结构,然后绘制流程图,最后根据流程图编写程序。C51程序共有3种结构,即顺序结构、分支结构和循环结构,如图所示。155C51程序的结构a)顺序结构b)分支结构c)循环结构1. 顺序结构顺序结构是一种最简单、最基本的结构,它是一种无分支的程序结构,即按照程序编写的顺序依次执行每一条指令。2. 分支结构分支结构不是按顺序执行指令,它是先依据实际问题做出判断,再根据判断条件的满足与否,产生一个或多个程序分支,以实现不同的程序流向。3. 循环结构循环结构是依据需要对某一段程序重复执行多次,以缩短程序的长度,节省程序的存储空间。156七、延时程序设计在单片机程序设计中,单片机指令的执行时间是微秒级的,若让LED指示灯和数码管显示的状态能让人眼识别出来,就必须延时。在单片机控制系统中,延时程序是常用的程序之一,延时的控制方法有两种:软件延时和定时器延时,本任务主要介绍软件延时的方法。157软件延时的原理是利用CPU执行一段程序,只消耗CPU一定的时间,不做其他具体的功能控制,其主要设计思想是利用多次循环来延长程序的执行时间,从而实现延时功能。延时的时间=程序指令执行的总机器周期数×机器周期。若假设单片机外接石英晶振的频率为12MHz,则单片机一个机器周期为1μs。158for循环延时子函数时间示意图如图所示。159for循环延时子函数时间示意图流水灯显示设计任务31601.掌握位运算符的使用方法。2.掌握循环移位函数的使用方法。3.能设计流水灯显示电路。4.能编写流水灯显示程序并进行仿真测试。5.能与他人分析讨论,发现并解决程序编写和调试问题。161每当夜幕降临,道路上各式各样广告牌上漂亮的霓虹灯都会让人感到赏心悦目,为夜幕中的城市增添了一抹亮丽色彩,其实,这些霓虹灯的亮灭控制方式和流水灯是一样的,实际生活中的广告彩灯、装饰彩灯都是流水灯的典型应用。本任务要求用单片机控制8个LED以流水灯的方式按照排列顺序逐个点亮后熄灭,即先点亮VD1,延时0.5s后熄灭;再点亮VD2,延时0.5s后熄灭……直到VD8熄灭,再从头开始。162本任务可在单片机P2口外接8个LED,按照如图所示的示意图实现流水灯显示功能。163流水灯显示示意图如需让接在P2.0引脚上的LED(VD1)点亮,只要将P2.0引脚的电平设置为低电平即可;相反,如需让VD1熄灭,就将P2.0引脚的电平设置为高电平。同理,接在P2.1~P2.7引脚的其他7个LED的点亮和熄灭方法与VD1相同。只要依次让P2.0~P2.7引脚的电平变化,就可以控制8个LED从左到右依次点亮并熄灭,然后无限循环,从而实现流水灯的效果。为完成此任务,需要学习位运算符以及循环移位函数等基础知识。164165一、C51语言的位运算符C51语言直接用于MCS-51系列单片机硬件编程,通常要求程序对二进制数进行运算或处理,所以提供了强大、灵活的位运算功能。位运算符是指按变量的二进制位进行逻辑运算的运算符。C51语言提供的位运算符见下表。166C51语言提供的位运算符1. 按位取反运算符“~”按位取反运算符“~”为单目运算符,即它的操作数只有一个,其功能是对操作数按位取反。按位取反运算规则:~1=0,~0=1。1672. 按位左移运算符“<<”按位左移运算符“<<”用于将一个数的各位全部左移若干位,高位若干位移出,低位若干位补0。可以看出,temp的各位左移1位后,其值是原来的2倍。由此可见,数据左移n位相当于该数据乘以2n。1683. 按位右移运算符“>>”按位右移运算符“>>”用于将一个数的各位全部右移若干位,低位若干位移出,高位若干位补0。可以看出,右移和左移相似,只是移动的方向不同。数据右移1位相当于该数据除以2,右移n

位相当于该数据除以2n。1694. 按位逻辑与运算符“&”按位逻辑与运算符“&”用于将参加运算的2个数据按二进制位进行“与”运算。按位逻辑与运算规则:1&1=1,1&0=0,0&1=0,0&0=0。170在单片机的实际应用中,按位逻辑与运算符“&”经常用于实现一些特定的功能,示例如下。(1)位清0按位逻辑与运算符“&”常用于将变量中的某一位或某几位清0。171(2)位检测若想知道一个变量中某一位是“1”还是“0”,可以通过按位逻辑与运算符对该位进行检测。1725. 按位逻辑异或运算符“^”按位逻辑异或运算符“^”用于将参加运算的2个数据按二进制位进行“异或”运算。按位逻辑异或运算规则:1^1=0,1^0=1,0^1=1,0^0=0。2个数据相同为0,不同为1,即某一位与1异或就会被取反,与0异或就保持不变。1736. 按位逻辑或运算符“|”按位逻辑或运算符“|”用于将参加运算的2个数据按二进制位进行“或”运算。按位逻辑或运算规则:1|1=1,1|0=1,0|1=1,0|0=0。也就是说,某一位与1相或结果为1,与0相或就保持不变。174二、循环移位函数C51语言的编译器中包含丰富的库函数,使用库函数可以大大简化用户的程序设计,提高编程效率。库文件中有相应的头文件给出函数原型声明,在使用时,必须在源程序的开始处使用预处理命令“#include”将相关的头文件包含进来。在移位操作中,移位运算符“<<”和“>>”是先把相应的位数据移出,然后将移位操作后空出的位补0。有时,移位操作需要的是循环移位,即把前面移出的位数据补到后面空出的位中,而不是对后面空出的位补0,这时用循环移位函数就相对容易实现了。175循环移位函数原型声明在头文件intrins.h中,循环移位函数有循环左移函数“_crol_”和循环右移函数“_cror_”两种。循环左移函数“_crol_”是将移出的高位数据补到低位中;同理,循环右移函数“_cror_”是将移出的低位数据补到高位中,函数格式如下。176如图所示是循环左移函数“_crol_”移动1位数据的规律。177循环左移函数“_crol_”移动1位数据的规律如图所示是循环右移函数“_cror_”移动1位数据的规律。178循环右移函数“_cror_”移动1位数据的规律花样彩灯显示设计任务41791.掌握数组的定义和格式。2.掌握调用数组元素的方法。3.能设计花样彩灯显示电路。4.能编写花样彩灯显示程序并进行仿真测试。5.能与他人分析讨论,发现并解决程序编写和调试问题。180生活中,节日彩灯显示效果多种多样,如图所示,彩灯显示效果可以利用单片机的控制功能实现。181节日彩灯本任务要求用单片机控制8个LED构成的彩灯实现先双灯由两边向中间流动、再双灯由中间向两边流动的显示效果,每次双灯点亮0.5s后熄灭,即先点亮VD1、VD8,延时0.5s后熄灭;再点亮VD2、VD7,延时0.5s后熄灭……直到VD1、VD8熄灭,再从头开始。本任务可在单片机P2口外接8个LED,花样彩灯显示效果示意图如图所示,即8个LED构成的彩灯先由两边向中间依次点亮2个LED,再由中间向两边依次点亮2个LED,每次2个LED点亮0.5s后熄灭。为完成此任务,需要学习数组等C51程序设计相关基础知识。182183花样彩灯显示效果示意图184一、数组在程序设计中,为了方便处理,需要把具有相同类型的若干数据项按有序的形式组织起来,这些按序排列的同类数据项的集合称为数组,组成数组的各个数据项称为数组元素。数组元素的数据类型就是数组类型。1. 一维数组(1)一维数组的定义一维数组定义的一般格式如下。其中,类型说明符表示数组类型,数组名是一个标识符,常量表达式的值表示数组元素的个数,即数组长度。185(2)一维数组的初始化一维数组初始化的一般格式如下。186对一维数组元素的初始化赋值可以用以下方法实现。1)在定义数组时给全部数组元素赋初始值。1872)在定义数组时只给部分数组元素赋初始值。定义数组a有10个元素,但花括号内只提供5个初始值,这表示只给前5个元素赋初始值,后5个元素值为0。1882. 二维数组(1)二维数组的定义二维数组定义的一般格式如下。定义table为1个3行4列的整型数组,该数组元素共有3×4=12个。这12个元素分别为a[0][0]、a[0][1]、a[0][2]、a[0][3]、a[1][0]、a[1][1]、a[1][2]、a[1][3]、a[2][0]、a[2][1]、a[2][2]、a[2][3]。189(2)二维数组的初始化二维数组的初始化与一维数组类似,可以按行分别赋值,也可以按行连续赋值。1)按行分别给二维数组元素赋值。这种方法是用第1个花括号内的数给第1行元素赋值,用第2个花括号内的数给第2行元素赋值,以此类推,即按行分别赋值。1902)按行给二维数组元素连续赋值。按顺序4个元素为1组,第1组为第1行元素值,第2组为第2行元素值,以此类推,即按行连续赋值。191二、调用数组元素的方法定义数组后,就可以对数组中的元素进行调用操作了。调用数组元素的一般格式如下。下标可以使用常量、变量及它们的表达式,但必须有确定的值。下标的范围为[0]~[数组长度-1],不能超过数组长度,若调用越界可能会产生意想不到的后果。需要注意的是,每次只能调用1个数组元素,而不能一次调用整个数组。192项目四数码管显示设计193194任务1

数码管静态显示设计

任务2

数码管动态显示设计数码管静态显示设计任务11951.了解数码管的结构。2.掌握数码管显示的工作原理。3.掌握数码管静态显示的相关知识。4.能设计数码管静态显示电路。5.能编写数码管静态显示程序。6.能与他人分析讨论,发现并解决程序编写和调试问题。196在物联网设备中常用数码管显示温度、时间等信息。本任务要求设计一个数码管显示器,实现间隔1s循环显示数字0~9的功能。本任务可在单片机P0口外接一个数码管实现数码管静态显示功能。为完成此任务,需学习数码管的结构和静态显示编程等知识。197198一、数码管的认识1. 数码管的结构数码管是一种发光的半导体元器件,其基本单元是LED。当对数码管相应的引脚输入合适的电流时,对应的LED会导通点亮,从而显示出字形。数码管具有显示清晰、亮度高、接口方便、价格便宜等优点。199数码管实物图如图所示。数码管实物图200数码管由8个LED组成,其显示的字形由7个条形LED(称为段)形成的“8”字形和小数点组成。数码管的段和小数点通常使用字母a、b、c、d、e、f、g、dp标识。通过控制不同段的导通组合,可以显示出不同的字形。数码管的结构如图所示。数码管的结构2. 数码管显示的工作原理按照LED连接方式的不同,数码管可分为共阴极数码管和共阳极数码管两种。共阴极数码管是指将LED的阴极连接在一起组成公共阴极的数码管。当共阴极数码管公共端com接GND,并且某一段的LED阳极接高电平时,相应段的LED即可点亮;反之,将共阴极数码管某一段的LED阳极接低电平时,相应段的LED即可熄灭。共阳极数码管是指将LED的阳极连接在一起组成公共阳极的数码管。当共阳极数码管公共端com接+5V电压,并且某一段的LED阴极接低电平时,相应段的LED即可点亮;反之,将共阳极数码管某一段的LED阴极接高电平时,相应段的LED即可熄灭。201202如图所示分别为共阴极数码管和共阳极数码管的内部接法。数码管的内部接法a)共阴极数码管的内部接法b)共阳极数码管的内部接法2033. 数码管的字形段码若要使数码管显示出需要的字形,需给相应的引脚提供显示该段的编码(简称段码)电平。数码管字形显示段和段码位的对应关系见下表,其中D7~D0是指数码管显示段接到单片机I/O接口的对应引脚。数码管字形显示段和段码位的对应关系使用共阳极数码管显示时,数据“0”表示对应段的LED点亮,数据“1”表示对应段的LED熄灭;反之,使用共阴极数码管显示时,数据“0”表示对应段的LED熄灭,数据“1”表示对应段的LED点亮。204二、数码管的静态显示1. 数码管的静态显示概述数码管的静态显示是指数码管显示字形时,相应的LED点亮,单片机I/O接口输出字形段码,数码管显示相应的字形并一直保持不变,直到I/O接口输出新的字形段码。在静态显示方式下,每个数码管的段控制线是独立的,分别接到单片机的8个I/O接口引脚上,公共端com接+5V电压或GND。数码管的静态显示方式具有电路结构简单、显示稳定、程序容易编写等优点,缺点是占用单片机的I/O接口资源较多。2052. 数码管静态显示的驱动电路(1)单片机I/O接口直接驱动电路单片机I/O接口直接驱动电路如下图所示,单片机I/O接口通过限流电阻与共阳极数码管的引脚相连接。限流电阻的大小选择与LED的限流电阻选择相同,阻值一般为220Ω。206207单片机I/O接口直接驱动电路(2)锁存器驱动电路由于单片机I/O接口的驱动电流受到限制,采用直接驱动电路控制数码管显示时,会造成单片机功耗提高,负载过重,影响数码管显示亮度。为了弥补单片机I/O接口直接驱动电路的缺陷,可以采用锁存器驱动电路间接增大数码管驱动电流,保证数码管显示亮度,降低单片机功耗。208如图所示的锁存器驱动电路是单片机I/O接口通过74LS373锁存器进行数据锁存,实现数码管的静态显示。209锁存器驱动电路3. 单片机I/O接口直接驱动数码管静态显示的程序示例如果单片机直接驱动共阳极数码管,采用静态显示方式显示数字“1”,则其程序如下。210数码管动态显示设计任务22111.掌握数码管动态显示的原理。2.能识读数码管动态显示的驱动电路。3.能设计数码管锁存器驱动电路。4.能编写简单的数码管动态显示程序。5.能与他人分析讨论,发现并解决程序编写和调试问题。212设备仪表、计时器等通常会显示多位数字,往往需要多位数码管作为显示设备。本任务要求设计1个4位数码管显示器,并在其上分别显示“1”“2”“3”“4”。213本任务可通过单片机I/O接口外接4个数码管实现。为了节约成本、简化电路,可选用4位一体数码管(内部集成4个数码管)作为数码管显示器,采用动态显示方式,利用人眼视觉暂留效应达到稳定不闪烁的显示效果,如图所示。为完成此任务,需学习数码管动态显示的原理、取整运算符和取余运算符等相关知识。214数码管显示器215一、数码管动态显示的原理数码管的动态显示指将所有数码管引脚a、b、c、d、e、f、g、dp分别连接起来作为段选端,每个数码管的公共端com作为位选端。数码管动态显示时,段选端上的字形段码决定数码管上显示的字形,而位选端决定点亮哪一位数码管,单片机轮流控制位选端以选通某一位数码管,并且单片机轮流控制段选端输出字形段码以实现在该位数码管上显示对应的字形。由于人眼视觉暂留效应,人们看到的数码管动态显示为所有数码管都在同时显示不同的字形。数码管动态显示时,每位数码管稳定显示需要的时间约为2ms。数码管动态显示连接电路具有功耗低、占用单片机I/O接口少等特点。216二、数码管动态显示的驱动电路数码管的动态显示具有节省I/O接口的优点,但与静态显示相比,其显示亮度较低,因此单片机的动态显示需要配备合适的驱动电路。当数码管公共端的电流较小时,可以使用单片机I/O接口直接驱动电路;当数码管公共端的电流较大时,需要外接驱动电路来提高数码管显示亮度,常采用锁存器驱动电路。217如图所示为2位数码管锁存器驱动电路框图,单片机输出的段码数据和位码数据通过74LS373锁存器驱动数码管。2182位数码管锁存器驱动电路框图三、数码管动态显示的程序示例共阳极数码管选用锁存器驱动电路,采用动态显示方式显示“12”。编程时,在动态显示过程中需添加消隐程序,以避免显示重影。在上图中,若单片机P3口连接位码锁存器驱动电路,P2口连接段码锁存器驱动电路,参考程序如下。219220221四、数制的权位数码管显示3位十进制数时,需要先分解出个位、十位、百位上的数字,再将其传送到数码管显示,这通常要运用C51语言中的取整运算和取余运算来完成。2221. 运算符(1)取整运算符“/”取整运算符“/”又称除法运算符,表示把一个数进行除法运算后取整数。(2)取余运算符“%”取余运算符“%”表示把一个数进行除法运算后取余数。2232. 权位的分解下面以1个4位十进制数5678为例介绍如何分解十进制权位。(1)千位权位数字的分解要将十进制数5678的千位权位数字5分解出来,在C51语言中只要运用除法运算将5678除以1000,所得结果就是5,余数678被舍弃,用C51语言表示如下。224(2)百位权位数字的分解在分解千位权位数字时,产生的余数678含有百位权位数字6,可以用与分解千位权位数字类似的处理方法,前提是得到余数678。处理的方法为先用除千取余运算得到余数678,再用除百取整运算得到数字6,用C51语言表示如下。第一步取余运算:5678%1000;

//取余运算后值为678第二步余数除百取整运算:678/100;

//取整运算后值为6225(3)十位权位数字的分解在除百运算时产生的余数78含有十位权位数字7,可以用与分解百位数字类似的处理方法分解十位权位数字,前提是得到余数78。处理的方法为先用除百取余运算得到余数78,再用除十取整运算得到数字7,用C51语言表示如下。第一步取余运算:5678%100;

//取余运算后值为78第二步余数除十取整运算:78/10;

//取整运算后值为7226(4)个位权位数字的分解个位权位数字的分解简单,只要将十进制数直接除十取余即可,用C51语言表示如下。227项目五中断控制应用228229任务1

直流电动机控制直流电动机控制任务12301.掌握中断的概念和功能。2.掌握中断控制相关寄存器的相关知识。3.了解中断响应过程。4.能编写外部中断服务程序。5.能通过中断相关知识设计直流电动机控制电路。6.能编写直流电动机控制程序。7.能与他人分析讨论,发现并解决程序编写和调试问题。231物联网终端设备通常需要单片机具备实时响应外部指令的能力。本任务要求设计一个直流电动机控制系统,实现直流电动机正反转及停止控制。要求选用合适的单片机、直流电动机和按键,用单片机开发软件绘制直流电动机控制电路图,编写源程序,并用软件进行仿真。232233本任务可通过单片机的P3.0、P3.1引脚分别外接正转和反转控制按键实现电动机正反转控制。电动机停止控制需要用到单片机内部中断功能,可通过单片机的P3.2引脚外接停止按键实现电动机停止控制功能。为完成此任务,需要学习MCS-51系列单片机的中断控制和中断服务程序编写等知识。234一、中断系统1. 中断的概念当单片机CPU在处理某事件时,外界发来紧急事件请求,要求单片机CPU暂停当前事件,转去处理紧急事件,处理完成后再回到原来事件被中断的地方继续执行,该过程被称为中断。235单片机CPU中断事

温馨提示

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

评论

0/150

提交评论