标题:
小白求单片机编程思路,怎样实现定时?
[打印本页]
作者:
芙蓉焊料
时间:
2023-9-19 09:48
标题:
小白求单片机编程思路,怎样实现定时?
用51单片机业余制作:按键加减1-9,代表1-9小时,单只数码管显示数字,到设定数字时间后启动28BYJ-48步进电机输出一定角度,然后停止3sz再转动同样角度,等待下一次定时到,请教怎样实现呢?求程序思路,万分感谢!
作者:
jeyran
时间:
2023-9-19 17:25
要简单点的话,直接死等模式去做
作者:
jeyran
时间:
2023-9-19 17:36
要简单点的话,直接死等模式吧:
while(1)
{
while(m)
{
m --;
delay_10ms();
if(detect_keyboad())//有动作
{
n = get keyboard set();//获取设定值
m = n *100;
break;
}
}
motor ctrl//转动电机
}
作者:
294479435
时间:
2023-9-19 17:43
建议分模块,按键只负责按键处理,比如扫描或者中断,显示负责显示,固定刷新率更新显示,步进电机负责步进电机
作者:
xiaoshidai
时间:
2023-9-19 17:47
294479435 发表于 2023-9-19 17:43
建议分模块,按键只负责按键处理,比如扫描或者中断,显示负责显示,固定刷新率更新显示,步进电机负责步进 ...
初学者还是要有分模块的良好习惯
作者:
大漠落日
时间:
2023-9-19 17:55
直接上定时器,产生50ms中断,在中断中累加产生秒中断标志,当你设定定时后,开始计时,时间到,置位定时到标志,然后,输出一串脉冲,脉冲数目对应步进电机转动角度。做后再延时计时3秒,重新输出脉冲转动步进电机。
作者:
yzwzfyz
时间:
2023-9-20 09:10
多读单片机原理的书,而后再行行动。这样靠谱一些。
作者:
hero_71
时间:
2023-9-20 10:48
使用定时器T1和T2配置系统时间和定时时间,T1运行到T2的时间时,T2触发中断。此时,配置定时器0/1,计数3s的tick数,到了触发中断,中断事件中控制步进电机转动角度。
作者:
小飞飞呀呀
时间:
2023-10-7 22:45
1.使用延时函数 可以使用STM32提供的延时函数来实现延时功能,延时函数根据CPU时钟频率和延时时间计算出延时的时间,在延时期间CPU处于忙等待状态。 需要注意的是,延时函数会占用过多的CPU资源,并且在延时期间无法执行其他任务。 这种方式是初学者玩的,如果用到实际项目,除了大聪明,我找不到更好的词夸你。 2.使用定时器和中断 可以使用STM32内置的定时器和中断来实现延时功能。 将定时器配置为2小时的定时周期,并启用定时器中断。 在中断处理函数中设置标志位表示延时结束,并执行相应的操作。 需要注意的是,定时器中断的频率不能太高,否则会占用过多的系统资源,但中断频率也不能太慢,毕竟定时器是稀缺资源,一个定时器可能有很多不同的定时需求。 这个可能是最多人的选择,毕竟省心、省成本。 3.使用RTC实时时钟 可以使用STM32内置的RTC实时时钟模块来实现延时功能。 将RTC设置为2小时的计时周期,并启用RTC中断。 在中断处理函数中设置标志位表示延时结束,并执行相应的操作。 需要注意的是,RTC的精度相对于定时器较高,但配置和使用上相对复杂。 我一般不会用这种,因为配置比较麻烦,我比较懒。 4.使用外部实时时钟模块 可以使用外部的实时时钟模块,如DS1302等,来实现延时功能。 将实时时钟模块连接到STM32的GPIO口,通过SPI或I2C等总线协议与STM32进行通信,获取当前时间并计算出延时结束的时间。 需要注意的是,外部实时时钟模块的精度和配置相对于RTC更加复杂。 这种方式有点脱裤子放屁的感觉,还会增加硬件成本,不过有些场合确实需要这样做,比如你看老板不爽,老板又不懂技术的时候。
作者:
zyftank
时间:
2023-10-8 09:32
定时可以用定时器实现
作者:
圣博朗西斯
时间:
2023-10-27 13:40
学会用定时器很重要的
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1