发新帖我要提问
12
返回列表
打印
[51单片机]

单片机设计的交通灯

[复制链接]
楼主: lzhanh
手机看帖
扫描二维码
随时随地手机跟帖
21
h_8816002| | 2016-9-28 17:05 | 只看该作者 回帖奖励 |倒序浏览
lzhanh 发表于 2016-9-28 17:01
我现在在软件仿真上解决了频闪的问题,但是程序烧写到硬件电路的时候,有些灯不亮,而且黄闪效果也没有了 ...

看看硬件电路图,查查IO口连线和程序中写的IO口是否匹配。

使用特权

评论回复
22
lzhanh|  楼主 | 2016-9-28 17:35 | 只看该作者
我是根据硬件电路图的IO口去写程序的

使用特权

评论回复
23
lihui567| | 2016-9-28 22:11 | 只看该作者
h_8816002 发表于 2016-9-28 10:49
我大致看了一下这代码。我估计有很大几率,黄灯闪是因为定时器的缘故,你自己再检查定时器中断服务函数里 ...

节拍写程序和用状态去写区别大吗

使用特权

评论回复
24
AKKan| | 2016-9-29 08:30 | 只看该作者
楼主是用开发板还是用最小系统板?仿真没问题的话,先确认一下板子IO口上有没有带别的外设

使用特权

评论回复
25
h_8816002| | 2016-9-29 09:13 | 只看该作者
lzhanh 发表于 2016-9-28 17:35
我是根据硬件电路图的IO口去写程序的

那就看看I/O口有没有挂载其他的外设,关了

使用特权

评论回复
26
h_8816002| | 2016-9-29 09:29 | 只看该作者
lihui567 发表于 2016-9-28 22:11
节拍写程序和用状态去写区别大吗

我个人对状态机的理解是这样的:
事件(我饿了)触发状态(吃饭),在吃饭这个状态下,我会一直吃饭,当事件(吃饱了)发生以后,进入状态(洗碗),也就是说状态转换的条件唯一(事件——吃饱了),在(吃饭)状态下和(洗碗)状态下我虽然会使用同样的资源,但是这个资源在两种状态下功能是不同的。
节拍从某种意义上讲也是状态机,但是他条件有些苛刻,比如事件(我饿了)触发状态(吃饭),在吃饭这个状态下,10秒后进入状态(洗碗),无论我吃不吃的饱都转换了。也就是说,如果你的处理周期超过了这个计时周期,你在这个状态下的任务是没有完成的。
如果需要每个状态随时可以互相转换,可以使用状态机,用事件去触发它进入所需的状态;用节拍的话是顺序执行的,你得等待MCU计数到当前的状态才能使用该功能。比如,你在洗碗状态下,觉得没吃饱,那么你可以随时触发外部事件(我饿了)去吃饭,但是节拍你得等洗碗结束,洗碗结束后还有其他的状态依次执行完再回头。
以上是个人理解,如有不妥,请各位指正

使用特权

评论回复
27
1623416766| | 2016-9-29 19:12 | 只看该作者
先给动手的人 点个赞  另一方面需要多多留意细节

使用特权

评论回复
28
dirtwillfly| | 2016-9-29 21:01 | 只看该作者
lydzzhx 发表于 2016-9-28 15:08
代码看着很眼熟啊 新疆大学的吧 呵呵 ??

从代码还能看出学校?

使用特权

评论回复
29
longbawang| | 2016-9-30 10:03 | 只看该作者
dirtwillfly 发表于 2016-9-29 21:01
从代码还能看出学校?

哈哈,那是//注释处乱码吧

使用特权

评论回复
30
416356084| | 2016-9-30 11:48 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则