找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: juncedz
打印 上一主题 下一主题
收起左侧

单片机程序只能顺序点亮LED,不能关闭?怎样能够完成?

  [复制链接]
41#
ID:426861 发表于 2020-8-13 18:24 | 只看该作者
先操作最简单的,主函数中只放某个引脚先低电平延时,再高电平延时,看看LED有没有亮灭变化。
回复

使用道具 举报

42#
ID:332444 发表于 2020-8-14 10:28 | 只看该作者
这才是应有的学习态度,我也乐意为有这样学习态度的人回复更耐心些。

请认真看数码管有4段每5秒的显示,下面有仿真变动的时间全过程为40秒,亮20秒熄20秒。


回复

使用道具 举报

43#
ID:813917 发表于 2020-8-14 10:49 | 只看该作者
加一段程序  检测到按键松开,执行依次灭灯的hex值最后都变成1111 1111  就都灭了,检测按键建议加个防抖程序
回复

使用道具 举报

44#
ID:595237 发表于 2020-8-14 11:36 | 只看该作者
xianfajushi 发表于 2020-8-14 10:28
这才是应有的学习态度,我也乐意为有这样学习态度的人回复更耐心些。

请认真看数码管有4段每5秒的显示, ...

谢谢!
昨晚用delay(5); 代替if(!++YS)   完全做到可以控制 的延时时间,
能够调通可以用。

这句 if(!++YS)  可以调延时 0.5s 左右 是怎样算出来?
  本来用a-10,
for(a=10;a>0;a--)
{}YS=47474
while(YS--);   }
把 0.5s延时  乘以10  = 5s,   调用。

if(!++YS&&!++Xd)    这句差不多延时2分钟怎么算?

51hei论坛有你们热心人,真的好精彩!
回复

使用道具 举报

45#
ID:595237 发表于 2020-8-14 11:54 | 只看该作者
xianfajushi 发表于 2020-8-14 10:28
这才是应有的学习态度,我也乐意为有这样学习态度的人回复更耐心些。

请认真看数码管有4段每5秒的显示, ...

这样调试了是5s,OK
回复

使用道具 举报

46#
ID:332444 发表于 2020-8-14 13:31 | 只看该作者
这种延时方式受执行语句影响,只能大概计算,再调试到差不多的程度。大约是5000000/65536后开方,也没太去深究,有兴趣的话自己去研究,用12兆频粗算,11兆频要用1.08计算更麻烦,其实FOR经典的3嵌套只是能更细微地调节值而已,也没太去深究,实用最好用定时器,演示可随意写当不得真,就像是你举例的211*255*255的值也不是5秒,12兆频/12则执行一条指令为1微秒,那么你写的延时循环执行计数5*46*152*70=2.45秒,而实际运行差不多5秒,因此,只能说是经验,而非精准的计算,65536*10实际运行约5秒一样道理,这些都算是经验之谈,不去深究了,没那心情去深究这种不精准的延时。
回复

使用道具 举报

47#
ID:517429 发表于 2020-8-26 15:42 | 只看该作者
这功能太简单了吧,用个定时中断就好了,按键和灯的处理放在中断里就好了,还用死循环?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表