蓝桥杯单片机组--------一个小时省赛二等奖

本文分享了作者在一小时内获得蓝桥杯单片机组省赛二等奖的经验,强调了比赛的基础性和适合新手参与。重点介绍了比赛题型,如LED、数码管、蜂鸣器等,并提供了SYS_init.c、onewire.c等模板代码,适合底子薄弱的参赛者。建议参赛者多做练习以提高进入国赛的机会。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

蓝桥杯单片机组--------一个小时省赛二等奖

蓝桥杯必备资料汇总
各位来看应该都是报了蓝桥杯的,想要获奖的,博主有幸参加过一次,总体来说蓝桥杯单片机比赛对于在大一、大二校生来讲还是一个不错的比赛的,比较基础,对于新手来说比较合适。
当时我参加比赛其实总共也没准备多久,由于疫情的一些原因导致比赛时间比较乱,省赛大概就两个星期左右吧!国赛稍微长点……
废话不多说下面给大伙分享一些我参加比赛的干货,希望对大家有用

题型分析

在这里插入图片描述这张图片相信大家都看过,比较经典,要考什么一目了然,省赛的话LED、数码管、蜂鸣器、独立按键绝对是必考,定时器当然不用说,剩下的主要就是18B20测温、A/D和D/A、1302时钟、24C02存储,每年基本都在这里面调两个一块考,当然第十届是个例外,考的是测频率的,稍微难理解一点。
接下来给大家展示一下我自己准备的模板。学会的画可以省很大一部分时间的哦!

SYS_init.c

这部分可以说那套题都可以用的上,首先系统初始化,关LED、蜂鸣器、继电器……,然后是显示函数,直接在子函数写段选或者位选都可以,最后呢就是每题必有的对单个LED的开关控制,有了LED_on();和LED_shout();两个子函数直接调用就可以了,舒服吧!

#include "main.h"
#include "onewire.h"  //单总线函数库

code unsigned char tab[] = {
   0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xC6,0x8c};

//=====================系统初始化
void all_init()
{
   
	P2=((P2&0x1f)|0x80);P0=0xFF;P2=P2&0x1f;//关闭LED
	P2=((P2&0x1f)|0xA0);P0=0x00;P2=P2&0x1f;//关闭继电器,蜂鸣器
	P2=((P2&0x1f)|0xC0);P0=0xff;P2=P2&0x1f;//关闭数码管位选
	P2=((P2&0x1f)|0xE0);P0=0xff;P2=P2&0x1f;//关闭数码管段选
}

//=====================500ms延时函数,蜂鸣器间隔响正好
void Delay500ms()		//@11.0592MHz
{
   
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 22;
	j = 3;
	k = 227;
	do
	{
   
		do
		{
   
			while (--k);
		} while (--j);
	} while (--i);
}

//=====================100us延时函数
void delayms(int ms)
{
   
	int i,j;
	for(i=ms;i>0;i--)
		for(j=845;j>0;j--);
}

void Delay100us()		//@11.0592MHz
{
   
	unsigned char i, j;

	i = 3;
	j = 82;
	do
	{
   
		while (--j);
	} while (--i);
}

//=====================数码管显示函数
//=====================段选函数
void Display_1(unsigned char weixuan,unsigned char duanxuan)
{
   
	switch (weixuan)
       {
   
       	case 1:P2=((P2&0x1f)|0xC0);P0=0X01;P2=((P2&0x1f)|0xE0);P0=tab[duanxuan];
       		break;
       	case 2:P2=((P2&0x1f)|0xC0);P0=0X02;P2=((P2&0x1f)|
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值