打印
[单片机类]

【灯光控制任务书】大功告成

[复制链接]
1495|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
蔡名进|  楼主 | 2018-3-10 08:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 caijie001 于 2018-3-16 06:52 编辑

在蓝桥杯单片机平台CT107D上已经测试通过,功能都符合要求。现在发布出来 灯光任务.rar (70.78 KB)
功能是实现了,不过里面的逻辑和代码并不是最好的,希望大家多多指教! 灯光.rar (71.06 KB) 这是更新之后的代码

这是视频的链接 v.youku.com/v_show/id_XMzQ1NzU5NjE1Ng==.html?spm=a2h3j.8428770.3416059.1

灯光.rar

71.09 KB

相关帖子

沙发
caijie001| | 2018-3-10 18:58 | 只看该作者
建议把过程写的详细点。。。。。。上个视频效果更佳。。。

使用特权

评论回复
板凳
蔡名进|  楼主 | 2018-3-12 11:04 | 只看该作者
caijie001 发表于 2018-3-10 18:58
建议把过程写的详细点。。。。。。上个视频效果更佳。。。

好的,谢谢杰杰

使用特权

评论回复
地板
蔡名进|  楼主 | 2018-3-12 11:13 | 只看该作者
本帖最后由 蔡名进 于 2018-3-12 12:44 编辑

今天打开看了下,发现了几个可以改进的地方。第一个:并没有注意到题目要求的系统一上电显示时间,因此修改了这一个问题。
第二:修改了在LED检测时,没有显示时间的问题(修改方法,改变了延时函数的延时方法)
第三:在按键按下时,因为要进行松键检测,显示时间停止的问题。(在松键检测的同时进行系统时间显示) 灯光.rar (71.47 KB) 这是更改之后的工程。在keil V4.729环境下编写编译。
视频稍后奉上,各位关于本工程有任何问题,都可以提出来,我们一起学习进步。


使用特权

评论回复
5
蔡名进|  楼主 | 2018-3-12 13:24 | 只看该作者
本帖最后由 caijie001 于 2018-3-16 06:51 编辑

这是视频的链接 v.youku.com/v_show/id_XMzQ1NzU5NjE1Ng==.html?spm=a2h3j.8428770.3416059.1

使用特权

评论回复
评论
ningling_21 2018-3-29 11:23 回复TA
视频为何不见了? 
6
ohy3686| | 2018-3-12 16:46 | 只看该作者
嗯...不错,看了视频,perfect!!!
数码管检测很有创意...如果有最佳创意奖,估计得给你了。

使用特权

评论回复
7
蔡名进|  楼主 | 2018-3-12 20:20 | 只看该作者
ohy3686 发表于 2018-3-12 16:46
嗯...不错,看了视频,perfect!!!
数码管检测很有创意...如果有最佳创意奖,估计得给你了。 ...

谢谢

使用特权

评论回复
8
一路向北lm| | 2018-3-13 10:24 | 只看该作者
显示很有创意,点个赞。

使用特权

评论回复
9
小明工作室| | 2018-3-27 07:39 | 只看该作者
同学,如果这样玩数码管的话,学到超声波你会哭的

使用特权

评论回复
10
一路向北lm| | 2018-3-27 08:03 | 只看该作者
来点综合的比较好

使用特权

评论回复
11
蔡名进|  楼主 | 2018-3-30 11:03 | 只看该作者
小明工作室 发表于 2018-3-27 07:39
同学,如果这样玩数码管的话,学到超声波你会哭的

超声波用定时器计时不就好了?其实数码管这么搞,是理解错题目了,题目说“从左到右依次点亮数码管的所有段码,再依次从左到右熄灭”,我的理解中,数码管一位,八个段码。所以才这样搞,不过采取了一定的算法,实现起来并不是很难
void SMG_Init()
{

    unsigned char i=0,j=0,temp=0xff;
                while(1)
                {         
                        Display_Duan(j,temp);//段码亮灭控制
                        Display_other(j,1);//其余几位数码管显示控制
                        if(SMG_bit==1) //SMG_bit:定时器标志位
                        {
                                SMG_bit=0;
                                temp=temp<<1;
                                i++;
                                if(i==8)
                                {
                                        temp=0xff;
                                        i=0;
                                        j++;
                                        if(j==8)break;
                                }
                        }
                }
        j=0;i=8;temp=0x00;
        while(1)
        {       
                        Display_Duan(j,temp);
                        Display_other(j+1,0);
                        if(SMG_bit==1)
                        {
                                temp=temp*2+1;
                                SMG_bit=0;
                                i--;
                                if(i==0)
                                {
                                        temp=0x00;
                                        i=7;
                                        j++;
                                        if(j==8)break;
                                }
                        }
        }
                Display_Duan(j,temp);
                SMG_off();
}

使用特权

评论回复
12
ohy3686| | 2018-4-3 00:26 | 只看该作者

1-按下S6和S7会控制L5和L6,这个题目没有要求。
2-本地控制和远程控制不兼容,例如:
   L8点亮的情况下,串口发送a1命令,点亮L1的同时,把L8也关掉了
   L1点亮的情况下,按下S5,点亮的是L8,而不是L7,同时L1也被关掉了
   ....控制逻辑有点混乱,
   这个在实际应用中是不允许的,如果控制的不是LED而是大型设备,可能就会出事故了。

使用特权

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

本版积分规则

2

主题

15

帖子

0

粉丝