标题: 单片机跑马灯+数码管控制程序遇到困难,希望有人帮帮忙 [打印本页]

作者: 墙角的罐头    时间: 2019-12-28 12:03
标题: 单片机跑马灯+数码管控制程序遇到困难,希望有人帮帮忙
​按键+ 定时器+ 跑马灯+ 1个数码管
1 、 这里的跑马灯是指首先第一个发光二极管亮,其他的灭。过了一定的时间,第二个发光二极管亮,其他的灭。依次类推。一共使用8个发光二极管。
2 、 初始时,8个发光二极管和1个数码管处于熄灭状态。
3  、当第一次按下按键时,8个发光二极管以1秒为间隔进行跑马灯式的亮灭,数码管显示1,第二次按下按键时,发光二极管以2秒为间隔进行跑马灯式的亮灭,数码管显示2,依次类推,第九次按下按键时,发光二极管以9秒为间隔进行跑马灯式的亮灭,数码管显示9。
4  、当第十次按下按键时,回到1秒的间隔情况,数码管显示1,依次类推。




打开之后数码管正常显示,但是流水灯这个我是真的搞不懂
我C语言学的不行,脑子都烧了,求帮帮忙


作者: 166864646883    时间: 2019-12-28 12:50
你的按键每次按下,都把t先清零,你觉得你的t能加到9不
作者: xianfajushi    时间: 2019-12-28 12:53
可参https://blog.csdn.net/xianfajushi/article/details/89946765
作者: tyler880    时间: 2019-12-28 13:24
单独调试,一步一步来
作者: 特斯拉    时间: 2019-12-28 14:07
数组下标是从0开始的,你led[]却是从1开始的,肯定有一个灯不会亮了。你把led[1]到led[8]改成led[0]到led[7]就好了。
作者: 墙角的罐头    时间: 2019-12-28 15:16
特斯拉 发表于 2019-12-28 14:07
数组下标是从0开始的,你led[]却是从1开始的,肯定有一个灯不会亮了。你把led[1]到led[8]改成led[0]到led[7 ...

感谢,这个显示的问题已经改好了,除此之外我想要实现自动的流水灯我觉得还是需要中断来解决,还是不太明白中断怎么写,希望能不吝指导
作者: 墙角的罐头    时间: 2019-12-28 15:19
166864646883 发表于 2019-12-28 12:50
你的按键每次按下,都把t先清零,你觉得你的t能加到9不

我已经改掉了,感谢,除了这个我还想知道怎样才能让流水灯自己动,现在流水灯是跟着我的按键在动,但是我想要的是按下按键之后灯的延时逐渐增加的效果
作者: fengyou    时间: 2019-12-29 09:39
建议还是先上网看看别人怎么写的,还有是不是电路设计的问题
作者: chenjinbao    时间: 2019-12-29 11:14
你的led数组只是点亮某一个灯而已吧。应该把case1~8都改为P2.0~2.7分别等于0,低电平点亮
作者: 166864646883    时间: 2019-12-30 10:15
墙角的罐头 发表于 2019-12-28 15:19
我已经改掉了,感谢,除了这个我还想知道怎样才能让流水灯自己动,现在流水灯是跟着我的按键在动,但是我 ...

因为你的每一种模式的流水灯效果是一样的,只是延时不一样,所以你的按键部分里,只需要每一次按下,把延时时间改一下就行了,主循环里就一直执行流水灯的操作。延时建议用定时器做,比较准
作者: mov110    时间: 2019-12-30 10:58
自动动,把你的代码switch(t);换成for循环结构
作者: mov110    时间: 2019-12-30 11:00
把switch语句,换成for循环
作者: jizhongbiao    时间: 2020-1-8 13:52
上程序看一下
作者: xqleft    时间: 2020-1-8 16:13
现在这个问题还需要解决吗?  或者你先把你的程序贴上来。看看有什么地方需要改进的
作者: hantu    时间: 2020-1-9 01:01
中断控制流水灯这个我会




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1