第5章MCS-51单片机输入输出口_第1页
第5章MCS-51单片机输入输出口_第2页
第5章MCS-51单片机输入输出口_第3页
第5章MCS-51单片机输入输出口_第4页
第5章MCS-51单片机输入输出口_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1、外外界界CPU内核内核SFR(21)外围应用模块外围应用模块(功能部件)(功能部件)软件软件读读/写写硬件硬件映射映射用户编程用户编程自动对应自动对应I/O引脚引脚人机交互手段人机交互手段第五章第五章 MCS-51单片机输入单片机输入/输出口输出口(并行(并行I/O口)口) 本讲内容提要本讲内容提要:5.0、并行、并行I/O口概述口概述5.1、并行、并行I/O口的功能和内部结构口的功能和内部结构5.2、并行、并行I/O口编程方法口编程方法5.3、并行、并行I/O口基本应用口基本应用 I/O端口,即端口,即输入输入/输出输出端口,是端口,是微控制器(微控制器(MCU)同外界进行交互的重要通道。同

2、外界进行交互的重要通道。5.0 并行并行I/O口概述口概述 输入端口:输入端口:负责从外界接收检测信号、键盘信负责从外界接收检测信号、键盘信号等各种开关信号。号等各种开关信号。 输出端口:输出端口:负责向外界输送内部电路产生的处负责向外界输送内部电路产生的处理结果、显示信息、控制命令、驱动信号等。理结果、显示信息、控制命令、驱动信号等。 作用作用DIP40P0P0口口P2P2口口P1P1口口P3P3口口书书P24D QCLK Q读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚vccN-FET引脚引脚内部上内部上拉电阻拉电阻输出电路:一个输出电路:一个D触发器、一个场效应管触发器、一

3、个场效应管输入电路:两个三态门输入电路:两个三态门5.1 I/O端口内部结构端口内部结构基本模型基本模型D QCLK Q读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚vccN-FET引脚引脚内部上内部上拉电阻拉电阻D QCLK Q读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚vccN-FET引脚引脚内部上内部上拉电阻拉电阻D QCLK Q读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚vccN-FET引脚引脚内部上内部上拉电阻拉电阻内部总线内部总线特点:特点: PX口口可以单根输入输出,也可以并行输入输出。可以单根输入输出,也可以并行输入输出。控制控制总

4、线总线数据数据总线总线5.1 I/O端口内部结构端口内部结构基本模型基本模型5.1 I/O端口内部结构端口内部结构工作原理工作原理011001导通导通D QCLK Q读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚vccN-FET引脚引脚内部上内部上拉电阻拉电阻NPN特点:特点:(1)PX口口做数字输出时做数字输出时,输出数据是通过写输出数据是通过写SFR区区PX寄存器实现。寄存器实现。(2)PX口具有输出锁存功能。口具有输出锁存功能。P0P0口口SFR0FFH0B0H0A0H90H80H(P0)(P1)(P2)(P3)P2P2口口P3P3口口P1P1口口一位输出CLR P0.XS

5、ETB P0.XMOV P0.X,C并行输出MOV P0,#data截至截至书书P21基本的数字输出原理基本的数字输出原理010导通导通截止截止011D QCLK Q读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚vccN-FET引脚引脚内部上内部上拉电阻拉电阻NPN特点:特点:(1)PX口口做数字输入时,输入数据是通过读做数字输入时,输入数据是通过读PX寄存器采集寄存器采集。(2)PX口具有输入缓冲功能。口具有输入缓冲功能。 (3)PX口口做数字输入时,需先输出做数字输入时,需先输出“1”使场效应管截止,保证输入信号能被正常采集。使场效应管截止,保证输入信号能被正常采集。P0P0

6、口口SFR0FFH0B0H0A0H90H80H(P0)(P1)(P2)(P3)P2P2口口P3P3口口P1P1口口MOV P0 ,0 xFF一位输入MC, P0.X并行输入MOV A,P05.1 I/O端口内部结构端口内部结构工作原理工作原理基本的数字输入原理基本的数字输入原理D QCLK Q读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚vcc(1)P0口口(P0.0P0.7,39脚脚32脚脚)引脚引脚N-FETP-FET地址地址/ /数据数据控制控制MUXP0.xPNPNPN10截止截止截止截止封锁封锁10截至截至输出极输出极开路开路0101解封解封011导通导通100特点:特

7、点:(1)P0口引脚作基本的口引脚作基本的I/O用时,因输出用时,因输出“1”时漏极开路,需外接上拉电阻以保证输出时漏极开路,需外接上拉电阻以保证输出“1” 。(2)P0口引脚作总线地址口引脚作总线地址/数据的数据的I/0用时,采用推挽式输出电路,驱动能力更强。用时,采用推挽式输出电路,驱动能力更强。推挽式输出电路并行输出MOVX DPTR,AMOVX Ri,A并行输入MOVX A,DPTRMOVX A, Ri vcc外接上外接上拉电阻拉电阻导通导通5.1 I/O端口内部结构端口内部结构 一条一条P0端口引脚内部逻辑电路图端口引脚内部逻辑电路图P1.x(2) P1口口(P1.0P1.7,1脚脚

8、8脚脚)D QCLK Q读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚vccN-FET引脚引脚内部上内部上拉电阻拉电阻5.1 I/O端口内部结构端口内部结构 一条一条P1端口引脚内部逻辑电路图端口引脚内部逻辑电路图地址地址D QCLK QMUX读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚控制控制 一条一条P2端口引脚内部逻辑电路图端口引脚内部逻辑电路图引脚引脚P2.x(3)P2口口(P2.0P2.7,21脚脚28脚脚)vccN-FET00导通导通010110截止截止1101并行输出MOVX DPTR,AMOVX Ri,A5.1 I/O端口内部结构端口内部结构D Q

9、CLK Q读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚引脚引脚P3.xvcc(4)P3口口(P3.0P3.7,10脚脚17脚脚)第第2功能功能输出输出第第2功能功能输入输入N-FET1开放开放0001导通导通截止截止11001开放开放5.1 I/O端口内部结构端口内部结构 一条一条P3端口引脚内部逻辑电路图端口引脚内部逻辑电路图pPX口的输入输出操作是通过对口的输入输出操作是通过对SFR区对应的特殊功能寄存区对应的特殊功能寄存器器PX进行读写操作来实现。即给进行读写操作来实现。即给PX寄存器写数据完成寄存器写数据完成PX口信号的输出,读取口信号的输出,读取PX寄存器的数据就完成

10、寄存器的数据就完成PX口信号的输口信号的输入。入。pPX口既可以并行输入口既可以并行输入/输出,也可以单独一根输出,也可以单独一根I/O引脚输入引脚输入/输出。即读写输出。即读写PX寄存器完成寄存器完成PX口的并行输入口的并行输入/输出,读输出,读写写PX寄存器的某位寄存器的某位PX.X完成完成PX.X引脚的输入引脚的输入/输出。输出。pPX口做输入口时需要做一次性初始化操作,先做伪输出。口做输入口时需要做一次性初始化操作,先做伪输出。实现方法为先把实现方法为先把PX口做输出口且输出高电平,即先给口做输出口且输出高电平,即先给PX寄寄存器写存器写0XFF。pPX口有输出数据锁存、输入数据缓冲的

11、功能。口有输出数据锁存、输入数据缓冲的功能。P0口内部电口内部电路无上拉电阻,因此使用该口做输出时必须外接上拉电阻。路无上拉电阻,因此使用该口做输出时必须外接上拉电阻。5.1 I/O端口内部结构端口内部结构基本特性总结基本特性总结P0P0口口SFR0FFH0B0H0A0H90H80H(P0)(P1)(P2)(P3)P2P2口口P3P3口口P1P1口口书书P215.2 I/O并行端口编程方法并行端口编程方法输出汇编语言C语言一位输出CLR P0.0 或CLR C MOV P0.0,CSETB P0.0 或SETB C MOV P0.0,Csbit P0_0=0X80; 或 sfr P0=0X80

12、; sbit P0_0=P00;P0_0=0; /输出0P0_0=1; /输出1并行输出MOV P0,#datasfr P0=0X80;P0=data; /输出data书书P21输入汇编语言C语言一位输入SETB P0.0MOV C, P0.0sbit P0_0=0X80; 或 sfr P0=0X80; sbit P0_0=P00;bit flag;P0_0=1; /输入口线初始化flag=P0_0;(或做条件表达式)/读取输入口线并行输入MOV P0,#0XFFMOV A, P0sfr P0=0X80;unsigned char data buffer;P0=0XFF; /输入口线初始化bu

13、ffer=P0;(或做条件表达式 ) /读取输入口线P0P0口口SFR0FFH0B0H0A0H90H80H(P0)(P1)(P2)(P3)P2P2口口P3P3口口P1P1口口5.2 I/O并行端口编程方法并行端口编程方法51单片机最小系统电路原型+5V123J1DC/AC_9V+C4470uF+C6220uFC70.1uF+5VD2POWER+312-4D1DQ123VVGNDINOUTU2LM7805C50.1uFR310K+5VC110uF+5VRSTR1200R210KC220PC320PY112MHzAT89S51RST9XTAL218XTAL119GND20P2.0(A8)21P2.

14、1(A9)22P2.2(A10)23P2.3(A11)24P2.4(A12)25P2.5(A13)26P2.6(A14)27P2.7(A15)28PSEN29ALE(PROG)30EA(VPP)31P0.7(AD7)32P0.6(AD6)33P0.5(AD5)34P0.4(AD4)35P0.3(AD3)36P0.2(AD2)37P0.1(AD1)38P0.0(AD0)39VCC40P1.01P1.12P1.23P1.34P1.45P1.5(MOSI)6P1.6(MISO)7P1.7(SCK)8P3.0(RXD)10P3.1(TXD)11P3.2(INT0)12P3.3(INT1)13P3.4(

15、T0)14P3.5(T1)15P3.6(WR)16P3.7(RO)17U1复复位位电电路路电电源源电电路路时时钟钟电电路路5.3 I/O端口应用端口应用(参考材料参考材料)参考资料部分参考资料部分无源晶振(无源晶振(Crystal )瓷片电容瓷片电容电解电容电解电容常开按钮常开按钮发光二极管发光二极管方形整流桥方形整流桥圆形整流桥圆形整流桥直流电源插座直流电源插座稳压器稳压器78055151单片机实验板单片机实验板5.3 I/O端口基本应用端口基本应用发光二极管发光二极管LED数码管数码管LED点阵点阵按键开关按键开关键盘键盘蜂鸣器蜂鸣器LCD液晶显示器液晶显示器生活中的应用实例生活中的应用实

16、例LEDLED夜景夜景装饰装饰LEDLED灯饰灯饰LEDLED广告灯广告灯LEDLED灯花灯花LEDLED发光二极管相关知识发光二极管相关知识1、元件外形、元件外形2、元件电路符号、元件电路符号3、应用电路、应用电路I/O引脚vccGNDI/O引脚(1) 高电平驱动高电平驱动(2) 低电平驱动低电平驱动拉电流拉电流灌电流灌电流正极正极负极负极10亮亮亮亮内部结构机械式触点式按键开关相关知识机械式触点式按键开关相关知识1、元件外形、元件外形2、元件电路符号、元件电路符号3、应用电路、应用电路1按下按下松开松开0按下按下松开松开10VCCI/O引脚方法一VCCI/O引脚方法二去抖动措施:去抖动措施

17、:键数较少时,键数较少时,采用硬件去抖采用硬件去抖;键数较多时,键数较多时,采用软件去抖采用软件去抖。 触点式按键的机械抖动波形机械式触点式按键开关相关知识机械式触点式按键开关相关知识4、抖动问题及去抖动措施、抖动问题及去抖动措施VCCI/O引脚X 位位X 段数码管段数码管LEDLED数码管相关知识数码管相关知识1、LED数码管外形数码管外形8段段LED显示的数字和字母显示的数字和字母LEDLED数码管相关知识数码管相关知识1、8段段LED外形外形2、8段段LED管脚分布管脚分布内部结构图COM引脚接低电平引脚接低电平高电平驱动笔段亮高电平驱动笔段亮共阴LED共阳LEDCOM引脚接低电平引脚接

18、低电平低电平驱动笔段亮低电平驱动笔段亮LEDLED数码管相关知识数码管相关知识3、8段段LED内部结构内部结构静态显示电路3、应用电路、应用电路LEDLED数码管相关知识数码管相关知识优点:显示程序十分简单,显示亮度大,节约优点:显示程序十分简单,显示亮度大,节约CPU的工作时间的工作时间缺点:占用的缺点:占用的I/O口线较多,硬件成本较高。口线较多,硬件成本较高。I/O(1)I/O(2)dpabcdefgdpabcdefgcomdpdpabcdefgdpabcdefgcomdp笔段笔段控制控制笔段笔段控制控制共阳极共阳极LED静态显示电路4、应用电路、应用电路LEDLED数码管相关知识数码管

19、相关知识I/O(1)I/O(2)dpabcdefgdpabcdefgcomdpdpabcdefgdpabcdefgcomdp笔段笔段控制控制笔段笔段控制控制共阴极共阴极LED送显示数据送显示数据1笔段码笔段码送显示数据送显示数据2笔段码笔段码动态扫描显示电路3、应用电路、应用电路LEDLED数码管相关知识数码管相关知识优点:显示程序较复杂,显示亮度小,浪费优点:显示程序较复杂,显示亮度小,浪费CPU的工作时间的工作时间缺点:占用的缺点:占用的I/O口线较少,硬件成本较低。口线较少,硬件成本较低。dpabcdefgdpabcdefgcomdpI/O(1)I/O(2)dpabcdefgdpabcd

20、efgcomdpdpabcdefgdpabcdefgcomdp笔段笔段控制控制位选位选控制控制送位选通码送位选通码选通一位选通一位LED送显示数据送显示数据笔段码笔段码延时延时5.3 I/O口应用键控灯 如图如图P0口是口是8个独立个独立键键的的输入口,输入口,P1口口是是8 8个个LED发光管发光管驱驱动动口。任务要求,按下键,对应的口。任务要求,按下键,对应的led灯亮,未按下键,对应的灯亮,未按下键,对应的led灯熄灭。灯熄灭。#include void main() unsigned char i;P0=0 xff;for( ; ; ) i=P0; P1=i;5.3 I/O口应用独立键

21、控单独立键控单LED发光管流水灯发光管流水灯 任务要求:有键按下左流水,无键则右流水。5.3 I/O口应用独立键控单独立键控单LED发光管流水灯发光管流水灯显示笔段显示笔段0 xC00 x3F笔段位笔段位共阳共阳1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1共阴共阴dp g f e d c b aD7 D6 D5 D4 D3 D2 D1 D0LEDLED数码管相关知识数码管相关知识4、显示原理、显示原理显示笔段显示笔段笔段位笔段位dp g f e d c b aD7 D6 D5 D4 D3 D2 D1 D0LEDLED数码管相关知识数码管相关知识4、显示原理、显示原理0 xF9

22、0 x06共阳共阳1 1 1 1 1 0 0 1 0 0 0 0 0 1 1 0共阴共阴八段共阳八段共阳LED数码管数码管字形编码字形编码(笔段码笔段码)表表八段共阴八段共阴LED数码管数码管字形编码字形编码(笔段码笔段码)表表3FH3FH06H06H5BH5BH4FH4FH66H66H6DH6DH7DH7DH07H07H7FH7FH6FH6FH77H77H7CH7CH39H39H5EH5EH79H79H71H71H十位十位个位个位例例1:LED显示控制显示控制电路原理图设计电路原理图设计有兴趣了解一下点阵显示器有兴趣了解一下点阵显示器做广告用做广告用5.3 I/O5.3 I/O口应用口应用3

23、3点阵(自学)点阵(自学)5.3 I/O5.3 I/O口应用口应用33键盘键盘VCCI/O引脚引脚K1K2K3K410K10K10K10KVCCI/O引脚引脚K1K2K3K4独立式键盘独立式键盘(线性键盘)(线性键盘)矩阵矩阵式键盘式键盘(行列行列式键盘)式键盘)键盘相关知识键盘相关知识1、键盘电路键盘电路行线行线列线列线2.1 行(列)扫描法行(列)扫描法2.2 线反转法线反转法行行线线列列线线键盘相关知识键盘相关知识2、矩阵、矩阵键盘识键原理键盘识键原理及编程方法及编程方法键盘相关知识键盘相关知识VCCK1K2K3K4011001按下按下按下按下01矩阵矩阵式键盘式键盘(行列行列式键盘)式

24、键盘)行行0行行1列列0列列12.1 行扫描法原理行扫描法原理第第0行行(10)第第1行行(01)I/O引脚引脚行行(输出输出)列列(输入输入)键键号号01101100K1K2无键无键多键多键01101100K3K4无键无键多键多键行列行列键位置键位置键号键号0行行0列列0行行1列列1行行0列列1行行1列列0110100110100101K2K1K4K3闭合键所在行、列的状态均为闭合键所在行、列的状态均为0,其余皆为,其余皆为1。VCC行行0行行1列列0列列1行行2行行3列列2列列3I/O(1)低四位低四位I/O(1)高四位高四位 0X7E 0X7D 0X7B 0X77 0XBE 0XBD 0

