项目1__LED彩灯的单片机控制与制作_第1页
项目1__LED彩灯的单片机控制与制作_第2页
项目1__LED彩灯的单片机控制与制作_第3页
项目1__LED彩灯的单片机控制与制作_第4页
项目1__LED彩灯的单片机控制与制作_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

项目1LED彩灯的单片机控制与制作 项目说明 LED彩灯色彩丰富 造价低廉 控制方便 用LED来制作广告灯箱以及进行城市的亮化与美化已经成为一种时尚 用全硬件电路设计的LED彩灯控制器 一旦制作完成就只能按照固定的模式显示 花样少而单调 用单片机设计的LED彩灯控制器 是用软件控制硬件的方式实现彩灯多种显示模式 花样 的控制 通过本项目的学习 可以随心所欲地设计并制作出一款个性化的LED彩灯 并且也将引领你禁入 单片机技术 的大门 从内到外认识单片机 几种简单的单片机产品 单片机的作用单片机虽然只是一个芯片 但由于其体积小 价格低 控制能力强 因此应用十分广泛 涵盖了工农生产 日常生活 国防航天 仪器仪表等应用领域 所谓单片机就是在一块集成中央处理器 CPU 存储器 ROM RAM 定时 计数器 T C 输入 输出 I O 接口等计算机主要部件的微型计算机 目前 国际上通用的缩写为MCU MicrocotrollerUnit 什么是单片机 多位LED彩灯同时闪烁控制仿真 用PeoteusISIS绘制一个51MCU应用电路 在P1口的引脚上通过限流电阻接多个 3 8 LED彩灯 用keil编写程序 控制多位LED彩灯同时闪烁 完成软件调试与仿真 目录1 1单片机的I O口1 2LED发光二极管工作原理1 3C51程序结构与语句介绍1 4C函数介绍1 5软件延时介绍1 6硬件电路设计 1 1单片机I O口 80C51单片机有4个8位的双向并行输入 输出 I O 端口 称为P0口 P1口 P2口和P3口 P0口是一个双功能的8位并行I O口 字节地址为80H 位地址为80H 87H 可作输入 输出端口使用 又可作地址 数据总线分时传输低8位地址和8位数据 P1口是单一功能的并行I O口 字节地址为90H 位地址为90H 97H 它只用作通用的数据输入 输出口 1 1单片机I O口 P2口是一个双功能的8位并行I O口 字节地址为80H 位地址为A0H A7H 可作通用的输入 输出口用 又可用作高8位地址总线 P3口是一个双功能的8位并行I O口 字节地址为B0H 位地址为B0H B7H 它的第一功能是通用输入 输出口 作第二功能用时 各引脚定义如下 P3 0 RXD 串行口输入 P3 1 TXD 串行口输出 P3 2 外部中断0输入 P3 3 外部中断1输入 P3 4 T0 定时 计数器0外部计数脉冲输入 P3 5 T1 定时 计数器1外部计数脉冲输入 P3 6 片外数据存储器写选通信号输出 P3 7 片外数据存储器读选通信号输出 P0口的结构与运作图中画出了P0口的某位P0 X X 0 1 6 7 的结构图 P0口的位电路结构由以下几个部分组成 1个输出锁存器 用于进行输出数据的锁存 2个三态输入缓冲器 分别用于锁存器和引脚数据的输入缓冲 1个多路开关MUX 它的一个输入来自锁存器 另一个输入是地址 数据信号的反相输出 在控制信号的的控制下能实现对锁存器输出端和地址 数据线之间的切换 由两只场效应管组成的输出驱动电路 1 1单片机I O口 P0口的特点P0口是一个双功能的端口 地址 数据分时复用口和通用I O口 具有高电平 低电平和高阻抗3种状态的I O端口称为双向I O端口 P0口作地址 数据总线复用口时 相当于一个真正的双向I O口 而用作通用I O口时 由于引脚上需要外接上拉电阻 端口不存在高阻 悬空 状态 此时P0口只是一个准双向口 为保证引脚上的信号能正确读入 在读入操作前应首先向锁存器写1 单片机复位后 锁存器自动被置1 一般情况下 如果P0口已作为地址 数据复用口时 就不能再用作通用I O口使用 P0口能驱动8个TTL负载 1 1单片机I O口 P1口的结构与运作P1口的位结构如图所示 P1口是一个准双向口 只作通用输入 输出口使用 除了无多路开关MUX之外 其输出驱动部分也与P0口不同 P1口的位电路结构由以下几个部分组成 一个数据输出锁存器 用于输出数据的锁存 两个三态输入缓冲器 BUF1用于读锁存器 BUF2用于读引脚 数据输出驱动电路 由场效应管VT和片内上拉电阻R组成 1 1单片机I O口 P1口的特点P1口由于有内部上拉电阻 没有高阻抗输入状态 所以称为准双向口 作为输出口时 不需要再在片外拉接上拉电阻 P1口读引脚输入时 必须先向锁存器写入1 其原理与P0口相同 P1口能驱动4个TTL负载 1 1单片机I O口 P2口的结构与运作从图中可见 P2口的位结构比P1口多了一个多路开关MUX P2口的位电路结构由以下几个部分组成 一个数据输出锁存器 用于输出数据的锁存 两个三态输入缓冲器 BUF1用于读锁存器 BUF2用于读引脚 一个多路开关MUX 它的一个输入来自锁存器的Q端 另一个输入来自内部地址的高8位 数据输出驱动电路由非门M 场效应管VT和片内上拉电阻R组成 1 1单片机I O口 P3口的特点P3口内部有上拉电阻 不存在高阻输入状态 是一个准双向口 P3口作第二功能的输出 输入或作通用输入时 均需将相应的锁存器置1 实际应用中 由于复位后P3口锁存器自动置1 已满足第二功能运作条件 所以可以直接进行第二功能操作 P3口的某位不作为第二功能使用时 则自动处于通用输出 输入口功能 可作为通用输出 输入口使用 作通用输出 输入口使用时 输入信号取自缓冲器BUF2的输出端 作第二功能使用时 输入信号取自缓冲器BUF3的输出端 P3口能驱动4个TTL负载 1 1单片机I O口 P2口的特点P2口用作高8位地址输出线应用时 与P0口输出的低8位地址一起构成16位的地址总线 可以寻址64KB地址空间 当P2口作高8位地址输出口时 其输出锁存器原锁存的内容保持不变 作为通用I O口使用时 P2口为准双向口 功能与P1口一样 P2口能驱动4个TTL负载 1 1单片机I O口 P3口的结构组成P3口是双功能8位输入 输出口 内部结构中增加了第二输入 输出功能 如图所示 P3口的位电路结构由以下几个部分组成 一个数据输出锁存器 用于输出数据的锁存 3个三态输入缓冲器 BUF1用于读锁存器 BUF2 BUF3用于读引脚和第二功能数据的缓冲输入 数据输出驱动电路 由与非门M 场效应管VT和片内上拉电阻R组成 1 1单片机I O口 1 2LED发光二极管工作原理介绍 发光二极管简称LED 采用砷化镓 镓铝砷 和磷化镓等材料制成 其内部结构为一个PN结 具有单向导电性 当在发光二极管PN结上加正向电压时 PN结势垒降低 载流子的扩散运动大于漂移运动 致使P区的空穴注入到N区 N区的电子注入到P区 这样相互注入的空穴与电子相遇后会产生复合 复合时产生的能量大部分以光的形式出现 因此而发光 发光二极管在制作时 由于使用材料不同 可以发出不同颜色的光 发光二极管的发光颜色有 红 黄 绿 蓝等 1 2LED发光二极管工作原理介绍 传统的彩灯多使用热光源器件 但耗能较为突出 近年来 由于冷光源发光器件的节能 寿命长 价格便宜等突出优点 它的应用日益广泛 因此 本项目的设计考虑使用冷光源器件 发光二极管来实现 1 2LED发光二极管工作原理介绍 发光二极管在其两端的电压差超出其导通压降时开始工作 一般为1 7V 1 9V左右 此外 还需保证该二极管的工作电流 当满足电流和电压的要求时 发光二极管就可以发光了 发光二极管原理图 A表示阳极 K表示阴极 1 2LED发光二极管工作原理介绍 二极管的判断如下 二极管的正负极可以用万用表的二极管档量出来 如果表上有了一点几几的读数 红表笔接的就是发光二极管的正极 黑表笔接的就是负极 从外观上看 发光二极管的正极引脚比较长 单片机系统中的逻辑信号 不是5V就是0V 但一般二极管的点亮电流为5mA至10mA 因此 二极管和单片机连接时 需要串接一个限流电阻 从而达到减少功耗的目的或者满足端口对最大电流的限制 1 2LED发光二极管工作原理介绍 C51程序结构与语句介绍 if语句 第二种形式为 if elseif 表达式 语句1 else语句2 其语义是 如果表达式的值为真 则执行语句1 否则执行语句2 1 2LED发光二极管工作原理介绍 单片机的I O口可通过编程送出相应的高电平和低电平 高电平一般为5V 低电平为0V 这样就有让发光二极管点亮有 P1 0 x00 P1口上输出低电平让发光二极管熄灭有 P1 0 xff P1口上输出高电平而仅对P1 7上所接的发光管操作 需要先定义P1 7这一位再使用 于是有 includesbitP1 7 P1 7 voidmian P1 7 0 P1 7上输出低电平P1 7 1 P1 7上输出高电平 1 3C51程序结构与语句介绍 if语句 第三种形式为if elseif形式前二种形式的if语句一般都用于两个分支的情况 当有多个分支选择时 可采用if else if语句 其一般形式为 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 elseif 表达式m 语句m else语句n 其语义是 依次判断表达式的值 当出现某个值为真时 则执行其对应的语句 然后跳到整个if语句之外继续执行程序 如果所有的表达式均为假 则执行语句n 然后继续执行后续程序 1 3C51程序结构与语句介绍 例3 2根据分数score分别打出A B C D E五个等级 include stdio h main charscore if score 90 printf YourresultisanA n elseif score 80 printf YourresultisanB n elseif score 70 printf YourresultisanC n elseif score 60 printf YourresultisanD n elseprintf YourresultisanE n 1 3C51程序结构与语句介绍 for语句在C语言中 for语句使用最为灵活 它完全可以取代while语句 它的一般形式为 for 表达式1 表达式2 表达式3 语句它的执行过程如下 先求解表达式1 求解表达式2 若其值为真 非0 则执行for语句中指定的内嵌语句 然后执行下面第3 步 若其值为假 0 则结束循环 转到第5 步 求解表达式3 转回上面第2 步继续执行 循环结束 执行for语句下面的一个语句 1 3C51程序结构与语句介绍 for语句最简单的应用形式也是最容易理解的形式如下 for 循环变量赋初值 循环条件 循环变量增量 语句循环变量赋初值总是一个赋值语句 它用来给循环控制变量赋初值 循环条件是一个关系表达式 它决定什么时候退出循环 循环变量增量 定义循环控制变量每循环一次后按什么方式变化 这三个部分之间用 分开 注意 for循环中的 表达式1 循环变量赋初值 表达式2 循环条件 和 表达式3 循环变量增量 都是选择项 即可以缺省 但 不能缺省 省略了 表达式1 循环变量赋初值 表示不对循环控制变量赋初值 省略了 表达式2 循环条件 则不做其它处理时便成为死循环 1 3C51程序结构与语句介绍 例3 3用for语句求1到100这几个数的和 main inti sum 0 for i 1 i 100 i sum sum i printf d n sum 1 3C51程序结构与语句介绍 例3 8下面一段程序用于计算圆的面积 当计算到面积大于100时 由break语句跳出循环 include definepi3 14main charr area for r 1 r100 break 大于100时跳出循环printf f n area 注意 break语句对if else的条件语句不起作用 在多层循环中 一个break语句只向外跳一层 1 3C51程序结构与语句介绍 continue语句continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环 continue语句只用在for while do while等循环体中 常与if条件语句一起使用 用来加速循环 continue语句和break语句的区别在于 continue语句只是结束本次循环而不是终止整个循环 break语句则是结束循环 不再进行条件判断 1 4C函数介绍 源程序是由函数组成的 程序中只有一个主函数main 但实用程序往往由多个函数组成 函数是 源程序的基本模块 通过对函数模块的调用实现特定的功能 在 语言中可从不同的角度对函数分类 从函数定义的角度看 函数可分为库函数和用户定义函数两种 库函数 由 系统提供 用户无须定义 也不必在程序中作类型说明 只需在程序前包含有该函数原型的头文件即可在程序中直接调用 1 4C函数介绍 语言的函数兼有其它语言中的函数和过程两种功能 从这个角度看 又可把函数分为有返回值函数和无返回值函数两种 有返回值函数 此类函数被调用执行完后将向调用者返回一个执行结果 称为函数返回值 由用户定义的这种要返回函数值的函数 必须在函数定义和函数说明中明确返回值的类型 无返回值函数 此类函数用于完成某项特定的处理任务 执行完成后不向调用者返回函数值 这类函数类似于其它语言的过程 由于函数无须返回值 用户在定义此类函数时可指定它的返回为 空类型 空类型的说明符为 void 1 4C函数介绍 从主调函数和被调函数之间数据传送的角度看又可分为无参函数和有参函数两种 无参函数 函数定义 函数说明及函数调用中均不带参数 主调函数和被调函数之间不进行参数传送 此类函数通常用来完成一组指定的功能 可以返回或不返回函数值 有参函数 也称为带参函数 在函数定义及函数说明时都有参数 称为形式参数 简称为形参 在函数调用时也必须给出参数 称为实际参数 简称为实参 进行函数调用时 主调函数将把实参的值传送给形参 供被调函数使用 1 4C函数介绍 有参函数定义的一般形式类型标识符函数名 形式参数表列 声明部分语句 例如 定义一个函数 用于求两个数中的大数 可写为 intmax inta intb if a b returna elsereturnb 1 4C函数介绍 函数的值只能通过return语句返回主调函数 return语句的一般形式为 return表达式 或者为 return 表达式 不返回函数值的函数 可以明确定义为 空类型 类型说明符为 void 1 4C函数介绍 在 语言中 所有的函数定义 包括主函数main在内 都是平行的 也就是说 在一个函数的函数体内 不能再定义另一个函数 即不能嵌套定义 但是函数之间允许相互调用 也允许嵌套调用 习惯上把调用者称为主调函数 函数还可以自己调用自己 称为递归调用 递归调用的函数必须用reentrant修饰符进行修饰 其形式为 类型说明符函数名 类型形参 类型形参 reentrant 1 4C函数介绍 main函数是主函数 它可以调用其它函数 而不允许被其它函数调用 因此 程序的执行总是从main函数开始 完成对其它函数的调用后再返回到main函数 最后由main函数结束整个程序 函数定义的一般形式 无参函数的定义形式类型标识符函数名 声明部分语句 1 4C函数介绍 例3 11用递归法计算n include 包含特殊功能寄存器库 include 包含I O函数库intfac intn reentrant intresult if n 0 result 1 elseres

温馨提示

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

评论

0/150

提交评论