




已阅读5页,还剩135页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机应用 广东机电职业技术学院 单片机应用 智能电子教研室 张永亮 1 单片机及其展过程 单片机是什么 单片机是单片微型计算机的简称 它是在一块半导体芯片上 集成了CPU 半导体存储器 I O Input Output 接口 中断系统和定时器等计算机必备部件 所构成的一个完整的数字电子计算机 第一章 知识回顾 1 单片机及其展过程 单片机的发展过程原始阶段1971年1月 INTEL公司的特德 霍夫在与日本商业通讯公司合作研制台式计算器时 将原始方案的十几个芯片压缩成三个集成电路芯片 其中的两个芯片分别用于存储程序和数据 另一芯片集成了运算器和控制器及一些寄存器 称为微处理器 即Intel4004 1 单片机及其展过程 单片机的发展过程发展阶段1976年Intel公司推出了8位的MCS 48系列的单片机 以其体积小 重量轻 控制功能齐全和低价格的特点 得到了广泛的应用 为单片机的发展奠定了坚实的基础 80年代初 Intel公司推出了8位的MCS 51系列的单片机 随着单片机的应用的急剧增加 其它的单片机也随之大量涌现如 Motorola的68系列 Zilog的Z8系列等 从而掀开了单片机应用的历史新篇章 1 单片机及其展过程 单片机现状单片机经过约30年的发展 已经形成有几千种型号上百种品牌的半导体产业 对电子信息技术 工业控制技术 军事技术的发展起到巨大的推动作用 目前主流的单片机 51内核的系列单片机Microchip公司的PIC系列单片机Motorola公司的68系列TexasInstrument公司的MSP16bit系列单片机ARM内核的32bit系列单片机 2 单片机的特点及应用领域 单片机的特点体积小巧重量轻可靠性高控制能力强价格低开发方便简单 易于产品化 2 单片机的特点及应用领域 单片机应用汽车电子 2 单片机的特点及应用领域 单片机应用智能控制 视频 2 单片机的特点及应用领域 单片机应用消费电子产品 2 单片机的特点及应用领域 单片机应用军事技术 2 单片机的特点及应用领域 单片机应用工业控制 3 单片机应用系统开发简介 硬件电路做成目标板运用PROTEL POWERPCB等软件 3 单片机应用系统开发简介 程序设计通常是C语言或者汇编语言 在特定的集成开发环境 IDE 中编程调试 比如应用最广泛的KEILuVision2 3 单片机应用系统开发简介 仿真 使用proteus仿真 3 单片机应用系统开发简介 程序下载 使用ISP InSystemProgram在系统编程 3 单片机应用系统开发简介 4 单片机系统 MCS 51系列单片机内部结构框图 8位CPU 4kbytes程序存储器 ROM 52为8K 256bytes的数据存储器 RAM 52有384bytes的RAM 32条I O口线 111条指令 大部分为单字节指令 21个专用寄存器 2个可编程定时 计数器 5个中断源 2个优先级 52有6个 一个全双工串行通信口 外部数据存储器寻址空间为64kB 外部程序存储器寻址空间为64kB 逻辑操作位寻址功能 双列直插40PinDIP封装 单一 5V电源供电 4 单片机系统 1 片内资源 2 80C51的引脚封装 总线型 非总线型 4 单片机系统 3 时钟电路 a 内部时钟电路 b HMOS型外部振荡源 C CHMOS型外部振荡源 4 单片机系统 XTAL1 接外部晶振和微调电容的一端 在单片机内部 它是构成片内振荡器的反向放大器的输入端 当采用外部振荡器时 该引脚接收振荡器的信号 即把此信号直接接到内部振荡器的输入端 XTAL2 接外部晶振和微调电容的另一端 在单片机内部 它是构成片内振荡器的反向放大器的输出端 当采用外部振荡器时 此引脚应悬空 单片机内部的时间单位振荡频率fosc 石英晶体频率或外部输入时钟频率振荡周期 振荡频率的倒数机器周期机器周期是单片机应用中衡量时间长短的最主要的单位在多数51系列单片机中 指令周期 执行一条指令所需要的时间单位 机器周期51单片机中 单周期指令 双周期指令 四周期指令 1机器周期 12 1 fosc 4 单片机系统 3 时钟电路 RST VPD 是复位信号输入端 高电平有效 当此输入端保持2个机器周期的高电平时 就可以完成复位操作 RST引脚的第二功能是备用电源的输入端 上电复位 按键复位 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 ProgrammableROM 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单片机存储器的结构 在程序存储器的开始部分 定义了一段具有特殊功能的地址段 用作程序起始和各种中断的入口 1 程序存储器 表1程序存储器中特殊地址的功能 程序存储器用于存放编好的程序或表格常数 8n 3 2 数据存储器 工作寄存器区位寻址区数据缓冲区 3个区域 1 片内通用数据存储器 数据存储器用于存放中间运算结果 数据暂存和缓冲 标志位等 MCS 51系列单片机的片内数据存储器除RAM块外 还有特殊功能寄存器 SFR 块 数据存储器分为片外数据存储器 片内数据存储器 特殊功能存储器 以下分别加以介绍 工作寄存器区 位寻址区 数据缓冲器区 表2片内通用数据存储器的结构 2 数据存储器 1 工作寄存器区 工作寄存器也称为通用寄存器 供用户编程时使用 用于临时存储8位数据信息 工作寄存器地址为00H 1FH的32个单元 并分成4个工作寄存器组 每个组有8个工作寄存器 名称为R0 R7 每个工作寄存器组都可被选为CPU的当前工作寄存器 通过改变程序状态字寄存器 PSW 中的RS1 RS0两位来实现 表3工作寄存器和RAM地址对照表 2 位寻址区 内部RAM中地址为20H 2FH的16个单元 CPU不仅具有字节寻址功能 而且还具有位寻址功能 这16个单元共128 位 每一位都赋予1个位地址 位地址范围是00H 7FH 3 数据缓冲区 30H 7FH是数据缓冲区 即用户RAM区 共80个单元 52子系列片内RAM有256个单元 工作寄存器区和位寻址区的单元数与地址都和51子系列的一致 而数据缓冲区有208个单元 地址范围是30H FFH 4 堆栈与堆栈指针 堆栈是一种执行 后进先出 算法的数据结构 是在内存中的一个存储区域 数据一个一个顺序地存入 也就是 压入 PUSH 这个区域之中 有一个地址指针 堆栈指针 总指向最后一个压入堆栈的数据所在的存储单元 存放这个地址指针的寄存器就叫做堆栈指示器 开始放入数据的单元叫做 栈底 数据一个一个地存入 这个过程叫做 压栈 读取这些数据时 按照堆栈指示器中的地址读取数据 堆栈指示器中的地址数自动减1 这个过程叫做 弹出POP 如此就实现了后进先出的原则 MCS 51单片机堆栈 MCS 51的堆栈是向上生成的 即向地址增加的方向 堆栈指针SP的初始值称为栈底 在堆栈操作过程中 SP始终指向堆栈的栈顶 需要注意的是 单片机复位后SP的值为07H 因此入栈数据将从08H存起 编程时 常使用MOVSP 30H指令 将栈底定义在30H单元 为什么 先入后出 4 堆栈与堆栈指针 2 特殊功能寄存器 概念 特殊功能寄存器 SFR 也称为专用寄存器 用于控制 管理单片机内部算术逻辑部件 并行I O口 串行I O口 定时器 计数器 中断系统等功能模块的工作 使用 系统初始化时针对使用的功能部件编程设定 SpecialFunctionRegister 2 数据存储器 表4特殊功能寄存器地址对照表 2 特殊功能寄存器 可位寻址的位地址分布 MCS 51可直接位寻址的空间有216位 其中内部RAM的20H 2FH这16个单元具有128个位地址空间 位地址为00H 7FH 另一部分位地址在特殊功能寄存器中 这些特殊功能寄存器是一些能被8整除的字节单元 地址在80H FFH区间 只用了11个字节 它们都可进行位寻址 共计88位 2 特殊功能寄存器 可位寻址的位地址分布 表5位地址空间 使用具有C51编译扩展功能的C语言进行MCS 51单片机应用系统的开发编程 简称C51编程 C51编程具有以下特点 1 可管理内部寄存器和存储器的分配 编程时 无需考虑不同存储器的寻址和数据类型等细节问题 2 程序由若干函数组成 具有良好的模块化结构 可移植性好 便于项目维护管理 3 有丰富的子程序库可直接引用 从而大大减少用户编程工作量 提高编程效率 4 与汇编语言交叉编程 用汇编语言编写与硬件有关的程序 用C51编写与硬件无关的运算程序 充分发挥两种语言的长处 提高开发效率 C51特点 6 KEILC51的应用 标识符用来标识源程序中某个对象的名字 这些对象可以是语句 数据类型 函数 变量 数组等 标识符由字符串 数字和下划线等组成 应该注意的是第一个字符必须是字母或下划线 不能用数字开头 如 1 a 是错误的 编译时会有错误提示 在C51编译器中 只支持标识符的前32位为有效标识 C51语言是区分大小写的一种高级语言 如 a 1 和 A 1 是两个完全不同的标识符 6 1标识符和关键字 C51中有些库函数的标识符是以下划线开头的 所以一般不要以下划线开头命名用户自定义标识符 标识符在命名时应当简单 含义清晰 这样有助于阅读理解程序 关键字则是编程语言保留的特殊标识符 它们具有固定的名称和含义 在程序编写中不允许将关键字另做他用 C51中的关键字除了有ANSIC标准的32个关键字外 还根据MCS 51单片机的特点扩展了相关的关键字 C51关键字如表5 1所示 在C51的文本编辑器中编写C程序 系统可以把保留关键字以不同颜色显示 如int关键字的默认颜色为天蓝色 6 1标识符和关键字 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和False 1 bit位标量 bitbitTimerMode 举例 2 sfr特殊功能寄存器 sfr是一种C51扩充数据类型 占用一个内存单元 值域为0 255 利用它可以访问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位特殊功能寄存器 如定时器T0和T1 sfr16型数据占用2个内存单元 取值范围为0 65535 sfr16DP 0 x82 datapointer 举例 sbit也是一种C51扩充数据类型 利用它可以访问芯片内部RAM中的可寻址位或特殊功能寄存器中的可寻址位 定义方法有如下三种 1 sbit位变量名 位地址将位的绝对地址赋给位变量 位地址必须位于80H FFH 特殊功能寄存器的位地址 之间 4 sbit可寻址位 sbitP1 1 0 x91 举例 2 sbit位变量名 特殊功能寄存器名 位位置当可寻址位位于特殊功能寄存器中时 可采用这种方法 位位置是一个0 7之间的常数 3 sbit位变量名 字节地址 位位置这种方法是以一个常数 字节地址 作为基地址 该常数必须在80H FFH 特殊功能寄存器的字节地址 之间 位位置是一个0 7之间的常数 5 sbit可寻址位 sbitP1 1 P1 1 举例 sbitP1 1 0 x90 1 举例 sbit定义特殊功能寄存器中的可寻址位 而bit则定义了一个普通的位变量 一个函数中可包含bit类型的参数 函数返回值也可为bit类型 sbit和bit的区别 5 sbit可寻址位 MCS 51单片机中的特殊功能寄存器及其可寻址位 已被预先定义放在文件reg51 h中 在程序的开头只需加上 include或 include即可 另外 bit还可访问MCS 51单片机片内20H 2FH范围内的位对象 C51编译器提供了一个bdata存储器类型 允许将具有bdata类型的对象放入MCS 51单片机片内可位寻址区 reg51 h 6 头文件 6 3C51对MCS 51单片机的访问 在C51中访问单片机的存储器时 是通过定义不同存储类型的变量 以说明该变量所访问的存储器位置 1 存储类型 表5 3C51的数据存储类型 chardatavarl 字符变量varl的存储类型data 定位于片内RAM bitbdataMuck 位变量Muck的存储类型bdata定位于片内寻址区 unsignedcharxdatavector 8 2 2 无符号字符三维变量vector定义成xdata C51将它定位到片外64KBRAM内 占8 2 2 32个字节存储空间 用于存放三维变量数组 变量存储类型定义举例 如何定义存储的地址 2 存储器模式 存储器模式决定了变量的默认存储类型和参数传递区 变量定义不明确存储区类型时使用默认值 C51有三种存储器模式 SMALL LARGE和COMPACT 表5 4C51的数据存储模式 存储模式 数字电子钟的设计 LED数码显示 工学结合任务一 广东机电职业技术学院 单片机应用 目的和意义 通过电子钟设计项目 来掌握单片机与显示器的接口及程序设计方法 掌握动态显示程序设计方法及编程应用 该项目的训练 提高学生的实际动手操作能力 养成学生的工程道德观念 建立工程敬业精神和团队合作精神 前言 电子钟是一种利用数字电路来显示秒 分 时的计时装置 与传统的机械钟相比 它具有走时准确 显示直观 无机械传动装置等优点 因而得到广泛应用 随着人们生活环境的不断改善和美化 在许多场合可以看到数字电子钟 在城市的主要营业场所 车站 码头等公共场所使用数字电子钟已经成为一种时尚 但目前市场上各式各样的数字电子钟大多数用全硬件电路实现 电路结构复杂 功率损耗大等缺点 因此有必要对数字电子钟进行改进 利用现有知识 能否自行设计 一 任务描述 1 用51系列单片机设计电子时钟 2 电子钟具有 时 分 秒 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开发环境要求文件夹命名规范要求工程项目命名规范要求文件名命名规范要求程序是否功能齐全要求仿真软件达到设计要求要求硬件电路满足设计要求要求产品设计文档充分 二 任务分析 程序设计要求 1 数码管显示 范例分析 硬件分析电路中用到了单片机的并行I O口和数码管软件设计由于硬件电路中数码管接在单片机的P0口上 故将显示内容送至单片机的P0口就可以在数码管上看到显示内容 三 任务设计 1 单片机的并行I O接口 第一功能 是一个8位漏极开路型的双向I O口 这时P0口可看成用户数据总线 第二功能 是在访问外部存储器时 分时提供低8位地址和8位双向数据总线 这时先用做地址总线再用做数据总线 P0口 P0 0 P0 7 1 单片机的并行I O接口 内部带上拉电阻的8位准双向I O口 第一功能 一个内部带上拉电阻的8位准双向I O口 第二功能 在访问外部存储器时 输出高8位地址 第一功能 内部带上拉电阻的8位准双向I O口 在系统中 这8个引脚都有各自的第二功能 P1口 P1 0 P1 7 P2口 P2 0 P2 7 P3口 P3 0 P3 7 1 单片机的并行I O接口 MCS 51单片机有P0 P1 P2 P3四个8位双向并行I O口 每个端口可以按字节输入或输出 也可以按位进行输入或输出 四个口共32根口线 使用C51编程时 片内I O口与片外扩展I O口可以统一在头文件中定义 也可以在程序中进行定义 一般在程序开始的位置 C51定义存储器 并行口方法如下 2 C51定义片内I O口 单片机内部并行口可用关键字sfr定义 I O口定义格式举例 sfrP0 0 x80 定义P0口 地址80H sbitP1 1 P1 1 定义P1口的第一位 3 I O接口实例 例1 电路如下图所示 试用二极管显示按键当前状态 电路分析 电路中P1口的低四位接按键 作输入口使用 高四位接发光二极管 作输出口使用 软件设计 includevoidmain while 1 unsignedcharKey Key P1 3 I O接口实例 数码管是一种半导体发光器件 其基本单元是发光二极管 4 数码管 数码管的分类数码管按段数分为七段数码管和八段数码管 八段数码管比七段数码管多一个发光二极管单元 多一个小数点显示 4 数码管 数码管的显示代码表 共阳数码管段码 共阴数码管段码 4 数码管 共阴 共阳数码管比较例2 使下面两个数码管都显示H H的段码 H的段码 4 数码管 四位共阳极数码管内部连接图 4 数码管 数码管的驱动方式数码管要正常显示 就要用驱动电路来驱动数码管的各个段码 从而显示出我们要的数字 因此根据数码管的驱动方式的不同 可以分为静态式和动态式两类 静态显示驱动 静态驱动也称直流驱动 静态驱动是指每个数码管的每一个段码都由一个单片机的I O端口进行驱动 静态驱动的优点是编程简单 显示亮度高 缺点是占用I O端口多 如驱动5个数码管静态显示则需要5 8 40根I O端口来驱动 要知道一个89S51单片机可用的I O端口才32个呢 实际应用时必须增加译码驱动器进行驱动 增加了硬件电路的复杂性 4 数码管 数码管的驱动方式 动态显示驱动 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一 动态驱动是将所有数码管的8个显示笔划 a b c d e f g dp 的同名端连在一起 另外为每个数码管的公共极COM增加位选通控制电路 位选通由各自独立的I O线控制 当单片机输出字形码时 所有数码管都接收到相同的字形码 但究竟是那个数码管会显示出字形 取决于单片机对位选通COM端电路的控制 所以我们只要将需要显示的数码管的选通控制打开 该位就显示出字形 没有选通的数码管就不会亮 通过分时轮流控制各个数码管的的COM端 就使各个数码管轮流受控显示 这就是动态驱动 在轮流显示过程中 每位数码管的点亮时间为1 2ms 由于人的视觉暂留现象及发光二极管的余辉效应 尽管实际上各位数码管并非同时点亮 但只要扫描的速度足够快 给人的印象就是一组稳定的显示数据 不会有闪烁感 动态显示的效果和静态显示是一样的 能够节省大量的I O端口 而且功耗更低 4 数码管 四位数码管显示电路 4 数码管 本讲范例中使用的是8位动态数码管 4 数码管 1 进行功能分析 工作框架搭建 工作分工 2 使用软硬件开发平台proteus7 4进行电路仿真 设计要点 新建电路图设计文件 查找元器件 放置元器件 布局布线 修改元器件属性 进行仿真单片机程序 3 使用单片机集成开发环境keilC2 0 要点 C程序构成 关键词 运算符与表达式 数据结构 结构化语句 4 使用单片机下载软件STC ISP V3 3 通过串口或USB将单片机程序下载到单片机芯片中进行调试 5 完善单片机产品硬件电路 进行合适的电容 电阻 芯片 传感器 显示器件等进行焊接 通电运行后观察硬件电路是否满足要求 6 完成实验文档编写 包括 题目 作者 摘要 关键词 绪论 硬件电路 软件流程 代码 数据分析 5 项目实施 6 电路仿真 7 程序设计 分析课题 确定解决方案和算法 分配系统资源及存储单元 绘制程序流程图 设计程序 并反复调试和修改 一般步骤 设计思想 当LED的显示位数较多时 I O口较少时 为了简化电路 降低成本 将所有的字段线对应并联 由一个I O口控制 而共阴极点或共阳极点由另外一个I O口控制 如果各位同时导通 LED只能显示相同的字符 要想每位显示不同的字符 必须采用扫描显示方式 在某一瞬间 只让某一位的字位线处于选通状态 即共阴极的为低电平 共阳极为高电平 同时字段线上输出相应位要显示字符的字段码 而其他各位的字位线处于悬空状态 不显示 这样 在每一瞬时 每位LED只有选通的那一位LED显示出字符 而其他位是熄灭的 同样在下一瞬时 只显示下一位LED 如此循环每位LED 虽然这些字符是在不同的瞬时轮流显示出来的 但由于人眼的视觉残留效应 看到的是每位同时显示字符 扫描原理 7 程序设计 C51程序由一个或多个函数构成 是一个函数定义的集合 在这个集合中 必定有一个名为main 的主函数 程序执行从主函数main 开始 又在主函数main 中结束 C51程序同一般的C程序在结构上没有区别 C51程序的编程规则 1 函数是C51程序的基本单位 一个C51程序至少有一个主函数main 也可以由一个主函数main 和若干个其他函数构成 2 一个函数由函数说明部分和函数体两部分组成 3 函数说明部分由函数名 函数类型 函数属性 函数参数名和形式参数类型组成 其中允许没有函数参数 函数名后面必须有1个圆括号 括号内就是可有可无的形式参数表 7 程序设计 C51一般格式 4 函数体是用大括号 围起来的部分 大括号内有两部分内容 一部分是变量及变量的定义 另一部分是由若干语句组成的执行部分 5 语句的组成规则为 每个变量必须先定义后使用 变量名由英文字母组成 英文字母要区分大小写 大小写不同则变量名不同 书写格式自由 一行可以写多个语句 一个语句也可以写成多行 但每条语句必须以 结尾 分号是C语言的必须组成部分 每个语句和数据在定义的最后必须有一个分号 程序的最后一个语句也应有分号 7 程序设计 C51程序的编程规则 全局变量说明 可被各函数引用 main 主函数 函数体开始 局部变量说明 限于在本函数内使用 执行语句 包括调用其他函数的语句 主函数的函数体结束 6 C语言对I O操作实现了 函数化 分别调用库函数scanf和printf等函数完成 无专门的输入 输出语句 7 C51的注释用 表示 有了注释 阅读程序更方便 C51程序结构 7 程序设计 function1 形式参数表 可被调用的一个函数 形式参数说明 函数1的函数体开始 局部变量说明执行语句 包括调用其他函数的语句 函数1的函数体结束 functionn 形式参数表 可被调用的第n个函数 格式同函数1 从 开始 到 结束 7 程序设计 includeunsignedcharHour 23 unsignedcharmin 59 unsignedcharsec 56 unsignedchary 8 0 x7f 0 xbf 0 xdf 0 xef 0 xf7 0 xfb 0 xfd 0 xfe unsignedcharx 10 0 x3f 0 x06 0 x5b 0 x4f 0 x66 段码012340 x6d 0 x7d 0 x07 0 x7f 0 x6f 段码56789 voiddelay 延时子程序5ms unsignedinti 500 while i 7 程序设计 头文件 voiddisplay 数码管显示子程序 8 P2 0 xff P0 x Hour 10 P2 y 0 delay 小时的十位P2 0 xff P0 x Hour 10 P2 y 1 delay 小时的个位P2 0 xff P0 0 x40 P2 y 2 delay 01000000P2 0 xff P0 x min 10 P2 y 3 delay 分钟的十位P2 0 xff P0 x min 10 P2 y 4 delay 分钟的个位P2 0 xff P0 0 x40 P2 y 5 delay P2 0 xff P0 x sec 10 P2 y 6 delay 秒的十位P2 0 xff P0 x sec 10 P2 y 7 delay 秒的个位 显示程序 7 程序设计 voidmain 主程序 unsignedchari loop1 display i if i 25 i 0 sec if sec 59 sec 0 min if min 59 min 0 Hour if Hour 23 Hour 0 gotoloop1 7 程序设计 主程序 8 提高功能 1 能在LED显示器上实现正常的时分秒计时能通过键盘输入当前时间 并从该时间开始计时 2 有校时 校分功能 3 有报时功能 通过指示灯表示 4 有闹时功能 闹时时间可以设定 通过指示灯表示其他功能5 不用延时 考虑用定时器实现 检查的标准要求 四 检查反馈 1 交流展示指导学生对产品进行展示 互相交流 2 检测反馈指导学生对他人产品检测 提出反馈意见 3 学生评价学生对他人产品进行评价 提出产品的优点和缺点 以及分数 4 教师评价根据教师点评进行分组讨论 并对自己的项目进行修改 完善 四 检查反馈 LED流水灯 信号灯 工学结合任务二 广东机电职业技术学院 单片机应用 目的和意义 1 掌握LED发光二极管的单向导电原理和使用方法 2 掌握利用单片机的I O口控制LED发光二极管的原理和使用方法 3 掌握C51循环程序设计 4 掌握PROTEUS仿真 烧写器的使用 硬件电路设计 焊接 装配 培养学生利用单片机技术解决生活中的实际问题的能力 用单片机控制8只并排的发光二极管 D1 D8 使各发光二极管从D1开始点亮并延时熄灭 然后再点亮下一个发光二极管 8只发光二极管循环点亮后再从D1开始重复循环 这种显示方式下的发光二极管通俗地称为流水灯 它是为管理交通工具和行人的动向 传达一种命令而设置的一类固定不动的灯具 交通信号包括用光的颜色 闪烁和排列组合成的灯光信号和能显示发光文字 符号的灯光标志两种 后者只用于陆上道路交通中 起指示限速 导向和表示道路情况等的作用 交通信号灯 流水灯 一 任务描述 一 任务描述 1 通过程序 控制单片机端口 从而控制连接在端口上的流水灯 交通灯按规律亮灭 2 流水灯的控制方式有顺序点亮 间隔点亮等6种 通过按键切换控制方式 3 交通灯有东西和南北方向四组 要求红灯亮15s 绿灯亮10s 黄灯亮5s 4 采用延时方式实现 二 任务分析 1 任务所需硬件知识单片机最小系统 晶振 复位电路 IO口使用发光二极管型号 显示原理 发光二极管接口电路 交通灯接口电路2 任务所需软件知识单片机C语言数据类型 结构 for语句 主程序voidmain 延时子程序voiddelay 键盘扫描 数组等3 任务所需环境安装操作系统的微机1台 单片机集成开发环境keilC2 0 软硬件开发平台proteus6 9 单片机下载软件STC ISP V3 3 单片机实验板 下载线 项目实施过程 理实一体化模式 系统设计规划 二 任务分析 要求会使用KeilC开发环境要求文件夹命名规范要求工程项目命名规范要求文件名命名规范要求程序是否功能齐全要求仿真软件达到设计要求要求硬件电路满足设计要求要求产品设计文档充分 二 任务分析 程序设计要求 1 发光二极管发光二极管是一种把电能转换成光能的半导体器件 它由 结组成 在正向偏置的条件下导通 此时会发射出一定波长的光 发光二极管的发光功率近似与导通电流成正比 目前大多数产品可以由集成电路直接驱动 三 相关知识 二极管为什么发光 常量数据是程序执行过程中其值不变的量 在C语言中用 0 表示 常见的常量有二进制数 十进制数 十六进制数 ASCII字符等 defineMASK43 7 defineucharunsignedchar defineuintunsignedint 2 单片机C语言程序设计 1 宏定义 使用 uchari 10 uintj 544 C51的基本算术运算符有5种 加或正号 减或负号 乘 除 模运算符 又称求余 2 C51的运算符定义 C51的关系运算符有6种 小于 大于 小于或等于 大于或等于 相等 不等于 关系运算的结果只有两种 真 用 1 表示 和 假 用 0 表示 例如设a 5 b 4 c 3 则a b的值为 真 表达式的值为1 C51的逻辑运算符有3种 逻辑与 逻辑或 逻辑非 逻辑运算结果只有两个 真 用 1 表示 和 假 用 0 表示 各种C51运算符的优先级别如图3 1所示 2 C51的运算符定义 C51位操作运算符有6种 按位与 按位或 按位异或 位取反 位右移 高位补零 C51自增减运算符有4种 i 使用i前 先使i加1 i 使用i前 先使i减1 i 使用i后 再使i加1 i 使用i后 再使i减1 C51复合赋值运算符有10种 2 C51的运算符定义 指针是指存储单元的地址 变量的指针就是变量的地址 以右图存储图为例 变量X Y Z是三个在程序中定义了的整型变量 汇编语言中用伪指令DB定义的变量 相应各存储单元的物理地址已经标明 对变量X而言 指针就是2100H 3 C51的指针变量及运算操作定义 指针和指针变量 存储图 指针变量是指存放有指针内容的变量 如存储图中的变量A 就是一种指针变量 它的存储内容2100H是变量X的地址 指针 变量和指针变量在使用之前都需要定义 当变量名前出现 时 就是在定义指针变量 当变量定义后 在变量名前出现 它表示变量的地址 即指针 例如 intX Y Z 定义整型变量X Y Z int A 定义指针变量A X AB36H 赋值语句 变量X的内容为AB36H X 0 2100 将地址2100H赋给变量X A X 将变量X的指针 即变量的地址2100H 送入A 使A的内容为2100H 3 C51的指针变量及运算操作定义 既可作定义指针变量用 又可作运算符号用 作运算符号表示间接寻址操作 取变量地址运算符 而按位 与 的运算符也是 注意它们的区别 例 intx p q 定义整型变量x p q int A B 定义指针变量A B x AB36H 给变量x赋值 A x 把变量x的地址 指针 假设地址为2100H 存入A q A 以A的内容2100H为地址 把该单元的内容AB36H赋给q 结果q AB36H q A功能相当于汇编指令MOVA R0 3 C51的指针变量及运算操作定义 4 指针与数组 例 intmax 8 1 2 3 4 5 6 7 8 int p p 数组名就是首地址 考虑数组元素如何访问 声明一个变量 在编译时会给他分配一个内存地址 同样一个数组包含若干个元素 每个数组元素在内存中占用存储单元 他们都有相应的地址 所谓数组的指针是数组的起始地址 数组元素的指针是数组元素的地址 一个数组在内存中是连续存放的 数组名就是这块连续内存单元的首地址 1 从语言结构划分 函数分为主函数main 和普通函数两类 2 从使用角度划分 函数分为标准库函数和用户自定义函数两类 库函数是C编译系统提供的一系列标准函数 用户可直接调用 如头文件reg51 h等 其中一些头文件含一系列函数 要使用它们必须先用 include语句 用户自定义函数是用户按照自身需要编写的函数 5 C51函数及功能 函数的分类 3 从参数形式上划分 函数分为无参数函数 有参数函数和空函数三类 无参数函数调用时无须输入参数 也无结果返回 有参数函数调用时要给被调用函数提供实质参数 被调用函数运行后产生的结果也要返回给调用函数使用 空函数是内无语句的空白函数 调用时不产生任何操作 这种函数用于功能备用 以便扩充 5 C51函数及功能 函数的分类 1 无参数函数的定义形式 返回值类型标识符函数名 函数体语句 无参数函数通常不带返回值 因此标识符可省略或用void 2 有参数函数的定义形式 返回值类型标识符函数名 形式参数表 形式参数说明 函数体语句return 返回参数名 3 空函数的定义形式 返回值类型说明符函数名 函数的定义 5 C51函数及功能 1 使用函数调用语句 被调函数名作为主调函数中的一个语句 如 print message message 是被调用函数 2 被调函数作为表达式的运算对象 如 result 5 good x y 3 被调函数作为另一个函数的实际参数 如 m min 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 intb 被调函数 在主调函数之后出现 return a b a b 5 C51函数及功能 被调函数说明的语句intmax a b 也可以移至主调函数man 前 可不必说明 见下例 例 intmax inta intb 被调函数 在主调函数之前出现 return a b a b main 主调函数 函数内无被调函数说明intmax intx 70 y 40 m m max X Y 5 C51函数及功能 例 完成32 50的编程 defineSIGNCONST32 定义一个符号常量SIGNCONST值为32 main intvariable mult 定义两个整型变量variable和mult variable 50 给变量赋值50 mult variable SIGNCONST 变量小写 符号常量大写 printf mult d n mult 6 单片机C语言程序设计 1 顺序结构设计 if是一种条件选择判定语句 C语言提供以下3种形式 1 if 表达式 语句 含义 表达式为 真 时执行语句 否则执行下一条语句 例如 if x y c 0 当x y成立时执行c 0 否则执行下一条 2 if 表达式 语句1 else 语句2 含义 表达式为 真 时 执行语句1 否则执行语句2 2 分支结构设计 C51分支结构使用if语句和switch语句实现 a 选择语句if If x 0 x 3 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 elseif 表达式n 语句n else 语句n 1 含义 表达式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 Default 语句n 1 含义 当switch后面括号中表达式值与某个case后面常量表达式的值相等时 执行该常量表达式后面的语句 执行完后遇break退出switch语句 如果switch后面括号中表达式的值与所有的case后常量表达式的值对不上 那么程序执行default后面的语句 b 判断语句switch case 2 分支结构设计 while语句的格式为 while 表达式 语句 循环体 表达式是能够继续循环的条件 用大括号括起来的语句是循环体 如果表达式的值为 真 就重复执行循环体语句 如果表达式的值为 假 则退出循环体 执行下一条语句 3 循环结构设计 C51提供的循环语句有三种 while语句 do while语句和for语句 a while语句 do while语句的格式为 do 语句 循环体 while 表达式 do while语句用于先执行循环体语句 再由while后面的表达式 真 假 判断是否要循环 2 do while语句 3 循环结构设计 for语句的格式为 for 表达式1 表达式2 表达式3 语句 循环体 for语句的执行步骤如下 1 对表达式进行求解 进行初始化 2 求解表达式2 判断表达式是否满足给定循环条件 如果满足 表达式2的值为 真 则进行第 3 步 如果不满足 则进行第 5 步 3 执行for语句中的循环体语句 执行完后 求解表达式3 按表达式3修改变量 4 转到第 2 步去循环执行 5 退出循环 执行for语句的下一条语句 3 for语句 3 循环结构设计 3 循环结构设计 3 for语句 1 表达式1缺省 表达式1用于给变量赋初值 缺省意味着不用初值 例如 for x 50 x sum sum x 2 表达式2缺省 表达式2为循环判断条件 如果缺省表示无需判断 循环继续进行 for x 10 x 语句 3 表达式1 3缺省 例如 for x 50 语句 等同于while x 50 4 表达式1 2 3全缺省 无初值 无判断条件 表明循环无休止进行 f 语句 1 进行功能分析 工作框架搭建 工作分工 2 使用软硬件开发平台proteus7 4进行电路仿真 设计要点 新建电路图设计文件 查找元器件 放置元器件 布局布线 修改元器件属性 进行仿真单片机程序 3 使用单片机集成开发环境keilC2 0 要点 C程序构成 关键词 运算符与表达式 数据结构 结构
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 元素说课稿(第一课时)
- 老屋商业改造方案范本
- TPO防水卷材材料性能及施工流程
- 编创 钟表店的一天说课稿小学音乐沪教版三年级上册-沪教版
- 企业成本控制分析及管理措施
- 火电厂运行安全考试试题与复习资料
- 7.1 家的意味 说课稿-部编版道德与法治七年级上册
- 2025年云南省正规劳动合同范本
- 第10课 小鸡叽叽把虫啄教学设计小学信息技术电子工业版安徽三年级下册-电子工业版(安徽)
- 人教版美术八下第2单元第1课《了解纹样》说课稿
- 各种饮料课件
- 烹饪之路:技艺与创新
- 【MOOC】中西文化鉴赏-郑州大学 中国大学慕课MOOC答案
- 建筑工程临水临电施工方案
- 设备操作员岗位培训
- 标识牌的制作与安装方案
- 拍毛挂网施工合同(2篇)
- 2024安全风险分级管控管理制度
- 2024年西安交通大学中国民族钢琴艺术鉴赏智慧树知到期末考试答案章节答案(自用更新版)
- 机器损坏赔偿协议书的模板
- 林下经济的开发与利用
评论
0/150
提交评论