蓝桥杯单片机第14届省赛客观题目+程序题目+程序题参考答案

2023-11-19

目录

客观题题目

程序题题目

程序题参考答案

main.h

main.c

Init.h

Init.c

SMG.h

SMG.c

DSQ.h

DSQ.c

YanShi.h

YanShi.c

JZKey.h

JZKey.c

ds1302.h

ds1302.c

iic.h

iic.c

onewire.h

onewire.c

LN555.h

LN555.c

客观题题目

程序题题目

 

 

程序题参考答案

        首先吐槽一下,花300元体验国赛的难度,是真的崩溃。

        3个小时写完,2个小时改bug!!!

  1. NE555本来应该是在国赛考的,这届省赛直接上了。
  2. I2C、DS1302、DS18B20,这3个省赛常考的内容,按照往届省赛的习惯应该是三选二进行考查,但是这届省赛中直接将这3个都给考了,这种做法常见于国赛当中。
  3. 这届赛题的逻辑也更加复杂,出现了两个采集到的数据,进行对比最大值、计算平均值、前后两次采集到的数据比较。
  4. 程序题的题目能达到5页之多。
  5. 客观题也不好做。
  6. 个人感觉,疫情开放后,为了减少国赛的参加人数。

main.h

#ifndef __MAIN_H_
#define __MAIN_H_

#include <STC15F2K60S2.H>

#define uchar unsigned char
#define uint unsigned int
	
#include "Init.h"
#include "SMG.h"
#include "DSQ.h"
#include "YanShi.h"
#include "JZKey.h"
#include "ds1302.h"
#include "iic.h"
#include "onewire.h"
#include "LN555.h"

void LED_Show();

#endif

main.c

#include "main.h"

uchar key_num=0;
uchar key_num_old=0;
uchar JieMian=0;//界面。0:时间;1:回显;2:参数,3:温湿度
uchar JieMian_old;
uchar HuiXian=0;//回显。0:温度;1:湿度;2:时间
char WenDu_CanShu=30;//温度参数,0-99
uint S9_time=0;
uchar shi,fen,miao;
uchar ADC_data;
uchar ADC_data_old;
uchar ChuFa_CiShu=0;//触发次数
uchar WenDu=0;//温度
uchar WenDu_old;
uchar WenDu_temp;
uchar WenDu_Max=0;
uint WenDu_PingJun=0;
uint Hz;
uint Hz_time=0;
uchar ChuFa_Shi,ChuFa_Fen;
uchar ShiDu=0;
uchar ShiDu_old=0;
uchar ShiDu_old_temp;
uchar ShiDu_Max=0;
uint ShiDu_PingJun=0;
uchar JieMian_flag=0;//0:正常运转;1:3秒显示温湿度
uint JieMian_flag_time=0;
uchar YouXiao_flag=1;
uchar L4_time=0;
uint ADC_time=0;

