//“查表法”和“反转法”。查表法程序最为简短,但是稍多占用 //一点存储空间;反转法的程序执行速度最快,只是要求接口是 //双向的。 #include#include #define uint unsigned int #define uchar unsigned char uchar code table[]={ ~0x3F,~0x06,~0x5B,~0x4F,~0x66, ~0x6D,~0x7D,~0x07,~0x7F,~0x6F, ~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};//共阳极LED代码与共阴极正好相反,所以阴极码取反 uchar num; uchar keyscan(); /*void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }*/ void main() { P0=table[0]; while(1) { num=keyscan(); if(num!=16) P0=table[num]; } } uchar keyscan() { uchar code table1[3][4]= {//0xee,0xde,0xbe,0x7e, 0xed,0xdd,0xbd,0x7d, 0xeb,0xdb,0xbb,0x7b, 0xe7,0xd7,0xb7,0x77}; uchar temp1=0xfd,temp2,i,j; //如果是3*4则只需将初值temp1改变p1^0不用置1并改变表值 for(i=0;i<4;i++)//扫描低四位//如果3*4键盘i<3也可 { P1=temp1; //输出一行0 temp2=P1; //马上读入P1口状态 if((temp2&0xf0)!=0xf0)//如果有键按下 { for(j=0;j<4;j++)//就扫描高四位 j=0 j=1 j=2 j=3 { if(temp2==table1[i][j])//查表 i=0 0 1 2 3 return i*4+j; //查到了就返回键的值 i=1 4 5 6 7 } // i=2 8 9 10 11 } // i=3 12 13 14 15 else temp1=_crol_(temp1,1); // // i*4+j } return 16; //没有查到,返回键松开的代码 }
上一篇:小玩LED点阵之-滚动显示
下一篇:STC单片机免掉电下载
推荐阅读最新更新时间:2024-03-16 14:25
设计资源 培训 开发板 精华推荐
- 微灵医疗李骁健:脑机接口技术正在开启意识与AI融合的新纪元
- USB Type-C® 和 USB Power Delivery:专为扩展功率范围和电池供电型系统而设计
- 景昱医疗耿东:脑机接口DBS治疗技术已实现国产替代
- 首都医科大学王长明:针对癫痫的数字疗法已进入使用阶段
- 非常见问题解答第223期:如何在没有软启动方程的情况下测量和确定软启动时序?
- 兆易创新GD25/55全系列车规级SPI NOR Flash荣获ISO 26262 ASIL D功能安全认证证书
- 新型IsoVu™ 隔离电流探头:为电流测量带来全新维度
- 英飞凌推出简化电机控制开发的ModusToolbox™电机套件
- 意法半导体IO-Link执行器电路板为工业监控和设备厂商带来一站式参考设计
- Melexis采用无磁芯技术缩小电流感测装置尺寸
- 三安光电拟定增不超79亿元,加码Mini/Micro LED显示产业化项目
- 爱立信中国总裁赵钧陶:5G经济尚未来到
- 美光Q4财测远低于预期 CEO称PC客户因为元件短缺调整采购
- 36氪首发 | 无人驾驶工业车辆企业「未来机器人」完成数亿元C轮融资,加速核心物流场景规模化复制
- 10月起,逆变器原材料芯片将集体涨价:10%~20%不等
- 使用莱迪思Automate解决方案集合实现具有预测性维护功能的电机控制
- 论道国际电子展,航顺HK32MCU带来怎样极致体验?
- 行车安全不可忽视 ADAS将大众化
- 英特尔CPU又变贵了?14nm产线再砸10亿美元能否缓解现状?
- 电竞游戏市场前景看好,显示器即为最好例子