2024年物联网嵌入式最新蓝桥杯单片机组第十一届国赛试题_十一届蓝桥杯单片机决赛题目,2024大厂物联网嵌入式开发面试经验

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

//L4
if(ad_value<40)
{
	if(led_canshu==4)
	{
		led_number &= 0xf7;
	}
	else
	{
		led_number |= 0x08;
	}
	if(led_canshu==5)
	{
		led_number &= 0xef;
	}
	else
	{
		led_number |= 0x10;
	}
	if(led_canshu==6)
	{
		led_number &= 0xdf;
	}
	else
	{
		led_number |= 0x20;
	}
	if(led_canshu==7)
	{
		led_number &= 0xbf;
	}
	else
	{
		led_number |= 0x40;
	}
	if(led_canshu==8)
	{
		led_number &= 0x7f;
	}
	else
	{
		led_number |= 0x80;
	}
}
else
{
	led_number |= 0x08;
	led_number |= 0x10;
	led_number |= 0x20;
	led_number |= 0x40;
	led_number |= 0x80;
}

}
//=中断函数=============================================================================================
unsigned int l3_count=0;
unsigned int l3_l_count=0;
void timer0()interrupt 1
{
led_IRQ();
display();
yemian();
key_scan();
//=温度
wendu_count++;
if(wendu_count>=250)
{
wendu_count=0;
wendu_bit=1;
}
//=时间
clk_count++;
if(clk_count>=250)
{
clk_count=0;
clk_bit=1;
}
//=ad采集
ad_count++;
if(ad_count>=250)
{
ad_count=0;
ad_bit=1;
}
//=led3=
if(ad_value<50)
{
l3_count++;
if(l3_count>=3000)
{
l3_l_count=0;
led_number &= 0xfb;
}
}
else
{
l3_l_count++;
if(l3_l_count>=3000)
{
l3_count=0;
led_number |= 0x04;
}
}
}
//=main函数
===============================================================

void main()
{
system_init();
timer0init();
ds1302_init();
while(1)
{
key_handle();
led_function();
//=温度
if(wendu_bit
1)
{
wendu_bit=0;
tempture=(unsigned int)read_tempture();
}
//=时间
if(clk_bit
1)
{
clk_bit=0;
read_ds1302();
}
//=ad采集
if(ad_bit
1)
{
ad_bit=0;
ad_value=pcf_ad(0x01);
if(ad_value>=80)
{
liangdu=0;
}
else
{
liangdu=1;
}
ad_v=ad_value*100/51.0;
}
}
}
//=页面函数
===========================================================================
void yemian()
{
if(ym_mode1)
{
if(shuju_mode
1)
{
dsbuff[0]=clk[2]/16;
dsbuff[1]=clk[2]%16;
dsbuff[2]=11;
dsbuff[3]=clk[1]/16;
dsbuff[4]=clk[1]%16;
dsbuff[5]=11;
dsbuff[6]=clk[0]/16;
dsbuff[7]=clk[0]%16;

	}
	else if(shuju_mode==2)
	{
		dsbuff[0]=14;
		dsbuff[1]=ad_value/100;
		dsbuff[2]=ad_value/10%10;
		dsbuff[3]=ad_value%10;
		dsbuff[4]=10;
		dsbuff[5]=tempture/100;
		dsbuff[6]=tempture/10%10;
		dsbuff[7]=tempture%10;
	}
	else if(shuju_mode==3)
	{
		dsbuff[0]=16;
		dsbuff[1]=10;
		dsbuff[2]=ad_v/100;
		dsbuff[3]=ad_v/10%10;
		dsbuff[4]=ad_v%10;
		dsbuff[5]=10;
		dsbuff[6]=10;
		dsbuff[7]=liangdu;
	}
}
else if(ym_mode==2)
{
	if(canshu_mode==1)
	{
		dsbuff[0]=18;
		dsbuff[1]=1;
		dsbuff[2]=10;
		dsbuff[3]=10;
		dsbuff[4]=10;
		dsbuff[5]=10;
		dsbuff[6]=shijian_canshu/10;
		dsbuff[7]=shijian_canshu%10;
	}
	else if(canshu_mode==2)
	{
		dsbuff[0]=18;
		dsbuff[1]=2;
		dsbuff[2]=10;
		dsbuff[3]=10;
		dsbuff[4]=10;
		dsbuff[5]=10;
		dsbuff[6]=wendu_canshu/10;
		dsbuff[7]=wendu_canshu%10;
	}
	else if(canshu_mode==3)
	{
		dsbuff[0]=18;
		dsbuff[1]=3;
		dsbuff[2]=10;
		dsbuff[3]=10;
		dsbuff[4]=10;
		dsbuff[5]=10;
		dsbuff[6]=10;
		dsbuff[7]=led_canshu%10;
	}
}

}


IIC函数



#include “iic.h”
#include “intrins.h”

#define DELAY_TIME 5

sbit scl=P2^0;
sbit sda=P2^1;
//
static void I2C_Delay(unsigned char n)
{
do
{
nop();nop();nop();nop();nop();
nop();nop();nop();nop();nop();
nop();nop();nop();nop();nop();
}
while(n–);
}

//
void I2CStart(void)
{
sda = 1;
scl = 1;
I2C_Delay(DELAY_TIME);
sda = 0;
I2C_Delay(DELAY_TIME);
scl = 0;
}