void main(){
	Init_BZ();
	DSQ_2_Init();
	SMG_Init();
	JZKey_Init();
	LN555_DSQ_0_Init();
	Ds1302_XieData(13,3,5);
	DS18B20_GetWenDu();
	while(1){
		key_num_old=key_num;
		key_num=JZKey_GetKeynum();
		if(key_num_old!=key_num&&JieMian_flag==0){
			if(key_num==4){
				JieMian++;
				JieMian=JieMian%3;
				if(JieMian==1){
					HuiXian=0;
				}
			}
			else if(key_num==5&&JieMian!=0){
				HuiXian++;
				HuiXian=HuiXian%3;
			}
			else if(key_num==8&&JieMian==2){
				WenDu_CanShu++;
				if(WenDu_CanShu>=99){
					WenDu_CanShu=99;
				}
			}
			else if(key_num==9&&JieMian==2){
				WenDu_CanShu--;
				if(WenDu_CanShu<=0){
					WenDu_CanShu=0;
				}
			}
		}
		
		shi=Ds1302_GetShi();
		fen=Ds1302_GetFen();
		miao=Ds1302_GetMiao();
		
		if(ADC_time>=200){
			ADC_time=0;
			ADC_data_old=ADC_data;
			ADC_data=IIC_ADC_GetData(1);
			if(ADC_data_old>ADC_data&&JieMian_flag==0&&ADC_data_old>90&&ADC_data<50){//触发采集	
				ShiDu_old_temp=ShiDu;
				if(Hz<200){
					ShiDu=9;
				}
				else if(Hz>=200&&Hz<=2000){
					ShiDu=(80.0/1800.0)*(Hz*1.0)-(10.0/9.0);
				}
				else if(Hz>2000){
					ShiDu=91;
				}
				if(ShiDu>9&&ShiDu<91){
					ShiDu_old=ShiDu_old_temp;
					if(ShiDu_Max<ShiDu){
						ShiDu_Max=ShiDu;
					}
					
					ChuFa_CiShu++;
					
					ShiDu_PingJun=((((ShiDu_PingJun*1.0)/10.0)*((ChuFa_CiShu-1)*1.0)+(ShiDu*1.0))/(ChuFa_CiShu*1.0))*10;
					
					WenDu_old=WenDu;
					WenDu=DS18B20_GetWenDu();
					if(WenDu_Max<WenDu){
						WenDu_Max=WenDu;
					}
					WenDu_PingJun=((((WenDu_PingJun*1.0)/10.0)*((ChuFa_CiShu-1)*1.0)+(WenDu*1.0))/(ChuFa_CiShu*1.0))*10;
					
					ChuFa_Shi=shi;
					ChuFa_Fen=fen;
					
					YouXiao_flag=1;
				}
				else{
					WenDu_temp=DS18B20_GetWenDu();
					if(WenDu_Max<WenDu_temp){
						WenDu_Max=WenDu_temp;
					}
					ShiDu=ShiDu_old_temp;
					YouXiao_flag=0;
				}
				
				JieMian_old=JieMian;
				JieMian=3;
				JieMian_flag=1;
			}
		}
	}
}

void DSQ_2_ZD() interrupt 12{
	ADC_time++;
	
	if(JieMian==1&&HuiXian==2&&key_num==9){
		S9_time++;
		if(S9_time>=2000){//清除所有已记录的数据
			S9_time=0;
			WenDu_Max=0;
			WenDu_PingJun=0;
			ShiDu_Max=0;
			ShiDu_PingJun=0;
			ChuFa_CiShu=0;
			ChuFa_Shi=0;
			ChuFa_Fen=0;
		}
	}
	
	Hz_time++;
	if(Hz_time>=1000){
		Hz_time=0;
		Hz=((unsigned int)TH0<<8)|(unsigned int)TL0;
		TH0=0;
		TL0=0;
	}
	
	if(JieMian_flag){
		JieMian_flag_time++;
		if(JieMian_flag_time>=3000){
			JieMian_flag_time=0;
			JieMian_flag=0;
			JieMian=JieMian_old;
		}
	}
	
	if(WenDu>WenDu_CanShu){
		L4_time++;
		if(L4_time>=200){
			L4_time=0;
		}
	}
	else{
		L4_time=0;
	}
	
	if(JieMian==0){
		//SMG_Show(ADC_data_old/100,ADC_data_old/10%10,ADC_data_old%10,16,16,ADC_data/100,ADC_data/10%10,ADC_data%10);
		SMG_Show(shi/10,shi%10,17,fen/10,fen%10,17,miao/10,miao%10);
	}
	else if(JieMian==1){
		if(HuiXian==0){
			if(ChuFa_CiShu==0){
				SMG_Show(12,16,16,16,16,16,16,16);
			}
			else{
				SMG_Show(12,16,WenDu_Max/10,WenDu_Max%10,17,WenDu_PingJun/100,((WenDu_PingJun/10)%10)+32,WenDu_PingJun%10);
			}
		}
		else if(HuiXian==1){
			if(ChuFa_CiShu==0){
				SMG_Show(18,16,16,16,16,16,16,16);
			}
			else{
				SMG_Show(18,16,ShiDu_Max/10,ShiDu_Max%10,17,ShiDu_PingJun/100,((ShiDu_PingJun/10)%10)+32,ShiDu_PingJun%10);
			}
		}
		else if(HuiXian==2){
			if(ChuFa_CiShu==0){
				SMG_Show(15,ChuFa_CiShu/10,ChuFa_CiShu%10,16,16,16,16,16);
			}
			else{
				SMG_Show(15,ChuFa_CiShu/10,ChuFa_CiShu%10,ChuFa_Shi/10,ChuFa_Shi%10,17,ChuFa_Fen/10,ChuFa_Fen%10);
			}
		}
	}
	else if(JieMian==2){
		if(WenDu_CanShu>=10){
			SMG_Show(24,16,16,16,16,16,WenDu_CanShu/10,WenDu_CanShu%10);
		}
		else if(WenDu_CanShu>=0){
			SMG_Show(24,16,16,16,16,16,16,WenDu_CanShu);
		}
	}
	else if(JieMian==3){
		if(YouXiao_flag==1){
			SMG_Show(14,16,16,WenDu/10,WenDu%10,17,ShiDu/10,ShiDu%10);
		}
		else{
			SMG_Show(14,16,16,WenDu_temp/10,WenDu_temp%10,17,10,10); 
		}
	}
	
	LED_Show();
}

