蓝桥杯单片机大模板及头文件

 一、大模板

本模板基于以下两篇文章和西风老师讲解归纳而成,仅为比赛学习而用。如有侵权立删。

http://t.csdnimg.cn/ty2gP

http://t.csdnimg.cn/NqrAO

#include "reg52.h"
#include "ds1302.h"
#include "onewire.h"
#include "iic.h"

sfr P4    = 0xC0;

sbit A0 = P3^4;
sbit A1 = P3^5;
sbit A2 = P4^2;
sbit A3 = P4^4;

/*===================初始化函数======================*/
void System_Init()
{
	P0 = 0xff;//关闭数码管
	P2 = P2 & 0x1f | 0x80;
	P2 &= 0x1f;
	
	P0 = 0x00;//关闭蜂鸣器,继电器
	P2 = P2 & 0x1f | 0xa0;
	P2 &= 0x1f;
}

/*===================数码管======================*/

unsigned char Seg_Dula[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//段选 0~9+熄灭
unsigned char Seg_Wela[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//位选

void Seg_Disp(unsigned char wela,dula,point)//数码管显示函数
{
  P0=0xff;//消隐
  P2=P2&0x1f|0xe0;
  P2&=0x1f;
	
  P0=Seg_Wela[wela];//位选
  P2=P2&0x1f|0xc0;
  P2&=0x1f;
	
  P0=Seg_Dula[dula];//段选
  if(point)
  {
    P0=Seg_Dula[dula] & 0x7f;
  }
  else
  {
	P0=Seg_Dula[dula];
  }
  P2=P2&0x1f|0xe0;
  P2&=0x1f;
}

/*===================按键======================*/

unsigned char Key4_Read(void) //独立按键读取函数
{
  unsigned char Key_temp;
	unsigned char Key_Value;
	
	P3 |= 0x0f;        //将P3低四位即独立按键接口拉高置为1
	Key_temp = P3&0x0f;//读取P3低四位I/O口的电平
	
	switch(Key_temp)//
	{
	    case 0x0e : Key_Value = 7; break;  //S7
		case 0x0d : Key_Value = 6; break;  //S6
		case 0x0b : Key_Value = 5; break;  //S5
		case 0x07 : Key_Value = 4; break;  //S4
		default: Key_Value = 0;
	}
	return Key_Value;
}

unsigned char Key16_Read(void)    
{
    unsigned int  Key_temp;
	unsigned char Key_Value;
	
	A3=0; 
	A2=1; 
	A1=1; 
	A0=1; 
	P3|=0X0F; 
	Key_temp = P3;                        
	
	A3=1; 
	A2=0; 
	A1=1; 
	A0=1; 
	P3|=0X0F;  
	Key_temp = (Key_temp<<4) | (P3&0X0F);  
	
	A3=1; 
	A2=1; 
	A1=0; 
	A0=1; 
	P3|=0X0F; 
	Key_temp = (Key_temp<<4) | (P3&0X0F); 
	
	A3=1; 
	A2=1; 
	A1=1; 
	A0=0; 
	P3|=0X0F; 
	Key_temp = (Key_temp<<4) | (P3&0X0F);  
	
	switch(~Key_temp)   
	{
        //第一列
		case 0X8000: Key_Value = 4; break;   //S4
		case 0X4000: Key_Value = 5; break;   //S5
		case 0X2000: Key_Value = 6; break;   //S6
		case 0X1000: Key_Value = 7; break;   //S7
		//第二列
		case 0X0800: Key_Value = 8; break;   //S8
		case 0X0400: Key_Value = 9; break;   //S9
		case 0X0200: Key_Value = 10; break;   //S10
		case 0X0100: Key_Value = 11; break;   //S11
		//第三列
		case 0X0080: Key_Value = 12; break;   //S12
		case 0X0040: Key_Value = 13; break;   //S13
		case 0X0020: Key_Value = 14; break;   //S14
		case 0X0010: Key_Value = 15; break;   //S15
		//第四列
		case 0X0008: Key_Value = 16; break;   //S16
		case 0X0004: Key_Value = 17; break;   //S17
		case 0X0002: Key_Value = 18; break;   //S18
		case 0X0001: Key_Value = 19; break;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值