版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机项目创建项目一项目1单片机项目创建项目2基于I_O口的电路设计项目3基于定时_计数器的万年历电路设计项目4基于串口通信的电路设计项目5基于AD_DA转换的数字电压表与函数信号发生器电路设计项目6基于液晶显示器的风扇控制电路设计项目7基于矩阵键盘的电子密码锁电路设计与基于点阵屏的动态显示电路设计全套可编辑PPT课件
拓展学习提问:同学们,大家各抒己见,探讨下学好单片机,对将来就业有什么样的帮助?你打算如何学好这门课程?单片机项目创建项目说明本项目主要介绍单片机的发展与用途、单片机的学习方法、单片机的C51语言、单片机开发软件Keil的安装与使用,以及电路仿真软件Proteus的使用。本项目共设置了安装Keil软件与创建Keil工程、创建Proteus工程与设计仿真电路等实训模块,要求学生学会正确安装Keil软件,并保证安装后的Keil软件能正常使用;正确创建Proteus工程,并能在元件库中找到仿真电路所需的元器件进行电路绘制。单片机项目创建(1)了解单片机的发展与用途。
(2)了解单片机的学习方法。
(3)掌握单片机C51语言的基本语法。知识目标:能力目标:(1)能熟练安装Keil软件与创建Keil工程。(2)能熟练创建Proteus工程与设计仿真电路。学习目标拓展学习C51语言是基于单片机的C语言,与标准C语言不同的是C51语言运行于单片机平台上,并根据单片机的硬件特点扩展了部分关键字。
C51语言项目基础知识项目基础知识一、单片机的发展单片机(SingleChipMicrocomputer,SCM)是一种集成电路芯片,它采用超大规模集成电路技术将具有数据处理能力的中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、多种I/O(输入/输出)口和中断系统、定时/计数器等部件【有些还包括显示驱动电路、脉宽调制电路、多路转换电路、A/D(模拟/数字)转换电路等】集成到一块硅片上,属于一个小而完善的微型计算机系统,在工业控制领域被广泛应用。单片机也被称为微控制器,最早被用在工业控制领域。但现在的单片机是由芯片内仅有CPU的专用处理器发展而来的。拓展学习集成电路芯片是一种将大量晶体管、二极管、电阻、电容等元件集成在硅片上形成的微型电路结构。它通常包括一个硅基板、电路、固定封环、接地环和防护环等部件。集成电路芯片的发展遵循摩尔定律,通过缩小晶体管的尺寸来提升计算能力和性能。然而,随着尺寸微缩接近物理极限,传统的集成电路芯片面临设计周期长、成本高的问题,因此集成芯片(IntegratedChips)作为一种新兴技术应运而生。
集成电路芯片拓展学习脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。它通过高分辨率计数器对方波的占空比进行调制来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字信号,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通,即直流供电被加到负载上;断,即直流供电被断开。只要有足够的带宽,任何模拟信号都可以使用PWM进行编码。
脉宽调制电路拓展学习微控制器是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机。
微控制器项目基础知识早期的单片机都是4位或8位的,如Intel的8031单片机,它因为简单可靠且性能优良而获得了很多好评。此后,Intel公司又在8031单片机的基础上研发出了MCS-51系列单片机,基于这一系列的单片机系统直到现在还在被广泛使用。随着工业控制领域对单片机要求的提高,市场上出现了16位单片机,但因其性价比不理想,当时并未得到广泛应用。20世纪90年代后期,单片机的性能得到了跨越式的发展。随着Inteli960系列处理器,特别是ARM系列处理器的广泛应用,32位单片机迅速取代了16位单片机而成为市场主流产品。项目基础知识目前,高端32位单片机主频已经超过300MHz,大量专用的嵌入式操作系统被广泛应用于各系列的单片机上,掌上电脑和手机里甚至可以直接使用专用的Windows和Linux操作系统的高端单片机。与此同时,单片机的价格也大幅下降,普通型号的51单片机出厂价格在1元左右,高端型号的STM32F407单片机出厂价格大约为20元。现在,几乎每件电子产品中都会用到单片机。例如,手机、计算器、家用电器、电子玩具、掌上电脑以及鼠标等产品中都有单片机。汽车上一般会配备几十个单片机,复杂的工业控制系统中甚至可能配有数百个单片机。拓展学习主频即CPU的时钟频率,计算机在时钟信号的控制下分步执行操作,每个时钟信号周期完成一步操作。时钟频率的高低在很大程度上反映了CPU速度的快慢。
主频拓展学习嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
嵌入式操作系统项目基础知识二、单片机的用途单片机经历了几十年的发展,其应用遍布各个领域。导弹的导航装置,飞机上的各种仪表控制装置,计算机的网络通信与数据传输系统,工业自动化过程的实时控制和数据处理系统,各种智能IC(集成电路)卡,汽车的安全保障系统,录像机、摄像机、全自动洗衣机及程控玩具、电子宠物的控制系统等都离不开单片机。此外,自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械中也有单片机。点击图标查看
什么是单片机163项目基础知识如工业控制中的数据采集系统、通信系统、信号检测系统、无线感知系统、测控系统、机器人等,以及常见的工厂流水线的智能化管理系统、电梯智能化控制系统和各种报警系统等。(2)工业控制:如电压表、功率计、示波器、各种分析仪等。采用单片机的仪器、仪表实现了数字化和智能化,而且其功能比采用单纯数字电路的仪器、仪表更为强大。(1)智能仪器:项目基础知识如电饭煲、洗衣机、电冰箱、空调、电视机、其他音响视频设备和电子称量设备等。(3)家用电器:如小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、移动电话、集群移动通信、无线电对讲机等。现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信。(4)网络和通信:如医用呼吸机、各种医疗分析仪、监护仪、超声诊断设备及病床呼叫系统等。(5)医用设备:项目基础知识如汽车中的发动机控制器、基于CAN(控制器局域网)总线的汽车发动机智能电子控制器、导航系统、防抱死制动系统、胎压检测系统等。(7)汽车电子:某些单片机可用于实现特定功能,在各种电路中可以将它们作为其中一个模块来使用。一般不要求用户了解这种模块化的微小系统的内部结构,而只需了解其输入输出信号及系统能够实现的功能。(6)模块化系统:项目基础知识2.
掌握数字电路知识1.掌握模拟电路知识3.
掌握C语言知识掌握模拟电路基础知识后,不仅能看懂别人设计的电路,还能使自己设计的电路更可靠。单片机的概念、术语、硬件结构和原理都与数字电路有关。如果数字电路基础知识扎实,理解复杂的单片机硬件结构和原理就容易一些。学习C语言,需要重点掌握的知识有关键字、标识符、运算符、变量类型及取值范围、数组、条件判断语句、循环语句、跳转语句、开关语句和函数结构等。三、单片机的学习方法(一)基础理论支撑项目基础知识(二)基础理论支撑学习编写程序的过程如下。(1)构思。看例程题目先试着构思编程思路。(2)研究。收集相关程序代码,研究他人的成功编程思路,并总结自己思路的欠缺处。(3)动手。模仿别人的设计动手编写相似程序,领会其中每一条语句的作用。(4)修改。试着按照自己的思路修改程序的不足处,比较程序运行效果,领会其中的奥妙。点击图标查看
学习单片机需要准备什么项目基础知识(三)硬件分析与设计设计者应深入细致地调研和分析,准确理解项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须达成的功能。原理图设计是硬件电路设计的核心。其主要工作流程为合适的元器件选型、必要的计算分析、参数搭配、仿真工具的运用及仿真电路的验证等。使用原理图可将这些流程用图形化的语言表达出来。1.分析设计需求2.分析设计需求设计原理图项目基础知识C语言是一种编译型程序设计语言,它既具有高级语言的特点,也具备汇编语言的功能。相对于汇编语言,使用C语言开发系统可以缩短开发周期、增强程序的可读性,并且便于改进、扩充和移植程序。四、单片机的C51语言项目基础知识因为C语言程序本身并不依赖于硬件开发平台,所以对程序不做修改或做少量修改就可以将其移植到不同的单片机中。目前,使用C语言进行程序设计已经成为单片机软件开发的主流。基于单片机的C语言称为C51语言。与标准C语言不同的是,C51语言运行于单片机平台上,并根据单片机的硬件特点扩展了部分关键字。项目基础知识(一)标识符与关键字标识符是表示程序中自定义对象名称的符号。其中,自定义对象可以是常量、变量、数组、结构、语句标号以及函数等。(1)标识符的第一个字符必须是字母或者下划线,不能为数字。(2)针对C51语言标识符,应区分大小写。例如,“ch1”和“Ch1”表示两个不同的标识符。(3)用户自定义的标识符不能与系统预留的关键字相同。1.标识符项目基础知识2.关键字关键字是C51编译器预留的一些特殊标识符,它们具有特定的含义和用法。C51语言继承了ANSIC标准定义的32个关键字,见表1-1。表1-1C51语言的关键字项目基础知识(续表)项目基础知识(续表)项目基础知识(续表)项目基础知识(续表)项目基础知识此外,C51语言又结合单片机硬件的特点扩展了19个关键字,包括_at_、idata、sfr16、alien、interrupt、small、bdata、large、_task_、code、bit、pdata、using、reentrant、xdata、compact、sbit、data和sfr等。项目基础知识Keil软件中的C51编译器支持的数据类型见表1-2。表1-2C51编译器支持的数据类型(二)数据类型项目基础知识bit是C51语言中扩展的数据类型,它可以定义一个位变量,且定义位变量时可以为变量赋值,但它不能定义位指针或位数组。位变量的取值是一个二进制位,非0即1。该数据类型的定义格式如下:1.bit拓展学习提问:如何更好地记忆和掌握单片机的指令即其功能?项目基础知识sbit也是C51语言中扩展的数据类型,利用它可以访问单片机内部RAM中位地址空间或特殊功能寄存器中的可位寻址的位。该数据类型的定义格式如下:2.sbit例如:项目基础知识(三)常量与变量1.常量在程序运行过程中,将值不能被修改的量称为常量,如固定的数据表、字符等。常量的数据类型有整型、浮点型、字符型、字符串型和位标量型等。项目基础知识(三)常量与变量1.常量1)整型常量整型常量的表示方法有多种。(1)采用十进制表示,如1236、0、-849等。(2)也可以采用十六进制表示,采用此进制表示时应以0x开头,如0xC8、-0x5A等;如果是长整型数据,那么需要在数字后面加上字母L,如1034L、004L、750L等。项目基础知识2)浮点型常量浮点型常量有十进制和指数两种表示形式。(1)十进制浮点型常量由数字和小数点组成,整数或小数部分为0时可以省略不写,但必须保留小数点,如0.666、.35、37.465、0.0、600.等。(2)指数浮点型常量表示形式为:[±]数字[.数字]e[±]数字。[]中的内容为可选项,如124e4、9e7、-3.5e-4等。项目基础知识3)字符型常量将单个字符放在单引号内的常量就是字符型常量,如ˈaˈˈdˈ等。有一类字符型常量专门用来表示控制字符,如回车符、换行符等,它们被称为转义字符,其表示方式是在字符前面加上一个反斜杠“\”,如“\n”。常用的转义字符见表1-3。项目基础知识表1-3常用的转义字符项目基础知识4)字符串型常量该常量通常由放在双引号内的一个或多个字符组成,如“test”“OK”等。当双引号内没有字符,该字符串为空字符串。在C51语言中,字符串型常量是被当作字符类型数组来处理的。在存储字符串时,系统会在字符串尾部加上转义字符“\0”作为该字符串的结束符。例如,字符串型常量“A”和字符型常量ˈAˈ是不同的,前者在存储时多占用了一个字节的空间。项目基础知识5)位标量型常量该常量是C51语言的一种扩展数据类型,它的值是一个二进制数。例如,定义位标量型常量False和True:项目基础知识2.变量在程序运行过程中,值可以改变的量称为变量,C51编译器支持的数据类型均可定义变量。要在程序中使用变量,必须先定义变量,即指定变量名,并指出变量对应的数据类型和存储类型,这样编译系统才能为变量分配相应的存储空间。变量的定义格式如下:项目基础知识1)局部变量定义变量时,在变量名前面加上关键字auto,即把该变量定义为自动变量。它一般出现在函数内部或复合语句中,其作用范围是本函数或复合语句内部,如果省略关键字auto,那么系统默认该变量为自动变量。在程序执行过程中,自动变量的存储空间是动态分配的。当程序执行到该变量的声明语句时,编译器会根据变量类型自动为其分配存储空间;执行完毕函数或复合语句后,自动变量的存储空间将立刻被取消,自动变量失效。项目基础知识2)全局变量此类变量以关键字extern作为标识。全局变量一般定义在所有函数的外部,其作用范围是从全局变量定义的位置到源文件结束,它可以被作用范围内的任何函数调用。全局变量有时也称为外部变量。项目基础知识3)静态变量此类变量以关键字static作为标识。从变量的作用范围来看,静态变量和自动变量类似,其作用范围是定义该变量的函数内部。如果静态变量定义在函数外部,它将具有全局变量的作用范围。从存储占用的角度来看,静态变量和全局变量类似,一旦被分配存储空间,它就始终占有该存储空间,直至程序运行结束。项目基础知识4)寄存器变量单片机的CPU寄存器中也可以保存少量的变量,将这种变量称为寄存器变量。寄存器变量以关键字register作为标识。单片机对寄存器变量的读写速度要远高于对其他类型变量的访问速度,所以把最频繁使用的变量定义为寄存器变量可以有效地提高程序运行速度。项目基础知识3.变量的初始化及赋值1)变量的初始化变量的初始化是指定义变量时给变量赋一个默认值,全局变量(包括静态全局变量)一般在定义时被初始化,局部变量(包括静态局部变量)是在运行程序进入定义它们的函数或复合语句时才被初始化。所有的全局变量和静态变量在没被明确初始化时都会被系统自动清零,而局部变量和寄存器变量在未被赋值前其值是不确定的。项目基础知识赋予全局变量和静态变量的初值必须是常数表达式,而赋予自动变量和寄存器变量的初值可以是任意表达式,这个表达式可以是常数、变量和函数。例如:项目基础知识2)变量的赋值变量赋值是指给已定义的变量赋一个具体值。常见的变量赋值有以下几种类型。(1)给整型变量和浮点型变量赋值。赋值格式如下:例如:项目基础知识C51语言中给多个变量赋同一数值时允许使用连等的方式。例如:项目基础知识(2)给字符型变量赋值。可将字符型常量、字符的ASCII值或转义字符等赋给字符型变量。例如:项目基础知识(四)运算符与表达式算术运算符是执行算术运算的操作符,包括加、减、乘、除和取余等。常用的算术运算符见表1-4。1.算术运算符表1-4算术运算符项目基础知识人们常用关系运算符来比较两个变量的大小,运算结果为1或者0,关系运算符见表1-5。2.关系运算符表1-5关系运算符项目基础知识逻辑运算符是执行逻辑运算的操作符号,包括与(AND)、或(OR)、非(NOT),逻辑运算的最终结果为真(值为1)或假(值为0)。逻辑运算符见表1-6。3.关系运算符表1-6逻辑运算符项目基础知识布尔运算符与逻辑运算符类似,不同之处在于逻辑运算的最终结果为真或假,而布尔运算的结果是一个具体数据。布尔运算符见表1-7。4.布尔运算符表1-7布尔运算符项目基础知识常见的赋值运算符是“=”,由它又衍生出多种赋值运算符,见表1-8。5.赋值运算符表1-8赋值运算符项目基础知识自增/自减运算符包括自增与自减运算符,见表1-9。6.自增/自减运算符表1-9自增/自减运算符项目基础知识自增运算符++及自减运算符--的作用是让变量的值加1或减1。但自增/自减运算符都有前置与后置之分,前置、后置决定了变量使用与计算(加1或减1)的顺序。(1)自增运算符前置,如++i,是先将i的值加1,再使用加1后i
的值。(2)自增运算符后置,如i++,是先使用i当前的值,再将i的值加1。(3)自减运算符前置,如--i,是先将i的值减1,再使用减1后i的值。(4)自减运算符后置,如i--,是先使用i当前的值,再将i的值减1。项目基础知识在一个表达式中可能包含多个由不同运算符连接起来的、具有不同数据类型的数据对象。由于表达式中有多种运算,采用不同的运算顺序会得出不同的运算结果。因此,当表达式中含有多种运算时,必须使操作数按照一定的顺序进行结合,这样才能保证运算的合理性和运算结果的正确性、唯一性。7.运算符的优先级项目基础知识运算符的计算顺序就是通常所说的优先级,运算符的优先级见表1-10。括号的优先级最高,赋值运算符的优先级最低。在同一表达式中,先计算优先级高的运算符对应的操作数,后计算优先级低的运算符对应的操作数;若参与运算的运算符为同一优先级,则按结合性原则进行计算。项目基础知识表1-10运算符的优先级项目基础知识(五)常见的程序结构循环结构是为程序中需要反复执行某个功能而设置的一种结构,它通常由循环体和循环条件构成。循环结构根据循环条件判断是否继续执行循环体。C51语言提供了3种循环结构:for语句、while语句和do-while语句。1)for语句For语句的一般形式如下:1.循环结构项目基础知识其中,表达式1为赋值语句,对循环变量进行初始化赋值;表达式2为关系或逻辑表达式,其值用于判断循环条件是否成立,取值为真或假;表达式3定义循环变量在每次循环后的变化方式。例如:项目基础知识2)while语句while语句的特点是先判断循环条件表达式,如果表达式的值为真,就执行循环体中的语句;如果表达式的值为假,就结束循环,程序继续执行循环结构外的下一条语句。其语句格式如下:项目基础知识3)do-while语句do-while语句的特点是先执行一遍循环体再判断循环条件。其语句格式如下:该语句在执行时要先执行一次do后面的语句,然后判断表达式的值是否为真。如果表达式的值为真,就再次执行do后面的语句;如果表达式的值为假,就结束循环并继续执行循环结构外的后续语句。项目基础知识选择结构根据条件决定程序的走向,C51语言提供的选择语句有if-else语句及switch语句。1)if-else语句if-else语句,也称条件选择语句。在执行时,需要先对条件进行判断,再根据判断结果执行不同的语句。其语句格式如下:2.选择结构该语句需要先判断表达式的值是否成立,如果成立,则执行语句1,否则执行语句2。项目基础知识有时简单的if-else语句不能满足实际应用,也可以使用if-else的多重条件判断语句来编写程序。其语句格式如下:执行该语句时,先判断表达式1是否成立,如果成立,就执行语句1;如果不成立,再判断表达式2是否成立,如果成立,就执行语句2,否则判断表达式3;如果表达式3成立,则执行语句3,如不成立,就执行语句4。项目基础知识2)switch语句switch语句为程序的走向提供多重选择,因而被称为多分支选择语句。这种选择方式不存在优先等级的问题。其语句格式如下:项目基础知识当switch后面表达式的值与某一case后面的常数值相等时,就执行该case后面的语句。如果遇到break语句,就退出switch语句。当表达式的值与所有case后面的常数值都无法匹配时,就执行default后面的语句。在使用switch语句时要注意以下几点。(1)每个case后面的常数值必须是互不相同的。(2)每个case和default出现的次序不影响程序的执行结果。(3)如果遗忘了case后面的break语句,那么程序在执行了当前case语句后不会退出switch语句,而是继续执行后续的case语句。项目基础知识(六)数组、指针与函数1)数组的声明数组也是一种变量,它将相同数据类型的若干个变量以同一个变量名称来表示。数组的声明格式如下:1.数组例如,声明一个含有5个字符的数组:该字符数组共包含5个变量,分别是LPC[0]~LPC[4]。由于C51语言中没有“字符串”这种数据类型,所以字符数组也常用来存放字符串。项目基础知识2)数组的赋值声明数组的同时也可以对其赋初值。例如:经过上述声明后,LPC[0]=ˈAˈ,LPC[1]=ˈBˈ,LPC[2]=ˈCˈ,LPC[3]=ˈDˈ,LPC[4]=ˈ\0ˈ。若声明时不知道数组的长度,也可将数组的长度省略,交由程序处理。例如:声明整型或浮点型数组时,如需指定其初值,可采用的赋值方式如下:项目基础知识1)指针的定义指针是用来存放变量地址的变量,所以使用前也需要先定义。定义格式如下:2.数组例如,声明一个名为ptr的指针:也可以将同类型的变量与指针放在一起声明。例如:项目基础知识与指针息息相关的运算符是“&”,该运算符的功能是取变量的地址。它可以将指定变量的地址放入指针变量。常见的语句形式如下:执行上述语句后,a变量的地址被放入了ptr1指针变量中。该语句如果用于数组变量,可以先获取数组的第一个元素的地址,例如:执行上面的语句后,Num数组的首地址将被放入ptr1指针变量中。若要将Num[0]的内容输出到P2变量,可使用的语句如下:项目基础知识2)指针变量的运算若先使指针变量p指向数组a(即p=a),则有以下几种运算(p前带*号,取指针指向的数组元素值;p前不带*号,指向数组元素的地址,不取值)。(1)p++(或p+=1),该操作将使指针变量p指向下一个数组元素的地址,即a[1]的地址。(2)*p++,该操作先执行*p,即先取a[0]的值;再执行p++,将指针变量p指向下一个数组元素的地址。元素值取a[0]且不加1,指针指向的地址加1项目基础知识(3)(*p)++,表示p所指向的元素值加1,而不是p加1。例如,p=&a[0],且a[0]=3,那么执行完(*p)++后,a[0]=4。取到a[0]元素值后,元素值加1,指针指向的地址不变。(4)若p指向当前数组中第i
个元素,则有以下几种运算。①*p--与a[i--]等价,相当于先执行*p,然后再使p自减。②*(++p)与a[++i]等价,即先执行p自加操作,再执行*p运算。③*(--p)与a[--i]等价,即先执行p自减操作,再执行*p运算。项目基础知识函数由函数头和函数体两部分组成。函数头由返回值类型(类型说明符)、函数名和形式参数表组成。其中:返回值类型可以是某个数据类型;函数名是用户为函数起的名字,用来唯一标识一个函数;形式参数表可以有零个或多个变量,在进行函数调用时,实际参数将被赋值到这些变量中。函数体则是函数实现自身功能的一组语句。函数的一般形式如下:3.函数项目基础知识其中,函数的返回值类型是void;函数名是Sub_name;函数的变量是x;“inti,j;”和“unsignedcharLED;”是函数中的变量声明语句;“LED=0xff;”是函数体程序区;“/*关闭LED*/”是程序注释内容。注意:main()函数与普通函数的结构类似,两者的区别在于普通函数能够接受从函数外部传递的变量,即形式参数,而main()函数没有形式参数。例如:项目分析项目分析为完成本项目实训,需要先下载安装所需软件Keil、Proteus。若下载安装过程中出现问题,应与教师交流讨论,观看教师示范创建Keil工程与Proteus工程,自己再进行实际操作展示。项目实训项目实训单片机仿真开发流程(1)在Keil软件中使用C语言编写程序。(2)程序编译通过后,生成目标文件(HEX文件)。(3)使用Proteus软件绘制仿真电路图。(4)电路绘制完成后,双击仿真电路图中的51单片机芯片,加载HEX文件。(5)仿真运行,调试结果;仿真结果若有问题,需再次检查程序及仿真电路设计。拓展学习提问:大家学习了C语言编写编写单片机程序,与前面所学的汇编语言程序比较各有什么优缺点,你会如何选择?实训模块实训模块一安装Keil软件与创建Keil工程访问http://wwwkeilcom/,下载并安装KeilμVision5(Keil3或Keil4均可)软件,安装完成后计算机桌面会出现Keil图标,如图1-1所示。1.安装Keil软件图1-1Keil
μVision5软件图标实训模块一安装Keil软件与创建Keil工程双击桌面上的Keil图标,打开其工程界面窗口,如图1-2所示。窗口的顶部为主菜单栏。2.启动Keil软件图1-2Keil工程界面窗口实训模块一安装Keil软件与创建Keil工程(1)File为文件菜单。(2)Edit为编辑菜单。(3)View为视图菜单,主要包括状态栏、工具栏、工程窗口、存储输出窗口。(4)Project为工程菜单,具有创建工程、打开工程等功能。(5)Flash为动画菜单,具有Flash下载、擦除、配置等功能。(6)Debug为调试菜单,主要具有断点设置、单步运行、全速运行等功能。(7)Peripherals菜单用于观察输出口及中断、串行口数据传输时相关寄存器的数值,主要在仿真调试程序时使用。(8)Tools为工具菜单。(9)SVCS菜单主要包含Keil的版本信息。(10)Window为窗口菜单。(11)Help为帮助菜单,提供关于Keil的用法信息。实训模块一安装Keil软件与创建Keil工程(1)执行“Project”→“NewμVisionProject”命令,如图1-3(a)所示,在弹出的对话框中选择工程保存路径及工程名,如图1-3(b)所示。3.创建
Keil工程图1-3创建并设置Keil工程名称(a)新建Keil工程命令实训模块一安装Keil软件与创建Keil工程图1-3创建并设置Keil工程名称(b)保存Keil工程实训模块一安装Keil软件与创建Keil工程(2)打开“SelectDeviceforTarget‘Target1’...”对话框,在对话框左侧的列表中选择“AT89C51”,点击“OK”按钮,如图1-4所示。图1-4
芯片选择对话框实训模块一安装Keil软件与创建Keil工程(3)选择芯片后,系统弹出“μVision”对话框,如图1-5所示。该对话框用于选择是否将启动代码复制到工程中。一般情况下,采用汇编语言编程时选择“否”,采用C语言编程时选择“是”。此处点击“是”按钮,完成Keil工程的创建。图1-5
是否复制启动代码到工程中提示框实训模块一安装Keil软件与创建Keil工程(1)执行“File”→“New...”命令,创建文件,然后点击工具栏中的“保存”按钮,打开“Save
As”对话框,在“文件名”文本框中输入“demo.c”,点击“保存”按钮,如图1-6所示。4.创建
Keil工程图1-6
添加文件到工程栏窗口实训模块一安装Keil软件与创建Keil工程(2)选中“Project”窗口中的“Source
Group
1”文件夹并右击,在弹出的快捷菜单中选择“Add
Existing
Files
to
Group‘Source
Group
1’”选项,打开“Add
Files
to
Group‘Source
Group
1’”对话框,在“文件类型”下拉列表中选择“C
Source
file”选项,在“名称”列表框中选择“demo”文件,点击“Add”按钮,即可将C文件添加至工程中,如图1-7所示。图1-7
将文件添加到工程中实训模块一安装Keil软件与创建Keil工程(1)双击工程下的“demo.c”文件,打开程序编辑界面,在代码编辑区输入C程序代码,如图1-8所示。5.设置工程参数图1-8
输入程序代码实训模块一安装Keil软件与创建Keil工程(2)程序编辑完成后,先保存文件,然后右击“Project”窗口中的“Target
1”文件夹图标,在弹出的快捷菜单中选择“Options
for
Target‘Target
1’...”选项,如图1-9所示。图1-9
工程设置菜单实训模块一安装Keil软件与创建Keil工程(3)系统弹出“Options
for
Target‘Target
1’”对话框,选择“Target”选项卡,在“Xtal”文本框内输入开发板的晶振频率“12.0”,如图1-10所示。图1-10
“Target”选项卡实训模块一安装Keil软件与创建Keil工程(4)切换到“Output”选项卡,选中“Create
HEX
File”复选框,点击“OK”按钮,如图1-11所示,返回Keil工程界面。图1-11
“Output”选项卡实训模块一安装Keil软件与创建Keil工程(5)点击Keil快捷工具栏中的“Rebuild”按钮(或执行“Project”→“Rebuild
all
targetfiles”命令),开始编译程序,程序编译通过后的输出信息如图1-12所示。此时已经创建了一个名为“demo.hex”的HEX文件。图1-12
编译信息实训模块二创建Proteus工程与设计仿真电路安装Proteus
8软件后,双击图标打开软件启动界面,如图1-13所示。图1-13
Proteus
8启动界面实训模块二创建Proteus工程与设计仿真电路第一步:执行“File”→“New
Project”命令,打开“New
Project
Wizard:Start”对话框,在“Name”文本框中输入工程名“单片机流水灯仿真实例.pdsprj”;在“Path”文本框中输入工程的保存路径(也可以通过“Browse”按钮选择保存路径),这里将路径设定为桌面上名为“Proteus单片机流水灯仿真实例”的空文件夹;工程类型选择“New
Project”,点击“Next”按钮,如图1-14所示。图1-14
创建工程并保存实训模块二创建Proteus工程与设计仿真电路第二步:打开“New
Project
Wizard:Schematic
Design”对话框,选中“Create
a
schematic
from
the
selected
template”单选按钮,在“Design
Templates”列表中选择“DEFAULT”选项,如图1-15所示。它表示创建一个默认的电路原理图模板,然后点击“Next”按钮。图1-15
电路原理图模板选择对话框实训模块二创建Proteus工程与设计仿真电路第三步:打开“New
Project
Wizard:PCB
Layout”对话框,在对话框顶部可以选择是否创建一个PCB设计图。本实训模块只需创建一个单片机的仿真电路原理图,不需要创建PCB,故选中“Do
not
create
a
PCB
layout”单选按钮。然后点击“Next”按钮,如图1-16所示。图1-16
PCB模板选择对话框实训模块二创建Proteus工程与设计仿真电路第四步:打开“New
Project
Wizard:Firmware”对话框,选中“Create
Firmware
Project”单选按钮,创建一个单片机工程。在“Family”下拉列表中选择单片机类型为“8051”;在“Controller”下拉列表中选择单片机子类为“80C51”;在“Compiler”下拉列表中选择编译软件为“Keil
for
8051(not
configured)”。然后点击“Next”按钮,如图1-17所示。图1-17
PCB选择是否创建一个单片机工程实训模块二创建Proteus工程与设计仿真电路第五步:单片机工程创建完成后,点击“Finish”按钮进入电路原理图绘制界面,点击左侧导航栏中的“P”按钮,如图1-18所示,或点击“Library”菜单,在弹出的快捷菜单中选择“Pick
Parts”选项。图1-18Proteus单片机电路原理图绘制界面实训模块二创建Proteus工程与设计仿真电路第六步:打开“Pick
Devices”对话框,在“Keywords”文本框中输入关键词“LED”,在“Results”选项区将出现关于LED的搜索结果,选择“LED-RED”选项,在对话框右上方即可出现该元器件的预览图,点击“OK”按钮,如图1-19所示。图1-19选择元器件对话框实训模块二创建Proteus工程与设计仿真电路第七步:使用第六步中的方法在“Keywords”文本框中分别输入关键词“CRYSTAL”“CAP”“RES”,选择相应的晶振、电容和电阻。添加完元器件后,修改各元器件参数,并连接各元器件,如图1-20所示。图1-20基于单片机的LED流水灯电路原理图实训模块二创建Proteus工程与设计仿真电路第八步:双击电路原理图中的80C51芯片,打开“Edit
Component”对话框。点击“Program
File”右侧的文件夹按钮,选择需要导入的HEX文件,点击“OK”按钮,如图1-21所示。图1-21导入HEX文件拓展学习提问:51单片机共有111条指令,按功能可以大致分成5类,大家有认为怎么样才能记住并熟练地应用这些指令。实训模块二创建Proteus工程与设计仿真电路第九步:返回电路原理图界面,点击仿真运行按钮(或执行“Debug”→“Run”命令),即可进行单片机控制流水灯的仿真,D1~D8就会呈现出流水灯效果。仿真效果如图1-22所示。图1-22流水灯从上到下依次点亮的仿真效果项目实训1.爱国主义通过学习单片机芯片的发展历程,我们应了解中国芯片的关键技术,同时要刻苦学习,加强专研,争取在科技前沿的关键技术上实现突破,为实现科技强国、人才强国贡献自己的力量。2.坚持不懈,理性决策通过学习C51语言的循环结构,我们应发扬坚持不懈、持之以恒的精神,在生活中遇到困难不轻易放弃;通过学习选择结构,我们应培养明辨是非、理性决策的能力,树立正确的价值观。素养园地评价与考核项目小结(1)单片机的概念:将具有数据处理能力的中央处理器、随机存储器(RAM)、只读存储器(ROM)、多种I/O口和中断系统、定时/计数器等部件集成到一块硅片上构成的一个小而完善的微型计算机系统。(2)单片机的用途:几乎涵盖所有的电子产品,包括农业、工业、商业等领域的电子产品。(3)单片机学习方法:理论基础,应熟悉数字电路、模拟电路、C语言、汇编语言等知识;实践基础,需要不断练习编程,应先看懂别人的程序,再在别人程序的基础上修改程序,最后设计自己的程序。项目小结(4)C51语言基础:了解关键字、标识符、C51语言数据类型及其范围、运算符及其优先级、循环结构与选择结构、数组与指针、函数的结构、变量(全局变量与局部变量)的范围等知识。(5)单片机开发工具:Keil
μVision5(程序编译软件)、Proteus(电路仿真软件)。课后思考一、选择题1.(
)是单片机程序编译软件。A.Multisim
B.Proteus
C.Protel
D.Keil2.
C程序书写格式自由,一行可以有多条语句,每条语句均以(
)结尾。A.。B.;C.,
D.:3.unsignedchar数据类型的值域为(
)。A.0~65535
B.-32768~+32767C.0~255
D.-128~+1274.若x=01010011,y=11110000,则x|y=(
)。A.11110011
B.01010000C.00111111
D.00000101课后思考5.若F=15,x=6,则执行F%=x(F=F%x)后,F=(
)。A.2
B.3C.4
D.56.以下语句与while(1)等效的是()。A.while(i)
B.for(i=0;i<8;i++)C.while(0)
D.for(;;)7.若数组定义为“intNum[6]={30,22,33,44,55,66};”,则Num[2]=(
)。A.22
B.30C.33
D.55课后思考二、判断题1.main()函数可以被其他函数调用。(
)2.局部变量能在定义该变量的函数外部被调用。(
)3.语句while(条件){;}的条件为真则程序等待,条件为假则跳出循环。(
)4.switch语句中,每个case后面的常数值必须是互不相同的。(
)三、简答题1.什么是单片机?2.单片机有何用途?四、实操练习1.创建Proteus工程,绘制P2口驱动8个LED交互闪烁电路原理图。2.创建Proteus工程,并在元器件库中完成电阻、LED-GREEN、AT89C51、晶振、电容元器件的查找,最后完成电路原理图的绘制。感谢聆听!基于I/O口的电路设计项目二单片机项目创建项目说明本项目介绍了51单片机I/O口P0、P1、P2、P3的内部结构及输入输出功能,设计了多个实训模块对I/O口功能进行实战演练,帮助学生快速掌握51单片机I/O口的运用。本项目需要完成基于I/O口的汽车转向灯闪烁电路设计,要求:当按下左转向按键时,左转向灯开始闪烁;当按下右转向按键时,右转向灯开始闪烁;当按下转向灯关闭按键时,转向灯关闭。单片机项目创建(1)了解51单片机I/O口的内部结构。(2)掌握51单片机I/O口作输出口的使用方法。(3)掌握51单片机I/O口作输入口的使用方法。知识目标:能力目标:(1)能够完成I/O口作输出口驱动外设的电路设计。(2)能够完成I/O口作输入口控制其他设备的电路设计。学习目标项目基础知识项目基础知识一、单片机I/O口51单片机的I/O口有4个,分别为P0、P1、P2、P3。其中
P1、P2和P3口是准双向口,P0口为双向口。(一)P0口的内部结构P0口某个引脚的内部结构如图2-1所示。从图2-1中可以看出,该结构包含一个数据输出锁存器、两个三态数据输入缓冲器和数据输出驱动电路。P0.x可以是P0.0到P0.7中的任何一位,即P0口是由8个与图2-1相同的结构构成的。表2-1P0口某个引脚的内部结构拓展学习准双向口是指P1、P2、P3口有固定的内部上拉电阻,当其用作输入口时,引脚电平被拉高;当其引脚被拉低时,单片机会产生拉电流,这里的拉电流是指电流从单片机往外部走。真双向口是指P0口,因为作为输入口时,它的引脚处于悬浮状态。
准双向口拓展学习锁存器是数字电路中的一种具有记忆功能的逻辑元件(如D触发器)。锁存就是把信号暂存以维持某种电平状态。在数字电路中,锁存器可以记录二进制数字信号0和1。
锁存器项目基础知识(二)P0口的内部结构P1口为8位准双向口,这8位I/O口均可单独定义为输入或输出口,每一位I/O口的内部结构如图2-2所示。P1.x输出数据:把1(高电平)写入锁存器时,Q=0,T2截止,上拉电阻将电位拉至1,此时该口输出为1;把0(低电平)写入锁存器时,Q=1,T2导通,此时该口输出为0。准双向口P1作为输入口时,应先将锁存器置1,这样Q=0,T2截止,此时该位既可以由外部电路拉成低电平,也可由内部上拉电阻拉成高电平。表2-2P1口的内部结构项目基础知识(三)P2口的内部结构P2口不仅可以用作输入/输出口,而且可以和P0口一起用作外部存储器的地址总线和数据总线。由于单片机没有专用的地址总线和数据总线,在向外扩展存储器和接口时,P2口和P0口可充当地址总线和数据总线,P2口输出地址的高8位(A8~A15),P0口输出地址的低8位(A0~A7)。P2口内部结构如图2-3所示。表2-3P2口的内部结构项目基础知识(四)P3口的内部结构P3口的第一功能和P1口一样,既可作为输入/输出口,也能进行字节操作和位操作。在位操作模式下,每位I/O口可以单独定义为输入或输出I/O口。在实际应用中,P3口第二功能的作用更为突出。为适应第二功能的需要,P3口每位引脚内部都增加了第二功能控制逻辑,P3口的内部结构如图2-4所示。表2-4P3口的内部结构项目基础知识下面着重讨论P3口的第二功能,P3口用于第二功能时各引脚定义如下。P3.0:串行输入口(RXD)。P3.1:串行输出口(TXD)。P3.2:外部中断0(INT0)。P3.3:外部中断1(INT1)。P3.4:定时/计数器0的外部输入口(T0)。项目基础知识P3.5:定时/计数器1的外部输入口(T1)。P3.6:外部数据存储器写选通(WR)。P3.7:外部数据存储器读选通(RD)。P3口作为输出口使用时,第二功能信号线保持高电平,与非门开通,从锁存器到输出口的通路畅通无阻,数据能够正常输出。P3口使用第二功能输出时,锁存器置为高电平,与非门允许第二功能输出信号输出。项目基础知识二、I/O口输入设备与输入电路设计(一)输入设备按钮开关的特点是具有自动恢复(回弹)功能。常见的按钮开关是轻触开关,如图2-5(a)所示。按下按钮时开关接通,松开按钮时开关断开,其内部结构如图2-5(b)所示。按钮开关有4个引脚,引脚1与引脚4连通,引脚2与引脚3连通。按下按钮时,内部开关a接通;松开按钮时,开关a自动弹起断开。电子电路或微型计算机所使用的按钮开关有6mm、8mm、10mm、12mm等尺寸。表2-5按钮开关实物及其内部结构1.按钮开关项目基础知识这类开关具有保持功能,将开关拨动到ON时,内部的开关接通形成通路,若要断开通路,则需要再次拨动开关。比较典型的闸刀开关是指拨开关(DIP
switch),如图2-6(a)所示。指拨开关内部相当于含有若干个独立的开关。指拨开关的电路符号如图2-6(b)所示。表2-6指拨开关实物及其电路符号2.闸刀开关项目基础知识(二)输入电路设计将按钮开关接入单片机输入口时,还需在其一端连接一个电阻再接到VCC(接上拉电阻)或GND(接下拉电阻)上,如图2-7所示。表2-7按钮开关作为输入设备1.按钮开关的输入电路设计图2-7中,P0.7引脚连接的按钮开关初始状态为开路状态,该开关与一个10kΩ的电阻串联后连接到VCC上,此时输入引脚保持为高电平。按下按钮开关,输入引脚变为低电平;松开开关时,输入引脚恢复为高电平,这样就产生了一个负脉冲。项目基础知识将闸刀开关接到单片机输入口时,通常也会接一个上拉电阻到VCC或接一个下拉电阻到GND,如图2-8所示。2.开关的输入电路设计表2-8闸刀开关作为输入设备项目基础知识闸刀开关作为输入设备使用时,其工作原理类似于按钮开关。但闸刀开关两种状态的切换需要手动完成,即拨动开关一次能够完成一次切换,再次拨动才能恢复开关初始状态。点击图标查看
独立按键接口项目基础知识三、抖动与防抖动不管是按钮开关还是闸刀开关,在操作时,信号的高、低电平切换并不如想象中的理想。实际应用中,开关操作在很多情况下会产生不确定状态,这种状态将产生噪声信号,因而需要及时进行去干扰处理。1.抖动现象项目基础知识如图2-9所示,图的上半部分为开关按下和松开时的实际状态,下半部分为理想状态。实际应用中,开关按下和松开都将产生抖动,同时也会产生干扰信号,这种干扰信号对数字电路的影响很大,往往会导致计数错误。表2-9按钮开关实物及其内部结构项目基础知识利用硬件电路防抖动会增加硬件设计的成本与复杂度,故可利用软件来防抖动。只要避开开关按下时产生抖动的20ms,即可达到防抖动的目的。在按下按钮开关的瞬间,立刻执行debouncer()防抖动函数,这样就避开了产生抖动的时间段。而debouncer()防抖动函数只是一个延时函数(总延时时间为20ms),其代码如下。2.防抖动项目分析项目分析为完成本项目,需要先完成一些I/O口作输入、输出口的简单实训项目,以便掌握I/O口的使用方法。然后通过简单的实训模块训练归纳总结实践经验来完成本项目的最终任务———汽车转向灯闪烁电路设计,包括转向灯闪烁电路硬件电路设计、汽车转向灯闪烁电路的驱动程序编写以及汽车转向灯闪烁电路的功能调试。项目实训项目实训(1)案例一(1位输出)。1.输出编程案例项目实训(2)案例二(8位输出)。项目实训2.输入编程案例项目实训实训模块实训模块一I/O口作输出口驱动LED灯1.硬件设计图2-10所示为霹雳灯电路原理图。利用P3口驱动8个LED灯,当P3口某位引脚输出0时,其对应的LED灯被点亮;当引脚输出1时,LED灯不亮。根据此电路原理图设计一个霹雳灯程序,使得任何时候只有1个LED灯亮。图2-10霹雳灯电路原理图实训模块一I/O口作输出口驱动LED灯2.霹雳灯程序设计每次只点亮1个LED灯,即P3口在输出时只能有一个引脚输出0,其他引脚输出1。设计程序时,可以先采用“LED<<=1;”语句实现使P3口的值左移7次,左移后在最低位补1;然后再使用“LED>>=1;”语句实现使P3口的值右移7次,右移后在最高位补1;如此循环即可实现霹雳灯功能。霹雳灯程序流程如图2-11所示。图2-11霹雳灯程序流程实训模块一I/O口作输出口驱动LED灯霹雳灯程序参考代码如下。实训模块一I/O口作输出口驱动LED灯实训模块一I/O口作输出口驱动LED灯实训模块一I/O口作输出口驱动LED灯实训模块一I/O口作输出口驱动LED灯3.仿真调试结果如图2-12所示,调试效果截取了第1秒、第2秒(LED灯从左向右点亮)、第8秒、第9秒(LED灯从右向左点亮)的状态。图2-12霹雳灯仿真调试效果图实训模块二I/O口作输出口驱动无源蜂鸣器蜂鸣器(buzzer)是一种发声装置,可分为有源蜂鸣器与无源蜂鸣器,如图2-13所示。图2-13蜂鸣器蜂鸣器的“源”不是指电源,而是指振荡源。有源蜂鸣器内部带有振荡源,只要通电就可以鸣叫,所以通常用作报警提示,其优点是程序控制方便。实训模块二I/O口作输出口驱动无源蜂鸣器蜂鸣器的驱动电路如图2-14所示。电路中三极管基极可以直接与P1、P2、P3口相连,P0口与三极管的基极相连时,可以在三极管基极上连接一个上拉电阻。图2-13蜂鸣器的驱动电路1.硬件设计实训模块二I/O口作输出口驱动无源蜂鸣器无源蜂鸣器鸣叫的关键是设置合适的方波,即先设置一定时长的高电平,再设置同样时长的低电平。这里通过pulse_BZ()函数来实现方波的输出。无源蜂鸣器参考代码如下。2.无源蜂鸣器程序设计实训模块二I/O口作输出口驱动无源蜂鸣器实训模块二I/O口作输出口驱动无源蜂鸣器实训模块二I/O口作输出口驱动无源蜂鸣器实训模块二I/O口作输出口驱动无源蜂鸣器实训模块二I/O口作输出口驱动无源蜂鸣器图2-15所示为仿真调试效果。无源蜂鸣器将根据P2.0引脚输出的高低电平鸣叫。图2-15I/O口驱动无源蜂鸣器仿真调试效果3.仿真调试结果实训模块三I/O口作输出口驱动继电器继电器电路原理图如图2-16所示。图中,单片机P3.1引脚控制继电器通电与断电,每隔1s继电器开关1次。待开关8次后,P3.0引脚控制的蜂鸣器发出2次鸣叫。图2-16继电器电路原理图1.硬件设计实训模块三I/O口作输出口驱动继电器继电器程序流程如图2-17所示。声明变量和函数后,先让P3.1引脚输出高电平0.5s,使继电器闭合,从而形成通路点亮LED灯;然后让P3.1引脚输出低电平,使LED灯熄灭,持续时间也是0.5s。如此点亮LED灯8次后,使蜂鸣器鸣叫2次。以上操作不断重复执行即可实现指定的功能。图2-17继电器程序流程2.继电器程序设计实训模块三I/O口作输出口驱动继电器继电器程序参考代码如下。实训模块三I/O口作输出口驱动继电器实训模块三I/O口作输出口驱动继电器实训模块三I/O口作输出口驱动继电器实训模块三I/O口作输出口驱动继电器实训模块三I/O口作输出口驱动继电器进入仿真状态后,继电器反复吸合8个周期,蜂鸣器将发出两声“哔哔”的声音。图2-18所示为仿真效果图。图2-18I/O口驱动继电器仿真调试结果3.仿真调试结果实训模块四I/O口作输出口驱动7段LED数码管静态显示7段LED数码管的a~h段分别与单片机I/O口的Px.0~Px.7相连。当需要显示某个数字时,可根据数码管的特点,利用程序控制Px.0~Px.7的输出点亮显示数字对应的段。例如,要点亮共阳数码管数字0,就得使P0=0xc0;0xc0的二进制为11000000,也就是说,使a、b、c、d、e、f段都亮,g和h不亮,即为点亮数字0;要点亮共阳数码管数字1,就要使P0=0xf9;0xf9的二进制为11111001,也就是说,使b、c段亮,其余段不亮,即为点亮数字1。点击图标查看
数码管静态显示实训模块四I/O口作输出口驱动7段LED数码管静态显示利用P0口驱动共阳极7段LED数码管依次显示数字0~9,每个数字停留1s再切换。7段LED数码管静态显示电路原理图如图2-19所示。1.硬件设计图2-197段LED数码管静态显示电路原理图实训模块四I/O口作输出口驱动7段LED数码管静态显示7段LED数码管静态显示程序设计流程如图2-20所示。2.7段LED数码管静态显示程序设计图2-207段LED数码管静态显示程序设计流程实训模块四I/O口作输出口驱动7段LED数码管静态显示编写程序时,将数码管的驱动信号放置在数组TAB[10]中,并通过P0口输出要显示数字对应的驱动信号来控制数码管点亮,这样数码管就能显示出对应的数字了。7段LED数码管静态显示程序参考代码如下。实训模块四I/O口作输出口驱动7段LED数码管静态显示实训模块四I/O口作输出口驱动7段LED数码管静态显示实训模块四I/O口作输出口驱动7段LED数码管静态显示图2-21所示为7段LED数码管在第1秒、第2秒、第3秒与第8秒显示的数值。3.7段LED数码管静态显示程序设计图2-21
I/O口驱动共阳极7段LED数码管静态显示仿真调试结果实训模块五I/O口作输出口驱动8位数码管动态显示利用按键控制8位数码管显示日期,显示格式为24-10-20(2024年10月20日)。实际运用中,每一时刻单片机只选通8位数码管中的某一个数码管,但每一个数码管快速依次轮流显示,由于视觉暂留效应,用肉眼看就像所有数码管都一直显示着。8位数码管动态显示电路原理图如图2-22所示,P0口接8位数码管的段选,P1口接8位数码管的位选。1.硬件设计图2-22
8位数码管动态显示电路原理图点击图标查看
数码管动态显示拓展学习人眼在观察景物时,光信号由眼睛传入大脑需经过一段短暂的时间。当光停止传入时,人眼的视觉形象并不会立即消失,这种残留的视觉称“后像”,这一现象则被称为“视觉暂留”。
视觉暂留实训模块五I/O口作输出口驱动8位数码管动态显示2.8位数码管动态显示程序设计实训模块五I/O口作输出口驱动8位数码管动态显示实训模块五I/O口作输出口驱动8位数码管动态显示实训模块五I/O口作输出口驱动8位数码管动态显示实训模块五I/O口作输出口驱动8位数码管动态显示(1)程序正常运行时结果如图2-23所示,每一个数码管都显示了,这是快速轮流动态显示。3.仿真调试结果图2-23
8位数码管动态显示结果实训模块五I/O口作输出口驱动8位数码管动态显示(2)若暂停程序运行(某时刻),则静态显示结果如图2-24所示,某时刻只有一位数码管显示,即暂停时P1口位选选中的数码管显示。图2-24
8数码管静态显示结果实训模块六I/O口作输入/输出口并通过按键控制LED汽车大灯开关电路原理如图2-25所示,要求其实现以下功能:初始状态下,P2.0引脚所连接的LED汽车大灯不亮;按一下按键,则LED汽灯大灯亮;再按一下按键,则LED汽车大灯不亮,如此循环。1.硬件设计图2-25
按键控制LED汽车大灯开关电路原理图实训模块六I/O口作输入/输出口并通过按键控制LED汽车大灯开关按键控制LED汽车大灯开关程序设计流程如图2-26所示。初始化时先关闭LED汽车大灯,然后判断按键是否按下。如果按键按下,则先调用防抖动函数,再切换LED汽车大灯的开关状态。2.按键控制LED汽车大灯开关程序设计图2-26
按键控制LED汽车大灯开关程序设计流程实训模块六I/O口作输入/输出口并通过按键控制LED汽车大灯
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026东莞乐理考级全真模拟题(带官方标准答案)
- 2025肿瘤放疗面试常见问题及答题思路标准答案
- 2022扬职院单招无冗余内容全是考点的试题及答案
- 2020年仪表工技师试题集及答案全解析 高频考点全覆盖
- 2021滑县城投面试冷门考点题库及补充标准答案
- 2025中国铁路南宁局招聘笔试社会考生专属备考题库附答案
- 2026万豪收益管理成本控制专项测试题 附满分答案
- 2023届深信服校招技术笔试高频真题及答案
- 医共体联合门诊协议书
- 湖州解除医保协议书
- 12《古诗三首》课件-2025-2026学年统编版语文三年级下册
- 团队精神与忠诚度培训讲义
- 2026河南新乡南太行旅游有限公司招聘16岗49人考试参考试题及答案解析
- 2026年辽宁点石联考高三年级3月学情调研语文试卷及答案
- 短剧网络播出要求与规范手册
- 2026年春季西师大版(2024)小学数学三年级下册教学计划含进度表
- 高二物理下学期期中考试试卷含答案
- 泌尿生殖系统肿瘤PPT
- 体外膜肺氧合ecmo的护理
- 医药药店保健品销售技巧与关联销售保健品完整版
- 2023年02月上海市嘉定区马陆镇公开招考14名农村储备干部笔试参考题库含答案解析
评论
0/150
提交评论