void LED_Show(){
	uchar L1_2_3=0xff;
	uchar L4=0xff;
	uchar L5=0xff;
	uchar L6=0xff;
	if(JieMian==0){
		L1_2_3=0xfe;
	}
	else if(JieMian==1){
		L1_2_3=0xfd;
	}
	else if(JieMian==2){
		L1_2_3=0xfb;
	}
	if(L4_time>=100){
		L4=0xf7;
	}
	if(YouXiao_flag==0){
		L5=0xef;
	}
	if(ChuFa_CiShu>=2&&WenDu_old<WenDu&&ShiDu_old<ShiDu){
		L6=0xdf;
	}
	P0=L1_2_3&L4&L5&L6;
	P2=(P2&0x1f)|0x80;
	P2=(P2&0x1f)|0x00;
}

Init.h

#ifndef __INIT_H_
#define __INIT_H_

#include <STC15F2K60S2.H>

void Init_BZ();

#endif

Init.c

#include "Init.h"

void Init_BZ(){
	P2=(P2&0x1f)|0xa0;
	P0=0x00;
	P2=(P2&0x1f)|0x80;
	P0=0xff;
}

SMG.h

#ifndef __SMG_H_
#define __SMG_H_

#include <STC15F2K60S2.H>

void SMG_Init();
void SMG_Show(unsigned char n1,n2,n3,n4,n5,n6,n7,n8);

#endif

SMG.c

#include "SMG.h"

unsigned char code t_display[]={                       //????
//   0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
    0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
//black  -     H    J    K    L    N    o   P    U     t    G    Q    r   M    y
    0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e,
    0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46};    //0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -1

void SMG_Init(){
	P2=(P2&0x1f)|0xc0;
	P0=0xff;
	P2=(P2&0x1f)|0xe0;
	P0=0xff;
}

void SMG_Show(unsigned char n1,n2,n3,n4,n5,n6,n7,n8){
	static unsigned char i=0;
	i++;
	i=i%8;
	P2=(P2&0x1f)|0xc0;
	switch(i){
		case 1:{
			P0=0x01;
			P2=(P2&0x1f)|0xe0;
			P0=~t_display[n1];
			break;
		}
		case 2:{
			P0=0x02;
			P2=(P2&0x1f)|0xe0;
			P0=~t_display[n2];
			break;
		}
		case 3:{
			P0=0x04;
			P2=(P2&0x1f)|0xe0;
			P0=~t_display[n3];
			break;
		}
		case 4:{
			P0=0x08;
			P2=(P2&0x1f)|0xe0;
			P0=~t_display[n4];
			break;
		}
		case 5:{
			P0=0x10;
			P2=(P2&0x1f)|0xe0;
			P0=~t_display[n5];
			break;
		}
		case 6:{
			P0=0x20;
			P2=(P2&0x1f)|0xe0;
			P0=~t_display[n6];
			break;
		}
		case 7:{
			P0=0x40;
			P2=(P2&0x1f)|0xe0;
			P0=~t_display[n7];
			break;
		}
		case 0:{
			P0=0x80;
			P2=(P2&0x1f)|0xe0;
			P0=~t_display[n8];
			break;
		}
	}
	P2=(P2&0x1f)|0x00;
}

DSQ.h

#ifndef __DSQ_H_
#define __DSQ_H_

#include <STC15F2K60S2.H>

