国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【藍(lán)橋杯單片機(jī)】第十二屆省賽(含題目和解答代碼)

這篇具有很好參考價(jià)值的文章主要介紹了【藍(lán)橋杯單片機(jī)】第十二屆省賽(含題目和解答代碼)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

若代碼有誤,歡迎在評(píng)論區(qū)批評(píng)指正!?

藍(lán)橋杯單片機(jī)組第十二屆省賽,單片機(jī),藍(lán)橋杯

藍(lán)橋杯單片機(jī)組第十二屆省賽,單片機(jī),藍(lán)橋杯

藍(lán)橋杯單片機(jī)組第十二屆省賽,單片機(jī),藍(lán)橋杯

藍(lán)橋杯單片機(jī)組第十二屆省賽,單片機(jī),藍(lán)橋杯

main.c?

#include <REGX52.H>

#include <onewire.H>
#include <iic.H>
#define uchar unsigned char
#define uint unsigned int
	
sbit K1 = P4^4;
sbit K2 = P4^2;
sbit K3 = P3^3;
sbit K4 = P3^2;
sbit L1 = P0^0;
sbit L2 = P0^1;
sbit L3 = P0^2;
sbit L4 = P0^3;

code uchar Seg_Table[] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x8c}; //10A 11b 12c 13d 14e  15f 
code uchar Seg_Table_dot[] ={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e}; //10A 11b 12c 13d 14e  15f 

uchar flag_S4,key_up=1,cs=25,dat,model;
uint temp,dac;

//==================函數(shù)聲明區(qū)=======================================
void hc573(uchar channel);
void Init_system();
void delay_s(uchar t);
void delay_l(uchar xms);
void Nixie(uchar loc,num);
void Nixie_dot(uchar loc,num);
void display();
void LED();
//===================================================================
void hc573(uchar channel)
{
	switch(channel)
	{
		case 4: P2 = (P2 & 0x1f) | 0x80; break; //LED
		case 5: P2 = (P2 & 0x1f) | 0xa0; break; //蜂鳴器
		case 6: P2 = (P2 & 0x1f) | 0xc0; break; //數(shù)碼管位選
		case 7: P2 = (P2 & 0x1f) | 0xe0; break; //數(shù)碼管段選
		case 0: P2 = (P2 & 0x1f) | 0x00; break;
	}
}
void delay_s(uchar t)
{
	while(t--);
}
void delay_l(uchar xms)
{
	unsigned char i, j;
	i = 12;
	j = 169;
	for(;xms>0;xms--)
	{
		do
		{
			while (--j);
		} while (--i);
	}
}

uchar Key_Scan()
{
	K1=0;K2=K3=K4=1;
	if(K3==0||K4==0)
	{
		delay_s(100);
		if(K3==0)//S4按下
		{
			flag_S4=(flag_S4+1)%3; 
			while(K3 == 0) 
			{
				temp=Read_Temp();
				LED();
				display();
			}
			return;
		}
		if(K4==0)//S5按下
		{
			model = (model+1)%2;; 
			while(K4 == 0) 
			{
				temp=Read_Temp();
				LED();
				display();
			}
			return;
		}
	}
	K2=0;K1=K3=K4=1;
	if(K3==0||K4==0)
	{
		delay_s(100);
		if(K3==0&&flag_S4==1)//S8按下
		{
			cs--;
			while(K3 == 0) 
			{
				temp=Read_Temp();
				LED();
				display();
			}
			return;
		}
		if(K4==0&&flag_S4==1)//S9按下
		{
			cs++;
			while(K4 == 0) 
			{
				temp=Read_Temp();
				LED();
				display();
			}
			return;
		}
	}
}



void Nixie(uchar loc,num)
{
	hc573(0);
	P0 = 0x01<<(loc-1);
	hc573(6);
	hc573(0);
	P0 = Seg_Table[num];
	hc573(7);
	delay_s(500);
	P0 = 0xff;
	hc573(0);
}
void Nixie_dot(uchar loc,num)
{
	hc573(0);
	P0 = 0x01<<(loc-1);
	hc573(6);
	hc573(0);
	P0 = Seg_Table_dot[num];
	hc573(7);
	delay_s(500);
	P0 = 0xff;
	hc573(0);
}
void Init_system()
{
	hc573(0);
	P0 = 0x00;
	hc573(5);
	hc573(0);
	P0 = 0xff;
	hc573(4);
	hc573(0);
}

