完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
12个回答
|
|
顶顶顶顶顶顶顶顶顶!
|
|
|
|
按IO读,自己组成一个字节
|
|
|
|
貌似只能用这个方法,设计的时候最好考虑好,方便代码编写。
|
|
|
|
现在出现一个情况,就是我按下SWA第一个键,由LEDA控制的一排灯都亮了…
|
|
|
|
你试试能不能写程序单独让每一个灯做个流水。
|
|
|
|
[C] 纯文本查看 复制代码
***it SW_A = P4^0;***it SW_B = P4^1;***it LED_A = P4^2;***it LED_B = P4^3;***it LED_C = P4^4;//char stop=0;//按键扫描标志位,1:停止扫描 0:开始扫描uint8 idata STC_KeyBuf[16]; //按键存放//按键扫描void STC_ReadKey(){// static unsigned char Su8KeyLock[16]; //按键的自锁 static unsigned int Su16KeyCnt[16]; //按键的计时器P2 = 0x01; if(0==SW_A)//无按键按下{//Su8KeyLock[0] = 0; //按键解锁Su16KeyCnt[0] = 0; // 按键去抖动延时计数器清零。 STC_KeyBuf[0] = 0;//无按键}//else if(0==Su8KeyLock[0])else{Su16KeyCnt[0]++;if(Su16KeyCnt[0]>=KEY_SHORT_TIME)//消抖{//Su8KeyLock[0] = 1;STC_KeyBuf[0] ++;//读按键按下状态}}if(0==SW_B)//无按键按下{//Su8KeyLock[1] = 0; //按键解锁Su16KeyCnt[1] = 0; //按键去抖动延时计数器清零。 STC_KeyBuf[1] = 0;//无按键}//else if(0==Su8KeyLock[1])else{Su16KeyCnt[1]++;if(Su16KeyCnt[1]>=KEY_SHORT_TIME)//消抖{//Su8KeyLock[1] = 1;STC_KeyBuf[1] ++;//读按键按下状态}}delay(20);//20usP2 =0x02;if(0==SW_A)//无按键按下{//Su8KeyLock[2] = 0; //按键解锁Su16KeyCnt[2] = 0; // STC_KeyBuf[2] = 0;//无按键}//else if(0==Su8KeyLock[2])else{Su16KeyCnt[2]++;if(Su16KeyCnt[2]>=KEY_SHORT_TIME)//消抖{//Su8KeyLock[2] = 1;STC_KeyBuf[2] ++;//读按键按下状态}}if(0==SW_B)//无按键按下{//Su8KeyLock[3] = 0; //按键解锁Su16KeyCnt[3] = 0; //按键去抖动延时计数器清零。 STC_KeyBuf[3] = 0;//无按键}//else if(0==Su8KeyLock[3])else{Su16KeyCnt[3]++;if(Su16KeyCnt[3]>=KEY_SHORT_TIME)//消抖{//Su8KeyLock[3] = 1;STC_KeyBuf[3] ++;//读按键按下状态}}}//按键执行程序void STC_KeyProcess1(){//uchar flag=0; //按键按下标志位 if(STC_KeyBuf[0]!=0)//按键按下 {// stop=1;// flag=1; P2 = 0x01; Display(8,3,1);//数码管显示程序 LED_A = 0; //拉低P4^2,亮灯// return; }} 我只扫描了两个按键,按键处理只写了第一个按键,可我按下第一个按键,对应的灯只亮了一点点,而LEDA那一排的第二个灯亮了,如果我扫描了八个灯,那么亮的就是最后一个,因为扫描很快就过去了,这个怎么破?我想过按下的时候暂停扫描,可不知道在哪里又进入扫描,如果是松开就扫描,那结果又和现在一样了 |
|
|
|
是扫描方式有问题吗?我一个按键就不会这样
|
|
|
|
顶顶顶上去!!!!
|
|
|
|
你这个电路设计可能有问题了,电路又做按键扫描又做显示,而按键扫描是需要一直循环的,那么在循环的时候对应的灯就要亮。显示电路和按键的电路应该分开,或者按键的时候不显示,显示的时候不是按键。
|
|
|
|
是可以这样复用的,只是程序会比较复杂…我功力不够
|
|
|
|
单纯的按键行和列不在一组IO编程也很简单,但同时与LED复用端口就比较麻烦。需要分时控制,并要适时改变端口工作模式。STC15系列用户手册中有相关介绍。
|
|
|
|
感觉电路设计有问题,键盘检测部分是当KL线为高,按键按下后SW线变高为按键按下的判断,但是KL线为高,LED会亮,所以感觉SW线应该上拉电阻,按键的二极管应该反一个方向,这样当KL线为低,按键按下后SW线变低为按键按下判断,因为KL线为低,这样LED不会亮
|
|
|
|
只有小组成员才能发言,加入小组>>
2975 浏览 9 评论
2692 浏览 16 评论
3214 浏览 1 评论
8437 浏览 16 评论
3775 浏览 18 评论
6961浏览 6评论
求助,请问MS51FB9AE带隙电压能作为侦测的基准电压吗?
7457浏览 3评论
6957浏览 3评论
支持UART-to-BLE透传的新唐NuTool – BLE ATCMD开发工具推荐
5805浏览 3评论
9375浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 01:45 , Processed in 0.769052 second(s), Total 86, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号