新收获——蓝桥杯单片机第十四届国赛程序设计题

大家要是初学,可以去看西风那里的系统课程,非常全面,有利于形成你自己的代码风格。

笔者发文章只是分享性的,有需要者才拿去用其中的一个小片段

代码在这:

一、这个是首写自主完成的,bug应该也是没有的,然后注释比较多,是优化前的版本

链接:https://pan.baidu.com/s/1IFWSZ8gDggN4YAuIGGIq2Q?pwd=1234 
提取码:1234

二、第一次默写,里面bug笔者是没发现有的,功能都实现了应该,因为第一次默写,所以有优化和新bug的修复

链接:https://pan.baidu.com/s/1RtNhYbRDkt2QBoK-v5z5pg?pwd=1234 
提取码:1234

三、第二次默写,边写文章边写的,代码注释很少,足够简洁。

链接:https://pan.baidu.com/s/1Gtoc8wBm_072GaaUoWIzcg?pwd=1234 
提取码:1234

这次文章里面就不以完成顺序来写了,这次新收获了很多知识,主要是以这个顺序进行分享。

1.seg_char[10]中10为什么不能是9

2.为什么按键在测试时会出错而且双按会影响到别的按键

3.限制新写法

4.有负数怎么办

1变量类型改一下

2可以直接比较

        电脑还是能识别出-90比0小的。

5.双按加长按怎么办

        直接使用差值法就不需要在定时器中加加time_6s。

6.一个数据俩种单位显示怎么办

7.遇到超声波测距怎么办(重要知识点)

1定时器0配置

2引脚和函数声明

3函数主体

       在main.c最下面写。

float rd_distance(void)
{
 	//注释在之前的超声波模块文章里面讲得比较清楚了
	float distance_val=0.0;
	uc num=10;
	TX=0;
	TL0 = 0xF4;
	TH0 = 0xFF;

	TR0=1;
	while(num--)
	{
	 	while(TF0==0);
		TX=~TX;
		TF0=0;
	}
	TR0=0;
	TL0 = 0;
	TH0 = 0;

	TR0=1;
	while((RX==1)&&(TF0==0));
	TR0=0;

	if(TF0==1)
	{
	 	TF0=0;
		distance_val=255.0;	
	}
	else
	 	distance_val=(((TH0<<8|TL0)*(tran_vate/20000.0))+cail_val);
		//除20000刚好是将单位换算成cm/us 切记左边是float类型,一定要将20000写成20000.0进行浮点数运算
	return distance_val;
}

              然后有个小建议就是将读取操作放在显示旁边,这样比较灵敏。

8.如果要同时改一坨数据怎么办

        最好是封装起来,简洁方便。

9.十进制转二进制

10.遇到继电器控制怎么办

        底层模板函数在之前文章三大模板之中。

        至此,国赛第十四届的代码也完成了,由于是自主完成,所以现象可能跟标准不太一样,但是要有的功能都是实现的了。

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值