单片机原理及应用第八章单片机的人机接口_第1页
单片机原理及应用第八章单片机的人机接口_第2页
单片机原理及应用第八章单片机的人机接口_第3页
单片机原理及应用第八章单片机的人机接口_第4页
单片机原理及应用第八章单片机的人机接口_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用第八章·单片机的人机接口Contents本章目录单片机原理及应用——第八章单片机的人机接口01键盘及其与单片机的接口02LED显示器及接口设计03键盘显示综合接口设计04数模及模数转换器接口CHAPTER01键盘及其与单片机的接口从独立按键到矩阵键盘,掌握按键识别原理与硬件接口设计Chapter08·Human–MachineInterface人机接口的基本概念人机接口是单片机应用系统中实现操作者与系统之间信息交换的通道,主要由键盘(输入设备)和显示器(输出设备)两大部分构成。键盘负责将操作命令和参数数据输入系统,显示器则实时反馈系统运行状态与处理结果,二者共同完成完整的人机对话功能。单片机开发板上的按键与LED数码管单片机应用系统需要进行人机对话,操作者通过键盘输入命令与数据,系统通过显示器反馈状态与结果,形成完整的信息交互闭环人机接口的核心任务是解决"输入识别"与"输出驱动"两大问题:输入侧需准确检测按键动作并消除抖动干扰,输出侧需将数字信号转化为可见的光信号典型单片机人机接口系统包括非编码键盘、LED数码管或LCD显示器,它们通过I/O口或专用接口芯片(如8255A)与单片机相连CHAPTER08·HUMAN-MACHINEINTERFACE独立按键的结构与工作原理独立按键是最简单的键盘形式,每个按键独立占用一根I/O口线,按键一端接I/O引脚、另一端接地。通过检测I/O口电平状态即可判断按键是否被按下,适用于按键数量较少(通常≤8个)的简单应用场景。01独立按键本质是轻触式机械开关,按下时触点闭合使I/O口接地变为低电平,松开时上拉电阻将I/O口恢复高电平,单片机通过读取电平变化识别按键动作电平变化02硬件连接方式:按键一端接单片机I/O引脚,另一端接GND,I/O引脚同时配置内部或外部上拉电阻,确保按键未按下时引脚为稳定的高电平状态上拉电阻03软件检测方法采用轮询或中断两种方式:轮询法在主循环中持续读取I/O口状态,中断法则利用外部中断引脚在按键触发时产生中断请求,CPU响应中断后执行相应处理程序轮询/中断轻触式机械开关实物·独立按键核心元器件CHAPTER08·HUMAN-MACHINEINTERFACE按键的机械抖动与消抖方法机械按键在按下和松开瞬间会产生5~10ms的触点抖动,导致单次按键被误判为多次操作。消抖分为硬件消抖(RC滤波、RS触发器)和软件消抖(延时重检)两类,工程中以软件延时最为常用。机械抖动原理按键触点为弹性金属片,闭合和断开瞬间因机械弹性产生快速弹跳,电平信号出现高频脉冲而非理想单次跳变,抖动持续5~10ms。5~10ms硬件消抖在按键输出端并联0.1μF电容构成RC低通滤波器吸收高频抖动;或使用RS触发器电路,利用锁存特性在首次触发后保持稳定输出。RC滤波软件消抖检测到按键按下后执行10~20ms延时程序,再次读取I/O口状态确认有效按下,释放后同样延时确认,无需额外硬件成本。延时重检人机接口·I/O优化矩阵键盘的结构与I/O优势矩阵键盘将按键按行和列的方式排列,N行M列可容纳N×M个按键,仅需N+M根I/O口线。相比独立按键每个键占一根I/O线的方式,矩阵键盘在按键数量较多时能显著节省I/O端口资源,是16键及以上场景的标准解决方案。01矩阵键盘将按键排列成N行×M列的矩阵形式,每个按键位于行线与列线的交叉点上,按下时该行与该列导通,总共只需N+M根I/O线即可管理N×M个按键02以常见4×4矩阵键盘为例,16个按键仅需8根I/O线(4行+4列),而独立按键需16根,节省率达50%,按键越多节省效果越显著03硬件连接上行线接单片机输出端口,列线接输入端口,每个交叉点即为一个独立按键,按键间互不干扰但共享行列线路4×4矩阵键盘模块实物KeypadScanning矩阵键盘的按键识别方法矩阵键盘的按键识别核心在于确定被按下按键的行列坐标。逐行扫描法逻辑清晰但耗时较长;线反转法仅需两次操作即可定位,效率更高。逐行扫描法01将所有行线置高电平,检测列线:全高则无按键;有低电平则说明有键按下,进入消抖流程02消抖后依次每行单独输出低电平,检测列线状态,行列交叉点即为被按下按键03优点:逻辑清晰、易于编程;缺点:4×4键盘最多扫描4行,实时性要求高时需注意间隔线反转法(两步法)01行线设为输出置低,列线设为输入读取,由低电平位确定被按下按键所在的列号02行列角色反转:列线输出置低,行线输入读取,由低电平位确定被按下按键所在的行号03优点:仅需两次I/O操作,效率高于逐行扫描;缺点:要求端口支持输入输出方向动态切换单片机原理及应用·第八章独立按键的C语言编程实现独立按键编程的核心流程为"检测→消抖→确认→执行→等待释放"五步法。通过轮询I/O口电平状态检测按键事件,配合软件延时消抖确保按键识别的可靠性,是单片机初学者必须掌握的基础编程技能。01主循环中持续读取按键引脚电平(如P1_0),当检测到低电平(0)时进入消抖处理,调用10ms延时函数后再读取一次电平,若仍为低电平则确认按键有效按下。02确认按键有效后执行对应操作(如翻转LED状态、更新计数器、发送控制指令等),随后进入等待释放循环,持续检测按键引脚直到恢复高电平,防止长按导致重复触发。03延时消抖函数通常采用空循环实现,12MHz晶振下单个机器周期为1μs,10ms延时约需执行10000次空循环,实际编程中常封装为delay_ms(10)函数反复调用。Summary键盘接口设计要点总结键盘接口设计需综合考虑按键数量、I/O资源、响应速度和软件复杂度四个维度。独立按键适合8键以下简单场景,矩阵键盘适合多键场景;消抖处理是所有键盘设计的必要环节;合理的键值编码与功能映射是实现人机交互逻辑的关键。独立按键与矩阵键盘选型原则按键数≤8个优先选独立按键,编程简单、响应快;按键数>8个选矩阵键盘,4×4支持16键仅需8根I/O线;超大规模键盘需使用专用芯片。≤8键消抖处理是必须环节无论硬件消抖还是软件消抖都不可省略,否则单次按键可能产生多次误触发,导致系统行为异常;软件消抖因零成本优势成为工程首选。零成本键值编码与功能映射识别按键位置后需将行列坐标转化为键值编码(如0~F),再通过查表或分支语句将键值映射到具体功能操作,实现硬件到软件的衔接。0~FCHAPTER02LED显示器及接口设计从数码管结构到静态显示与动态显示,掌握LED输出的硬件连接与驱动编程Chapter8·Human-MachineInterfaceLED数码管的结构与共阴/共阳接法LED数码管由7个(或8个含小数点)LED发光段按"日"字形排列构成,分为共阴极和共阳极两种结构,段码互为按位取反。LED七段数码管实物·日字形排列STRUCTUREa~g+dp数码管由a~g七个LED段及dp小数点段组成,排列成"日"字形;每段工作电流约5~20mA,需串联限流电阻(220Ω~1kΩ)防止过流烧毁。COMMONCATHODECOM→GND共阴极:8个LED阴极连接为公共端(COM)接地,各阳极独立引出;某段阳极输入高电平时点亮,段码"1"表示亮、"0"表示灭。COMMONANODECOM→VCC共阳极:8个LED阳极连接为公共端接VCC(+5V),各阴极独立引出;某段阴极输入低电平时点亮,段码与共阴段码互为按位取反。CHAPTER08·HUMAN-MACHINEINTERFACELED数码管的段码编码表段码编码是将待显示字符映射为数码管各段亮灭状态的二进制代码。共阴极段码中'1'代表点亮,共阳极段码为共阴极段码的按位取反。编程时通常将段码存入数组,通过查表法快速获取对应字符的显示代码,是数码管驱动编程的核心数据结构。共阴极LED数码管段码编码表显示字符点亮段共阴极段码共阳极段码0a,b,c,d,e,f0x3F0xC01b,c0x060xF92a,b,d,e,g0x5B0xA43a,b,c,d,g0x4F0xB04b,c,f,g0x660x995a,c,d,f,g0x6D0x926a,c,d,e,f,g0x7D0x827a,b,c0x070xF88a,b,c,d,e,f,g0x7F0x809a,b,c,d,f,g0x6F0x90共阴极与共阳极段码互为按位取反,编程时根据数码管类型选择对应段码表Chapter08·Human-MachineInterfaceLED数码管的静态显示方式静态显示方式中,每个数码管的各段选线独立连接到一个I/O端口或锁存器,数据送出后数码管持续稳定显示,无需CPU持续刷新。该方式亮度高、无闪烁、编程简单,但每个数码管需独占8根I/O线,仅适合1~2位数码管的简单显示场景。工作原理每个数码管的a~g及dp段分别连接到独立的I/O端口线或锁存器输出端,CPU将段码数据写入端口后数码管持续发光,无需反复刷新。段码直驱优势分析LED持续通电发光,亮度高且均匀,无闪烁问题;编程仅需一次写端口操作,软件开销极小,适合显示稳定性要求高的场合。高亮无闪烁局限性每个数码管独占8根I/O线,4位显示需32根线;51单片机仅32根I/O口,全部用于显示则无法连接外设,多位显示需采用动态方式。8线/位CHAPTER08·HUMAN-MACHINEINTERFACELED数码管的动态显示方式动态显示采用"分时扫描"原理,所有数码管的段选线并联共用一个I/O端口,各数码管的公共端(位选线)独立控制。CPU逐位送出段码并选通对应位选线,利用人眼视觉暂留效应(扫描频率>50Hz)实现多位同时显示的视觉效果,N位数码管仅需8+N根I/O线。01硬件结构:所有数码管的a~g和dp段并联后接同一个8位I/O端口(段选端口),每个数码管的公共端COM各自连接一根独立的位选控制线,如4位数码管只需8+4=12根I/O线8+N02扫描过程:CPU先将第1位数码管的段码送到段选端口,再通过位选端口选通第1位使其点亮;延时1~2ms后关闭第1位、送出第2位段码并选通第2位,依次循环直到最后一位再回到第1位1~2ms03视觉暂留效应:人眼对光信号的保持时间约为0.1秒,当所有数码管完整扫描一遍的时间<20ms(即刷新率>50Hz)时,人眼无法感知逐位切换过程,看到的是多位同时稳定显示的效果>50Hz4位一体LED数码管显示模块实物PROGRAMMINGMETHOD动态显示的编程实现方法动态显示编程的核心架构包括显示缓冲区、扫描子函数和定时刷新机制三部分,三者配合实现可靠的多位动态显示。设置显示缓冲区在RAM中开辟N字节数组,每个元素存放对应位数码管的段码值,显示更新时只需修改缓冲区内容,扫描函数自动读取最新数据显示。N字节数组编写扫描子函数依次关闭位选、取缓冲区段码、送段选端口、选通位选、延时1~2ms后切换下一位,每次调用完成一位数码管的显示刷新。1~2ms定时刷新策略将扫描子函数放入定时器中断(每2ms一次),4位数码管完整扫描周期8ms,刷新率125Hz,显示稳定且不占用主循环时间。125HzCOMPARISON静态显示与动态显示的对比分析静态显示和动态显示是LED数码管两种基本驱动方式,各有适用场景。静态显示以高I/O消耗换取高亮度和编程简洁性,适合1~2位简单显示;动态显示以软件复杂度换取I/O资源节省,是3位及以上多位数码管显示的标准方案。A静态显示01I/O消耗:每位数码管独占8根线,N位需8N根线,资源消耗随位数线性增长02显示质量:LED持续通电发光,亮度高且均匀无闪烁,视觉效果好03软件复杂度:仅需一次写端口操作即可更新显示,无需定时刷新机制,编程最为简单适合1~2位显示B动态显示01I/O消耗:所有位共用8根段选线加N根位选线,共8+N根线,多位显示时节省显著02显示质量:分时发光,每位实际点亮时间仅占1/N,亮度低于静态方式,刷新率不足时可能出现闪烁03软件复杂度:需要显示缓冲区、扫描子函数和定时器中断配合,编程逻辑较复杂,调试工作量更大适合3位及以上显示CHAPTER03键盘显示综合接口设计基于8255A可编程并行接口芯片实现键盘与显示的高效协同扩展Chapter08·Human-MachineInterface8255A可编程并行接口芯片概述8255A是单片机系统中应用最广泛的可编程并行接口芯片,具有PA、PB、PC三个8位并行端口,支持方式0、方式1和方式2三种工作方式,通过编程写入控制字即可灵活配置。8255A可编程并行接口芯片·DIP-40封装实物01芯片结构:内部包含数据总线缓冲器、读写控制逻辑、A组和B组两个控制单元,对外提供PA口(8位)、PB口(8位)和PC口(8位,可拆分为两个4位)共24条可编程I/O线02引脚功能:D0~D7为双向数据线,A0/A1为端口地址选择线(00=PA,01=PB,10=PC,11=控制寄存器),RD/WR为读写控制线,CS为片选信号,RESET为复位线03三种工作方式:方式0为基本输入/输出(无握手信号),方式1为选通输入/输出(利用PC口部分线作握手控制),方式2为双向总线方式(仅PA口支持),人机接口通常使用方式08255A·初始化编程8255A控制字编写与初始化8255A的工作方式通过向控制寄存器写入8位控制字来配置,正确编写控制字是使用8255A的第一步。01控制字格式解析:D7=1为方式标志;D6D5=00为方式0、01为方式1、1X为方式2;D4=1时PA口为输入、0为输出;D3=1时PC高4位为输入、0为输出;D2~D0设置B组工作方式及PB口、PC低4位方向02人机接口典型配置:PA口输出(段选)+PB口输出(位选)+PC口输入(键盘)时,控制字为10001001B即0x89,A组方式0、PA输出、PC高4位输入、B组方式0、PB输出、PC低4位输入03初始化编程步骤:先计算控制字,再向控制寄存器端口地址写入该值,此后各端口按设定方式工作;PA/PB口可直接读写数据,PC口可整体或按位操作(D7=0时为按位置位/复位模式)HUMAN-MACHINEINTERFACE基于8255A的键盘显示综合系统利用8255A三个并行端口,PA口驱动数码管段选,PB口控制位选兼键盘行线输出,PC口读取列线状态,仅一片即完成4位动态显示与4×4矩阵键盘扫描。端口分配方案PA口设为输出方式,经限流电阻连接4位数码管的a~g和dp段(段选总线);PB口设为输出方式,PB0~PB3经驱动三极管分别连接4位数码管的公共端COM(位选控制)键盘连接方案PB4~PB7作为矩阵键盘4根行线输出(与位选复用PB口),PC0~PC3作为4根列线输入,通过配置控制字使PB口输出、PC口低4位输入,实现4×4矩阵键盘行列扫描系统工作流程主程序循环执行"键盘扫描→键值处理→显示缓冲区更新→数码管动态扫描"四步流程,数码管动态扫描建议放在定时器中断中以确保刷新率稳定不受键盘扫描耗时影响EngineeringNotes综合接口设计的工程注意事项基于8255A的键盘显示综合系统设计需特别注意驱动能力匹配、端口复用冲突处理和软件时序协调三个工程问题。忽略这些细节可能导致显示亮度不足、键盘扫描干扰显示或系统响应迟钝,合理的硬件驱动和软件调度是系统稳定运行的保障。驱动能力匹配8255A单个I/O口灌电流约2.5mA、拉电流仅约0.4mA,驱动共阴极数码管时需加NPN三极管或ULN2003达林顿管阵列作电流放大,确保每段LED获得5~20mA工作电流。5~20mA端口复用冲突处理PB口同时用于位选和键盘行线输出,扫描键盘时需写入行扫描值会暂时改变位选信号导致显示异常。解决办法是键盘扫描前先关闭所有位选,扫描完毕后恢复位选输出。PB口软件时序协调显示刷新应放在定时器中断中保证50Hz以上刷新率,键盘扫描放在主循环中每20~50ms执行一次,两者通过共享的显示缓冲区实现数据交互,互不阻塞。50HzCHAPTER04数模及模数转换器接口DAC与ADC的基本原理、典型芯片及与单片机的硬件连接和编程方法DACPRINCIPLESD/A转换器的基本原理D/A转换器通过解码网络将数字量按位权重转换为模拟信号叠加输出,分辨率由位数决定,是单片机控制模拟设备的关键接口。转换原理n位数字量D的每一位Di对应权重2ⁱ,DAC内部解码网络将各位产生的模拟分量叠加输出,总输出与输入数字量成正比。Vout=Vref×D/2ⁿ解码网络权电阻网络结构简单但阻值差异大、精度难保证;R-2R梯形网络仅需R和2R两种阻值,易于集成且精度高,应用更广泛。R-2R梯形网络性能指标分辨率由位数决定(最小变化量Vref/2ⁿ);建立时间为输出稳定至±½LSB所需时间;线性度衡量实际与理想偏差。建立时间μs级CHAPTER08·DIGITAL-TO-ANALOGDAC0832芯片结构与引脚功能DAC0832采用R-2R梯形电阻网络的8位CMOS数模转换芯片,具有两级数据缓冲结构,支持直通、单缓冲和双缓冲三种工作方式,适用于多路DAC同步输出系统。DAC0832·8位CMOS数模转换芯片·DIP封装01内部结构—包含8位输入锁存器(接收数据总线数字量)和8位DAC锁存器(保持正在转换的数字量),两级锁存器独立控制,使数据接收和D/A转换可以异步进行。02关键引脚—DI0~DI7数据输入;CS片选(低有效);ILE锁存允许(高有效);WR1控制输入锁存;WR2与XFER联合控制DAC锁存;Iout1/Iout2互补电流输出。03三种工作方式—直通方式:两级锁存器始终导通;单缓冲方式:一级常通一级受控,适用单路输出;双缓冲方式:两级均受控,适用多路同步输出。HARDWAREINTERFACEDAC0832与89C51的硬件连接DAC0832经数据总线、地址译码和运放电路与89C51协同工作,硬件连接正确性是DAC性能的根本保障。🔗数据线连接DI0~DI7接P0口数据总线,P0口访问外部设备时自动输出数据,需外接上拉电阻提供驱动能力。数据总线宽度8位,与DAC0832数据输入端完全匹配。P0口·8位并行⚙️控制线配置CS由地址译码提供,WR1接WR引脚,WR2与XFER接地实现单缓冲,ILE接+5V高电平。单缓冲模式简化控制逻辑,提高数据转换效率。单缓冲·直通模式📈模拟输出电路Iout1接运放反相端,Iout2接地,反馈电阻构成I-V转换,输出Vout=-Vref×D/256。运放电路将电流信号转换为电压信号输出。I-V转换·电压输出CHAPTER8·ANALOG-DIGITALINTERFACEA/D转换器的基本原理A/D转换器将连续变化的模拟电压信号通过采样、量化和编码三个步骤转换为离散的二进制数字量。转换精度由分辨率(位数)决定,转换速度由采样速率和转换时间决定。逐次逼近型ADC因精度与速度均衡成为单片机系统中最常用的ADC类型。转换三步骤采样获取模拟信号瞬时电压值;量化将采样值归入2n个量化电平中最接近的量化级;编码将量化结果转换为n位二进制数字量输出。S·Q·E关键性能指标分辨率由位数决定(8位ADC/5V参考≈19.5mV);逐次逼近型转换时间10~100μs,Flash型可达ns级;采样速率须满足奈奎斯特定理。19.5mV/8bit常见ADC类型逐次逼近型(SAR)精度与速度均衡,如ADC0809,应用最广;双积分型精度高但速度慢,适合直流测量;Flash并行型速度最快但位数低。SAR-ADC工作原理·WorkingPrinciple逐次逼近型ADC的工作原理逐次逼近型ADC的工作过程类似天平称重——从最高位开始,逐位假设该位为1并通过内部DAC产生比较电压,与输入模拟电压进行大小比较,根据比较结果确定该位是1还是0,经过n次比较后完成n位数字量的转换。01比较过程:转换开始时SAR寄存器清零,首先将最高位MSB置1(其余位为0),该数字量经内部DAC转换为模拟电压Vdac,Vdac与输入模拟电压Vin通过比较器比较,若Vin≥Vdac则MSB保持1,否则MSB清002逐位逼近:MSB确定后,对次高位执行相同操作——将该位置1后连同已确定的高位一起经DAC转换并比较,保留或清除该位;如此从高位到低位逐位进行,经过n次比较后n位结果全部确定03类比理解:如同用1g、2g、4g、8g砝码称未知物体,先从最大砝码试起,太重则去掉、不够则保留,再叠加下一个较小的砝码,最终所有砝码的组合即为物体的精确重量芯片详解ADC0809芯片结构与引脚功能ADC0809是8位逐次逼近型ADC,内部集成8路模拟多路开关,通过3位地址线选择通道,转换时间约100μs,采用+5V单电源供电。内部结构包含8路模拟多路开关(ADDA/B/C三根地址线选择IN0~IN7)、比较器、8位逐次逼近寄存器SAR、内部DAC、三态输出锁存器和控制时序电路。关键引脚IN0~IN7为8路模拟输入;ADDA/B/C为通道地址选择(000选IN0,111选IN7);ALE为地址锁存允许;START启动转换;EOC为转换结束标志。输出控制OE高电平时三态锁存器导通,D0~D7送上数据总线;CLK典型频率640kHz(最高1.28MHz);VREF(+)和VREF(-)通常接+5V和GND。ADC0809·DIP封装实物·8位逐次逼近型模数转换器CHAPTER08·HARDWAREINTERFACEADC0809与89C51的硬件连接接口设计涵盖数据总线、通道地址选择与启动控制三部分;转换流程为选通道→启动→等待→读取四步,支持查询和中断两种读取方式。01数据与地址连接:ADC0809的D0~D7接P0口数据总线;ADDA/B/C三根通道地址线可接低位地址总线A0/A1/A2(地址译码方式)或直接接P口I/O线(简单控制方式),通过地址线值0~7选择IN0~IN7对应通道。D0–D7→P002启动信号连接:START与ALE并联后接地址译码输出与WR信号的逻辑组合(如74LS02或非门),执行MOVX@DPTR,A写操作时同时锁存地址和启动转换;也可用单独I/O口线发脉冲控制。START+ALE03结果读取方式:查询法——CPU不断读取EOC引脚状态,等待EOC变高后使能OE并读取数据;中断法——EOC接INT0或INT1外部中断引脚,转换完成时上升沿触发中断,在中断服务程序中使能OE并读取转换结果。EOC→INTADC0809·数据读取ADC0809的两种编程读取方式查询法编程简单但CPU利用率低,中断法无需等待效率更高,是多通道采集的推荐

温馨提示

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

评论

0/150

提交评论