版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第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代表AD),数据寄存器PORTx,和输入引脚寄存器PINx。例如端口A的特殊功能寄存器为DDRA、PORTA和PINA。,图2-3 AVR系列单片机端口结构,通
2、过这组寄存器,我们可以使每个端口实现双向数字IO通道或双向模拟量通道功能。ATmega16单片机的大部分端口具有除基本IO功能外的第二功能,关于第二功能的使用这里不作介绍。下面说明端口的基本IO输入输出和模拟量输入输出的工作过程。 同步数字输出。作为输出时,总线给方向寄存器D触发器F9写1,三态门F1打开,总线来的数据经D触发器F10到达输出端Pxn,此时上拉电阻是关断的。 数字输入。作为输入时,总线给方向寄存器D触发器F9写0,三态门F1关断,上拉电阻根据需要由PUD选择是否导通,在休眠信号SLEEP无效时,模拟开关M1打开,MOS管T2截止,从Pxn来的输入信号经整形电路F7和同步锁存器进
3、入三态门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.
4、3.2、数码管设计 2.3.3、单一按键设计 2.3.4、矩阵键盘设计,2.3.1、流水灯设计,1、发光二级管的知识讲解 2、设计任务 3、硬件设计 4、软件算法设计,发光二极管的参数与普通二极管大致相同,我们要掌握 的是它的开启电压和工作电流。电流太大容易烧毁,太 小亮度不够。以磷化钾做成的LED为例: 开启电压: 工作电流: 允许最大电流:,1、发光二级管的知识讲解,发光二极管限流电阻的选取:,如图所示:可以求出限流电阻的取值范围。,发光二极管限流电阻的选取:,ATmega16端口的输入/输出电流:,设计任务:,硬件设计:,图2-4 硬件设计,顺时针设计算法:,逆时针设计算法:,2.3.2
5、、数码管设计,1、数码管基础知识讲解 2、设计任务 3、硬件设计 4、软件设计,、数码管的分类 、数码管的判别 、数码管的驱动 、数码管的字型码,1、数码管基础知识讲解:,、数码管的分类:,按发光二极管单元连接方式分为:共阳极数码管共阴极数码管,共阳数码管是指将所有发光二极管的阳极接到一起形成 共阳极(COM)的数码管。,图2-5 共阳数码管,共阴数码管是指将所有发光二极管的阴极接到一起形成 共阴极(COM)的数码管。,图2-6 共阴数码管,、数码管的判别:,共阳数码管在判别时应将公共极COM接到+5V,当某一 字段发光二极管的阴极为低电平时,相应字段就点亮。当 某一字段的阴极为高电平时,相应
6、字段就不亮。 共阴数码管在判别时应将公共极COM接到地线GND上, 当某一字段发光二极管的阳极为高电平时,相应字段就点 亮。当某一字段的阳极为低电平时,相应字段就不亮。,、数码管的驱动:,数码管要正常显示,就要用驱动电路来驱动数码管的 各个段码,从而显示出我们要的数字,因此根据数码管的 驱动方式的不同,可以分为静态和动态两类静态显示驱动。,动态显示驱动 静态驱动也称直流驱动。静态驱动是指每个数码管的 每一个段码都由一个单片机的I/O端口进行驱动,或者使用 如BCD码二-十进制译码器译码进行驱动。静态驱动的优点 是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动 5个数码管静态显示则需要58
7、=40根I/O端口来驱动,实际 应用时必须增加译码驱动器进行驱动,我们常用74LS164/ 74HC595来驱动数码管。,动态显示驱动 动态驱动是将所有数码管的8个显示笔划“a,b,c,d,e,f, g,dp”的同名端连在一起,另外为每个数码管的公共极COM增 加位选通控制电路,位选通由各自独立的I/O线控制,当单片 机输出字形码时,所有数码管都接收到相同的字形码,但究竟 是那个数码管会显示出字形,取决于单片机对位选通COM端电 路的控制,所以我们只要将需要显示的数码管的选通控制打 开,该位就显示出字形,没有选通的数码管就不会亮。通过分 时轮流控制各个数码管的的COM端,就使各个数码管轮流受控
8、 显示,这就是动态驱动。,在轮流显示过程中,每位数码管的点亮时间为1 2ms,由于人的视觉暂留现象及发光二极管的余辉效 应,尽管实际上各位数码管并非同时点亮,但只要扫描 的速度足够快,给人的印象就是一组稳定的显示数据, 不会有闪烁感。,、数码管的字型码:,图2-7实物图,图2-8引脚图,数码管的字型码共阳极:,我们这里只讲静态驱动(74HC164驱动)的字型码,数码管的字型码共阴极:,74ls164引脚图和真值表:,2-9 引脚图,2-10 真值表,TTL与CMOS区别,74系列芯片电平区别,TTL电平和CMOS电平的区别:,74ls164工作时序:,图2-11 工作时序,2、设计任务:,3、
9、硬件设计:,图2-12 硬件设计,数码管显示程序:,4、软件设计,2.3.3、单一按键设计,1、单一按键原理 2、设计任务 3、软件算法设计,1、单一按键原理 通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动 ,抖动时间的长短由按键的机械特性决定,一般为5ms10ms。 按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的
10、状态,并且判别到键释放稳定后再作处理 。,硬件消抖在键数较少时可用硬件方法消除键抖动。 RS触发器为常用的硬件去抖,由于需要增加硬件设备,增大了系统的复杂性,所以硬件消抖一般不常用。 软件消抖 如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,5ms10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。,2、设计任务按键消抖:,图2-13 按键消抖,按键消抖程序:if(!AJ1) _delay_cycles(80000);/延时10ms消抖 if(!AJ1) /确认有键按下 while(!AJ1);/等待按键释放 ,3、软件算法设计查
11、询法,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:I
12、NTx:外部中断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即跳转到相应的中断向量。进入中断服务程序之后该标志
13、自动清零。此外,标志位也可以通过写入1来清零。,软件设计中断法:,/外部中断INT1服务程序 #pragma vector=INT1_vect _interrupt void INT1_isr(void) SREG_Bit7=0;/关闭全局中断 flag=1; /标志位置位 while(!AJ1);/等待按键释放 SREG_Bit7=1;/全局中断打开 ,IAR中断服务程序的编写:,IAR中定义中断函数的格式是: #pragma vector=中断向量 _interrupt void 中断服务程序(void) 中断处理程序 外部中断1的服务程序: #pragma vector=INT1_vec
14、t _interrupt void INT1_Server(void) ,2.3.4、矩阵键盘设计,1、矩阵键盘设计原理 2、设计任务 3、硬件设计原理图 4、软件算法设计,前面我们已经讲述了单一按键电路,对于单一按键每 个按键必须占用一根I/O口线,在按键数量较多时, I/O口线浪费较大。为了解决这个问题,采用矩阵键盘。,1、矩阵键盘设计原理,2、设计任务:,3、硬件设计原理图:,图2-14 硬件设计原理,4、软件算法设计:,软件处理键盘的方式,有编程扫描方式、定时扫描 方式中断扫描方式。 1、编程扫描工作方式是利用CPU在完成其它工作的空 余,调用键盘扫描子程序,来响应键输入要求。 2、定
15、时扫描工作方式是利用单片机内部定时器产生定 时中断(10ms),CPU响应中断后对键盘进行扫描、 并在有键按下时转入键功能处理程序。 3、中断扫描工作方式即当键盘上只要有键闭合,就向 CPU发出中断请求,CPU响应中断,立即中断当前正 在运行的程序,转入执行中断服务程序,判断键盘 上闭合键的键号,并作相应的键功能处理。,判断按键按下常用的方法有两种,即扫描法和反转、 法,根据扫描 方式的不同,扫描法又可细分为逐行扫描和逐列扫描。 1、扫描法是在判定有键按下后逐列(或行)置低电平, 同时读入行(或列)状态,如果行(或列)状态出现 非全1状态,这时0状态的行、列交点的键就是所按下 的键。 2、线反
16、转法与扫描法相比,扫描法要逐列(或行)扫描 查询,当被按下的键处于最后一列(或行)时,则要 经过多次扫描才能最后获得此键所处的行列值。而线 反转法无论被按键是处于第一还是最后,均只须经过 两步便能获得此键所在的行列值。,矩阵键盘处理程序具体操作流程如下: 1、判断键盘有无按下 PA.0、PA.1、PA.2、PA.3输出全为“0”,再读入PB.0、 PB.1、PB.2、PB.3 判断是否全 为“1”,若全为“1”,则无键按下,否 则有键按下。 2、 去键抖动影响 判断有键按下后,采用软件延时一段时间(10ms15ms), 再次判断键盘状态,如果仍为有键按下状态,则认为此 键确实按下,否则按照键抖动处理。,3、 确定闭合键的键号 PA.0 PA.1 PA.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厨师管理奖惩制度范本
- 儿童奖惩制度实施细则
- 家长给孩子奖惩制度
- 护林员奖惩制度范本大全
- 持证上岗奖惩制度汇编
- 收费站绩效考核奖惩制度
- 教培机构招生奖惩制度
- 教师正确运用奖惩制度
- 散货区域员工奖惩制度
- 文明校园考核奖惩制度
- JCT412.1-2018 纤维水泥平板 第1部分:无石棉纤维水泥平板
- 司马光《与王介甫书》原文注释赏析译文
- 沙洲电厂“1014”电气误操作全厂停电事故通报
- 不说脏话从我做起主题班会PPT模板
- 肝硬化患者护理查房
- 下肢静脉曲张的护理
- 食品质量与安全第一章绪论
- 林义《社会保险基金管理》(第2版)笔记和课后习题详解
- 2023年安徽汽车职业技术学院单招职业适应性测试题库及答案解析
- YY/T 0698.2-2022最终灭菌医疗器械包装材料第2部分:灭菌包裹材料要求和试验方法
- GB/T 18314-2009全球定位系统(GPS)测量规范
评论
0/150
提交评论