




已阅读5页,还剩142页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章MCS 51单片机的并行扩展接口6 1总线并行扩展6 2存贮器接口扩展6 3输入 输出并行接口扩展6 4D A转换器接口扩展6 5A D转换器接口扩展6 6显示及键盘接口扩展6 7微型打印机接口 MCS 51系统单片机 8031 8032除外 尽管是一功能完全的单片机 但因其内部资源 RAM ROM I O A D D A等 不足 在实际应用中不加以扩展直接用其基本系统的情况较少 一般情况下需扩展 P0口作为地址 地址低8位 数据 D0 D7 总线口 P2口作为地址总线口 地址高8位 G为锁存信号输入端 高电平时 锁存器输出电平保持和输入一致 即Q0 Q7 D0 D7 G负跳变时将D0 D7锁存于Q0 Q7 E为Q0 Q7的三态门允许输出控制输入端 E接地 则Q0 Q7总是允许输出 图6 2用74LS373作地址锁存器 1 地址空间确定步骤 1 片选线为低电平 该芯片未用到的地址线为 1 2 该芯片中用到的地址线分别用全 0 和全 1 时 两次计算16为地址 三 总线驱动能力及扩展方法 MCS 51系列单片机 作为数据总线和低8位地址总线的P0口可驱动8个TTL电路 而如P2口等其它口只能驱动4个TTL电路 当应用系统规模过大 可能造成负载过重 致使驱动能力不够 系统不能可靠地工作时 需另增设总线驱动 6 2MCS 51存贮器的扩展 对于用内部无ROM的芯片8031 8032来建立系统 则必须外部扩展程序存贮器 对于仅靠内部ROM 其ROM容量不能满足要求的情况 则可外部扩展程序存贮器 程序存贮器的作用 用于存贮程序代码或程序常数 EPROM是紫外线可擦除电可编程的半导体只读存贮器 掉电后信息不会丢失 EPROM中的程序一般由专门的编程器写入 由专门的擦除器擦除 常用的EPROM有 2716 2732 2764 EPROM电路 一 程序存贮器的扩展 1 常用的EPROM芯片介绍 CE 片选信号输入线 接CPU地址线 PGM 编程脉冲输入线OE 读选通信号输入线 输出使能 接CPU的PSEN线 VPP 编程电源输入线VCC 主电源输入线GND 线路地 E2PROM电路 E2PROM是电可擦除电可编程的半导体存贮器 掉电后信息不会丢失 编程时简单 不需要专门的编程器和擦除器 常用的并行E2PROM有 2817 2864 E2PROM有读 写 维持三种操作方式 MCS 51访问外部程序存贮器时序波形如下 MCS 51访问外部程序存贮器时序波形 程序存贮器扩展的一般方法 P2口ALEP0口PSENMCS 51 地址锁存器 A0 A7A8 A15O0 O7 A8 A15 A0 A7 D0 D7 EA 5V 10KW 当需扩展时 单片机一般采用片内无ROM的8031芯片 当采用74LS273作地址锁存器时 锁存器控制端为上升沿锁存 故ALE须反相才能接到74LS273的锁存器控制端 静态随机存取存贮器RAM 具有速度快 使用方便和价格低廉等优点 但也具有掉电丢失数据的缺点 2 数据存贮器扩展方法 MCS 51对外部数据存贮器的操作指令 MCS 51读外部数据存贮器时序波形 MCS 51写外部数据存贮器时序波形 MCS 51和外部数据存贮器的接口方法 三 存贮器扩展举例 下图中 扩展一片27256 32K 一片62256 32K 例题1 并行扩展4片2KX8数据存储器芯片 使用线选法P2 3 P2 4 P2 5 P2 6做其片选 并画出连接电路P2 7为1时 分别指出4片存储器芯片的地址范围 答案 P2 3做其片选芯片地址范围 0F000H 0F7FFH P2 4做其片选芯片地址范围 0E800H 0EFFFH P2 5做其片选芯片地址范围 0D800H 0DFFFH P2 6做其片选芯片地址范围 0B800H 0BFFFH 例题2 若使用74138译码输出做片选 并行扩展2片2KX8数据存储器芯片 Y0 Y2分别接存储器芯片1 2的CE端 P2 3 P2 4 P2 5接A B C G1接VCC P2 7接G2A P2 6接G2B 试画出其连接电路 并指出2片存储器芯片的地址范围 答案 Y0做其片选芯片地址范围 0000H 07FFH Y2做其片选芯片地址范围 1000H 17FFH 6 3输入输出并行接口扩展 MCS 51具有4个I O口P0 P3 但P0 P2口往往作为扩展总线使用 P3往往用其第二功能 故实际常用来作I O口使用的就仅剩下P1口 如外接较多的I O设备 打印机 键盘 显示器等 显然得扩展I O接口 I O接口扩展一般用并行扩展 常用来扩展的器件有 可编程并行接口8255 可编程RAM IO扩展器8155 Vcc 主电源 5VGND 线路地8255A的引脚图及逻辑框图如下所示 例题1 若要使8255A的PA口为方式0输入 PB口为方式1输出 则8255A的方式控制字为多少 例题2 若要使8255A的PC口的第4位置1 则8255A的PC口位置位 复位控制字为多少 答案 1001X10XB 答案 0XXX1001B 8255A方式1输入时序波形 8255A方式1的输入逻辑组态 a 8255A方式1的输出逻辑组态 a 8255A方式1输出时序波形 通过改变8255A的端口选择信号线A0A1与单片机P0或P2的接法 或8255A的片选信号与单片机P2的接法 或8255A的工作方式 PA和PB输入输出方式来出题 4 MCS 51和8255A的接口方法 例题1单片机的P0 7 P0 6分别连到锁存器74LS373的输入端8D 7D 图中没标明 74LS373的输出端8Q 7Q分别连到8255A的A1 A0引脚 若单片机P0口其它位都为低电平 P2口其它位都为高电平 写出A口 B口 C口和控制寄存器的地址 试根据连接图编写程序使A口为方式0输出 B口为方式0输出 C口为输入 答案 A口地址为7F00H B口地址为7F40H C口地址为7F80H 控制字寄存器的地址为7FC0H 汇编程序 MOVDPTR 7FC0HMOVA 89HMOVX DPTR AC51程序 defineCOM8255XBYTE 0 x7fc0 COM8255 0 x89 例题2单片机与8255A的连接图如下所示 单片机的P0 1 P0 0分别连到锁存器74LS373的输入端2D 1D 图中没标明 74LS373的输出端2Q 1Q分别连到8255A的A1 A0引脚 若单片机P0口其它位都为低电平 P2口其它位都为高电平 写出A口 B口 C口和控制寄存器的地址 试编写程序使A口为方式1输入 B口为方式1输入 C口为输出 答案 A口地址为EF00H B口地址为EF01H C口地址为EF02H 控制字寄存器的地址为EF03H 汇编程序 MOVDPTR EF03HMOVA B6HMOVX DPTR AC51程序 defineCOM8255XBYTE 0 xef03 COM8255 0 xb6 例题38051单片机与8255A的连接图如下所示 单片机的P0 1 P0 0分别连到锁存器74LS373的输入端2D 1D 图中没标明 74LS373的输出端2Q 1Q分别连到8255A的A1 A0引脚 若单片机P0口其它位都为低电平 P2口其它位都为高电平 写出A口 B口 C口和控制寄存器的地址 试编写程序使A口为方式1输入 B口为方式0输出 C口为输入 答案 A口地址为BF00H B口地址为BF01H C口地址为BF02H 控制寄存器的地址为BF03H 汇编程序 MOVDPTR BF03HMOVA B9HMOVX DPTR AC51程序 defineCOM8255XBYTE 0 xbf03 COM8255 0 xb9 4 MCS 51和8255A的接口方法 eg 8255PA接一组开关 PB口接一组指示灯 以下程序是将开关状态读入PA口再从PB口输出 C51参考程序如下 include include defineucharunsignedchar defineCONT0 x90 defineADDR8DXBYTE 0 x7FFF 定义8255A端口地址 defineADDR8BXBYTE 0 x7FFD defineADDR8AXBYTE 0 x7FFC unchariofunc void 8255A输入输出控制函数 uncharmid ADDR8D CONT 输出控制字mid ADDR8A 读A口信息ADDR8B mid 输出信息到B口returnmid voidmain void ucharb b iofunc 调用8255A芯片控制程序 eg 把内部RAM中30H开始的32个单元的字符输出至打印机 C51参考程序如下 include include defineuncharunsignedchar define 8255A ControlXBYTE 0 xBFFF 8255A控制口的地址 define 8255A PAXBYTE 0 xBFFC 8255A的PA口的地址 define 8255A PBXBYTE 0 xBFFD 8255A的PB口的地址 define 8255A PCXBYTE 0 xBFFE 8255A的PC口的地址idataunchartext 32 at 0 x30 定义从地址30H开始的32个单元的字符数组idatauncharcount 0 text数组索引 voidINT0 ISR void interrupt0using1 外部中断0中断服务函数 count count 1 输出数据则自增1if count 32 EX0 0 数据输出完 禁止外部中断0else 8255A PB text count 全部数据未输出完 继续输出数据 voidmain void unchari for i 0 i 32 i text i i 0 x30 text数组初始化 8255A Control 0 x05 置PC2 1 即INTEB置1 8255A Control 0 xBC 设置PB口为方式1输出 8255A PB text count 从PB口输出第一个数据EA 1 开中断EX0 1 允许外部中断0 电平触发方式while 1 当打印机取走CPU通过8255A的PB口送来的数据后 反馈回答信号使INTRB变为高电平 经过反向器后引起外部中断0提出中断申请 CPU响应外部中断0的中断申请 并执行相应的中断服务程序INT0 ISR 在中断服务程序中再输出一个数据至微型打印机 同样会再次引起中断 直至全部数据输出完毕并设置禁止外部中断0 eg 图6 24是8155与MCS 51单片机的一种接口逻辑 要求编写C51语言程序将MCS 51单片机内部RAM30H开始的32个单元内容转移到8155RAM的80H开始的单元中 include include defineuncharunsignedcharxdataunchar8155 RAM 32 at 0 x7E80 设置8155中RAM的地址idataunchartext 32 at 0 x30 单片机内部RAM数据数组voidmain void unchari for i 0 i 32 i text i i 0 x30 初始化text数组for i 0 i 32 i 8155 RAM i text i 将text中的字符传送到8155A指定的RAM中while 1 eg 图6 24中使8155用作I O和定时器工作方式 PA口定义为基本输入方式 PB口定义为基本输出方式 定时器作为方波发生器 对输入脉冲进行24分频 include include define8155 CmdXBYTE 0 x7F00 8155A命令字寄存器地址 define8155 StateXBYTE 0 x7F00 8155A状态字寄存器地址 define8155 PAXBYTE 0 x7F01 8155A的PA口地址 define8155 PBXBYTE 0 x7F02 8155A的PB口地址 define8155 PCXBYTE 0 x7F03 8155A的PC口地址 define8155 TlowXBYTE 0 x7F04 8155A定时器 计数器低字节地址 define8155 ThighXBYTE 0 x7F05 8155A定时器 计数器高字节地址 voidmain void 8155 Tlow 0 x18 定时器低8位值 24分频 8155 Thigh 0 x40 输出连续方波 M2M1 01 while 1 8155 Cmd 0 xC2 设定PA口为基本输入 PB口为基本输出 并启动定时器 6 4D A转换器接口扩展 D A是将数字量转换成模拟量的器件 D A的输出是电压或电流信号 衡量D A性能的主要参数是 分辨率 即输出的模拟量的最小变化量 满刻度误差 即输入为全1时 实际输出电压与理想值之差 输出范围 转换时间 从转换器的输入改变到输出稳定的时间间隔 是否容易与CPU接口 1 D A转换器的转换特性 对n位D A转换器 其输入是n位二进制数字输入信号Din 将Din看成小数二进制数码 则Din可表示为 设D A转换器的基准电压为UR 则理想D A转换器的输出电压为 则满量程输出电压值为 即满量程值比基准电压小一个最低有效位 LSB 的数码 一 R 2R梯形电阻式D A转换原理 即模拟输出电压Uo与二进制输入信号成正比 但电路用到的电阻规格太多 则电阻差别大 故精度不高 2 D A转换器结构及原理 单片D A转换器的基本组成包括基准电压源 解码网络 电子开关阵列和相加运算放大器等部分 其中电阻解码网络是其核心 常用的解码网络有二进制加权电阻网络和R 2R梯形电阻网络 加权电阻网络电路 模拟开关由相应位的二进制数码控制 当某位为1时 模拟开关与参考电压源接通 则流向求和点A的总电流为 R 2R梯形电阻网络电路 图中A1 An各节点往右看 对地的电阻值均等于R 从左到右 各路电流分配规律是IR 2 IR 22 IR 2n 则输出电压为 即模拟输出电压Uo与二进制输入信号成正比 二 D A芯片DAC0832的扩展 1 DAC0832结构 DAC0832是8位D A芯片 片内带数据锁存器 电流输出 该系列产品包括DAC0830 DAC0831 DAC0832 它们可以完全相互代换 它由8位输入锁存器 8位DAC寄存器 8位D A转换电路及转换控制电路组成 单缓冲方式若应用系统中只有一路D A转换或虽然有多路转换 但并不要求各路信号同步输出时 则采用单缓冲方式来接口 方法是 使锁存器和DAC寄存器同时接收数据 双缓冲方式当多路D A信号要求同步输出时 则采用双缓冲方式 方法是 分别使其输入锁存器接收数据 同时传送数据到其DAC寄存器 以实现多路转换同步输出 直通方式所有控制信号均有效 适宜于连续控制时 3 电流输出转换成电压输出 MCS 51执行下面的程序后在运放的输出端产生一个锯齿型的电压波形 include include defineDAC0832 ADRXBYTE 0 x7FFF DAC0832寄存器地址 defineuncharunsignedchar defineMAX0 xA0 定义锯齿波的高度uncharcount 0 voidmain void while 1 DAC0832 ADR count count if count MAX count 0 include include defineuncharunsignedchar define DAC0832 1XBYTE 0 xDFFF 0832 1 数据锁存器地址 define DAC0832 2XBYTE 0 xBFFF 0832 2 数据锁存器地址 define DAC0832 SYNXBYTE 0 x7FFF 两片共同的寄存器的地址constunchardata1 0 x55 准备输出数据constunchardata2 0 xAA voidmain void DAC0832 1 data1 数据送入0832 1 的数据锁存器 DAC0832 2 data2 数据送入0832 2 的数据锁存器 DAC0832 SYN 0 同时启动两路D A转换同步输出while 1 三 D A芯片AD7520的扩展 低功耗的电流输出的10位 D A器件 其片内无锁存器 1 AD7520结构 D0 D09 数字量输入线RFE 反馈信号输入线Iout1 电流输出端1 其值随DAC内容线性变化Iout2 电流输出端2 Iout1 Iout2 常数VREF 基准电压输入线 10 10VVCC 电源 5 15VGND 线路地 MCS 51 MSBAD7520LSB 2 8 P2 6WR P0P2 7 CPD ECLKD0 7 Q0 7 377 74 1 Q D CP 8 2 Q 2 74 2 1 2 VOUT 图6 40AD7520与MCS 51的双缓冲接口方法 74LS74 1 的口地址为0BFFFH 74LS74 2 和74LS377的口地址均为7FFFH 数据须分两次输出 在将高两位数据输出到74LS74 1 后 将低8位数据送到74LS377的同时 把已送到74LS74 1 的内容送到74LS74 2 上 因此10位数据是同时到达AD7520的数据输入端的 include include defineuncharunsignedchar define74LS74 1XBYTE 0 xBFFF 74LS 1 的地址 defineAD7520XBYTE 0 x7FFF 74LS 2 和AD7520的地址constunchardata1 0 x55 准备低2位数据constunchardata2 0 xAA 准备高8位数据voidmain void 74LS74 1 data1 低2位数据送入74LS 1 AD7520 data2 数据同时到达AD7520while 1 6 5A D转换器接口的扩展 衡量A D性能的主要参数是 分辨率 即输出的数字量变化一个相邻的值所对应的输入模拟量的变化值 满刻度误差 即输出全1时输入电压与理想输入量值之差 转换速率 完成一次转换所需时间的倒数 转换精度 量化值与一个理想A D转换器进行模 数转换的差值 或者说是实际A D与理想A D的差别 是否可方便地与CPU接口 MCS 51个别单片机内部具有A D转换线路 例如 8XC51GA GB内具有8路8位逐次逼近式A D A D种类 逐次逼近式 双积分式 单积分 四积分 电荷平衡式 并行式 双积分A D输出是采样周期内输入信号Vx的平均值 因此对叠加在输入信号的交流干扰有很强的抑制能力 但转换速度较慢 二 MC14433的接口方法 表6 5经A D转换后的BCD码数据输出线的编码 2 MCS 51与MC14433的接口方法 include include defineuncharunsignedcharsbitP1 0 P1 0 P1 0 P1 3连MC14433的Q0 Q3sbitP1 1 P1 1 sbitP1 2 P1 2 sbitP1 3 P1 3 sbitP1 4 P1 4 P1 4 P1 7连MC14433的DS1 DS4sbitP1 5 P1 5 sbitP1 6 P1 6 sbitP1 7 P1 7 idatauncharADC Data 2 at 0 x20 保存MC14433的转换结果voidmain IT1 1 设置外部中断1为边沿触发方式IE 0 x84 允许外部中断1中断P1 0 xFF voidINT1 ISR void interrupt2using1 外部中断1服务函数while P1 4 等待千位选通DS1有效if P1 0 P1 0 1则超量程 中断结束if P1 2 Vx 0ADC Data 0 三 逐次逼近式A D转换原理 各位仍为0 然后再经D A转换成对应的模拟电压Us 再比较以确定这一位的1是保留还是要清除 这样逐位进行比较 直至D A转换器输出电压Us与Ui相等或Ui Us小于最大量化误差值为止 比较结束时 寄存器中所保留的代码就是与Ui相应的数字代码 从而完成了A D转换 这种A D只需n次操作就能完成n位的转换 转换速度较高 精度也较高 电路结构简单 eg 在一个8路数据采集系统中 要求在P1 0输入的同步脉冲控制下对8路模拟量依次各采集256个数据 存放在外部0B000H 0BFFFH单元中 0B000H 0B0FFH中为IN0的采样数据 0B100H 0B1FFH中为IN1的采样数据 0B700H 0B7FFH中为IN07的采样数据 include include defineuncharunsignedcharsbitP1 0 P1 0 P1 0 0 启动AD转换sbitP3 3 P3 3 uncharxdataADC0809 IN 8 at 0 x7FF8 8路模拟输入uncharpdataextern RAM 0 x800 at 0 xB000 外部RAM地址voidmain void unchari j while P1 0 等待启动转换for i 0 i 256 i for j 0 j 8 j 每一路采样一次数据ADC0809 IN j 0 启动AD转换while P3 3 查询AD是否转换完毕extern RAM j 256 i ADC0809 IN j while 1 例题2采用ADC0808设计数据采集电路 将IN7通道输入的模拟量信号进行测量 结果以16进制数在两个BCD数码管上显示出来 请用C51语言编写其程序 图如下 include include defineAD IN7XBYTE 0 xFEFF 设置IN7通道的访问地址sbitad busy P3 3 外部中断1引脚定义voidmain void while 1 AD IN7 0 启动A D转换while ad busy 1 等待A D转换结束P1 AD IN7 转换数据显示 6 6显示 键盘及接口 一 LED显示器及接口 显示器主要有LED 发光二极管显示器 和LCD 液晶显示器 1 LED显示器的结构LED显示器是由发光二极管来显示字段的器件 各段码位的对应关系如下 图7段LED数码显示器 charled mod 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x77 0 x7c 0 x58 0 x5e 0 x79 0 x71 led字模 静态显示方式就是当显示器显示某一个字符时 相应的发光二极管恒定地导通或截止 直到显示另一个字符为止 静态显示时的亮度较高 编程容易 管理也较简单 但占用I O口资源较多 因此在显示位数较多时 一般采用动态显示方式 设8255的PA PB PC三个8位I O口输出分别显示字符 1 2 3 的程序如下 设8255控制口地址为7FFFH include include define 8255A ConXBYTE 0 x7FFF 8255A控制口地址 define 8255A PAXBYTE 0 x7FFC 8255A的PA口地址 define 8255A PBXBYTE 0 x7FFD 8255A的PB口地址 define 8255A PCXBYTE 0 x7FFE 8255A的PC口地址voidmain void 8255A Con 0 x80 PA PB PC都为输出 8255A PA 0 xF9 显示字符 1 8255A PB 0 xA4 显示字符 2 8255A PC 0 xB0 显示字符 3 while 1 eg 图6 53中设6位显示器的显示缓冲器单元为内部RAM79H 7EH 分别存放6位显示器的显示数据 100 8 图6 53用8155I O口的6位动态显示器接口 8155 5V COM0 COM1 COM2 COM3 COM4 COM5 共阴极显示器 PA5PA4PA3PA2PA1PA0 PB0PB1PB2PB3PB4PB5PB6PB7 MCS 51 74LS07 74LS06 include include idefineuncharunsignedchar define 8155A CmdXBYTE 0 x7F00 8155A命令端口地址 define 8155A PAXBYTE 0 x7F01 8155APA端口地址 define 8155A PBXBYTE 0 x7F02 8155APB端口地址idatauncharD Data 6 at 0 x79 需显示的数据地址 数据 24constuncharsegtab 24 0 x3F 0 x06 0 x5B 0 x4F 0 x66 0 x6D 0 x7D 0 x07 0 x7F 0 x6F 0 x77 0 x7C 0 x39 0 x5E 0 x79 0 x71 0 x73 0 x3E 0 x31 6EH 0 xFF 0 x23 0 x03 0 x00 voidmain void unchari j 8155A Cmd 0 x03 设置8155APA PB口为输出口while 1 for i 0 i 6 i LED动态显示 8155A PA 1 i j D Data i 8155A PB segtab j 取显示数据并输出delay 延时子程序 二 LCD显示器及接口 LCD显示器件工作电流小 重量轻 功耗低 寿命长 字迹清晰美观 在便携式仪表 低功耗应用的较高档仪器仪表中被广泛采用 1 LCD显示器的基本结构及工作原理 LCD器件的基本结构是在上 下两玻璃电极之间注入向列型液晶材料 密封透明 液晶显示器从显示的形式上可分为段式 点阵字符式和点阵图形式 其显示方式也有静态显示方式和动态显示方式 静态显示方式需加直流电 动态显示方式需加交流电 液晶分子在长时间的单向电流作用下容易发生电解 使LCD的寿命减少 因此液晶的驱动很少用需用直流电的静态驱动方式 而是通常采用动态驱动方式 且因液晶在高频交流电作用下也不能很好地显示 故一般采取125 150Hz的方波来驱动液晶 实用时 当前 背两极之间电压为0V时 该字段不亮 当两极电压为2倍幅值时 该字段呈现黑色显示 极间电压0V产生的原理 当VB 0V 因是异或门 所以总有VC VA 即前 背两电压相等 从而电位差为0或VA VC 0 故可以用B端作为液晶段的显示控制端 A B a 驱动回路 LCD 不显示 显示 A B C A C c 真值表 b 驱动波形 图6 55某一字段驱动回路 驱动波形及真值表 A0011 B0101 C0110 C 背极 正 前 极 2 例题 LCD1602液晶显示器显示 Welcometo108shiyanshi LCD1602技术参数 include 包含头文件 一般情况不需要改动 头文件包含特殊功能寄存器的定义 includesbitRS P2 4 定义端口sbitRW P2 5 sbitEN P2 6 defineRS CLRRS 0 defineRS SETRS 1 defineRW CLRRW 0 defineRW SETRW 1 defineEN CLREN 0 defineEN SETEN 1 defineDataPortP0 voidDelayUs2x unsignedchart while t voidDelayMs unsignedchart while t 大致延时1mSDelayUs2x 245 DelayUs2x 245 1 判忙函数bitLCD Check Busy void DataPort 0 xFF RS CLR RW SET EN CLR nop EN SET return bit DataPort 2 写入命令函数voidLCD Write Com unsignedcharcom while LCD Check Busy 忙则等待DelayMs 5 RS CLR RW CLR EN SET DataPort com nop EN CLR 3 写入数据函数voidLCD Write Data unsignedcharData while LCD Check Busy 忙则等待DelayMs 5 RS SET RW CLR EN SET DataPort Data nop EN CLR 4 清屏函数voidLCD Clear void LCD Write Com 0 x01 DelayMs 5 5 写入字符串函数voidLCD Write String unsignedcharx unsignedchary unsignedchar s if y 0 LCD Write Com 0 x80 x else LCD Write Com 0 xC0 x while s LCD Write Data s s 6 写入字符函数voidLCD Write Char unsignedcharx unsignedchary unsignedcharData if y 0 LCD Write Com 0 x80 x else LCD Write Com 0 xC0 x LCD Write Data Data 7 初始化函数voidLCD Init void LCD Write Com 0 x38 显示模式设置 DelayMs 5 LCD Write Com 0 x38 DelayMs 5 LCD Write Com 0 x38 DelayMs 5 LCD Write Com 0 x38 LCD Write Com 0 x08 显示关闭 LCD Write Com 0 x01 显示清屏 LCD Write Com 0 x06 显示光标移动设置 DelayMs 5 LCD Write Com 0 x0C 显示开及光标设置 8 主函数voidmain void unsignedchari unsignedchar p LCD Init while 1 i 1 p 108shiyanshi LCD Clear LCD Write String 2 0 Welcometo DelayMs 250 while p LCD Write Char i 1 p i p DelayMs 250 DelayMs 250 三 键盘及接口 键盘是由若干个按键组成的开关矩阵 是实现人机会话或人机通信的常用工具 由硬件识别键的闭合 编码键盘 由软件识别键的闭合 未编码键盘 在由单片机组成的测控系统及智能化仪器中 用得较多的是未编码键盘 通常按键开关为机械弹性开关 机械开关在闭合及断开瞬间均伴随有一连串的抖动 时间一般为5 20ms Vcc 5V Vcc 5V A B 输出 图6 59RS触发器消抖电路 消除键抖动可用硬件和软件两种方法 1 独立式未编码键盘接口及处理程序 独立式键盘是各按键相互独立地接通一条输入数据线 键按下 闭合稳定 前沿抖动 后沿抖动 释放稳定 键释放 图6 58按键时的抖动 include defineuncharunsignedcharvoidkeyfind void uncharaa P1 0 xFF aa P1 读键值swich aa case1 keyexe0 是K0键 执行K0键功能程序break case128 keyexe7 是K7键 执行K7键功能程序break default break 2 行列式未编码键盘原理及处理程序 对于未编码键盘一般排列成n m矩阵形式 即由n行m列组成 当无键按下时 Xi均为高电平 当有键按下时 Xi的电平由Yi决定 如果把行线接单片机的输入口 列线接单片机的输出口 则可在单片机的控制下 先使 列线Y0为低电平 其它列线为高电平 读行线状态 如所有行线均为高电平 则表明Y0这一列没有键闭合 如读出的行线状态不全为高电平 则为低电平的行线和Y0相交的键闭合 依次类推可获得与其它列线相交的闭合键 3 行列式未编码键盘与MCS 51的接口方法 以上键盘扫描程序 CPU需不停的扫描键盘 影响其它功能的执行 工作效率较低 在实际使用键盘时常采用定时扫描键盘的方式或中断方式 图6 71为一个4 4键盘与MCS 51采用中断方式的一种接口电路 当键盘上有任一个键闭合时P3 3变为低电平 向CPU发出中断请求 实例行列式键盘 问题 如何保证能快速响应按键操作 又不过多占用CPU时间 中断扫描法 只有在键盘有键按下时 才执行键盘扫描程序 如无键按下 CPU可不考虑键盘的存在 查询扫描法 需要花费很多CPU机时间 在CPU任务繁重的情况下往往无法实现 要求 按下任意按键后 数码管上显示该键的键模 0 F 查询扫描法仿真演示 查询扫描法 includecharled mod 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x77 0 x7c 0 x58 0 x5e 0 x79 0 x71 led字模 查询扫描法 各段码位的对应关系如下 图7段LED数码显示器 charled mod 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x77 0 x7c 0 x58 0 x5e 0 x79 0 x71 led字模 charled mod 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x77 0 x7c 0 x58 0 x5e 0 x79 0 x71 led字模 表1十六进制数及空白与P的显示段码 查询扫描法 查询扫描法 行列式键盘 将IO口分为行线和列线 按键跨接在行线和列线上 列线通过上拉电阻接正电源 4 4行列式键盘 键值charkey buf 0 x11 0 x21 0 x41 0 x81 0 x12 0 x22 0 x42 0 x82 0 x14 0 x24 0 x44 0 x84 0 x18 0 x28 0 x48 0 x88 键值 按键压下时形成的电平编码值键模 按键的人为定义值 查询扫描法 键盘扫描原理 以P1口接4 4键盘为例 查询扫描法 判断哪一行有键压下写P1端口0 xf0 行线电平 0 列线电平 1 读P1端口 若P1 0 xf0 无按键压下 不必后续判断 若P1 0 xf0 有键压下 K1 P1 压下键所在行线电平变为1 其余行线电平仍为0 查询扫描法 判断哪一列有键压下写P1端口0 x0f 行线电平 1 列线电平 0 读P1端口 压下键所在列线电平变为1 其余列线的电平仍为0 形成压下键的键值 K2 K1 P1 闭合键所在行 列的电平均为1 其余行列皆为0 整个4x4键盘的键值 0 x11 0 x21 0 x41 0 x810 x12 0 x22 0 x42 0 x820 x14 0 x24 0 x44 0 x840 x18 0 x28 0 x48 0 x88 第一行的键值 00010001 00100001 01000001 10000001 查询扫描法 形成压下键的键模 将各键的键值依次存放在一个数组中 形成键模 利用循环变量i控制比对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《幼儿教师招聘》考前冲刺模拟题库及参考答案详解(轻巧夺冠)
- 芙蓉学院英语试卷及答案
- 2025年台球比赛的题目及答案
- 融合发展策略下2025年广播影视行业新媒体运营与品牌建设报告
- 01-【管理制度】-17-基因技术行政管理制度
- 医疗美容器械行业2025年市场前景展望与产品创新策略分析报告
- 建筑钢结构工程方案(3篇)
- 教师招聘之《小学教师招聘》通关考试题库完整附答案详解
- 虚拟现实与增强现实技术应用-洞察及研究
- 2025年稀有稀土金属矿项目合作计划书
- (正式版)DB3302∕T 1180-2025 《高速公路建设韧性指标体系》
- 中康科技腾讯健康:2024年消费者健康洞察呼吸系列报告-鼻炎鼻窦炎篇预览版
- 2025年IT技术支持工程师招聘面试问题及答案解析
- 挤压模具工特殊工艺考核试卷及答案
- 2025-2026学年外研版八年级英语上册教学计划及进度表
- (2025年标准)灵活用工协议书
- 发廊租工位合同协议模板
- 服装厂质检知识培训内容课件
- 2025年教师资格考试趋势分析与模拟试题洞察未来方向(含答案)
- 2025浙江省旅游投资集团人才招聘17人(第四批)考试模拟试题及答案解析
- 上消化道出血药物指导
评论
0/150
提交评论