![]() |
wl20020807 发表于 2024-9-21 18:59 程序这样改了可以正常计数了 |
wl20020807 发表于 2024-9-21 19:09 各位大师帮忙看下这个蜂鸣器程序怎么改下让计数器只是每计满100的整数时蜂鸣器响一次 ,加减计数都一样。 |
while(1) { display(); keyscan(); delay_ms(10); if(Num>=100) { FMQ=0; } if(Num>=101) { FMQ=1; } } } |
void keyscan() { if(K1==0) { if(flag_KEY==1)//?????1? { flag_KEY=0; {if(Num==9999)Num=0;} { Num++; } } } else if(K2==0) { if(flag_KEY==1)//?????1? { flag_KEY=0; {if(Num==0)Num=9999;} { Num--; } } } else if(K3==0) { if(flag_KEY==1)//?????1? { flag_KEY=0; { Num=0; } } } else//???? { flag_KEY=1; } } |
xiaobendan001 发表于 2024-9-19 06:54 加了也一样,还是一样没有反应 |
wl20020807 发表于 2024-9-18 22:45 给他加个上拉电阻怎样? |
老董 发表于 2024-9-17 17:19 大师你的stc15芯片的晶振设置的多少?我设置的11.0592MHZ |
老董 发表于 2024-9-17 17:19 大师有电路图吗?我也是用的stc15w408as搭载的板子但是它就是无法运行 |
xiaobendan001 发表于 2024-9-18 07:44 对 ,加了k3这段程序,k2 (减健)就是低压平了, |
wl20020807 发表于 2024-9-17 18:48 你的意思是加了这段代码,K2就等于一直按着了? |
lkc8210 发表于 2024-9-17 15:03 只要加了K3这段程序,K1(加键)为高电平,K2(减键)为低电平,KI K2按键都没有反应,把K3这段程序删了,K1 K2 都为高电平了,K1 K2按键都正常可以计数,不知程序是那里出错了 |
不信邪的我用搭载stc15的板子测试也可以运行啊 你再查查硬件吧 |
wl20020807 发表于 2024-9-17 13:24 你可以尝试在main开始的地方加上一个num = 50;然后运行看看实际上显示多少,如果是0,说明你的key3的部分代码是有作用的。 |
wl20020807 发表于 2024-9-17 13:34 量一下K3的电压 |
除了改代码,实际电路也要改到相应的端口上。 |
君工创 发表于 2024-9-17 12:35 大师这个是原代码我直接贴出来的,实际我改了IO口的,把K1改在P3^4 K3还是在原来的P3^2 FMQ改在P3^7,因为蜂鸣器没有用就随便改了个IO口 |
xiaobendan001 发表于 2024-9-17 10:46 原程序K1和K3定义在一个IO口了,我把K1改在另外的IO口把K3这段程序删了加减按键计数都是正常的,把K3的这段程序加入就不正常了,加减按键都没有反应K3还是定义在原来的p3^2 |
不好意思,没详细看。按键加和复位键不能共用。重新定义这两个键的其中一个到其它端口就不用改代码。 |
把第三个按键这里改一下, if(Num>9999); { Num=0; } |
君工创 发表于 2024-9-17 08:41 这个K3是复位按键则断程序不知要怎么该了,大师麻烦指点一下! |
老董 发表于 2024-9-16 23:16 检查了没有漏电,现在把单片机的引脚悬空都是一样的结果 |
君工创 发表于 2024-9-17 08:41 人家前边有条件的。 不过实际上这个复位按键就是清零按键。这个if是多此一举的,直接num = 0;就好了嘛。 不过就算有if(num>0)这个脱裤子放屁的举动,也不影响结果,软件仿真是对的。 如12楼所说倒是有可能,但是有个问题,楼主刚开始是把K1和K3定义在一个IO上面了,这样这个说法似乎就不成立了。 |
if(Num>0);{Num=0;} 这里就是要Num永远等于0。 |
else if(K3==0) { if(flag_KEY==1)//按键只响应1次 { flag_KEY=0; if(Num>0) { Num=0; } } } 你的程序没问题 检查一下硬件 是不是这个按键漏电了 程序一直认为你是按住了K3 这样flag_KEY==1的机会就没有了 你可以用万用表测一下K3的电压和K1 K2是不是一样 就可以判断出来 |
xiaobendan001 发表于 2024-9-15 14:35 大师程序需要改那里?麻烦指点一下! |
xiaobendan001 发表于 2024-9-15 14:35 不删除的话按k1和k2计数按键没反应,要把k3按键这段程序删除按k1和k2计数按键才能正常计数,k3按键原程序是复位按键 |
老董 发表于 2024-9-15 20:09 他包含的是STC15,默认好像就标准IO的吧 |
P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; P3口没设置 设置一下试试 |
#在 P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; 这里快速回复# |
软件模拟了一下,不用删除,也好用啊,话说你这都没有消斗,是不是和按键抖动有关? |
wpppmlah 发表于 2024-9-14 08:18 改了还是一样,要把k3的那段程序删了才能计数,不删的话按键没反应 |
wpppmlah 发表于 2024-9-14 08:18 就算一样,也只是只执行KEY1的部分吧。 |
key1 和 key3 都定义成了P32,是不是这个原因呢? |
要将这段程序删了才能正常计数,麻烦大侠们帮忙改下 else if(K3==0) { if(flag_KEY==1)//按键只响应1次 { flag_KEY=0; if(Num>0) { Num=0; } } } |