void display()
{
	if(flag_S4 == 0)
	{
		Nixie(1,12);
		Nixie(5,temp%10000/1000);
		Nixie_dot(6,(temp%1000)/100);
		Nixie(7,(temp%100/10));
		Nixie(8,temp%10);
	}
	if(flag_S4 == 1)
	{
		Nixie(1,16);
		Nixie(7,cs/10);
		Nixie(8,cs%10);
	}
	if(flag_S4 == 2)
	{
		if(model == 0)
		{
			if(temp%10000/1000*10+(temp%1000)/100> cs)
			{
				dat = 255;
				Nixie_dot(6,5);
				Nixie(7,0);
				Nixie(8,0);
			}
			else 
			{
				dat=0;
				Nixie_dot(6,0);
				Nixie(7,0);
				Nixie(8,0);
			}
			Write_PCF(dat);
			Nixie(1,10);
		}
		
		if(model == 1)
		{
			if(temp%10000/1000*10+(temp%1000)/100<20) dac = 100;
			if((temp%10000/1000*10+(temp%1000)/100>=20)&&(temp%10000/1000*10+(temp%1000)/100<=40)) 
				dac = 0.15*(temp%10000/1000*1000+(temp%1000)/100*100+temp%100/10*10+temp%10) - 200;
			if(temp%10000/1000*10+(temp%1000)/100>40) dac = 400;
			dat = dac * 51;
			Write_PCF(dat);
			Nixie(1,10);
			Nixie_dot(6,dac/100);
			Nixie(7,dac / 10 %10);
			Nixie(8,dac % 10);
		}
	}
}
void LED()
{
	if(flag_S4==0) 
	{
		hc573(0);
		L2 = 0;
		hc573(4);
		hc573(0);
	}
	else 
	{
		hc573(0);
		L2 = 1;
		hc573(4);
		hc573(0);
	}
	if(flag_S4 == 1)
	{
		hc573(0);
		L3 = 0;
		hc573(4);
		hc573(0);
	}
	else 
	{
		hc573(0);
		L3 = 1;
		hc573(4);
		hc573(0);
	}
	if(flag_S4 == 2)
	{
		hc573(0);
		L4 = 0;
		hc573(4);
		hc573(0);
	}
	else 
	{
		hc573(0);
		L4 = 1;
		hc573(4);
		hc573(0);
	}
	if(model == 0)
	{
		hc573(0);
		L1 = 0;
		hc573(4);
		hc573(0);
	}
	else
	{
		hc573(0);
		L1 = 1;
		hc573(4);
		hc573(0);
	}
}

void main()
{
	Init_system();
	temp=Read_Temp();
	delay_l(85);
	while(1)
	{
		temp=Read_Temp();
		display();
		Key_Scan();
		LED();
	}
}

iic.c

/*	#   I2C代碼片段說明
	1. 	本文件夾中提供的驅(qū)動(dòng)代碼供參賽選手完成程序設(shè)計(jì)參考。
	2. 	參賽選手可以自行編寫相關(guān)代碼或以該代碼為基礎(chǔ),根據(jù)所選單片機(jī)類型、運(yùn)行速度和試題
		中對(duì)單片機(jī)時(shí)鐘頻率的要求,進(jìn)行代碼調(diào)試和修改。
*/

#include <REGX52.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);
}

void Write_PCF(unsigned char dat)
{
	I2CStart();
	I2CSendByte(0x90);
	I2CWaitAck();
	I2CSendByte(0x40);
	I2CWaitAck();
	I2CSendByte(dat);
	I2CWaitAck();
	I2CStop();
}

iic.h

#ifndef __iic_h__
#define __iic_h__

void Write_PCF(unsigned char dat);
#endif 

onewire.c

/*	# 	單總線代碼片段說明
	1. 	本文件夾中提供的驅(qū)動(dòng)代碼供參賽選手完成程序設(shè)計(jì)參考。
	2. 	參賽選手可以自行編寫相關(guān)代碼或以該代碼為基礎(chǔ),根據(jù)所選單片機(jī)類型、運(yùn)行速度和試題
		中對(duì)單片機(jī)時(shí)鐘頻率的要求,進(jìn)行代碼調(diào)試和修改。
*/