//
void I2CStop(void)
{
sda = 0;
scl = 1;
I2C_Delay(DELAY_TIME);
sda = 1;
I2C_Delay(DELAY_TIME);
}

//
void I2CSendByte(unsigned char byt)
{
unsigned char i;

for(i=0; i<8; i++){
    scl = 0;
	I2C_Delay(DELAY_TIME);
    if(byt & 0x80){
        sda = 1;
    }
    else{
        sda = 0;
    }
	I2C_Delay(DELAY_TIME);
    scl = 1;
    byt <<= 1;
	I2C_Delay(DELAY_TIME);
}

scl = 0;  

}

//
unsigned char I2CReceiveByte(void)
{
unsigned char da;
unsigned char i;
for(i=0;i<8;i++){
scl = 1;
I2C_Delay(DELAY_TIME);
da <<= 1;
if(sda)
da |= 0x01;
scl = 0;
I2C_Delay(DELAY_TIME);
}
return da;
}

//
unsigned char I2CWaitAck(void)
{
unsigned char ackbit;

scl = 1;
I2C_Delay(DELAY_TIME);
ackbit = sda; 
scl = 0;
I2C_Delay(DELAY_TIME);

return ackbit;

}

//
void I2CSendAck(unsigned char ackbit)
{
scl = 0;
sda = ackbit;
I2C_Delay(DELAY_TIME);
scl = 1;
I2C_Delay(DELAY_TIME);
scl = 0;
sda = 1;
I2C_Delay(DELAY_TIME);
}

unsigned char pcf_ad(unsigned char channel)
{
unsigned char adt;
EA=0;
I2CStart();
I2CSendByte(0x90);
I2CWaitAck();

I2CSendByte(channel);
I2CWaitAck();

I2CStart();
I2CSendByte(0x91);
I2CWaitAck();
adt=I2CReceiveByte();

I2CSendAck(1);
I2CStop();
EA=1;
return adt;

}


ds1302函数



#include “ds1302.h”
#include “intrins.h”
sbit SCK=P1^7;
sbit SDA=P2^3;
sbit RST=P1^3;

unsigned char clk[3];
//
void Write_Ds1302(unsigned char temp)
{
unsigned char i;
for (i=0;i<8;i++)
{
SCK = 0;
SDA = temp&0x01;
temp>>=1;
SCK=1;
}
}

//
void Write_Ds1302_Byte( unsigned char address,unsigned char dat )
{
RST=0; nop();
SCK=0; nop();
RST=1; nop();
Write_Ds1302(address);
Write_Ds1302(dat);
RST=0;
}

//
unsigned char Read_Ds1302_Byte ( unsigned char address )
{
unsigned char i,temp=0x00;
RST=0; nop();
SCK=0; nop();
RST=1; nop();
Write_Ds1302(address);
for (i=0;i<8;i++)
{
SCK=0;
temp>>=1;
if(SDA)
temp|=0x80;
SCK=1;
}
RST=0; nop();
SCK=0; nop();
SCK=1; nop();
SDA=0; nop();
SDA=1; nop();
return (temp);
}

void ds1302_init()
{
Write_Ds1302_Byte(0x8e,0x00);
Write_Ds1302_Byte(0x80,0x50);
Write_Ds1302_Byte(0x82,0x59);
Write_Ds1302_Byte(0x84,0x16);
Write_Ds1302_Byte(0x8e,0x80);
}
void read_ds1302()
{
clk[0]=Read_Ds1302_Byte(0x81);
clk[1]=Read_Ds1302_Byte(0x83);
clk[2]=Read_Ds1302_Byte(0x85);
}


onewire函数



#include “intrins.h”

#include “onewire.h”
sbit DQ=P1^4;
//
void Delay_OneWire(unsigned int t)
{
unsigned char i;
while(t–){
for(i=0;i<12;i++);
}
}

//
void Write_DS18B20(unsigned char dat)
{
unsigned char i;
for(i=0;i<8;i++)
{
DQ = 0;
DQ = dat&0x01;
Delay_OneWire(5);
DQ = 1;
dat >>= 1;
}
Delay_OneWire(5);
}

//
unsigned char Read_DS18B20(void)
{
unsigned char i;
unsigned char dat;

for(i=0;i<8;i++)
{
	DQ = 0;
	dat >>= 1;
	DQ = 1;
	if(DQ)
	{
		dat |= 0x80;
	}	    
	Delay_OneWire(5);
}
return dat;

}

//
bit init_ds18b20(void)
{
bit initflag = 0;

DQ = 1;
Delay_OneWire(12);
DQ = 0;
Delay_OneWire(80);
DQ = 1;
Delay_OneWire(10); 
initflag = DQ;     
Delay_OneWire(5);

return initflag;

}

float read_tempture()
{
unsigned int temp;
unsigned char low,high;
EA=0;
init_ds18b20();
Write_DS18B20(0xcc);
Write_DS18B20(0x44);

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

elay_OneWire(10);
initflag = DQ;
Delay_OneWire(5);

return initflag;

}

float read_tempture()
{
unsigned int temp;
unsigned char low,high;
EA=0;
init_ds18b20();
Write_DS18B20(0xcc);
Write_DS18B20(0x44);

[外链图片转存中…(img-L7xargLA-1715665536876)]
[外链图片转存中…(img-Owj3VnQ8-1715665536878)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 29
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值