51单片机矩阵键盘程序:想把按键的值一一存到数组里,最后按下某个按键时,把数组里的某个数显示出来,

51单片机矩阵键盘程序:想把按键的值一一存到数组里,最后按下某个按键时,把数组里的某个数显示出来,,第1张

给一个键盘扫描程序参考:

void delay(unsigned int a)

{

unsigned int i,j

for(i=0i<ai++)

for(j=0j<120j++)

}

uchar kbscan(void)

{

unsigned char sccode,recode

P1=0x0f  //发0扫描,列线输入

if ((P2 & 0x0f) != 0x0f)  //有键按下

{

delay(20)   //延时去抖动

if ((P1&0x0f)!= 0x0f)

{

sccode = 0xef    //逐行扫描初值

while((sccode&0x01)!=0)

{

    P1=sccode

if((P1&0x0f)!=0x0f)

{

    recode=(P1&0x0f)|0xf0

while((P1&0x0f)!=0x0f)//等待键抬起

return((~sccode)+(~recode))

 }

        else

sccode=(sccode<<1)|0x01

}

}

}

return 0  //无键按下,返回0

}

uchar getkey(void)

{

unsigned char key,keyval=0xff

key=kbscan()

switch(key)

{

case 0x11:keyval=1break

case 0x12:keyval=2break

case 0x14:keyval=3break

case 0x18:keyval=10break //+

case 0x21:keyval=4break

case 0x22:keyval=5break

case 0x24:keyval=6break

case 0x28:keyval=11break //-

case 0x41:keyval=7break

case 0x42:keyval=8break

case 0x44:keyval=9break

case 0x48:keyval=12break //清除

case 0x81:keyval=13break

case 0x82:keyval=0break

case 0x84:keyval=14break //小数点

case 0x88:keyval=15break //确认

default:keyval=16break

}

return(keyval)

}

'例子1--在按键精灵内直接重定义数组

Dim AR(),i

i=10

Redim AR(i)

MessageBox UBound(AR)

'例子2 -- 在按键精灵内错误的写法:

Function 子函数()

Dim AR(),i //删除此行代码可解决

i=9

Redim AR(i)

MessageBox UBound(AR)

End Function

'例子3 -- 在VBS块内执行标准VBS语句

VBSBegin

dim i

i=7

call abc(i)

sub abc(i)

dim a()

redim a(i)

msgbox UBound(a)

end sub

VBSEnd

打开按键精灵,“新建”一个脚本

2

首先编辑脚本属性。

描述改为:数组读取;

启动热键:Ctrl+5。

3

编辑源文件,代码如下:

//打开Excel文档工作表

Call Plugin.Office.OpenXls("C:\1234.xls")

//向Excel工作表(1)第一行写入数据

Call Plugin.Office.WriteXls(1, 1, 1, "1月统计")

Call Plugin.Office.WriteXls(1, 1, 2, "958")

Call Plugin.Office.WriteXls(1, 1, 3, "金额1")

Call Plugin.Office.WriteXls(1, 1, 4, "9878.34")

//向Excel工作表(1)第二行写入数据

Call Plugin.Office.WriteXls(1, 2, 1, "1月统计")

Call Plugin.Office.WriteXls(1, 2, 2, "852")

Call Plugin.Office.WriteXls(1, 2, 3, "金额2")

Call Plugin.Office.WriteXls(1, 2, 4, "8934.04")

//读取Excel工作表(1)第一行第1、4格内容

Text1 = Plugin.Office.ReadXls(1, 1, 1)

Text2 = Plugin.Office.ReadXls(1, 1, 4)

//关闭Excel文档工作表

Call Plugin.Office.CloseXls()

//d出窗口写入数据

MessageBox text1&"打印"&Text2

4

看一下普通,理解一下各行代码的含义。

5

调试没有问题。

保存退出就可以了。

6

在脚本列表区找到我们刚刚编辑的脚本。

7

试着运行一下。

这里我们只是读取了其中的两组数据,其它的数据可以依据需要读取。

8

打开C盘上按键精灵建立的EXCEL文档,看一下文档写入的几组数据位置。


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

原文地址: http://outofmemory.cn/yw/12125514.html

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

发表评论

登录后才能评论

评论列表(0条)

保存