【蓝桥杯单片机 国赛 第十一届】

蓝桥杯单片机第十一届

惯例思路

在这里插入图片描述
好久没碰蓝桥杯了,终于开始准备国赛了…,之后每刷一套题都来写一篇经验博客,感觉只要模块是对的,就能写出来,大家加油

写题过程

还是首先花大概10多分钟看一下题目,然后画出题目想让我们完成的功能,就如上图所示
然后一次将每个模块测试没有问题就开始写界面
界面采用的思路自顶向下的想法

  • 按键s4 对应interfance = ~interfance
  • 然后先写datainterfance
  • 然后用按键s5进行mode的切换,将数据界面的三个界面都写完整,测试一下,就进行参数界面的书写了
  • 由于all参数要在退出参数界面后才生效,所以调整参数的副本,退出界面时,将所有参数副本赋值给real_index
  • 然后完善按键s8和s9,同时完善参数界面,差不多就写完了

最后就看led想怎么亮

我一般是在其他地方判断led到底亮不亮,然后最后再来总了判断哪亮哪不亮。

void ledcmd()
{
	if(liangan == 1) //an
	{
	led(led1+led2*2+led3*4|0x01<<(led_index-1));
	}
	else
	{
	led(led1+led2*2+led3*4);
	}
}

有关

“若判断环境处于“暗”状态,且持续时间超过 3 秒,指示灯 L3 点亮;环 境处于“亮”状态,且持续时间超过 3 秒,指示灯 L3 熄灭”

我是想下面这么写的count_flag2反正就起一个技术,一旦亮暗发生变化,count= 0,重新计数的这样的想法,来判断led的亮灭

if(count_flag1)
{
	count_an++;
	if(count_an>3000) led3 = 1;
}
if(count_flag2)
{
	count_liang++;
	if(count_liang>3000) led3 = 0;
}		
if(count % 200 == 0) { light = r_light(); if(light<10) {liangan = 1;count_flag1 = 1;count_liang = 0;} else {liangan = 0;count_an = 0;count_flag2 = 1;}}

题目到这就写完了…除开测试好的的各个功能模块,差不多剩下的1h就可以搞定

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值