版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机应用,广东机电职业技术学院-单片机应用,智能电子教研室,张永亮,1、单片机及其展过程,单片机是什么?单片机是单片微型计算机的简称,它是在一块半导体芯片上,集成了CPU、半导体存储器、I/O(Input/Output)接口、中断系统和定时器等计算机必备部件,所构成的一个完整的数字电子计算机。,第一章、知识回顾,1、单片机及其展过程,单片机的发展过程原始阶段1971年1月,INTEL公司的特德霍夫在与日本商业通讯公司合作研制台式计算器时,将原始方案的十几个芯片压缩成三个集成电路芯片。其中的两个芯片分别用于存储程序和数据,另一芯片集成了运算器和控制器及一些寄存器,称为微处理器(即Intel40
2、04)。,1、单片机及其展过程,单片机的发展过程发展阶段1976年Intel公司推出了8位的MCS-48系列的单片机,以其体积小、重量轻、控制功能齐全和低价格的特点,得到了广泛的应用,为单片机的发展奠定了坚实的基础。80年代初,Intel公司推出了8位的MCS-51系列的单片机,随着单片机的应用的急剧增加,其它的单片机也随之大量涌现如:Motorola的68系列,Zilog的Z8系列等,从而掀开了单片机应用的历史新篇章,1、单片机及其展过程,单片机现状单片机经过约30年的发展,已经形成有几千种型号上百种品牌的半导体产业,对电子信息技术、工业控制技术、军事技术的发展起到巨大的推动作用。目前主流的
3、单片机:51内核的系列单片机Microchip公司的PIC系列单片机Motorola公司的68系列TexasInstrument公司的MSP16bit系列单片机ARM内核的32bit系列单片机,2、单片机的特点及应用领域,单片机的特点体积小巧重量轻可靠性高控制能力强价格低开发方便简单,易于产品化,2、单片机的特点及应用领域,单片机应用汽车电子,2、单片机的特点及应用领域,单片机应用智能控制,(视频),2、单片机的特点及应用领域,单片机应用消费电子产品,2、单片机的特点及应用领域,单片机应用军事技术,2、单片机的特点及应用领域,单片机应用工业控制,3、单片机应用系统开发简介,硬件电路做成目标板运
4、用PROTEL、POWERPCB等软件,3、单片机应用系统开发简介,程序设计通常是C语言或者汇编语言,在特定的集成开发环境(IDE)中编程调试,比如应用最广泛的KEILuVision2,3、单片机应用系统开发简介,仿真使用proteus仿真,3、单片机应用系统开发简介,程序下载使用ISP(InSystemProgram在系统编程),3、单片机应用系统开发简介,4、单片机系统,MCS-51系列单片机内部结构框图,8位CPU4kbytes程序存储器(ROM)(52为8K)256bytes的数据存储器(RAM)52有384bytes的RAM)32条I/O口线111条指令,大部分为单字节指令21个专用
5、寄存器2个可编程定时/计数器5个中断源,2个优先级(52有6个)一个全双工串行通信口外部数据存储器寻址空间为64kB外部程序存储器寻址空间为64kB逻辑操作位寻址功能双列直插40PinDIP封装单一+5V电源供电,4、单片机系统,1)片内资源:,2)80C51的引脚封装,总线型,非总线型,4、单片机系统,3)时钟电路,(a)内部时钟电路;(b)HMOS型外部振荡源(C)CHMOS型外部振荡源,4、单片机系统,XTAL1:接外部晶振和微调电容的一端,在单片机内部,它是构成片内振荡器的反向放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,即把此信号直接接到内部振荡器的输入端。XTAL2:
6、接外部晶振和微调电容的另一端,在单片机内部,它是构成片内振荡器的反向放大器的输出端。当采用外部振荡器时,此引脚应悬空。,单片机内部的时间单位振荡频率fosc=石英晶体频率或外部输入时钟频率振荡周期=振荡频率的倒数机器周期机器周期是单片机应用中衡量时间长短的最主要的单位在多数51系列单片机中:指令周期执行一条指令所需要的时间单位:机器周期51单片机中:单周期指令、双周期指令、四周期指令,1机器周期=121/fosc,4、单片机系统,3)时钟电路,RST/VPD:是复位信号输入端,高电平有效。当此输入端保持2个机器周期的高电平时,就可以完成复位操作。RST引脚的第二功能是备用电源的输入端。,上电复
7、位,按键复位,4、单片机系统,4)复位电路,4、单片机系统,5)存储器选择,外部程序存储器控制信号EA,EA=0:访问外部程序存储器。EA=1:访问片内与片外程序存储器。【先内后外】,EnableAddress,外部程序存储器的读选通信号。当访问外部ROM时,产生负脉冲作为外部ROM的选通信号。,地址锁存允许信号ALE,在访问外部存储器时,ALE用来锁存P0送出的低8位地址信号。,读选通信号/PSEN,AddressLatchEnable,ProgramStoreEnable,4、单片机系统,6)ALE及/PSEN,4、单片机系统,7)最小系统,Read-OnlyMemory,Programm
8、ableROM,ErasablePROM,ElectricallyEPROM,RandomAccessMemory,StaticRAM,DynamicRAM,STC单片机,5、51系列单片机存储器,5.1存储器,8051在物理结构上有4个存储空间:片内程序存储器片外程序存储器(ROM)片内数据存储器片外数据存储器(RAM)从用户使用的角度上,MSC-51有3个存储空间:片内外统一编址的64KB程序存储器空间(用16位地址)256B片内数据存储器空间(用8位地址)64KB片外数据存储器地址空间,5.1存储器,MCS-51单片机存储器的结构,在程序存储器的开始部分,定义了一段具有特殊功能的地址段,
9、用作程序起始和各种中断的入口。,1)程序存储器,表1程序存储器中特殊地址的功能,程序存储器用于存放编好的程序或表格常数。,8n+3,2)数据存储器,工作寄存器区位寻址区数据缓冲区,3个区域,1.片内通用数据存储器,数据存储器用于存放中间运算结果、数据暂存和缓冲、标志位等。MCS-51系列单片机的片内数据存储器除RAM块外,还有特殊功能寄存器(SFR)块。数据存储器分为片外数据存储器、片内数据存储器、特殊功能存储器,以下分别加以介绍。,工作寄存器区,位寻址区,数据缓冲器区,表2片内通用数据存储器的结构,2)数据存储器,(1)工作寄存器区,工作寄存器也称为通用寄存器,供用户编程时使用,用于临时存储
10、8位数据信息。工作寄存器地址为00H1FH的32个单元,并分成4个工作寄存器组,每个组有8个工作寄存器,名称为R0R7。,每个工作寄存器组都可被选为CPU的当前工作寄存器,通过改变程序状态字寄存器(PSW)中的RS1、RS0两位来实现。,表3工作寄存器和RAM地址对照表,(2)位寻址区,内部RAM中地址为20H2FH的16个单元,CPU不仅具有字节寻址功能,而且还具有位寻址功能。这16个单元共128,位,每一位都赋予1个位地址,位地址范围是00H7FH。,(3)数据缓冲区,30H7FH是数据缓冲区,即用户RAM区,共80个单元。52子系列片内RAM有256个单元,工作寄存器区和位寻址区的单元数
11、与地址都和51子系列的一致,而数据缓冲区有208个单元,地址范围是30HFFH。,(4)堆栈与堆栈指针,堆栈是一种执行“后进先出”算法的数据结构。是在内存中的一个存储区域,数据一个一个顺序地存入(也就是“压入PUSH”)这个区域之中。有一个地址指针(堆栈指针)总指向最后一个压入堆栈的数据所在的存储单元,存放这个地址指针的寄存器就叫做堆栈指示器。开始放入数据的单元叫做“栈底”。数据一个一个地存入,这个过程叫做“压栈”。读取这些数据时,按照堆栈指示器中的地址读取数据,堆栈指示器中的地址数自动减1。这个过程叫做“弹出POP”。如此就实现了后进先出的原则。,MCS51单片机堆栈,MCS-51的堆栈是向
12、上生成的(即向地址增加的方向),堆栈指针SP的初始值称为栈底。在堆栈操作过程中,SP始终指向堆栈的栈顶。需要注意的是,单片机复位后SP的值为07H,因此入栈数据将从08H存起。,编程时,常使用MOVSP,#30H指令,将栈底定义在30H单元,为什么?,先入后出,(4)堆栈与堆栈指针,2.特殊功能寄存器,概念:特殊功能寄存器(SFR)也称为专用寄存器,用于控制、管理单片机内部算术逻辑部件、并行I/O口、串行I/O口、定时器/计数器、中断系统等功能模块的工作。使用:系统初始化时针对使用的功能部件编程设定。,SpecialFunctionRegister,2)数据存储器,表4特殊功能寄存器地址对照表
13、,2.特殊功能寄存器,可位寻址的位地址分布,MCS-51可直接位寻址的空间有216位。其中内部RAM的20H2FH这16个单元具有128个位地址空间,位地址为00H7FH;另一部分位地址在特殊功能寄存器中,这些特殊功能寄存器是一些能被8整除的字节单元,地址在80HFFH区间,只用了11个字节,它们都可进行位寻址,共计88位。,2.特殊功能寄存器,可位寻址的位地址分布,表5位地址空间,使用具有C51编译扩展功能的C语言进行MCS-51单片机应用系统的开发编程,简称C51编程。C51编程具有以下特点。(1)可管理内部寄存器和存储器的分配,编程时,无需考虑不同存储器的寻址和数据类型等细节问题;(2)
14、程序由若干函数组成,具有良好的模块化结构、可移植性好、便于项目维护管理;(3)有丰富的子程序库可直接引用,从而大大减少用户编程工作量,提高编程效率;(4)与汇编语言交叉编程。用汇编语言编写与硬件有关的程序,用C51编写与硬件无关的运算程序,充分发挥两种语言的长处,提高开发效率。,C51特点,6、KEILC51的应用,标识符用来标识源程序中某个对象的名字,这些对象可以是语句、数据类型、函数、变量、数组等。标识符由字符串、数字和下划线等组成,应该注意的是第一个字符必须是字母或下划线,不能用数字开头,如“1_a”是错误的,编译时会有错误提示。在C51编译器中,只支持标识符的前32位为有效标识。C51
15、语言是区分大小写的一种高级语言,如“a_1”和“A_1”是两个完全不同的标识符。,6.1标识符和关键字,C51中有些库函数的标识符是以下划线开头的,所以一般不要以下划线开头命名用户自定义标识符。标识符在命名时应当简单,含义清晰,这样有助于阅读理解程序。关键字则是编程语言保留的特殊标识符,它们具有固定的名称和含义,在程序编写中不允许将关键字另做他用。C51中的关键字除了有ANSIC标准的32个关键字外,还根据MCS-51单片机的特点扩展了相关的关键字。C51关键字如表5-1所示。在C51的文本编辑器中编写C程序,系统可以把保留关键字以不同颜色显示,如int关键字的默认颜色为天蓝色。,6.1标识符
16、和关键字,6.2数据类型,C51具有ANSIC的所有标准数据类型。基本数据类型包括:char、int、short、long、float和double。对C51编译器来说,short类型和int类型相同,double类型和float类型相同。,除此之外,为了更加有利地利用MCS-51的结构,C51还增加了一些特殊的数据类型,包括bit、sbit、sfr、sfr16。数据类型如表5-2所示。,表5-2C51数据类型,6.2数据类型,bit位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量。它的值是一个二进制位,不是0,就是1,类似一些高级语言中的boolean型数据的True和Fals
17、e。,1)bit位标量,bitbitTimerMode;,举例:,2)sfr特殊功能寄存器,sfr是一种C51扩充数据类型,占用一个内存单元,值域为0255。利用它可以访问MCS-51单片机内部的所有特殊功能寄存器。如用sfrP1=0 x90定义一个特殊功能寄存器变量“P1”,0 x90是指51单片机的P1端口地址90H,变量P1即指51单片机的P1端口。在后面的语句中可以用P1=255(对P1端口的所有引脚置高电平)之类的语句操作特殊功能寄存器。,3)sfr1616位特殊功能寄存器,sfr16也是一种C51扩充数据类型,用于定义存在于MCS-51单片机内部RAM的16位特殊功能寄存器,如定时
18、器T0和T1。sfr16型数据占用2个内存单元,取值范围为065535。,sfr16DP=0 x82;/datapointer,举例:,sbit也是一种C51扩充数据类型,利用它可以访问芯片内部RAM中的可寻址位或特殊功能寄存器中的可寻址位。定义方法有如下三种:(1)sbit位变量名=位地址将位的绝对地址赋给位变量,位地址必须位于80HFFH(特殊功能寄存器的位地址)之间。,4)sbit可寻址位,sbitP1_1=0 x91;,举例:,(2)sbit位变量名=特殊功能寄存器名位位置当可寻址位位于特殊功能寄存器中时,可采用这种方法。位位置是一个07之间的常数。(3)sbit位变量名=字节地址位位
19、置这种方法是以一个常数(字节地址)作为基地址,该常数必须在80HFFH(特殊功能寄存器的字节地址)之间。位位置是一个07之间的常数。,5)sbit可寻址位,sbitP1_1=P11;,举例:,sbitP1_1=0 x901;,举例:,sbit定义特殊功能寄存器中的可寻址位;而bit则定义了一个普通的位变量,一个函数中可包含bit类型的参数,函数返回值也可为bit类型。,sbit和bit的区别,5)sbit可寻址位,MCS-51单片机中的特殊功能寄存器及其可寻址位,已被预先定义放在文件reg51.h中,在程序的开头只需加上#include或#include即可。另外,bit还可访问MCS-51单
20、片机片内20H2FH范围内的位对象。C51编译器提供了一个bdata存储器类型,允许将具有bdata类型的对象放入MCS-51单片机片内可位寻址区。,reg51.h,6)头文件,6.3C51对MCS-51单片机的访问,在C51中访问单片机的存储器时,是通过定义不同存储类型的变量,以说明该变量所访问的存储器位置。,1)存储类型,表5-3C51的数据存储类型,chardatavarl;/*字符变量varl的存储类型data,定位于片内RAM*/bitbdataMuck;/*位变量Muck的存储类型bdata定位于片内寻址区*/unsignedcharxdatavector822;/*无符号字符三维
21、变量vector定义成xdata,C51将它定位到片外64KBRAM内,占82232个字节存储空间,用于存放三维变量数组*/,变量存储类型定义举例,如何定义存储的地址?,2)存储器模式,存储器模式决定了变量的默认存储类型和参数传递区,变量定义不明确存储区类型时使用默认值。C51有三种存储器模式:SMALL、LARGE和COMPACT。,表5-4C51的数据存储模式,存储模式,数字电子钟的设计(LED数码显示),工学结合任务一:,广东机电职业技术学院-单片机应用,目的和意义,通过电子钟设计项目,来掌握单片机与显示器的接口及程序设计方法。掌握动态显示程序设计方法及编程应用。该项目的训练,提高学生的
22、实际动手操作能力,养成学生的工程道德观念,建立工程敬业精神和团队合作精神。,前言,电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。在城市的主要营业场所、车站、码头等公共场所使用数字电子钟已经成为一种时尚。但目前市场上各式各样的数字电子钟大多数用全硬件电路实现,电路结构复杂,功率损耗大等缺点。因此有必要对数字电子钟进行改进。,利用现有知识,能否自行设计?,一、任务描述,1、用51系列单片机设计电子时钟。2、电子钟具有“时”、“分”、“秒”(23
23、小时59分59秒)显示功能。3、采用延时方式实现,精度不超过3S/分钟,5%。4、采用LED数码管动态显示。5、显示无明显闪烁。,二、任务分析,1、任务所需硬件知识单片机最小系统(晶振,复位电路)。数码管显示原理,型号,扫描方式,数码管段码、位码概念。2、任务所需软件知识单片机C语言数据类型,结构,控制语句,程序结构主程序voidmain()、延时子程序voiddelay()、数组等。3、任务所需环境:安装操作系统的微机1台、单片机集成开发环境keilC2.0、软硬件开发平台proteus6.9、单片机下载软件STC_ISP_V3.3;单片机实验板、下载线。,要求会使用KeilC开发环境要求文
24、件夹命名规范要求工程项目命名规范要求文件名命名规范要求程序是否功能齐全要求仿真软件达到设计要求要求硬件电路满足设计要求要求产品设计文档充分,二、任务分析,程序设计要求,1.数码管显示,范例分析:硬件分析电路中用到了单片机的并行I/O口和数码管软件设计由于硬件电路中数码管接在单片机的P0口上,故将显示内容送至单片机的P0口就可以在数码管上看到显示内容。,三、任务设计,1)、单片机的并行I/O接口,第一功能:是一个8位漏极开路型的双向I/O口,这时P0口可看成用户数据总线;第二功能:是在访问外部存储器时,分时提供低8位地址和8位双向数据总线,这时先用做地址总线再用做数据总线。,P0口(P0.0P0
25、.7),1)、单片机的并行I/O接口,内部带上拉电阻的8位准双向I/O口。第一功能:一个内部带上拉电阻的8位准双向I/O口。第二功能:在访问外部存储器时,输出高8位地址。第一功能:内部带上拉电阻的8位准双向I/O口。在系统中,这8个引脚都有各自的第二功能。,P1口(P1.0P1.7),P2口(P2.0P2.7),P3口(P3.0P3.7),1)、单片机的并行I/O接口,MCS-51单片机有P0、P1、P2、P3四个8位双向并行I/O口,每个端口可以按字节输入或输出,也可以按位进行输入或输出,四个口共32根口线。使用C51编程时,片内I/O口与片外扩展I/O口可以统一在头文件中定义,也可以在程序
26、中进行定义(一般在程序开始的位置)。C51定义存储器、并行口方法如下。,2)C51定义片内I/O口,单片机内部并行口可用关键字sfr定义,I/O口定义格式举例:sfrP0=0 x80;/*定义P0口,地址80H*/sbitP1_1=P11;/*定义P1口的第一位*/,3)I/O接口实例,例1:电路如下图所示,试用二极管显示按键当前状态。,电路分析:电路中P1口的低四位接按键,作输入口使用,高四位接发光二极管,作输出口使用。,软件设计:,#includevoidmain()while(1)unsignedcharKey;Key=P1,3)I/O接口实例,数码管是一种半导体发光器件,其基本单元是发
27、光二极管。,4)数码管,数码管的分类数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示),4)数码管,数码管的显示代码表,共阳数码管段码,共阴数码管段码,4)数码管,共阴、共阳数码管比较例2:使下面两个数码管都显示H。,H的段码:H的段码:,4)数码管,四位共阳极数码管内部连接图,4)数码管,数码管的驱动方式数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行
28、驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5840根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。,4)数码管,数码管的驱动方式动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形
29、,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。,4)数码管,四位数码管显示电路,4)数码管,本讲范例中使用的是8位动态数码管,4)、数码管,1、进行功能分析
30、,工作框架搭建,工作分工。2、使用软硬件开发平台proteus7.4进行电路仿真。设计要点:新建电路图设计文件,查找元器件,放置元器件,布局布线,修改元器件属性,进行仿真单片机程序。3、使用单片机集成开发环境keilC2.0。要点:C程序构成,关键词,运算符与表达式,数据结构,结构化语句。4、使用单片机下载软件STC_ISP_V3.3,通过串口或USB将单片机程序下载到单片机芯片中进行调试。5、完善单片机产品硬件电路,进行合适的电容、电阻、芯片、传感器、显示器件等进行焊接,通电运行后观察硬件电路是否满足要求。6、完成实验文档编写,包括:题目、作者、摘要、关键词,绪论,硬件电路,软件流程、代码,
31、数据分析。,5)、项目实施,6)、电路仿真,7)、程序设计,分析课题,确定解决方案和算法;分配系统资源及存储单元;绘制程序流程图;设计程序,并反复调试和修改。,一般步骤,设计思想,当LED的显示位数较多时,I/O口较少时,为了简化电路,降低成本,将所有的字段线对应并联,由一个I/O口控制,而共阴极点或共阳极点由另外一个I/O口控制。如果各位同时导通,LED只能显示相同的字符。要想每位显示不同的字符,必须采用扫描显示方式。,在某一瞬间,只让某一位的字位线处于选通状态,即共阴极的为低电平,共阳极为高电平,同时字段线上输出相应位要显示字符的字段码。而其他各位的字位线处于悬空状态,不显示,这样,在每一
32、瞬时,每位LED只有选通的那一位LED显示出字符,而其他位是熄灭的,同样在下一瞬时,只显示下一位LED,如此循环每位LED。虽然这些字符是在不同的瞬时轮流显示出来的,但由于人眼的视觉残留效应,看到的是每位同时显示字符。,扫描原理,7)、程序设计,C51程序由一个或多个函数构成,是一个函数定义的集合。在这个集合中,必定有一个名为main()的主函数。程序执行从主函数main()开始,又在主函数main()中结束。C51程序同一般的C程序在结构上没有区别。,C51程序的编程规则:,(1)函数是C51程序的基本单位,一个C51程序至少有一个主函数main(),也可以由一个主函数main()和若干个其
33、他函数构成。(2)一个函数由函数说明部分和函数体两部分组成。(3)函数说明部分由函数名、函数类型、函数属性、函数参数名和形式参数类型组成,其中允许没有函数参数,函数名后面必须有1个圆括号,括号内就是可有可无的形式参数表。,7)、程序设计,C51一般格式,(4)函数体是用大括号围起来的部分。大括号内有两部分内容:一部分是变量及变量的定义;另一部分是由若干语句组成的执行部分。,(5)语句的组成规则为:每个变量必须先定义后使用;变量名由英文字母组成,英文字母要区分大小写,大小写不同则变量名不同;书写格式自由,一行可以写多个语句,一个语句也可以写成多行,但每条语句必须以“;”结尾;分号是C语言的必须组
34、成部分,每个语句和数据在定义的最后必须有一个分号,程序的最后一个语句也应有分号。,7)、程序设计,C51程序的编程规则:,全局变量说明/*可被各函数引用*/main()/*主函数*/*函数体开始*/局部变量说明/*限于在本函数内使用*/执行语句(包括调用其他函数的语句)/*主函数的函数体结束*/,(6)C语言对I/O操作实现了“函数化”,分别调用库函数scanf和printf等函数完成,无专门的输入/输出语句。(7)C51的注释用/*/表示,有了注释,阅读程序更方便。,C51程序结构:,7)、程序设计,function1(形式参数表)/*可被调用的一个函数*/形式参数说明/*函数1的函数体开始
35、*/局部变量说明执行语句(包括调用其他函数的语句)/*函数1的函数体结束*/functionn(形式参数表)/*可被调用的第n个函数*/*格式同函数1,从“”开始,到“”结束*/,7)、程序设计,#includeunsignedcharHour=23;unsignedcharmin=59;unsignedcharsec=56;unsignedchary8=0 x7f,0 xbf,0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe;unsignedcharx10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,/段码012340 x6d,0 x7d,0 x07,0
36、 x7f,0 x6f;/段码56789/-voiddelay()/延时子程序5msunsignedinti=500;while(i-);,7)、程序设计,头文件,voiddisplay()/数码管显示子程序,8P2=0 xff;P0=xHour/10;P2=y0;delay();/小时的十位P2=0 xff;P0=xHour%10;P2=y1;delay();/小时的个位P2=0 xff;P0=0 x40;P2=y2;delay();/-01000000P2=0 xff;P0=xmin/10;P2=y3;delay();/分钟的十位P2=0 xff;P0=xmin%10;P2=y4;delay
37、();/分钟的个位P2=0 xff;P0=0 x40;P2=y5;delay();/-P2=0 xff;P0=xsec/10;P2=y6;delay();/秒的十位P2=0 xff;P0=xsec%10;P2=y7;delay();/秒的个位,显示程序,7)、程序设计,voidmain()/主程序unsignedchari;loop1:display();i+;if(i25)i=0;sec+;if(sec59)sec=0;min+;if(min59)min=0;Hour+;if(Hour23)Hour=0;gotoloop1;,7)、程序设计,主程序,8)、提高功能,1、能在LED显示器上实现
38、正常的时分秒计时能通过键盘输入当前时间,并从该时间开始计时。2、有校时、校分功能。3、有报时功能,通过指示灯表示。4、有闹时功能,闹时时间可以设定,通过指示灯表示其他功能5、不用延时,考虑用定时器实现。,检查的标准要求,四、检查反馈,1、交流展示指导学生对产品进行展示,互相交流。2、检测反馈指导学生对他人产品检测,提出反馈意见。3、学生评价学生对他人产品进行评价,提出产品的优点和缺点,以及分数。4、教师评价根据教师点评进行分组讨论,并对自己的项目进行修改、完善。,四、检查反馈,LED流水灯、信号灯,工学结合任务二:,广东机电职业技术学院-单片机应用,目的和意义,1掌握LED发光二极管的单向导电
39、原理和使用方法。2、掌握利用单片机的I/O口控制LED发光二极管的原理和使用方法。3掌握C51循环程序设计。4掌握PROTEUS仿真,烧写器的使用,硬件电路设计、焊接、装配,培养学生利用单片机技术解决生活中的实际问题的能力。,用单片机控制8只并排的发光二极管(D1D8),使各发光二极管从D1开始点亮并延时熄灭,然后再点亮下一个发光二极管,8只发光二极管循环点亮后再从D1开始重复循环。这种显示方式下的发光二极管通俗地称为流水灯。,它是为管理交通工具和行人的动向,传达一种命令而设置的一类固定不动的灯具。交通信号包括用光的颜色、闪烁和排列组合成的灯光信号和能显示发光文字、符号的灯光标志两种。后者只用
40、于陆上道路交通中,起指示限速、导向和表示道路情况等的作用。,交通信号灯,流水灯,一、任务描述,一、任务描述,1、通过程序,控制单片机端口,从而控制连接在端口上的流水灯、交通灯按规律亮灭。2、流水灯的控制方式有顺序点亮、间隔点亮等6种,通过按键切换控制方式。3、交通灯有东西和南北方向四组,要求红灯亮15s,绿灯亮10s,黄灯亮5s。4、采用延时方式实现。,二、任务分析,1、任务所需硬件知识单片机最小系统(晶振,复位电路)IO口使用发光二极管型号、显示原理,发光二极管接口电路、交通灯接口电路2、任务所需软件知识单片机C语言数据类型,结构,for语句,主程序voidmain()、延时子程序voidd
41、elay()、键盘扫描、数组等3、任务所需环境安装操作系统的微机1台、单片机集成开发环境keilC2.0、软硬件开发平台proteus6.9、单片机下载软件STC_ISP_V3.3、单片机实验板、下载线。,项目实施过程理实一体化模式,系统设计规划,二、任务分析,要求会使用KeilC开发环境要求文件夹命名规范要求工程项目命名规范要求文件名命名规范要求程序是否功能齐全要求仿真软件达到设计要求要求硬件电路满足设计要求要求产品设计文档充分,二、任务分析,程序设计要求,1、发光二极管发光二极管是一种把电能转换成光能的半导体器件它由结组成,在正向偏置的条件下导通,此时会发射出一定波长的光,发光二极管的发光
42、功率近似与导通电流成正比目前大多数产品可以由集成电路直接驱动。,三、相关知识,二极管为什么发光,常量数据是程序执行过程中其值不变的量,在C语言中用“0”表示。常见的常量有二进制数、十进制数、十六进制数、ASCII字符等。#defineMASK43.7#defineucharunsignedchar#defineuintunsignedint,2、单片机C语言程序设计,1)宏定义,使用:,uchari=10;uintj=544;,C51的基本算术运算符有5种:(加或正号),(减或负号),*(乘),/(除),(模运算符,又称求余。,2)C51的运算符定义,C51的关系运算符有6种:(小于),(大于
43、),(小于或等于),(大于或等于),(相等),!(不等于)。,关系运算的结果只有两种:“真”(用“1”表示)和“假”(用“0”表示)。例如设a5,b4,c3,则ab的值为“真”,表达式的值为1。,C51的逻辑运算符有3种:int*p;p=/数组名就是首地址。考虑数组元素如何访问?,声明一个变量,在编译时会给他分配一个内存地址;同样一个数组包含若干个元素,每个数组元素在内存中占用存储单元,他们都有相应的地址。所谓数组的指针是数组的起始地址,数组元素的指针是数组元素的地址。一个数组在内存中是连续存放的,数组名就是这块连续内存单元的首地址。,(1)从语言结构划分,函数分为主函数main()和普通函数
44、两类。(2)从使用角度划分,函数分为标准库函数和用户自定义函数两类。库函数是C编译系统提供的一系列标准函数,用户可直接调用,如头文件reg51.h等,其中一些头文件含一系列函数,要使用它们必须先用#include语句。用户自定义函数是用户按照自身需要编写的函数。,5)C51函数及功能,函数的分类,(3)从参数形式上划分,函数分为无参数函数、有参数函数和空函数三类。无参数函数调用时无须输入参数,也无结果返回。有参数函数调用时要给被调用函数提供实质参数,被调用函数运行后产生的结果也要返回给调用函数使用。空函数是内无语句的空白函数,调用时不产生任何操作,这种函数用于功能备用,以便扩充。,5)C51函
45、数及功能,函数的分类,(1)无参数函数的定义形式:返回值类型标识符函数名()函数体语句无参数函数通常不带返回值,因此标识符可省略或用void。(2)有参数函数的定义形式:返回值类型标识符函数名(形式参数表)形式参数说明函数体语句return(返回参数名)(3)空函数的定义形式:返回值类型说明符函数名(),函数的定义,5)C51函数及功能,(1)使用函数调用语句,被调函数名作为主调函数中的一个语句。如:print_message();/*message()是被调用函数*/(2)被调函数作为表达式的运算对象。如:result5*good(x,y)(3)被调函数作为另一个函数的实际参数。如:mmin
46、(x,alpha(a,b),5)C51函数及功能,函数的调用,(1)被调函数必须已经存在,是库函数或用户自定义函数。(2)如果程序中使用了库函数,或者使用了不在同一文件中的其它用户自定义函数,那么需要在程序的开头用#include包含语句,将所用函数信息包括到程序中来。(3)如果被调函数出现在主调函数之后,应在主调函数前对被调函数的返回值类型予以说明。说明方式为:返回值类型被调函数名(形式参列),函数调用条件,5)C51函数及功能,【例】被调函数在主调函数后,需要说明。main()intmax();/*被调函数说明*/intx=70,y=40,m;m=max(X,Y);intmax(inta,
47、intb);/*被调函数,在主调函数之后出现*/return(ab?a:b);,5)C51函数及功能,被调函数说明的语句intmax(a,b)也可以移至主调函数man()前,可不必说明,见下例。【例】intmax(inta,intb);/*被调函数,在主调函数之前出现*/return(ab?a:b);main()/*主调函数,函数内无被调函数说明intmax();*/intx=70,y=40,m;m=max(X,Y);,5)C51函数及功能,【例】完成3250的编程。#defineSIGNCONST32/*定义一个符号常量SIGNCONST值为32*/main()intvariable,mul
48、t;/*定义两个整型变量variable和mult*/variable=50;/*给变量赋值50*/mult=variableSIGNCONST;/*变量小写,符号常量大写*/printf(mult=dn,mult);,6)单片机C语言程序设计,(1)顺序结构设计,if是一种条件选择判定语句,C语言提供以下3种形式。(1)if(表达式)语句含义:表达式为“真”时执行语句,否则执行下一条语句。例如:if(xy)c=0当xy成立时执行c0;否则执行下一条。(2)if(表达式)语句1;else语句2;含义:表达式为“真”时,执行语句1;否则执行语句2。,(2)分支结构设计,C51分支结构使用if语句
49、和switch语句实现。,a选择语句if,If(x=0)x+;,(3)if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;elseif(表达式n)语句n;else语句n1;含义:表达式1为“真”时,执行语句1;否则看表达式2。如果表达式2为“真”,执行语句2,否则看表达式3。,直至看表达式n。如果表达式n为“真”,执行语句n,否则执行语句n+1。if语句允许嵌套。,a选择语句if,(2)分支结构设计,switch(表达式)case常量表达式1:语句1;break;case常量表达式2:语句2;break;case常量表达式n:语句n;break;Defaul
50、t:语句n1;含义:当switch后面括号中表达式值与某个case后面常量表达式的值相等时,执行该常量表达式后面的语句。执行完后遇break退出switch语句。如果switch后面括号中表达式的值与所有的case后常量表达式的值对不上,那么程序执行default后面的语句。,b判断语句switch/case,(2)分支结构设计,while语句的格式为:while(表达式)语句/*循环体*/表达式是能够继续循环的条件,用大括号括起来的语句是循环体。如果表达式的值为“真”,就重复执行循环体语句;如果表达式的值为“假”,则退出循环体,执行下一条语句。,(3)循环结构设计,C51提供的循环语句有三种
51、:while语句、do_while语句和for语句。,awhile语句,do_while语句的格式为:do语句;/*循环体*/while(表达式)do_while语句用于先执行循环体语句,再由while后面的表达式“真”、“假”判断是否要循环。,2do_while语句,(3)循环结构设计,for语句的格式为:for(表达式1;表达式2;表达式3)语句;/*循环体*/for语句的执行步骤如下:(1)对表达式进行求解,进行初始化。(2)求解表达式2,判断表达式是否满足给定循环条件。如果满足(表达式2的值为“真”),则进行第(3)步;如果不满足,则进行第(5)步。(3)执行for语句中的循环体语句,
52、执行完后,求解表达式3,按表达式3修改变量。(4)转到第(2)步去循环执行。(5)退出循环,执行for语句的下一条语句。,3for语句,(3)循环结构设计,(3)循环结构设计,3for语句,(1)表达式1缺省。表达式1用于给变量赋初值,缺省意味着不用初值。例如:for(;x=50;x+)sum=sum+x;,(2)表达式2缺省。表达式2为循环判断条件,如果缺省表示无需判断,循环继续进行。for(x=10;x+)语句(3)表达式1、3缺省。例如:for(;x50;)语句等同于while(x50)(4)表达式1、2、3全缺省,无初值、无判断条件,表明循环无休止进行。f(;)语句,1、进行功能分析,工作框架搭建,工作分工。2、使用软硬件开发平台proteus7.4进行电路仿真。设计要点:新建电路图设计文件,查找元器件,放置元器件,布局布线,修改元器件属性,进行仿真单片机程序。3、使用单片机集成开发环境keilC2.0。要点:C程序构成,关键词,运算符与表达式,数据结构,结构化语句。4、使用单片机下载软件STC_ISP_V3.3,通过串口或USB将单片机程序下载到单片机芯片中进行调试。5、完善单片机产品硬件电路,进行合适的电容、电阻、芯片、传感器、显示器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (2026年)家校共育管理制度
- 2026年南方医科大学第五附属医院医护人员招聘考试参考题库及答案详解
- 2026年呼和浩特市蒙医中医医院医护人员招聘笔试参考试题及答案详解
- 2026年新乡市第一人民医院医护人员招聘笔试备考题库及答案详解
- 2026年南昌大学第一附属医院医护人员招聘考试参考试题及答案详解
- 2026年吉化总医院二院医护人员招聘笔试备考试题及答案详解
- 2026年辽宁中医药大学附属第三医院医护人员招聘考试参考题库及答案详解
- 2026年芜湖市中医院医护人员招聘考试备考试题及答案详解
- 2026年鹤岗市人民医院医护人员招聘笔试备考试题及答案详解
- 2026年南京414医院医护人员招聘笔试参考题库及答案详解
- 了解红旗渠学习红旗渠精神课件
- 地质调查员(地质灾害方向)职业技能竞赛试题
- 2022年北京市大兴区瀛海镇社区工作者招聘考试真题及答案
- 会阴评估技术及保护会阴的临床实践
- 山地光伏施工组织设计
- 儿科主治医师资格考试题库(含答案)
- 藏乐阁点歌机使用说明书
- YS/T 583-2016热锻水暖管件用黄铜棒
- GB/T 39894-2021船舶内装质量评定项目及要求
- GB/T 24919-2010工业阀门安装使用维护一般要求
- GB/T 17492-2019工业用金属丝编织网技术要求和检验
评论
0/150
提交评论