25、XBB 0XB7 0XDE 0XDD 0XDB 0XD7 0XEE 0XED 0XEB 0XE748c/37=*260- 159+faHMLmixiriladoso闭合键所在行、列的状态均为闭合键所在行、列的状态均为0,其余皆为,其余皆为1。行列行列键位置码键位置码0行行0列列111011100行行1列列110111100行行2列列101111100行行3列列011111101行行0列列111011011行行1列列110111011行行2列列101111011行行3列列011111012行行0列列111010112行行1列列110110112行行2列列101110112行行3列列0111101

26、13行行0列列111001113行行1列列110101113行行2列列101101113行行3列列01110111键盘相关知识键盘相关知识键盘相关知识键盘相关知识编程识别步骤编程识别步骤 首先判断有无按键首先判断有无按键n行线输出全行线输出全0,列线输入初始化,列线输入初始化n读列线判断有无按键读列线判断有无按键 逐行扫描按键(逐行输出逐行扫描按键(逐行输出0)n 输出行扫描值输出行扫描值n 读列线判断有无按键,如有则把读列线判断有无按键,如有则把刚输出的行扫描值和读入的列值组刚输出的行扫描值和读入的列值组合返回,否则继续扫描下一行合返回,否则继续扫描下一行开始开始输出全行扫描值输出全行扫描值

27、扫到最后一行?扫到最后一行?NYN该行该行有键按下有键按下?有键按下有键按下?有键按下有键按下?延时去抖动延时去抖动准备行扫描初值准备行扫描初值YNNY输出行扫描值输出行扫描值产生下一行扫描值产生下一行扫描值返回按键位返回按键位置编码置编码返回无键返回无键标识标识组合当前行组合当前行扫描值和读扫描值和读入的列值入的列值YN键盘扫描流程图键盘扫描流程图开始开始输出全行扫描值输出全行扫描值扫到最后一行?扫到最后一行?NYN该行该行有键按下有键按下?有键按下有键按下?有键按下有键按下?延时去抖动延时去抖动准备行扫描初值准备行扫描初值YNNY输出行扫描值输出行扫描值产生下一行扫描值产生下一行扫描值返回

28、按键位返回按键位置编码置编码返回无键返回无键标识标识组合当前行组合当前行扫描值和读扫描值和读入的列值入的列值uchar key_scan() key=0XF0; if( ) delay(10); if(key&0 xf0)!=0 xf0) scan_buf=0 xfe; for(i=0;i4;i+) key=scan_buf; if (key&0 xf0)!=0 xf0) key_h=scan_buf&0 x0f; key_l=key&0 xf0; return(key_h+key_l); else else return(nokey); else #defin

