蓝桥杯大赛单片机组国信长天开发板个人总结 | 创建工程

keil4添加STC单片机头文件

通过STC下载软件,将STC官方头文件添加到keil的安装路径中。
在这里插入图片描述

项目创建

1.程序文件分类

由于我一般会将工程分块制作,所以创建了三个文件夹:驱动文件夹、输出可执行文件的文件夹、主程序文件夹。如图所示:
在这里插入图片描述

2.keil创建工程

打开keil软件,选择创建一个新工程:
在这里插入图片描述
将工程路径设置到自己创建的主程序文件夹中,工程名随意,选择单片机型号时选择15F2K60S2型号,之后一路OK即可。
在这里插入图片描述
创建工程后将工程栏进行分类,制作三个目录。
在这里插入图片描述
设置工程编译后可以输出可执行文件hex。
在这里插入图片描述
添加头文件路径,将三个文件夹路径都包含进来。之后点OK即可。
在这里插入图片描述
在左侧可添加个人的工程文件,将驱动代码放入驱动文件目录,主程序放到主程序目录。这样就完成了工程创建。

驱动文件的制作

比如最基本的延时函数,我想设置为一个.h和一个.c组成,这样方便之后的调用。

1. delay.h文件

#ifndef __DELAY_H__
#define __DELAY_H__

#include"main.h"   //个人创建的总的头文件汇总的地方



extern void  Delay_ms(unsigned int ms);

#endif


2. delay.c文件

/*************************************************************************
程序功能: --延时函数
	
编程人信息:
姓名:	Pandas
Email:	itworkstation@hotmail.com
专业:	电子信息工程专业
**************************************************************************/
#include  "delay.h" 


void  Delay_ms(unsigned int ms)
{
     unsigned int i;
	 do{
	      i = MAIN_Fosc / 14000;   //MAIN_Fosc :晶振频率
		  while(--i);   //14T per loop
     }while(--ms);
}

3. main.h文件则是包含了很多头文件汇总

#ifndef __MAIN_H_
#define __MAIN_H_

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



#include"config.h"

#include"delay.h" 
#include"Enable_138.h"
#include"Led_7seg.h"
#include"ULN2003_Device.h"
#include"onewire.h"
#include"LED_SET.h"
#include"DS1302.h"

#include"iic.h"
#include"AT24c02.h"
#include"PCF8591.h"

//#include"Timer0.h"
#include"Timer1.h"
#include"Timer2.h"

#include"Hongwai.h"

#include"keyboard.h"
//#include"Key_Duli.h"
#include"Key_Duli_time.h"


#include"Ultrasonic.h"

#endif

4. config.h文件则是包含了我个人很多的配置习惯

#ifndef		__CONFIG_H
#define		__CONFIG_H


#define MAIN_Fosc		12000000L	//定义主时钟
//#define MAIN_Fosc		12000000L	//定义主时钟
//#define MAIN_Fosc		11059200L	//定义主时钟
//#define MAIN_Fosc		 5529600L	//定义主时钟
//#define MAIN_Fosc		24000000L	//定义主时钟
#define FOSC  MAIN_Fosc


typedef  unsigned char uchar ;
typedef  unsigned int  uint;

typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;

/*******************各种状态控制宏,适用于全局需要控制的状态*******************************/
#define State_OFF	0
#define State_ON 1
#define State_Toggle 2
/**************************************************/

/*******************细微定时器操作,防止影响传输协议 START*******************************/
#define TIMER_INT_OFF (IE2  &=  ~(1<<2) )
#define TIMER_INT_ON (IE2  |=  (1<<2))
/********************细微定时器操作,防止影响协议 END******************************/



/********************非必要驱动隔离线************* ********** ********** /  


/*******************ULN2003 START*******************************/
#define ULN2003_Beep 0
#define ULN2003_Relay 1
#define ULN2003_BeepAndRelay 2

#define GPIO_ULN2003_Control P0
/********************ULN2003 END******************************/
/*******************74HC138 START*******************************/
#define LED_8_Select 4
#define Led_7seg_DU 7
#define Led_7seg_WE 6
#define ULN2003_Enable 5    //     101

#define GPIO_74HC138 P2
/********************74HC138 END******************************/
/*******************数码管 START*******************************/
#define Led_OFF_DU  16	 // 灭
#define	Led_dian_start_DU   17	 //LED段码数组中带小数点的起始位
#define Led_rod_DU  27	 // -
#define Led_H_DU  28	 // H	   1000 1001
#define Led_DS18B20_DU  29	 //  ℃
#define Led_U_DU  31	 //  U

#define Led_7seg_Mode_Normal 0
#define Led_7seg_Mode_AddrToggle 1
#define Led_7seg_Mode_SelectToggle 2

#define Led_7seg_GPIO P0		   //数码管的段 接口
/********************数码管 END******************************/


/********************定时器0 START******************************/
#define Timer0_Run TR0=1
#define Timer0_Stop TR0=0

#define Timer0_Mode_Time 0
#define Timer0_Mode_Count 1
/********************定时器0 END******************************/
/********************定时器1 START******************************/
#define Timer1_SetTimeMS_Init(X) X	//设置定时器 MS
/********************定时器1 END******************************/
/********************定时器2 START******************************/
#define Timer2_On (IE2  |=  (1<<2); )	//开启定时器2 
#define Timer2_Off (IE2  &=  ~(1<<2); )	//关闭定时器2 
/********************定时器2 END******************************/
/********************定时器3 START******************************/
#define Timer3_Run    (IE2 |= 0x20 )   //允许中断 
#define Timer3_Stop   (IE2 &= ~0x20)    //关闭中断 
/********************定时器3 END******************************/




/********************LED灯 START******************************/
#define LED_IO  P0
#define LED_Select_All 9
/********************LED灯  END******************************/
/********************DS1302时钟 START******************************/
#define Write_Ds1302_DATA 0
#define Read_Ds1302_DATA 1  
#define DS1302_CHOOSE_HOUR 0  
#define DS1302_CHOOSE_YEAR 1 
/********************DS1302时钟  END******************************/
/********************AT24C02 EEROM START******************************/
#define EEROM_Write 0
#define EEROM_Read 1
#define EEROM_TEST_ADDR 250
/********************AT24C02 EEROM   END******************************/
/********************PCF8591模数转换 START******************************/
#define PCF8591_DAC 0
#define PCF8591_ADC 1

#define NO  0  //AIN0口 插口,直接输入AD量,需外接
#define GM  1  //AIN1口		   //光敏
#define LM358  2  //AIN2口   经过LM358放大信号后输入AD量 ,需外接元器件  
#define PT_RES  3  //AIN3口 	  滑动变阻器口
/********************PCF8591模数转换   END******************************/


#endif
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值