// 

#include <REGX52.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;
}

unsigned int Read_Temp()
{
	unsigned int temp;
	unsigned char LSB,MSB;
	init_ds18b20();
	Write_DS18B20(0xcc);
	Write_DS18B20(0x44);
	init_ds18b20();
	Write_DS18B20(0xcc);
	Write_DS18B20(0xbe);
	LSB = Read_DS18B20();
	MSB = Read_DS18B20();
	init_ds18b20();
	temp=MSB;
	temp = (temp<<8)|LSB;
	temp = temp*0.0625*100;
	return temp;
}

onewire.h

#ifndef __onewire_h__
#define __onewire_h__

unsigned int Read_Temp();

#endif 

?文章來源地址http://www.zghlxwxcb.cn/news/detail-763193.html

?

?

到了這里,關(guān)于【藍(lán)橋杯單片機(jī)】第十二屆省賽(含題目和解答代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 藍(lán)橋杯單片機(jī) 第十二屆 國(guó)賽

    藍(lán)橋杯單片機(jī) 第十二屆 國(guó)賽

    藍(lán)橋杯第十二屆,模塊都比較常規(guī),感覺都和省賽差不多,主要是麻煩在數(shù)據(jù)處理上,而我們處理的數(shù)據(jù)又要在界面中顯示出來。 對(duì)比之前的第十屆,其實(shí)題目差不多,并且少了串口收發(fā)這一比較難的模塊。但是多了max,min,avg三個(gè)超聲波數(shù)據(jù)的處理。所以按道理時(shí)間方面應(yīng)該

    2023年04月08日
    瀏覽(90)
  • 【藍(lán)橋杯嵌入式】藍(lán)橋杯第十二屆省賽程序真題,真題分析與代碼講解

    【藍(lán)橋杯嵌入式】藍(lán)橋杯第十二屆省賽程序真題,真題分析與代碼講解

    ??【藍(lán)橋杯嵌入式】專題正在持續(xù)更新中,原理圖解析?,各模塊分析?以及歷年真題講解?都在這兒哦,歡迎大家前往訂閱本專題,獲取更多詳細(xì)信息哦?? ??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十屆省賽真題 ??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十三屆省賽程序真題 ??本系列專欄 - ?

    2023年04月15日
    瀏覽(97)
  • 【藍(lán)橋杯嵌入式】藍(lán)橋杯嵌入式第十二屆省賽題,考點(diǎn):模擬電壓,串口通信,計(jì)時(shí)器

    【藍(lán)橋杯嵌入式】藍(lán)橋杯嵌入式第十二屆省賽題,考點(diǎn):模擬電壓,串口通信,計(jì)時(shí)器

    ???【藍(lán)橋杯嵌入式】專題正在持續(xù)更新中,原理圖解析?,各模塊分析?以及歷年真題講解?都在這兒哦,歡迎大家前往訂閱本專題,獲取更多詳細(xì)信息哦?? ??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十屆省賽真題 ??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十二屆省賽程序真題 ??【藍(lán)橋杯嵌入式

    2023年04月09日
    瀏覽(134)
  • 《藍(lán)橋杯真題》:2021單片機(jī)省賽第一場(chǎng)(第十二 / 12屆第一場(chǎng))(另一種代碼風(fēng)格)

    《藍(lán)橋杯真題》:2021單片機(jī)省賽第一場(chǎng)(第十二 / 12屆第一場(chǎng))(另一種代碼風(fēng)格)

    注意: 代碼實(shí)現(xiàn)方面 : ①注意控制溫度參數(shù)temp_para范圍 ②DAC輸出時(shí),注意寫入的數(shù)字IIC_SendByte(temp)中temp范圍在 0~255 ; 源文件修改方面 : ①官方給的iic.h中使用的時(shí)C51的頭文件\\\"reg52.h\\\",我們需要 修改為 對(duì)應(yīng)的15系列 頭文件\\\"STC15F2K60S2.h\\\" ,這樣才可以使用其中的一些特殊位寄

    2023年04月08日
    瀏覽(87)
  • 藍(lán)橋杯單片機(jī)14屆記錄 + 6-13屆省賽代碼+試題

    藍(lán)橋杯單片機(jī)14屆記錄 + 6-13屆省賽代碼+試題

    客觀題 01. 一個(gè) 8 位的 DAC 轉(zhuǎn)換器,供電電壓為 3.3V,參考電壓 2.4V,其 1LSB 產(chǎn)生的輸出電 壓增量是( )V。 A. 0.0129 B. 0.0047 C. 0.0064 D. 0.0094 ?02. IAP15F2K61S2 單片機(jī)支持通過哪些接口進(jìn)行在線調(diào)試( )。 A. SPI B. UART C. I2C D. JTAG ?03. 下列電路中屬于時(shí)序邏輯電路的是( )。 A. 計(jì)數(shù)

    2024年02月06日
    瀏覽(102)
  • 藍(lán)橋杯單片機(jī)第14屆省賽客觀題目+程序題目+程序題參考答案

    藍(lán)橋杯單片機(jī)第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 ds1302.c iic.h iic.c onewire.h onewire.c LN555.h LN555.c ? ? ????????首先吐槽一下,花300元體驗(yàn)國(guó)賽的難度,是真的崩潰。 ???????? 3個(gè)小時(shí)寫完,2個(gè)小時(shí)改bug!

    2024年02月11日
    瀏覽(1683)
  • 4 -【第十二屆】藍(lán)橋杯物聯(lián)網(wǎng)試題 (省賽題)

    4 -【第十二屆】藍(lán)橋杯物聯(lián)網(wǎng)試題 (省賽題)

    1.將時(shí)鐘樹頻率設(shè)置成32MHz 2.將GPIO引腳做如下配置: 引腳功能 使能ADC功能 使能RTC功能 3.生成工程代碼 4.移植OLED、LoRa庫文件 5.編寫邏輯代碼 自定義Task_Main.h Task_Main.c工程文件 Task_Main.h Task_Main.c main.c 引入頭文件 板級(jí)初始化 主控代碼 1.將時(shí)鐘樹頻率設(shè)置成32MHz 2.將GPIO引腳做如

    2023年04月10日
    瀏覽(89)
  • 藍(lán)橋杯試題 歷屆真題 砝碼稱重【第十二屆】【java省賽】

    藍(lán)橋杯試題 歷屆真題 砝碼稱重【第十二屆】【java省賽】

    ? ????????使用java中的 Set 子接口 ,其特點(diǎn)是元素?zé)o序,并且不可重復(fù)。 ? ? ? ? 在遍歷set集合的同時(shí)修改元素會(huì)拋出java.util.ConcurrentModificationException并發(fā)修改異常 ?

    2024年02月07日
    瀏覽(97)
  • 第十四屆藍(lán)橋杯單片機(jī)省賽真題(巨簡(jiǎn)代碼+超級(jí)詳解)

    第十四屆藍(lán)橋杯單片機(jī)省賽真題(巨簡(jiǎn)代碼+超級(jí)詳解)

    相關(guān)說明: 開發(fā)板:CT107D——IAP15F2K61S2 開發(fā)環(huán)境: Keil5 涉及題目:第十四屆藍(lán)橋杯單片機(jī)省賽真題 數(shù)碼管忘記不足2位左側(cè)補(bǔ)0;采集的濕度無效時(shí),溫濕度、采集次數(shù)、采集時(shí)間不統(tǒng)計(jì),更不參與計(jì)算平均值;溫度參數(shù)有邊界條件;在時(shí)間回顯子界面長(zhǎng)按松開后才能清零,

    2024年02月04日
    瀏覽(89)
  • 《藍(lán)橋杯真題》:2022單片機(jī)省賽第二場(chǎng)_客觀題(第十三 / 13屆第二場(chǎng))

    《藍(lán)橋杯真題》:2022單片機(jī)省賽第二場(chǎng)_客觀題(第十三 / 13屆第二場(chǎng))

    聲明:我僅是貼出我認(rèn)為正確的答案,不是標(biāo)準(zhǔn)答案! 解析:打開ISP看到下面兩個(gè)文件類型,我就選了 BC 解析:比賽給的《STC15系列單片機(jī)用戶手冊(cè)》P301,可以看到是可以位尋址的都能夠被8整除,不能夠被8整除的無法進(jìn)行位操作,SCON的地址為98H,P4的地址為C0H,可以位尋址

    2023年04月08日
    瀏覽(89)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包