29、e key P1#define uchar unsigned char#define nokey 0 x00(key&0 xF0) !=0 xF0 return(nokey);uchar scan_buf,key_h,key_l;scan_buf=(scan_buf 1)&0 x01;键盘相关知识键盘相关知识输输出出列列线线VCC输输入入行行线线编程识别步骤编程识别步骤 首先判断有无按键首先判断有无按键n列线输出全列线输出全0,行线输入初始化,行线输入初始化n读行线判断有无按键读行线判断有无按键 逐行扫描按键(逐行输出逐行扫描按键(逐行输出0)n 输出列扫描值输出列扫描值n 读

30、行线判断有无按键,如有则把读行线判断有无按键,如有则把刚输出的列扫描值和读入的行值组刚输出的列扫描值和读入的行值组合返回,否则继续扫描下一列合返回,否则继续扫描下一列开始开始输出全列扫描值输出全列扫描值扫到最后一列?扫到最后一列?NYN该列该列有键按下有键按下?有键按下有键按下?有键按下有键按下?延时去抖动延时去抖动准备列扫描初值准备列扫描初值YNNY输出列扫描值输出列扫描值产生下一列扫描值产生下一列扫描值返回按键位返回按键位置编码置编码返回无键返回无键标识标识组合当前列组合当前列扫描值和读扫描值和读入的行值入的行值键盘扫描流程图键盘扫描流程图键盘相关知识键盘相关知识VCCK1K2K3K400