void DSQ_2_Init();

#endif

DSQ.c

#include "DSQ.h"

void DSQ_2_Init(){
	AUXR |= 0x04;		//定时器时钟1T模式
	T2L = 0x20;		//设置定时初值
	T2H = 0xD1;		//设置定时初值
	AUXR |= 0x10;		//定时器2开始计时
	AUXR=AUXR&0xf7;
	IE2=IE2|0x04;
	EA=1;
}

YanShi.h

#ifndef __YANSHI_H_
#define __YANSHI_H_

#include <STC15F2K60S2.H>
#include "intrins.h"

void Delay10ms();

#endif

YanShi.c

#include "YanShi.h"

void Delay10ms()		//@12.000MHz
{
	unsigned char i, j;

	i = 117;
	j = 184;
	do
	{
		while (--j);
	} while (--i);
}

JZKey.h

#ifndef __JZKEY_H_
#define __JZKEY_H_

#include "YanShi.h"

void JZKey_Init();
unsigned char JZKey_GetKeynum();

#endif

JZKey.c

#include "JZKey.h"

void JZKey_Init(){
	P32=1;
	P33=1;
	P42=0;
	P44=0;
}

unsigned char JZKey_GetKeynum(){
	unsigned char key_num=0;
	if(P32==0){
		P32=0;
		P42=1;
		P44=1;
		if(P42==0){
			Delay10ms();
			if(P42==0){
				key_num=9;
			}
			//while(P42==0);
		}
		else if(P44==0){
			Delay10ms();
			if(P44==0){
				key_num=5;
			}
			//while(P44==0);
		}
	}
	else if(P33==0){
		P33=0;
		P42=1;
		P44=1;
		if(P42==0){
			Delay10ms();
			if(P42==0){
				key_num=8;
			}
			//while(P42==0);
		}
		else if(P44==0){
			Delay10ms();
			if(P44==0){
				key_num=4;
			}
			//while(P44==0);
		}
	}
	JZKey_Init();
	return key_num;
}

ds1302.h

#ifndef __DS1302_H
#define __DS1302_H

#include <STC15F2K60S2.H>
#include <intrins.h>

void Write_Ds1302(unsigned char temp);
void Write_Ds1302_Byte( unsigned char address,unsigned char dat );
unsigned char Read_Ds1302_Byte( unsigned char address );

void Ds1302_XieData(unsigned char shi,fen,miao);
unsigned char Ds1302_GetShi();
unsigned char Ds1302_GetFen();
unsigned char Ds1302_GetMiao();

#endif

ds1302.c

/*
  程序说明: DS1302驱动程序
  软件环境: Keil uVision 4.10 
  硬件环境: CT107单片机综合实训平台 8051,12MHz
  日    期: 2011-8-9
*/

#include "ds1302.h"

sbit SCK=P1^7;		
sbit SDA=P2^3;		
sbit RST = P1^3;   // DS1302复位												

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_XieData(unsigned char shi,fen,miao){
	shi=(shi/10)*16+(shi%10);
	fen=(fen/10)*16+(fen%10);
	miao=(miao/10)*16+(miao%10);
	Write_Ds1302_Byte(0x8e,0x00);
	Write_Ds1302_Byte(0x84,shi);
	Write_Ds1302_Byte(0x82,fen);
	Write_Ds1302_Byte(0x80,miao);
	Write_Ds1302_Byte(0x8e,0x80);
}

unsigned char Ds1302_GetShi(){
	unsigned char date;
	date=Read_Ds1302_Byte(0x85);
	date=(date/16)*10+(date%16);
	return date;
}

unsigned char Ds1302_GetFen(){
	unsigned char date;
	date=Read_Ds1302_Byte(0x83);
	date=(date/16)*10+(date%16);
	return date;
}

unsigned char Ds1302_GetMiao(){
	unsigned char date;
	date=Read_Ds1302_Byte(0x81);
	date=(date/16)*10+(date%16);
	return date;
}

iic.h

#ifndef _IIC_H
#define _IIC_H

#include <STC15F2K60S2.H>
#include "intrins.h"

void IIC_Start(void); 
void IIC_Stop(void);  
bit IIC_WaitAck(void);  
void IIC_SendAck(bit ackbit); 
void IIC_SendByte(unsigned char byt); 
unsigned char IIC_RecByte(void); 

