版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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、端口实例讲解、流水灯设计、数码管设计、单一按键设计、矩阵键盘设计、流水灯设计1、发光二级管的知识讲解2、设计任务3、硬件设计4、软件算法设计发光二极管的参数与普通二极管大致相同,我们要掌握的是它的开启电压和工作电流。电流太大容易烧毁,太小亮度不够。以磷化钾做成的LED为例:开启电压:工作电流:允许最大电流:
1、发光二级管的知识讲解发光二极管限流电阻的选取:如下图:可以求出限流电阻的取值范围。发光二极管限流电阻的选取:端口设置引脚状态说明输入电流输入上拉无效,为高阻状态上拉有效,外部引脚拉低输出电流灌电流(吸收电流)输出推挽0输出,吸收电流输出电流输出推挽1输出,输出电流ATmega16端口的输入/输出电流:设计任务:序号实例要求例1流水灯端口直接闪亮例2流水灯顺时针转例3流水灯逆时针例4按键控制转向例5按键控制流水灯间隔数1例6按键控制流水灯间隔数2硬件设计:图2-4硬件设计顺时针设计算法:逆时针设计算法:、数码管设计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真值表TTLCMOSVOH≥2.4VVCCVOL≤0.4VGNDVIH≥2.0V0.7VCCVIL≤0.8V0.2VCC输入电平输出电平74LSTTLTTL74HCCMOSCMOS74HCTTTLCMOSTTL与CMOS区别74系列芯片电平区别TTL电平和CMOS电平的区别:74ls164工作时序:图2-11工作时序2、设计任务:序号实例要求例1设计程序,数码管全显示例2设计程序,数码管一位显示例3设计程序,查询按键0到9999例4设计程序,查询按键数码管全部显示例5设计程序,查询按键加减例6设计程序,按键中断查询法实现3、硬件设计:图2-12硬件设计数码管显示程序:4、软件设计、单一按键设计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){}、矩阵键盘设计1、矩阵键盘设计原理2、设计任务3、硬件设计原理图4、软件算法设计前面我们已经讲述了单一按键电路,对于单一按键每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大。为了解决这个问题,采用矩阵键盘。1、矩阵键盘设计原理2、设计任务:序号实例要求例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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度新能源汽车动力系统研发合同4篇
- 2024版合同续约细化合同版B版
- 2025年度出境游定制游合同3篇
- 2025年度医疗机构检验科外包服务承包合同4篇
- 2024蔬菜产业园区建设与农产品销售合作意向协议书3篇
- 2024版物联网技术研发与推广合同
- 2024版政府机关临时工作人员劳动协议样本一
- 2025年度安置房维修基金管理合同3篇
- 2025年度现代农业土地承包与经营权转让合同范本4篇
- 2025年度电影剧本创作与主演演员签约服务协议6篇
- 表B. 0 .11工程款支付报审表
- 警务航空无人机考试题库及答案
- 空气自动站仪器运营维护项目操作说明以及简单故障处理
- 新生儿窒息复苏正压通气课件
- 2022年12月Python-一级等级考试真题(附答案-解析)
- 法律顾问投标书
- 班主任培训简报4篇(一)
- 成都市数学八年级上册期末试卷含答案
- T-CHSA 020-2023 上颌骨缺损手术功能修复重建的专家共识
- 危重症患者转运指南-课件
- Hypermesh lsdyna转动副连接课件完整版
评论
0/150
提交评论