蓝桥杯万能模板

Posted 一心向月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯万能模板相关的知识,希望对你有一定的参考价值。

此模板包括锁存器选择,数码管显示,独立按键,矩阵按键,ne555,pcf8591,eeprom,ds18b20,ds1302。每个模块都能使用,记住此模板轻松拿省奖。

全部文件:提取码:azxy

#include "stc15f2k60s2.h"
#include "onewire.h"
#include "iic.h"
#include "ds1302.h"
typedef unsigned char u8;
typedef unsigned int u16;

u8 code duan[12]=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf;
u16 dat;
u16 vv;
u16 count;
u16 count1;
u16 pl;
/**************************************************
**********************延迟函数*********************
**************************************************/
void delay(u16 i)

	while(i--);


/**************************************************
*********************锁存器选择********************
**************************************************/
void Chan_hc573(u8 chose)

	switch(chose)
	
		case 4:
			P2 = (P2 & 0x1f) | 0x80; break;
		case 5:
			P2 = (P2 & 0x1f) | 0xa0; break;
		case 6:
			P2 = (P2 & 0x1f) | 0xc0; break;
		case 7:
			P2 = (P2 & 0x1f) | 0xe0; break;
	
	P2 = (P2 & 0x1f) | 0x00;

/**************************************************
**********************关闭外设*********************
**************************************************/
void Init_system()

	P0=0x00;
	Chan_hc573(5);
	P0=0xff;
	Chan_hc573(4);

/**************************************************
*********************数码管选择********************
**************************************************/
void Smg_display(u8 com,u8 dat)

	P0=0xff;
	Chan_hc573(7);
	P0=0x01<<com;
	Chan_hc573(6);
	P0=dat;
	Chan_hc573(7);
	
/**************************************************
*********************数码管消隐*******************
**************************************************/
void Close_smg()

	P0=0x00;
	Chan_hc573(6);
	P0=0xff;
	Chan_hc573(7);

/**************************************************
**********************数码管显示********************
**************************************************/
void Display_all()

	Smg_display(0,duan[vv/100%10]); delay(500);
	Smg_display(1,duan[vv/10%10]); delay(500);
	Smg_display(2,duan[vv%10]); delay(500);
	Smg_display(3,duan[10]); delay(500);
	Smg_display(4,duan[10]); delay(500);
	Smg_display(5,duan[dat/100%10]); delay(500);
	Smg_display(6,duan[dat/10%10]+0x80); delay(500);
	Smg_display(7,duan[dat%10]); delay(500);
	Close_smg();

/**************************************************
*********************数码管显示频率*****************
**************************************************/
void Display_pl()

	Smg_display(0,duan[10]); delay(500);
	Smg_display(1,duan[10]); delay(500);
	Smg_display(2,duan[10]); delay(500);
	Smg_display(3,duan[pl/10000%10]); delay(500);
	Smg_display(4,duan[pl/1000%10]); delay(500);
	Smg_display(5,duan[pl/100%10]); delay(500);
	Smg_display(6,duan[pl/10%10]); delay(500);
	Smg_display(7,duan[pl%10]); delay(500);
	Close_smg();

/**************************************************
***********************独立按键*********************
**************************************************/
void Key_BTN()

	if(P30==0)				//S7
	
		delay(1000);
		if(P30==0)
		
			while(P30==0) 
		
	
	else if(P31==0)				//S6
	
		delay(1000);
		if(P31==0)
		
			while(P31==0) 
		
	
	else if(P32==0)				//S5
	
		delay(1000);
		if(P32==0)
		
			while(P32==0) 
		
	
	else if(P33==0)				//S4
	
		delay(1000);
		if(P33==0)
		
			while(P33==0) 
		
	

/**************************************************
************************矩阵按键********************
**************************************************/
sbit R1=P3^0;
sbit R2=P3^1;
sbit R3=P3^2;
sbit R4=P3^3;

sbit C4=P3^4;
sbit C3=P3^5;
sbit C2=P4^2;
sbit C1=P4^4;