unsigned char IIC_ADC_GetData(unsigned char di_zhi);
void IIC_DAC_XieData(unsigned char date);
unsigned char IIC_EEPROM_GetData(unsigned char di_zhi);
void IIC_EEPROM_XieData(unsigned char dizhi,date);

#endif

iic.c

/*
  程序说明: IIC总线驱动程序
  软件环境: Keil uVision 4.10 
  硬件环境: CT107单片机综合实训平台 8051,12MHz
  日    期: 2011-8-9
*/

#include "iic.h"

#define DELAY_TIME 5

#define SlaveAddrW 0xA0
#define SlaveAddrR 0xA1

//总线引脚定义
sbit SDA = P2^1;  /* 数据线 */
sbit SCL = P2^0;  /* 时钟线 */

void IIC_Delay(unsigned char i)
{
    do{_nop_();}
    while(i--);        
}
//总线启动条件
void IIC_Start(void)
{
    SDA = 1;
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SDA = 0;
    IIC_Delay(DELAY_TIME);
    SCL = 0;	
}

//总线停止条件
void IIC_Stop(void)
{
    SDA = 0;
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SDA = 1;
    IIC_Delay(DELAY_TIME);
}

//发送应答
void IIC_SendAck(bit ackbit)
{
    SCL = 0;
    SDA = ackbit;  					// 0:应答,1:非应答
    IIC_Delay(DELAY_TIME);
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SCL = 0; 
    SDA = 1;
    IIC_Delay(DELAY_TIME);
}

//等待应答
bit IIC_WaitAck(void)
{
    bit ackbit;
	
    SCL  = 1;
    IIC_Delay(DELAY_TIME);
    ackbit = SDA;
    SCL = 0;
    IIC_Delay(DELAY_TIME);
    return ackbit;
}

//通过I2C总线发送数据
void IIC_SendByte(unsigned char byt)
{
    unsigned char i;

    for(i=0; i<8; i++)
    {
        SCL  = 0;
        IIC_Delay(DELAY_TIME);
        if(byt & 0x80) SDA  = 1;
        else SDA  = 0;
        IIC_Delay(DELAY_TIME);
        SCL = 1;
        byt <<= 1;
        IIC_Delay(DELAY_TIME);
    }
    SCL  = 0;  
}

//从I2C总线上接收数据
unsigned char IIC_RecByte(void)
{
    unsigned char i, da;
    for(i=0; i<8; i++)
    {   
    	SCL = 1;
	IIC_Delay(DELAY_TIME);
	da <<= 1;
	if(SDA) da |= 1;
	SCL = 0;
	IIC_Delay(DELAY_TIME);
    }
    return da;    
}

unsigned char IIC_ADC_GetData(unsigned char di_zhi){
	unsigned char date;
	IIC_Start();
	IIC_SendByte(0x90);
	IIC_WaitAck();
	IIC_SendByte(di_zhi);
	IIC_WaitAck();
	IIC_Stop();
	
	IIC_Start();
	//EA=0;
	IIC_SendByte(0x91);
	IIC_WaitAck();
	date=IIC_RecByte();
	//EA=1;
	IIC_SendAck(1);
	IIC_WaitAck();
	IIC_Stop();
	return date;
}

void IIC_DAC_XieData(unsigned char date){
	IIC_Start();
	IIC_SendByte(0x90);
	IIC_WaitAck();
	IIC_SendByte(0x40);
	IIC_WaitAck();
	IIC_SendByte(date);
	IIC_WaitAck();
	IIC_Stop();
}

unsigned char IIC_EEPROM_GetData(unsigned char di_zhi){
	unsigned char date;
	IIC_Start();
	IIC_SendByte(0xa0);
	IIC_WaitAck();
	IIC_SendByte(di_zhi);
	IIC_WaitAck();
	IIC_Stop();
	
	IIC_Start();
	IIC_SendByte(0xa1);
	IIC_WaitAck();
	date=IIC_RecByte();
	IIC_SendAck(1);
	IIC_WaitAck();
	IIC_Stop();
	return date;
}

