这个键盘扫描程序怎么理解(急急急急急!!!!)

这个键盘扫描程序怎么理解(急急急急急!!!!),第1张

你的程序有问题哦!

#include <reg51h>

#include <mathh>

#include <intrinsh>

#define uchar unsigned char

#define TURE 1

#define FALSE 0

int key;

int del;

void Tkey(void);

/主 程序/

void main(void)

{

void tkey(void);

void delay(int);

SCON=0x00;

TI=0;

while(TURE)

{

Tkey();

delay(2000);

} //这是一个死循环

}

void Tkey(void)

{

uchar readkey;//rereadkey;

uchar x_temp,y_temp;

/你给出的程序提示你的键盘是4X4的/

P1=0x0f; //给行送高电平,列送低电平

x_temp=P1&0x0f; //读回行的状态

if(x_temp==0x0f) goto keyout; /若行中有低电平也即不等于0x0f,

/表示有键按下

P1=0xf0; //给给列送高电平,行送低电平

y_temp=P1&0xf0; //读回列状态

readkey=x_temp|y_temp; //行状态列状态并起代表一个按键

readkey=~readkey; //取反

switch(readkey) //判定按键代码

{

case 0x11:key=0; break;

case 0x21:key=1; break;

case 0x41:key=2; break;

case 0x81:key=3; break;

case 0x12:key=4; break;

case 0x22:key=5; break;

case 0x42:key=6; break;

case 0x82:key=7; break;

case 0x14:key=8; break;

case 0x24:key=9; break;

case 0x44:key=10;break;

case 0x84:key=11;break;

case 0x18:key=12;break;

case 0x28:key=13;break;

case 0x48:key=14;break;

case 0x88:key=15;break;

default: key=16;break;

}

keyout:_nop_();

}

/延时程序/

void delay(del)

{

for(del;del>0;del--);

}

下面是一个我机子上调试好的8255程序、希望对你有所帮助。、 祝你好运~~~ 8255扫描键盘、显示程序 利用8255可编程并行口做一个扫描键盘实验, 把按键输入的键码,显示在由8279控制的七段数码管上。 8255PA口做键盘输入线,PB口作扫描线

1、读键程序:读P1。

内容对应+、-、TH/TL。

计次数识别TH/TL的长按和短按。

还需要考虑一个设定结束的考虑。

或者长时间无按键,视为设定完成。

2、显示程序:建议另一个定时中断中显示TH、TL的被设定值。

3、定时中断程序:通过IO指示灯翻转

以上就是关于这个键盘扫描程序怎么理解(急急急急急!!!!)全部的内容,包括:这个键盘扫描程序怎么理解(急急急急急!!!!)、用8255的C口做键盘扫描,怎么写程序、如何设计2个按键同时按的键盘扫描C程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9820011.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存