ATmega16单片机端口讲解新.ppt_第1页
ATmega16单片机端口讲解新.ppt_第2页
ATmega16单片机端口讲解新.ppt_第3页
ATmega16单片机端口讲解新.ppt_第4页
ATmega16单片机端口讲解新.ppt_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

第2篇端口设计 目录2 1 端口结构介绍2 2 端口寄存器讲解2 3 端口实例讲解 2 1 端口结构介绍 AVR系列单片机的IO端口结构比基本51系列单片机的端口要复杂一些 以ATmega16单片机为例 它有4组8位IO端口 分别是PORTA PORTB PORTC和PORTD 结构介绍 图2 1 图2 2 下图2 3为AVR系列单片机端口结构示意图 每组IO口配备三个8位特殊功能寄存器 它们分别是方向控制寄存器DDRx x代表A D 数据寄存器PORTx 和输入引脚寄存器PINx 例如端口A的特殊功能寄存器为DDRA PORTA和PINA 图2 3AVR系列单片机端口结构 通过这组寄存器 我们可以使每个端口实现双向数字IO通道或双向模拟量通道功能 ATmega16单片机的大部分端口具有除基本IO功能外的第二功能 关于第二功能的使用这里不作介绍 下面说明端口的基本IO输入输出和模拟量输入输出的工作过程 同步数字输出 作为输出时 总线给方向寄存器D触发器F9写1 三态门F1打开 总线来的数据经D触发器F10到达输出端Pxn 此时上拉电阻是关断的 数字输入 作为输入时 总线给方向寄存器D触发器F9写0 三态门F1关断 上拉电阻根据需要由PUD选择是否导通 在休眠信号SLEEP无效时 模拟开关M1打开 MOS管T2截止 从Pxn来的输入信号经整形电路F7和同步锁存器进入三态门F4成为同步输入信号 模拟量输入输出 在模拟量输入输出模式下 通过设置使上拉电阻 三态门F1和模拟开关M1都处于关断状态 管脚Pxn直接连通单片机内部相关模拟量输入输出单元 为单片机内部模拟比较器 A D转换器及D A转换器等功能单元提供与外围连接的通道 2 2 端口寄存器讲解 位 7 0 PA口的每一位的输入或输出定义 0 表示该位为输入方式 1 表示该位为输出方式 位 7 0 PA口输入缓冲器的值 0 该位输入为0 1 该位输入为1 位 7 0 PA口输出缓冲器的值 0 该位输出为0 1 该位输出为1 2 3 端口实例讲解 2 3 1 流水灯设计2 3 2 数码管设计2 3 3 单一按键设计2 3 4 矩阵键盘设计 2 3 1 流水灯设计 1 发光二级管的知识讲解2 设计任务3 硬件设计4 软件算法设计 发光二极管的参数与普通二极管大致相同 我们要掌握的是它的开启电压和工作电流 电流太大容易烧毁 太小亮度不够 以磷化钾做成的LED为例 开启电压 工作电流 允许最大电流 1 发光二级管的知识讲解 发光二极管限流电阻的选取 如图所示 可以求出限流电阻的取值范围 发光二极管限流电阻的选取 ATmega16端口的输入 输出电流 设计任务 硬件设计 图2 4硬件设计 顺时针设计算法 逆时针设计算法 2 3 2 数码管设计 1 数码管基础知识讲解2 设计任务3 硬件设计4 软件设计 数码管的分类 数码管的判别 数码管的驱动 数码管的字型码 1 数码管基础知识讲解 数码管的分类 按发光二极管单元连接方式分为 共阳极数码管共阴极数码管 共阳数码管是指将所有发光二极管的阳极接到一起形成共阳极 COM 的数码管 图2 5共阳数码管 共阴数码管是指将所有发光二极管的阴极接到一起形成共阴极 COM 的数码管 图2 6共阴数码管 数码管的判别 共阳数码管在判别时应将公共极COM接到 5V 当某一字段发光二极管的阴极为低电平时 相应字段就点亮 当某一字段的阴极为高电平时 相应字段就不亮 共阴数码管在判别时应将公共极COM接到地线GND上 当某一字段发光二极管的阳极为高电平时 相应字段就点亮 当某一字段的阳极为低电平时 相应字段就不亮 数码管的驱动 数码管要正常显示 就要用驱动电路来驱动数码管的各个段码 从而显示出我们要的数字 因此根据数码管的驱动方式的不同 可以分为静态和动态两类静态显示驱动 动态显示驱动静态驱动也称直流驱动 静态驱动是指每个数码管的每一个段码都由一个单片机的I O端口进行驱动 或者使用如BCD码二 十进制译码器译码进行驱动 静态驱动的优点是编程简单 显示亮度高 缺点是占用I O端口多 如驱动5个数码管静态显示则需要5 8 40根I O端口来驱动 实际应用时必须增加译码驱动器进行驱动 我们常用74LS164 74HC595来驱动数码管 动态显示驱动动态驱动是将所有数码管的8个显示笔划 a b c d e f g dp 的同名端连在一起 另外为每个数码管的公共极COM增加位选通控制电路 位选通由各自独立的I O线控制 当单片机输出字形码时 所有数码管都接收到相同的字形码 但究竟是那个数码管会显示出字形 取决于单片机对位选通COM端电路的控制 所以我们只要将需要显示的数码管的选通控制打开 该位就显示出字形 没有选通的数码管就不会亮 通过分时轮流控制各个数码管的的COM端 就使各个数码管轮流受控显示 这就是动态驱动 在轮流显示过程中 每位数码管的点亮时间为1 2ms 由于人的视觉暂留现象及发光二极管的余辉效应 尽管实际上各位数码管并非同时点亮 但只要扫描的速度足够快 给人的印象就是一组稳定的显示数据 不会有闪烁感 数码管的字型码 图2 7实物图 图2 8引脚图 数码管的字型码 共阳极 我们这里只讲静态驱动 74HC164驱动 的字型码 数码管的字型码 共阴极 74ls164引脚图和真值表 2 9引脚图 2 10真值表 TTL与CMOS区别 74系列芯片电平区别 TTL电平和CMOS电平的区别 74ls164工作时序 图2 11工作时序 2 设计任务 3 硬件设计 图2 12硬件设计 数码管显示程序 4 软件设计 2 3 3 单一按键设计 1 单一按键原理2 设计任务3 软件算法设计 1 单一按键原理通常的按键所用开关为机械弹性开关 当机械触点断开 闭合时 由于机械触点的弹性作用 一个按键开关在闭合时不会马上稳定地接通 在断开时也不会一下子断开 因而在闭合及断开的瞬间均伴随有一连串的抖动 抖动时间的长短由按键的机械特性决定 一般为5ms 10ms 按键稳定闭合时间的长短则是由操作人员的按键动作决定的 一般为零点几秒至数秒 键抖动会引起一次按键被误读多次 为确保CPU对键的一次闭合仅作一次处理 必须去除键抖动 在键闭合稳定时读取键的状态 并且判别到键释放稳定后再作处理 硬件消抖在键数较少时可用硬件方法消除键抖动 RS触发器为常用的硬件去抖 由于需要增加硬件设备 增大了系统的复杂性 所以硬件消抖一般不常用 软件消抖如果按键较多 常用软件方法去抖 即检测出键闭合后执行一个延时程序 5ms 10ms的延时 让前沿抖动消失后再一次检测键的状态 如果仍保持闭合状态电平 则确认为真正有键按下 2 设计任务 按键消抖 图2 13按键消抖 按键消抖程序 if AJ1 delay cycles 80000 延时10ms消抖if AJ1 确认有键按下 while AJ1 等待按键释放 3 软件算法设计 查询法 ATmega16单片机有21个中断源 在这21个中断中 包含1个非屏蔽中断 RESET 3个外部中断 INT0 INT1 INT2 和17个内部中断 这些中断的优先级按照向量号排列 向量号越小优先级越高 本例用到的中断源为外部中断请求1 INT1 ATmega16的中断源 ATmega16的中断寄存器 位6 SE 休眠使能控制位 0 CPU工作在正常模式 1 CPU工作在休眠模式 由SM2 SM1 SM0决定休眠方式 请参阅手册 位3 2 ISC11 0 决定INT1的中断触发方式 位1 0 ISC01 0 决定INT0的中断触发方式 同INT1 位7 6 5 INTx 外部中断x使能位 0 不允许INTx中断 1 允许INTx中断 位4 3 保留 位1 IVSEL 中断向量选择位 0 中断向量位于Flash存储器的起始址 1 中断向量转移到Boot区的起始地址 位0 IVCE 中断向量修改使能位 0 不能改变IVSEL的值 1 能改变IVSEL的值 位7 6 5 INTx 外部中断x标志位 0 INTx中断没有发生 1 INTx中断发生 位4 0 保留 当状态寄存器SREG的位I 通用中断控制寄存器GICR中断使能位INT1为1 并且INTx位为1时 MCU即跳转到相应的中断向量 进入中断服务程序之后该标志自动清零 此外 标志位也可以通过写入1来清零 软件设计 中断法 外部中断INT1服务程序 pragmavector INT1 vect interruptvoidINT1 isr void SREG Bit7 0 关闭全局中断flag 1 标志位置位while AJ1 等待按键释放SREG Bit7 1 全局中断打开 IAR中断服务程序的编写 IAR中定义中断函数的格式是 pragmavector 中断向量 interruptvoid中断服务程序 void 中断处理程序 外部中断1的服务程序 pragmavector INT1 vect interruptvoidINT1 Server void 2 3 4 矩阵键盘设计 1 矩阵键盘设计原理2 设计任务3 硬件设计原理图4 软件算法设计 前面我们已经讲述了单一按键电路 对于单一按键每个按键必须占用一根I O口线 在按键数量较多时 I O口线浪费较大 为了解决这个问题 采用矩阵键盘 1 矩阵键盘设计原理 2 设计任务 3 硬件设计原理图 图2 14硬件设计原理 4 软件算法设计 软件处理键盘的方式 有编程扫描方式 定时扫描方式中断扫描方式 1 编程扫描工作方式是利用CPU在完成其它工作的空余 调用键盘扫描子程序 来响应键输入要求 2 定时扫描工作方式是利用单片机内部定时器产生定时中断 10ms CPU响应中断后对键盘进行扫描 并在有键按下时转入键功能处理程序 3 中断扫描工作方式即当键盘上只要有键闭合 就向CPU发出中断请求 CPU响应中断 立即中断当前正在运行的程序 转入执行中断服务程序 判断键盘上闭合键的键号 并作相应的键功能处理 判断按键按下常用的方法有两种 即扫描法和反转 法 根据扫描方式的不同 扫描法又可细分为逐行扫描和逐列扫描 1 扫描法是在判定有键按下后逐列 或行 置低电平 同时读入行 或列 状态 如果行 或列 状态出现非全1状态 这时0状态的行 列交点的键就是所按下的键 2 线反转法与扫描法相比 扫描法要逐列 或行 扫描查询 当被按下的键处于最后一列 或行 时 则要经过多次扫描才能最后获得此键所处的行列值 而线反转法无论被按键是处于第一还是最后 均只须经过两步便能获得此键所在的行列值 矩阵键盘处理程序具体操作流程如下 1 判断键盘有无按下PA 0 PA 1 PA 2 PA 3输出全为 0 再读入PB 0 PB 1 PB 2 PB 3判断是否全为 1 若全为 1 则无键按下 否则有键按下 2 去键抖动影响判断有键按下后 采用软件延时一段时间 10ms 15ms 再次判断键盘状态 如果仍为有键按下状态 则认为此键确实按下 否则按照键抖动处理 3 确定闭合键

温馨提示

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

评论

0/150

提交评论