|
xiaobendan001 发表于 2025-10-21 07:26 正在学习,如有问题再次请教,谢谢! |
dcc60 发表于 2025-10-20 20:37 还是不懂,你得到的键不是0-7吗?哪个按键按下显示0?松开又显示1?所有的,还是第0个?或者第一个? |
man1234567 发表于 2025-10-16 16:01 就是本论坛找的,怎么也搞不明白。 |
|
用你的方法成功显示1234567,对应的按钮会固定显示一个数字。我想要的是个按钮,如下面的代码,按下显示0,松开显示1,却怎么也不成功,能否再指点指点。
|
|
1、看芯片手册自己完成代码,老的手册可能有现成的代码; 2、网上或厂家找例程,这样少走弯路,并且过关率超高; 3、本论坛仔细找找,大概率有你想要的找到可偷着乐。 |
|
谢谢!我试试。。。。。 |
fzhlpp 发表于 2025-10-5 10:55 感谢给出思路。 虽然显示的是897,实际上那个i是个定值8,因为+1、-1了。且不论按哪个键i都是8。 实验中已经把“位”用0-7代替了,我想要的结果是按不同的键,i是不同的值。 |
|
dcc60 发表于 2025-10-4 14:45 组合试试这样:
然后取出键值0-7。 |
dcc60 发表于 2025-10-4 14:45 快了,你应该马上找到原因并解决了,能显示897肯定能显示任何你想要的数字,我刚开始学1638的时候也是复制别人的代码然后再慢慢分析吸收利用实现自己的功能,只是开始对代码的分析还不到位,比如你的数码管位数,在代码里就是那个024,也就是0代表实际你数码管第一个的意思,对不对?2代表实际你的第三个数码管的意思对吧?那么你应该是实际有8个数码管是不是?你可以先直接像这样012345678替换*号试试Write_DATA( * ,tab[i+1]);
|
fzhlpp 发表于 2025-10-4 10:22 i=Read_key(); Write_DATA(0,tab[ i]); Write_DATA(2,tab[i+1]); Write_DATA(4,tab[i-1]); 用上面的代码试验,按下显示8、9、7 |
xiaobendan001 发表于 2025-10-4 07:50 就是不知道读出来的是啥,也放在数码管里试了。 没按之前i应该是0,那几个键按了之后好象都是8。
分别显示8、9、7 |
fzhlpp 发表于 2025-10-4 10:22 试了,所有按键不起作用。 |
fzhlpp 发表于 2025-10-4 10:22 意思是8个按键分别给8个数码管++? |
|
while (1) { //以下为读按键 i=Read_key(); //读按键值 if(i<8) { num[i]++; while(Read_key()==i); //等待按键释放 if(num[i]>15) num[i]=0; if(i==1)Write_DATA(i*2,tab[num[1]]); if(i==2)Write_DATA(i*2,tab[num[2]]); if(i==3)Write_DATA(i*2,tab[num[3]]); if(i==4)Write_DATA(i*2,tab[num[4]]); if(i==5)Write_DATA(i*2,tab[num[5]]); if(i==6)Write_DATA(i*2,tab[num[6]]); if(i==7)Write_DATA(i*2,tab[num[7]]); if(i==8)Write_DATA(i*2,tab[num[8]]); // Write_allLED(1<<i); } } 直接复制替换你的大循环函数试试 |
xiaobendan001 发表于 2025-10-4 07:50 ""是斜体字的意思? |
dcc60 发表于 2025-10-3 20:50 接K1,c[i ]里面大概是04或者40,所以第二个循环能得到啥结果? 为啥非要把键值弄成一个数字? 读出来啥就用啥不行吗?不知道读出来的啥?直接先放数码管上面显示一下不就行了? 然后记录下来,再放代码里面嘛。 如果接K3,你这代码应该可以用吧 |
xiaobendan001 发表于 2025-10-3 17:33 发贴的时候有文字的,不知怎么没有了,补一下: 电路如图,接了8个按键,参考坛子里的代码,按SW1、SW2、SW3、SW5、SW7时,数码管可以累加计数。但不知如何得到键值,试验了很多种方法都不行。 要求是按SW1、SW2时,能得到1、2或0x01、0x02就行。 |
| 看不懂啊,目的是啥 |