风压的量应该成为电机是否运转的条件 |
编码的风格还可以,逻辑有些混乱,问题较明显,是不是没仔细检查自己代码 1 // disp[0]=smgduan[temp/1000];//千位 disp[0]=1;//千位 disp[1]=smgduan[temp%1000/100];//百位 disp[2]=smgduan[temp%1000%100/10];//个位 disp[3]=smgduan[temp%1000%100%10]; 这个下标需要这样计算吗 temp%1000%100 和 temp%100 的结果相等 2 main函数中开始的run()是多余的 3 datapros()函数中disp[0]=1;//千位 每次都把disp[0]赋值为1了,后面的if(disp[0]>=3)有可能为真吗,编译时候难道没有警告说有不可能进入的分支? 4 text、text1做什么用的你知道吗,应该是用来保存上一次切换的时候的AD值,只有在状态有变化时候才操作风扇开关,而你根本没用到 5 电机开关是一个开关量,不理解为什么要循环操作100次,只要你的电路设计没问题,不要怀疑IO操作会失效。 综上,推测你这是参考别人程序改的,但没真正看懂别人程序,所以改的乱七八糟 |
932585241 发表于 2020-8-26 15:39 这跟结构没什么关系,我只是说你写的程序有些地方不是很合理,至于输入信号为3到4V时电机转动,这就用到AD转换了,因为单片机只能识别数字量,还有给你一个忠告,尽量别用delay,多用定时器。 |
666的付同学 发表于 2020-8-26 13:26 大佬,我请教一下,我不知道用什么样的C语言结构,比如当输入信号为3-4v时,我们想让电机run,信号1-2frun时,但只转一次,除非信号范围变换,电机不转,什么样的结构可以达成这个效果 |
666的付同学 发表于 2020-8-26 13:26 新手,刚开始学习 |
本帖最后由 666的付同学 于 2020-8-26 16:01 编辑 你这程序我瞄了一下,写的很不规范啊,疯狂调用死循环延时,数码管显示处理的也很不好,白白占用了许多ROM,更关键的是if语句都有问题,这里需要的是逻辑等==,而不是=,所以你主函数里的if语句出了问题。 |
xianfajushi 发表于 2020-8-25 12:48 如果我去掉的话,也是这样,我设置if语句没什么用 |
主函数内不受限制地运行run();当然电机一直转动 |
这是我那块板子的原理图 |
227.86 KB, 下载次数: 13