void Key_KBD()

	R1=0;
	R2=R3=R4=1;
	C1=C2=C3=C4=1;
	if(C1==0)			//S7
		
		delay(1000);
		if(C1==0)
		
			while(C1==0) 
		
	
	else if(C2==0)     //S11
	
		delay(1000);
		if(C2==0)
		
			while(C2==0) 
		
	
	else if(C3==0)     //S15
	
		delay(1000);
		if(C3==0)
		
			while(C3==0) 
		
	
	else if(C4==0)     //S19
	
		delay(1000);
		if(C4==0)
		
			while(C4==0) 
		
	
	R2=0;
	R1=R3=R4=1;
	C1=C2=C3=C4=1;
	if(C1==0)			//S6
		
		delay(1000);
		if(C1==0)
		
			while(C1==0) 
		
	
	else if(C2==0)     //S10
	
		delay(1000);
		if(C2==0)
		
			while(C2==0) 
		
	
	else if(C3==0)     //S14
	
		delay(1000);
		if(C3==0)
		
			while(C3==0) 
		
	
	else if(C4==0)     //S18
	
		delay(1000);
		if(C4==0)
		
			while(C4==0) 
		
	
	R3=0;
	R2=R1=R4=1;
	C1=C2=C3=C4=1;
	if(C1==0)			//S5
		
		delay(1000);
		if(C1==0)
		
			while(C1==0) 
		
	
	else if(C2==0)     //S9
	
		delay(1000);
		if(C2==0)
		
			while(C2==0) 
		
	
	else if(C3==0)     //S13
	
		delay(1000);
		if(C3==0)
		
			while(C3==0) 
		
	
	else if(C4==0)     //S17
	
		delay(1000);
		if(C4==0)
		
			while(C4==0) 
		
	
	R4=0;
	R2=R3=R1=1;
	C1=C2=C3=C4=1;
	if(C1==0)			//S4
		
		delay(1000);
		if(C1==0)
		
			while(C1==0) 
		
	
	else if(C2==0)     //S8
	
		delay(1000);
		if(C2==0)
		
			while(C2==0) 
		
	
	else if(C3==0)     //S12
	
		delay(1000);
		if(C3==0)
		
			while(C3==0) 
		
	
	else if(C4==0)     //S16
	
		delay(1000);
		if(C4==0)
		
			while(C4==0) 
		
	

/**************************************************
************************NE555**********************
**************************************************/
void Timer0_1Init(void)		

	AUXR |= 0x40;		
	TMOD = 0x16;		
	TL0 = 0xff;		
	TH0 = 0xff;	
	TL1 = 0xA0;	
	TH1 = 0x15;
	TR0 = 1;
    ET0 = 1;		
	TR1 = 1;
	ET1 = 1;
	EA  = 1;


void Service_t0() interrupt 1

	count++;


void Service_t1() interrupt 3

	count1++;
	if(count1==200)
	
		pl=count;
		count=0;
		count1=0;
	


/**************************************************
************************PCF8591********************
**************************************************/
u8 Read_PCF8691(u8 addr)

	u8 dat;
	IIC_Start();
	IIC_SendByte(0x90);
	IIC_WaitAck();
	IIC_SendByte(addr);
	IIC_WaitAck();
	IIC_Stop();
	
	IIC_Start();
	IIC_SendByte(0x91);
	IIC_WaitAck();
	dat=IIC_RecByte();
	IIC_SendAck(1);
	IIC_Stop();
	return dat;


void Wire_PCF8691(u8 dat)

	IIC_Start();
	IIC_SendByte(0x90);
	IIC_WaitAck();
	IIC_SendByte(0x40);
	IIC_WaitAck();
	IIC_SendByte(dat);
	IIC_WaitAck();
	IIC_Stop();

/**************************************************
************************EEPROM********************
**************************************************/
u8 Read_EEPROM(u8 addr)

	u8 dat;
	IIC_Start();
	IIC_SendByte(0xa0);
	IIC_WaitAck();
	IIC_SendByte(addr);
	IIC_WaitAck();
	IIC_Stop();
	
	IIC_Start();
	IIC_SendByte(0xa1);
	IIC_WaitAck();
	dat=IIC_RecByte();
	IIC_SendAck(1);
	IIC_Stop();
	return dat;


void Wire_EEPROM(u8 addr,u8 dat)

	IIC_Start();
	IIC_SendByte(0xa0);
	IIC_WaitAck();
	IIC_SendByte(addr);
	IIC_WaitAck();
	IIC_SendByte(dat);
	IIC_WaitAck();
	IIC_Stop();

/**************************************************
************************DS18B20********************
**************************************************/
float Read_temp()

	u8 low,hig;
	float temp;
	init_ds18b20();
	Write_DS18B20(0xcc);
	Write_DS18B20(0x44);
	delay(300);
	
	init_ds18b20();
	Write_DS18B20(0xcc);
	Write_DS18B20(0xbe);
	low=Read_DS18B20();
	hig=Read_DS18B20();
	temp=(hig<<8) | low;
	temp=temp*0.625;
	return temp;

/**************************************************
*************************DS1302********************
**************************************************/
u8 time[3]=0x13,0x14,0x20;
u8 wire_time[3]蓝桥杯万能模板

尽快收藏蓝桥杯常用算法模板

蓝桥杯pcf8591读和写

蓝桥杯之算法模板题 Python版

蓝桥杯单片机设计与开发_标准模板

蓝桥杯比赛模板