void IIC_EEPROM_XieData(unsigned char dizhi,date){
	IIC_Start();
	IIC_SendByte(0xa0);
	IIC_WaitAck();
	IIC_SendByte(dizhi);
	IIC_WaitAck();
	IIC_SendByte(date);
	IIC_WaitAck();
	IIC_Stop();
}

onewire.h

#ifndef __ONEWIRE_H
#define __ONEWIRE_H

#include <STC15F2K60S2.H>

float DS18B20_GetWenDu();

#endif

onewire.c

/*
  程序说明: 单总线驱动程序
  软件环境: Keil uVision 4.10 
  硬件环境: CT107单片机综合实训平台(外部晶振12MHz) STC89C52RC单片机
  日    期: 2011-8-9
*/
#include "onewire.h"

sbit DQ = P1^4;  //单总线接口

//单总线延时函数
void Delay_OneWire(unsigned int t)  //STC89C52RC
{
	unsigned char i;
	while(t--){
		for(i=0;i<12;i++);
	}
}

//通过单总线向DS18B20写一个字节
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);
}

//从DS18B20读取一个字节
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;
}

//DS18B20设备初始化
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 DS18B20_GetWenDu(){
	float wen_du,zs,xs;
	unsigned char di,gao;
	init_ds18b20();
	Write_DS18B20(0xcc);
	Write_DS18B20(0x44);
	Delay_OneWire(200);
	
	init_ds18b20();
	Write_DS18B20(0xcc);
	Write_DS18B20(0xbe);
	
	di=Read_DS18B20();
	gao=Read_DS18B20();
	
	if(gao>=240){
		di=~di;
		gao=~gao;
		if(di==0xff){
			di=0;
			gao++;
		}
		else{
			di++;
		}
		zs=((gao<<4)|(di>>4))*1.0;
		xs=(di&0x0f)*0.0625;
		wen_du=-(zs+xs);
	}
	else{
		zs=((gao<<4)|(di>>4))*1.0;
		xs=(di&0x0f)*0.0625;
		wen_du=(zs+xs);
	}
	return wen_du;
}

LN555.h

#ifndef __LN555_H_
#define __LN555_H_

#include <STC15F2K60S2.H>

void LN555_DSQ_0_Init();

#endif

LN555.c

#include "LN555.h"