31、01按下按下按下按下00100111111行行(输出输出)列列(输入输入)列列号号0010011100第0列无键无键多键多键第1列列列(输出输出)行行(输入输入)行行号号0010011100第0行无键无键多键多键第1行行列行列键位置键位置键号键号0行行0列列0行行1列列1行行0列列1行行1列列0110100110100101K2K1K4K30按下按下2.2 线反转法原理线反转法原理闭合键所在行、列的状态均为闭合键所在行、列的状态均为0,其余皆为,其余皆为1。行行0行行1列列0列列1VCC行列行列键位置码键位置码0行行0列列111011100行行1列列110111100行行2列列10111110

32、0行行3列列011111101行行0列列111011011行行1列列110111011行行2列列101111011行行3列列011111012行行0列列111010112行行1列列110110112行行2列列101110112行行3列列011110113行行0列列111001113行行1列列110101113行行2列列101101113行行3列列01110111行行0行行1列列0列列1行行2行行3列列2列列3I/O(1)低四位低四位I/O(1)高四位高四位 0X7E 0X7D 0X7B 0X77 0XBE 0XBD 0XBB 0XB7 0XDE 0XDD 0XDB 0XD7 0XEE 0XED

33、 0XEB 0XE7闭合键所在行、列的状态均为闭合键所在行、列的状态均为0,其余皆为,其余皆为1。键盘相关知识键盘相关知识faHMLmixiriladoso48c/37=*260- 159+判断按键所在行判断按键所在行n行线输入初始化,列线输出全行线输入初始化,列线输出全0。n读端口得行码读端口得行码 得按键编码得按键编码合并第合并第 步所得按键行列码返回。步所得按键行列码返回。编程识别步骤编程识别步骤判断按键所在列判断按键所在列n列线输入初始化,行线输出全列线输入初始化,行线输出全0。n读端口得列码读端口得列码键盘相关知识键盘相关知识开始开始按键闭合?按键闭合?按键闭合?按键闭合?行线输入初

