单片机中键盘扫描,主要是对CPU怎么扫描键按下没,何时扫描不懂
新手?。
。
。
那要看你是怎样的键盘了,是4X4矩阵键盘?还是8个按键直列某IO口的键盘?或者是其他的?扫描可以有软件循环等待扫描,就是一直等待用户按键;还有就是中断方式的键盘扫描,当有键按下后进入中断服务程序,然后再执行键盘扫描程序判断按键。
就矩阵键盘的稍微复杂点,其他种类的键盘很简单,下面的是一个接在P2口的4X4矩阵键盘扫描程序,延时程序省略掉了,忘你能了解键盘扫描的过程: P2= 0xf0; if ((P2&0xf0)!=0xf0) // 若有键按下{delay(10); // 延时去抖动if ((P2&0xf0)!=0xf0) // 延时后再判断一次,去除抖动影响{scancode = 0xfe;while((scancode&0x10)!=0)// 逐行扫描{P2 = scancode; // 输出行扫描码if ((P2&0xf0)!=0xf0) // 判断本行是否有键按下{tmpcode = (P2&0xf0)|0x0f;/* 返回特征字节码,为1的位即对应于行和列 */return((~scancode)+(~tmpcode));}else scancode = (scancode<<1)|0x01; // 行扫描码左移一位
我买了一个条码扫描器,怎么用?还需不需要其他软件或者设备??
条码扫描器需要连接到电脑上使用,扫码器负责扫码,电脑负责记录扫码器扫描的内容,还需要电脑安装office软件,excel表格。
购买条码扫描器后把扫码器的一端和电脑的usb链接,电脑会自动安装驱动,安装完驱动一会就能正常使用了,打开一个excel表格,然后选中表格的一定区域,拿着扫码枪开始扫码。
扫一个码会自动记录到excel表格里,这样就能正常使用了。
条码扫描器,又称为条码阅读器、条码扫描枪、条形码扫描器、条形码扫描枪及条形码阅读器。
它是用于读取条码所包含信息的阅读设备,利用光学原理,把条形码的内容解码后通过数据线或者无线的方式传输到电脑或者别的设备。
iphone4S怎么安装扫描二维码的那个软件?
下载方法:1、使用 Apple ID 在 App Store中下载即可。
2、打开手机主屏上的 App Store 应用。
3、点击底下的“搜索”栏目。
4、在顶部的搜索框中输入扫描二维码的关键字,点击键盘上的“搜索”键。
5、点击免费安装按钮,输入id和密码即可开始下载。
6、下载完毕后即可自动安装。
求用Flash软件键盘控制变量的代码
没有什么难点,当按下按键时直接赋值就行了,举个小例子,用光标键来控制某个mc上下左右移动,舞台只有一帧,帧里有个影片剪辑,名为mc,再在帧上写入这样几句代码就行了onEnterFrame=function(){if(Key.isDown(37)){mc._x-=10;}else if(Key.isDown(39)){mc._x+=10;}else if(Key.isDown(38)){mc._y-=10;}else if(Key.isDown(40)){mc._y+=10;}}其实用switch来做这样的效果会更好
请写出程序当键盘按键被按下和放开按键时的扫描码程序,能显示出来...
4X4键盘,假设接在P1口上,void Key_ScanAndAnswer(void) {unsigned char data commonVariable = 0;unsigned char data keyValue = 0;P1 = 0xf0;//置P1高4位为输入口if( P1 != 0xf0 ) {Delay(20);//msif( P1 != 0xf0 ) {commonVariable = P1;P1 = 0x0f;//交换输入和输出if( P1 != 0x0f ) {commonVariable |= P1;}}}//这里对commonVariable变量做键值分析处理keyValue = GetKeyValue(commonVariable);//这里根据需要看是否显示按下时的键值,添加显示代码Disp_KeyValue(keyValue);P1 = 0xff;//再次配置输入口while( P1 != 0xff ) {//这里可以添加按键时间长短检测代码,分析长短按键;}//到这里,按键已松开,按键扫描和处理结束} 额,这个就不知道了...不好意思...
PS2接口协议和键盘扫描码标准定义了什么?
【背景描述】 家里这台机用起来一大不习惯之处就在于键盘的结构(当然,把键盘当成机子的一部分未免过于牵强)。
和学校那边那台的主要不同之处就在于中间功能键部分的排列,那一个是3*4的(顶部一排是power、sleep和wakeup),而家里这个是3*3的,更甚的是主键区、功能键区和数字键区三个键区居然是没有间隔的。
这样一来,退格键【问题分析】 Insert键是以前文本命令式操作系统中常用的功能切换按键,用于切换Insert/Overwrite状态。
事实上现在用的人已经很少了,只是因为标准和习惯保留了下来,这样的键盘结构设计是不够科学的。
在现在这种多媒体系统普及的环境下,比起更多常用的系统功能,Insert键(还有同样极少用到的Scroll Lock、Pause Break等键)早就应该退出它的历史舞台,让位给其他的功能了。
而且,与Caps Lock、Scroll Lock、Num Lock不同,Insert/Overwrite状态完全没有状态指示,只是在一些文本编辑器(如记事本、Word等)的状态栏中有这么一个小格显示状态而已,可是又有谁去注意呢。
甚至于没有用过Overwrite状态的人还要郁闷好久,为什么打一个字后面的字会消失了,摸不着头脑。
其实为了改进键盘结构,生产商也不是没有花过心思。
近年来新式键盘层出不穷,结构也千变万化,确实都以科学、舒适为出发点。
长退格,小回车,多媒体键,等等都是改进措施。
但是正因为缺少一个标准,反而让用户无从适应,每换一个键盘都要花上一段时间来习惯。
【解决方法】 搜索一下可以找到一些方法,不外乎下面几种: 1、直接拔掉Insert键的键帽,以绝后患。
这么做也太绝了,像我这么爱护东西的人怎么忍心做这种事。
2、用超级兔子设置,超级兔子魔法设置 -> 个性化 -> 键盘 -> 屏蔽/重设键位。
失败,还出错(按退格键变成0),原因不解。
3、用软件KeyTransformation,可以屏蔽按键、设置任意按键映射、设置组合键映射、设置按键序列映射等等,功能十分强大。
但主要问题是必须在软件运行时设置才会起作用,不爽。
4、用软件KeyTweak,可以通过修改注册表的方法屏蔽和重映射键盘键位。
这个方法最好,但是我又觉得直接这么做太表层了,应该研究得更深入一点。
下面附一个KeyTweak的下载地址,安装设置过程都很简单很人性化。
如果嫌麻烦或者下载不了,可以把下面分隔线内的文本保存为.reg文件,然后执行写入注册表,重启系统即可。
---------- 我是一条分隔线,请不要复制我 ----------Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,0e,00,d2,00,0e,00,52,e0,00,00,00,00---------- 我是一条分隔线,请不要复制我 ---------- 如果是其他的键位映射,还是老老实实用KeyTweak设置吧,或者看看下面的深入研究部分,也会有相应的解决方案。
好,问题到这里基本解决了。
【深入研究】 在KeyTweak中查看映射信息,可以看到下面的对话框。
按照对话框中的信息找到注册表中对应的项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout,果然有一个键Scancode Map,键值正是对话框中的二进制信息:00,00,00,00,00,00,00,00,03,00,00,00,0e,00,d2,00,0e,00,52,e0,00,00,00,00。
搜索一下这个项和键名,找到了一些关于Windows键盘扫描码重映射的文章,这时才一下明朗了。
原来这个键在注册表里是不存在的,创建后重启,系统会自动调用这个键值进行键位扫描码重映射,否则按照默认的映射标准响应键盘事件。
下面有两篇文章详细介绍了Windows键位扫描码映射的原理和方法,有兴趣的可以参考研究一下。
另一篇是键盘上键位的扫描码表,转为16进制后可以直接用于上面的重映射方法。
有没有一种条码识别软件,可以实现条码扫描后触发打印的功能?
你的需求不是很明确,你的数据库和扫描条码有什么关系?你是扫描一个条码后,这个条码还要到你的EXCEL里面检索出对应的信息,必须这个条码对应的地址,然后调出这个条码和地址再输出到打印机打印条码和地址信息,是这个意思不?如果是这个需求,解决办法很多了,随便说两个吧:1,购买可编程键盘。
这种设备一般条码机的供应商都有对应的产品,这种设备可以对他编程,你可以把你的EXCEL中 条码与地址对应表通过编程写入键盘,然后触发扫描。
这种方式的优点是可以脱机使用,不需要有电脑,直接扫描枪串口接到键盘上,键盘再接打印机,扫描一个打印一个。
2,EXCEL宏命令。
自己通过VBA编程直接做成宏,实现EXCEL表输入条码后自动检索列后输出打印标签。
当然,上面这两种方法都是最经济实惠的,但是需要你具备相当专业的技巧。
最通用的做法还是直接写个打印软件方便些吧,找专门的人给你开发个打印软件,接收条码枪数据,触发打印动作。
...
可以通过注册表禁止键盘上的键吗?不要推荐软件。
。
在注册表位置 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\项目或者HKEY_LOCAL_MACHINE\SYSTEM\ControlSet004\Control\Keyboard Layout\ 项目中 可以新建一个二进制值项:Scancode Map 。
(在以上两个位置任意一个建立皆可) 这个项目可实现对键盘按键的映射。
这里映射的意思可理解为“替换”,可将任意一键替换成其它键。
项值的格式如下(以16进制表示,每两个0表示一字节,分五部份):“Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,01,00,02,00,00,00,00,00 第一部份:8个 00 ,这是版本信息号。
照例写就是了。
第二部份:4个字节。
表示映射键的总数。
按照二进制数的读写规则,低位在左,高位在右,02 00 00 00 这个数实际就是:00 00 00 02 。
从 02 开始,一个映射键是 02 ,两个是03 ,依次递加,十个是 0B 。
第三部份:2个字节。
表示替换后按键的”扫描码“。
如:ESC 键的扫描码是 01 ,所以就表示 01 00 。
再如 左Ctrl键扫描码是 1D 00, 而右Ctrl键是 1D E0 。
第四部份:2个字节。
表示原按键的”扫描码“。
格式同上。
第五部份:以四个 00 结束。
实例:如将 TAB 键映射为 Print screen 键。
TAB 键的扫描码是 0F ,Print screen 键的扫描码是 E037。
那么“Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,0F,00,37,E0,00,00,00,00 附录:键盘扫描码。
以十六进制表示,分两部份,0X后面两个数是扫描码,最后两个数是 ASCII 码(可忽略)。
如 0x011b ESC 扫描码是01。
扫描码 键0x011b ESC0x3b00 F10x3c00 F20x3d00 F30x3e00 F40x3f00 F50x4000 F60x4100 F70x4200 F80x4300 F90x4400 F10 主键盘区:0x2960 ~0x0231 10x0332 20x0433 30x0534 40x0635 50x0736 60x0837 70x0938 80x0a39 90x0b30 00x0c2d -0x0d3d =0x2b5c "0x0e08 退格键0x0f09 Tab0x1071 q0x1177 w0x1265 e0x1372 r0x1474 t0x1579 y0x1675 u0x1769 i0x186f o0x1970 p0x1a5b [0x1b5d ]0x1e61 a0x1f73 s0x2064 d0x2166 f0x2267 g0x2368 h0x246a j0x256b k0x266c l0x273b ;0x2827 '0x1c0d 回车0x2c7a z0x2d78 x0x2e63 c0x2f76 v0x3062 b0x316e n0x326d m0x332c ,0x342e .0x352f /0x3920 空格键 右边数字键盘:0x5200 Insert0x4700 Home0x4900 Page UP0x5300 Delete0x4f00 End0x5100 PageDown0x4800 上箭头0x4b00 左箭头0x5000 下箭头0x4d00 右箭头0x352f /0x372a *0x4a2d - (注意,这是数字键盘的)0x4737 70x4838 80x4939 90x4b34 40x4c35 50x4d36 60x4e2b +0x4f31 10x5032 20x5133 30x5230 00x532e Del 左 Crtl 扫描码是 1D ,表示 1D 00 。
右 Ctrl 键扫描码是 E01D,表示 1D E0。
左 ALT 扫描码是 38 ,表示 38 00 。
右 ALT 键扫描码是 E0 38,表示 38 E0。
左 Shift 扫描码是 2A ,表示 2A 00 。
右 Shift 键扫描码是 36 ,表示 36 00