void LN555_DSQ_0_Init(){
	TMOD=(TMOD&0xf0)|0x05;
	TH0=0;
	TL0=0;
	ET0=0;
	TR0=1;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯单片机第14届省赛客观题目+程序题目+程序题参考答案 的相关文章

  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • python sklearn 梯度下降法_【机器学习】梯度下降法(Gradient descent)

    说明 以下内容为学习刘建平老师的博客所做的笔记 梯度下降 Gradient Descent 小结 www cnblogs com 因为个人比较喜欢知乎文章的编辑方式 就在这里边记笔记边学习 喜欢这个博客的朋友 可以去刘建平老师的博客foll
  • 使用google的免费GPU

    1 打开网页 输入Google colab 2 点击 修改 gt 笔记本设置 3 点击使用GPU 常用命令 print torch version print torch cuda is available
  • 1.centos7安装docker

    本文目录 1 docker 安装 1 安装步骤 2 安装是否成功校验 3 docker加速配置 4 hello world来袭 验证安装是否ok 2 卸载docker 3 卸载较旧版本docker 使用docker必备的三个官方网站 doc
  • 无线路由、AP、网桥之区别详解篇

    通过无线上网冲浪 现在已经不是新鲜的事情 随着近一两年无线 网络的飞速发展 从企业到家庭都开始在不同的领域体验着 自由上网 的乐趣 笔者接触无线网络也有一段时间了 经常在一些无线论坛逛游 无论是在现实生活还是在论坛中 总会有朋友不断的问这样
  • HyperLedger Fabric 实践错误收集

    HyperLedger Fabric 实践错误收集 在ubuntu中通过docker compose启动容器的时候报错 ERROR for cli Cannot create container for service cli Confli
  • 光模块之SR、LRM、LR、ER 、ZR对比介绍

    SFP介绍 现有的ARUBA 原来的HP 万兆模块有多种 除了MMF表示多模SMF表示单模 SR LRM LR ER等都代表什么意思 本文做个简单对比介绍 将帮助您根据您的实际需要选择合适的10G SFP 模块 Aruba 10G SFP
  • 英语软件的日志怎么写

    今天一个外企个小伙伴跑来跟我说 老板说他的程序里的英语写的太烂 让我教他怎么写日志 虽然我自己用英语写log 也还马马虎虎 但是让我系统的介绍 我也犯了难 好在 我做过自然语言处理 NLP 也做过针对计算机系统的日志的挖掘 所以我知道有个东
  • Lua脚本在redis中的使用学习

    Lua脚本在redis中的使用学习 0 前言 不同于之前遇到的redisTemplate的简单set get方法 这里是使用Redis脚本执行redis操作 DefaultRedisScript
  • Linux宝塔面板 网址忘记了,或者账号密码错误怎么办?

    在linux中安装宝塔面板后会生成网址 账号和密码 如果网址忘记了那将进不去宝塔面板 bt 命令 输入bt后 在输入14就可以查看宝塔面板详细信息 root localhost bt 宝塔面板命令行 1 重启面板服务 8 改面板端口 2 停
  • struts2-输入校验、xml校验的使用

    1 输入校验 直接在Action类里添加相应的方法 这里定义了一个中间变量 前面我直接返回SUCCESS ERROR会报错 具体我还要研究一下 struts xml login jsp 2 xml校验 在XXAction的同级目录下 建立X
  • Qt Desginer布局方法

    关于Qt Desginer中的布局方法 网上教程少之又少 个人经过反复的实践和摸索 觉得可以用一句话来概括 先不断地进行小布局 然后对整体进行大布局 先不断地进行小布局的目的就是将同为一组的控件按某个格式排列使界面干净有序 同时方便以后对整
  • [教程]Hexo + Github 搭建自己的专属博客

    教程 Hexo Github 搭建自己的专属博客 文章目录 教程 Hexo Github 搭建自己的专属博客 1 安装Git和NodeJS 2 安装Hexo 3 加载主题 4 修改主题配置 5 将博客部署在GitHub上 6 写文章并上传
  • 在Mac上安装MongoDB

    1 访问MongoDB官方下载地址 http www mongodb org downloads 2 解压文件mongodb osx ssl x86 64 4 0 9 tgz 解压之后会变成mongodb osx x86 64 4 0 9文
  • MQTT协议详解一

    首先给出MQTT协议的查看地址 http public dhe ibm com software dw webservices ws mqtt mqtt v3r1 html 当然也有PDF版的 百度一下 不过个人感觉还是官网上的字体和排版最
  • kata-containers的阿里云镜像仓库地址

    kata containers的阿里云镜像仓库地址 关键字 kata containers 阿里云 镜像 kata containers需要安装在Centos8 如下为 etc yum repos d kata containers的内容
  • MHA + mysql5.7 一主二从配置安装日志

    MHA mysql5 7 一主二从配置安装步骤 1 安装mysql5 7 2 配置主从复制开启gtid 半同步复制 3 配置三台机器的互信 4 安装MHA node节点 5 安装MHA manger节点 6 利用MHA工具检测SSH 7 利
  • Maven中poi爆红以及 dependencyManagement 标签使用

    这个是在父工程中导入poi 07 版本的时候爆红 在父工程中导入poi07版本的时候死活下载不了依赖导致爆红 业务场景 项目中依赖包版本号判断途径 多模块情况 与 dependencies 标签下 dependency 的区别 在父工程中导
  • 运行yolov5_deepsort报错AttributeError: ‘Detect‘ object has no attribute ‘m‘

    我自己训练的模型在自己的代码里面能进行预测 但是在运行yolov5 deepsort的时候报错AttributeError Detect object has no attribute m 报错详情 Traceback most recen
  • unity,给button添加点击功能的办法

    以下是使用代码添加按钮功能的一个简单例子 创建一个空对象 并添加一个Button组件 命名为 MyButton 创建一个脚本文件 命名为 ButtonManager 在ButtonManager脚本中添加以下代码 using UnityEn
  • 蓝桥杯单片机第14届省赛客观题目+程序题目+程序题参考答案

    目录 客观题题目 程序题题目 程序题参考答案 main h main c Init h Init c SMG h SMG c DSQ h DSQ c YanShi h YanShi c JZKey h JZKey c ds1302 h ds