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

这个键盘扫描程序怎么理解(急急急急急!!!!),第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--);

}

我给你个键盘扫描程序 灯亮那个就很简单了!你自己改改吧 有问题再叫我哦!

//-----------------------------返回码-----------------------------

// P14 P15 P16 P17

// P10 0x11 0x21 0x41 0x81

// P11 0x12 0x22 0x42 0x82

// P12 0x14 0x24 0x44 0x84

// P13 0x18 0x28 0x48 0x88

// 无按键返回0

//----------------------------------------------------------------

//-----------------------------头文件-----------------------------

#include <reg51h>

//----------------------------------------------------------------

//-----------------------------宏定义-----------------------------

#define uchar unsigned char

#define uint unsigned int

#define KEYPORT P3 //键盘扫描端口

//--------------------------------------------------------------------

//-----------------------------延迟函数-----------------------------

static void vDelay_uint(uint m)

{

for (;m>0;m--);

}

//-----------------------------按键扫描函数-----------------------------

uchar ucKb4X4_Scan(void)

{ uint m; //用作连续按键的延时

uchar sccode,recode; //sccode表示行,recode表示列,ucKeyVal表示返回码

KEYPORT=0xf0; //付初值KEYPORT = 11110000

if ((KEYPORT&0xf0)!=0xf0) //判断是否有按键,有按键则不为初值

{

vDelay_uint(200); //延时去抖动

if ((KEYPORT&0xf0)!=0xf0)

{

sccode=0xfe; //使sccode = 11111110

while ((sccode&0x10)!=0) //用于循环4次因为是44键盘

{

KEYPORT=sccode;

if ((KEYPORT&0xf0)!=0xf0) //判断按键是否在此行

{

recode=(KEYPORT&0xf0)|0x0f; //确定列的位置

for (m=0;((KEYPORT&0xf0)!=0xf0)&&(m<10000);m++);

//用m做一个10000次的延迟,(P1&0xf0)!=0xf0用于判定是否还在按着,

//如果是延迟20000次返回一次值码

vDelay_uint(10000); //延时10000次,共20000次返回一次值码

return((~sccode)+(~recode)); //返回按键码

}

else

sccode=(sccode<<1)|0x01; //不在此行下移一行

}

}

}

return(0); //无按键返回0

}

可以。如今是小屏幕随身带,大屏幕逐渐被遗忘的年代,毕竟手机、平板等小屏幕设备功能越来越强大,大家都已经被这些小屏幕“征服了”。

但是,在特定的时间里,电视、投影仪等这些大屏幕设备,还是有其“用武之地”。例如观看**大片、会议室的开会、与家人朋友一起生活照片视频、亲子学习等,这些还是在大屏幕上会更好。

由于大家都依赖着小屏幕设备,会把各种资料都保存在里面,因此投屏这个 *** 作,也成为更多人所追求的。

很多手机、平板都没有自带投屏功能,不少人就会使用各种投屏app,这些投屏app的兼容性、稳定性等,相信不少人使用过都会觉得“不敢恭维”,而且在功能方面,也是相对单一的。

那么,小屏幕投屏到大屏幕,能有更好的解决方案么?是有的,因为我在新浪众测里看到了这款新品——酷开共享屏mini。

这是一款拥有便捷收藏、高效共享、互动协作、智能连接等玩法的精致好物,大家需要的投屏功能都集于一身,下面就一起来研究研究。

在包装上是满满的简约风,而包装内是排序有致,简约的内嵌设计,稳稳的把共享屏mini和配件都固定好。

从内托里取出的是三件套:共享屏mini、HDMI线、Type-C数据线。

三者的连接,无需看说明书也是能秒懂,在安装上完全没有难度。

细看一下共享屏mini,样子就是一个小方块,深灰色配色,整体看起来还有颇有质感的。

在共享屏mini的两侧,分别有Type-C接口和HDMI接口,是对应配套的线材连接,一看就懂。

共享屏mini身上没有任何开关,只需Type-C数据线连接大屏设备或充电器、充电宝等供电就能启动。

其他功能的实现,都是在大屏上通过手机app来 *** 作。整体的 *** 作流程可连说明书也不用看,直接连接后在大屏上就能看到相应的 *** 作流程。

就是这样,先在手机上下载共享屏app,然后通过app来扫描大屏上的二维码,就能快速连接上。连接时会提示连接手机连接中的wifi,只要输入wifi密码,就能完全连接成功。

我家的电视已经闲置多年,就不拿出来连接了。体验共享屏mini,就是为了能轻松投屏手机上的**大片到投影上,享受家庭影院的乐趣。

这就是共享屏APP的界面,主要分为“共享空间”和“小程序”两个页面,两个页面的内容看起来很简洁,但都是非常实用的,而且都是非常明了,基本没有 *** 作难度。

在共享空间里,所连接的设备就是载体,其存储的内容都能在APP里根据分类而共享出来。