34、始化行线输入初始化列线输出列线输出0 0读取行线保存行码读取行线保存行码延时延时10ms10ms去抖动去抖动列线输入初始化列线输入初始化行线输出行线输出0 0读取列线保存列码读取列线保存列码行列码组合行列码组合按键松开?按键松开?返回返回YYYNNN键盘扫描流程图键盘扫描流程图VCC返回无返回无键标识键标识uchar key_scan() uchar scan_buf,key_h,key_l; key=0XF0; if(key&0 xf0)!=0 xf0 ) delay(10); if( (key&0 xf0)!=0 xf0 ) scan_buf= 0 x01; for(i=0

35、;i4;i+) key=scan_buf; if (key&0 xf0)!=0 xf0) key_h=scan_buf&0 x0f; key_l=key&0 xf0; return(key_h+key_l); else scan_buf=1; else return(nokey); else return(nokey); 键盘扫描程序键盘扫描程序行扫描法行扫描法开始开始输出全行扫描值输出全行扫描值扫到最后一行?扫到最后一行?NYN该行该行有键按下有键按下?有键按下有键按下?有键按下有键按下?延时去抖动延时去抖动准备行扫描初值准备行扫描初值YNNY输出行扫描值输出行扫描值

36、产生下一行扫描值产生下一行扫描值返回按键位返回按键位置编码置编码返回无键返回无键标识标识组合当前行组合当前行扫描值和读扫描值和读入的列值入的列值uchar key_scan() uchar w1,w2,w; key = 0 x0f; if(key&0 x0f)!=0 x0f) delay(10); if(key&0 x0f)!=0 x0f) w1= key&0 x0f; key = 0 xf0; w2= key&0 xf0;w=w1|w2; while(key&0 xf0)!=0 xf0) return w ; else return error ;得得行行码码组组合合开始开始按键闭合?按键闭合?按键闭合?按键闭合?行线输入初始化行线输入初始化列线输出列线输出0 0读取行线保存行码读取行线保存行码延时延时10ms10ms去抖动去抖动列线输入初始化列线输入初始化行线输出行

温馨提示

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

评论

0/150

提交评论