在小程序里,主要分为影音和 游戏 两类,这里看到的都是已经随机内置的小程序,都是大家经常会使用到的流行程序。但暂时没有提供下载,期待系统的升级优化。

我就是为了手机投屏才体验共享屏mini的,所以第一时间就看上了“奇异果影视”,这是基于爱奇艺的资源,也是平时经常在手机上使用的。

现在无需头疼下载投屏app等问题,通过共享屏mini就能直接的投屏,非常轻松。

对于手机投屏,大家使用得更多的,第一是视频,第二应该就是了。这些存储在手机的里的,在手机上看基本只能是独自观赏,能投屏到大屏幕上看,才是真正的共享。

在共享屏app首页位置,“”和“视频”并不是放在第一二位,但巧妙的放在居中靠前的位置,也就是真正的C位,这个设定的细节,很用心。

在视频投影中,同样也是影音完全同步,没有卡顿等问题,整天投屏效果很理想。

这就是我使用共享屏mini的真切所需,现在的影视资源都是随时人家分享过来,直接就下载到手机里,根本不用电脑 *** 作。影视资源在手机上看,个人的感觉是“倒不如不看”。因此,我现在享受家庭影院,可舒适多了!

无论是在线的,还是手机存储中的投屏,整体效果都相当理想,不仅影音同步,没有卡顿,画面清晰度也是可圈可点的。很明显,共享屏mini在手机影视投屏这方面,下了不少功夫。

重点是,手机投屏后,手机完全可以进行其他 *** 作,没有影响投屏的进度和效果。这样的好处有很多,例如在投屏时不错过重要信息、给孩子投屏动画时,家长能继续 *** 作手机等等。

在投屏方面,速度还是挺好的,投屏的清晰度也很理想。(投屏出来的色差问题是投影机问题,多次静态拍出来都是这效果,请见谅)

在app上,是一张张列好队,需要投屏哪张就点哪张。但无法滑动选择切换,这里还需要一定的系统优化。

这是多人画板(实际效果和手机屏幕上一致,都是白色底,但由于投影机问题,拍摄出来就有色差,请见谅)

多人画板更适合亲子互动,通过手机屏幕上绘画,在大屏幕上实时展现出来,随时玩个“你画我猜”,挺有意思的。

但画笔款式、画笔色彩、其他元素等选择并不多,这里也建议能优化升级。

除了影音 娱乐 ,图文分享等,共享屏mini还能通过 游戏 方式,实现更多的派对互动新方式。

例如这个在 游戏 小程序中的“幸运大转盘”,就是一个有意思的派对方式。通过手机摇一摇,大屏幕上显示出转盘的内容,互动的效果,大家都懂的。

游戏 是一种互动方式,在各种投屏时,还可以实现更多特别的互动。

例如是发满屏的动态表情,又例如是发d幕等等,都是 时尚 的玩法,这对于喜欢开派对的用户来说,是一件很欢乐的事情。

无论是开派对,还是各种节日,有聚会的时候,大屏幕上能有相应的气氛画面,可会让大家更为开心,这也能展示主办方的诚意。

另外,还有一个时光相册,暂时未开通,也是值得大家期待的。

对于共享屏mini,或许大家只会想到其就是为了手机投屏而来,不知道大家有没有想到,其也可以让电脑画面也投屏出来呢?

确实是可以的,就是在同一个wifi环境下,通过专属链接和共享码的方式来实现。

这样,电脑上的画面便能轻松投屏出来,这对于商务办公是一个很好的助力方式。

但是,这个电脑投屏方式只适合静态画面,不太适合视频等动态画面,毕竟会有一定的延迟,看视频会一卡一卡的。

在电脑投屏时能用鼠标作为激光笔,那么手机投屏里,还激光笔功能么?确实是有的,也是在互动的版面里,找到“激光笔”,通过手机里画出相应的线条,就能实现这个功能了。

总结

对于酷开共享屏mini来说,大家是会先想到是家用还是商用呢?其实是都可以的,毕竟其在投屏里实现出更为丰富的方式,无论你有没有想过的功能,都融入其中。

只要手机连接上共享屏mini,便能轻松在大屏幕上实现影音 娱乐 、图文分享、亲子互动、商务展示、派对气氛等等令人欣喜的玩法。而且在连接的速度、影音的同步等方面,都是非常流畅,可比一般的投屏APP要靠谱得多。

很明显,共享屏mini一些小功能还处于开放中,期待能尽快完善。还有小程序的安装和卸载、功能界面的DIY等,期待能开放给用户去设定,这样就更好玩了。

不是的并不是所有的扫描q都能扫描手机屏幕的二维码,目前激光扫描q只能扫描一维的纸质码,比较适合用在扫描商品码和人流量小的地方,所以激光扫描q不适合扫描手机的屏幕码,二维扫描q和CCD红光扫描q是可以扫的。市面上大部分用来扫描微信支付宝的扫描q是兴通物联的XT6605手持式有线扫描q,XT6605是一款性能优良的扫描q,不仅能够轻松读取各类一维条码,而且可以高速读取二维QR条码

#include <reg51h>

#include <intrinsh>

sbit SPK=P3^4; //SPK定义为P3口的第4位,就是驱动蜂鸣器的那个脚

sbit JDQ=P3^5; //JDQ定义为P3口的第5位,就是驱动继电器的那个脚

code unsigned char table[]=

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

0x77,0x7c,0x39,0x5e,0x79,0x71};

//共阴数码管 0-9 a-f 表

code unsigned char key_tab[17]={0xed,0x7e,0x7d,0x7b,

0xbe,0xbd,0xbb,0xde,

0xdd,0xdb,0x77,0xb7,

0xee,0xd7,0xeb,0xe7,0XFF};//========================此数组为键盘编码,

//本人采用类式类似电话按键的编码方式,方便以后设计

// 1 2 3 a 0x01 0x02 0x03 0

// 4 5 6 b 对应16进制码: 0x04 0x05 0x06 0x0b

// 7 8 9 d 0x07 0x08 0x09 0x0d

// 0 # f 0x0c 0x00 0x0e 0x0f

//打个比方,如果你按下0键,P0口读到数据为0xed

//如果你按下2键,P0口读到数据为0x7d,按下9键为0xdb,

//我们将读到的P0口数据经过查表法就能得到相应的16进制码

//键盘的读取,我们采用分时扫描

unsigned char l_tmpdate[8]={0,0,0,0,0,0,0,0};//定义数组变量

unsigned char l_key=0x0; //定义变量,存放键值

unsigned char l_keyold=0xFF; //做为按键松开否的凭证

void ReadKey(void); //扫描键盘 获取键值

void delay();//延时子函数,5个空指令

void display(unsigned char lp,unsigned char lc);//数字的显示函数;lp为指向数组的地址,lc为显示的个数

//这个函数在第二节用过不用再说了吧!

void main(void) //入口函数

{

while(1){

ReadKey(); //调用键盘扫描

display(&l_key,1); //输出显示获取的键值码

if(l_key==0x0e) //这里我们检测是否按了0x0e键,

JDQ=0; //是,我们就驱动继电器打开

if(l_key==0x0c) //检测是否按下了0x0c键,

JDQ=1; //是,我们就驱动继电器断开

}

}

void ReadKey(void) //读键盘值

{

unsigned char i,j,key;

//分三个部份来理解,

//第一部份,用扫描来读取键盘,

j=0xfe;

key=0xff; //设定初值

for (i=0;i<4;i++){

P0=j; //P0口低4位循环输出0,扫描键盘

//leday();

if ((P0&0xf0)!=0xf0){ //如果有键按下,P0口高4位不会全为1,

key=P0; //读取P0口,退出循环,否则循环下次

break;

}

j=_crol_(j,1); //此函数功能为左循环移位

}

//第二部份,检测是否干扰或按键放开

if (key==0xff){ //如果读取不到P0口的值,比如是干扰或是键盘又松开,我们做相应复位,返回

l_keyold=0xff;

SPK=1; //按键有松开,停止蜂鸣器响

return;

}

else

SPK=0; //打开蜂鸣器

//第三部份,检测是新按键按下,获取新的键盘编码值

if(l_keyold!=key){ //检测按键放开否,如果一样表明没放开,不做处理,不一样表时另一个键按下做编码转换

l_keyold=key; //获取键码做为放开下次的凭证

for(i=0;i<17;i++){ //查表获得相应的16进制值存放l_key变量中

if (key==key_tab[i]){

l_key=i;

break;

}

}

}

//程序运行到这里,就表明有键值被读取存放于l_key变量中,主程序就可以检测此变量做相应外理,

//此时我们回到主程序

}

void display(unsigned char lp,unsigned char lc)//显示

{

unsigned char i; //定义变量

P2=0; //端口2为输出

P1=P1&0xF8; //将P1口的前3位输出0,对应138译门输入脚,全0为第一位数码管

for(i=0;i<lc;i++){ //循环显示

P2=table[lp[i]]; //查表法得到要显示数字的数码段

delay(); //延时5个空指令

if(i==7) //检测显示完8位否,完成直接退出,不让P1口再加1,否则进位影响到第四位数据

break;

P2=0; //清0端口,准备显示下位

P1++; //下一位数码管

}

}

void delay(void) //空5个指令

{

_nop_();_nop_();_nop_();_nop_();_nop_();

}

以上就是关于这个键盘扫描程序怎么理解(急急急急急!!!!)全部的内容,包括:这个键盘扫描程序怎么理解(急急急急急!!!!)、键盘扫描程序、共享屏幕能扫二维码吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存