主函数main.c

子函数LCD1602.c

子函数头文件LCD1602.h

当共用变量的时候,变量在定义在主函数中,子函数中声明一下是外部变量

举例。

Main.c中

#include <stdio.h>
#include "config.h"
#include "ds1302.h"
#include "delay.h"
#include "1602.h"
#include "delay.h"
#include "key.h"
#include "count.h"
#include "EncoderEC11.h"
#include "eeprom.h"
#include "beep.h"

sbit led1=P4^0;
sbit led2=P4^1;
sbit led3=P4^2;
u8 tiems;
u8 count;
u16 count1,count2;//外部中断计数,时间设定值自加
bit finish,FLAG,t1;//工作完成标志,时间控制标志
bit close_pule,no_flag;//脉冲控制位
bit old_2TS,DO_Start;
bit START_RUN=0;				//运行函数启动标志
u8 low_high2;					//0=无变化,1=上升沿,2、下降沿 20181113添加

u8 TAB10[]="        ";
u8 TAB20[]="        ";


bit ReadTimeFlag;//定义读时间标志
bit SetFlag;     //更新时间标志位
u8  channel=1;
unsigned char channel2=1;
unsigned char time_buf2[16];
unsigned char temp[16];//定义显示区域临时存储数组
unsigned int temp2[4];//定义显示区域临时存储数组
unsigned int NO,ms=1000;//

void Init_Timer0(void);//定时器初始化
void UART_Init(void);

unsigned char qinp;
unsigned char cnt = -1;																	//流水灯速查表偏移变量
unsigned char model=0;
unsigned char disp_tmp[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};	//流水灯速查表

sbit Key3 = P1^2;
sbit Key4 = P1^3;
u8 kkvalue=0;
sbit LED=P3^7;
sbit relay_ok = P3^4;
sbit relay_ng = P3^5;
#define FOSC 11059200L          //系统频率
#define BAUD 115200             //串口波特率
#define NONE_PARITY     0       //无校验
#define ODD_PARITY      1       //奇校验
#define EVEN_PARITY     2       //偶校验
#define MARK_PARITY     3       //标记校验
#define SPACE_PARITY    4       //空白校验
#define PARITYBIT EVEN_PARITY   //定义校验位
#define S1_S0 0x40              //P_SW1.6
#define S1_S1 0x80              //P_SW1.7
bit busy;
void SendData(u8 dat);
void SendString(char *s);
void Puls();

 

 

在EncoderEC11.c中

//---->>>>----文件描述:EC11旋转编码器底层驱动程序---<<<<----//
//---->>>>----文件版本:V1.0----<<<<----//
#include "EncoderEC11.h"
#include "config.h"
#include "delay.h"
#include "1602.h"
#include "eeprom.h"
#include "beep.h"

 

 

在EncoderEC11.h中

//---->>>>----文件描述:EC11旋转编码器底层驱动程序---<<<<----//
//---->>>>----文件版本:V1.0----<<<<----//
#include <STC15Fxxxx.H>
#ifndef	__EncoderEC11_H
#define __EncoderEC11_H


//----------------IO口定义----------------//
#define EC11_A_Now					P33								//EC11的A引脚,视为时钟线
#define EC11_B_Now 					P36  							//EC11的B引脚,视为信号线
#define EC11_Key 					P47 							//EC11的按键

//----------------编码器动作代码相关定义----------------//
#define LED1 P40
#define LED2 P41
#define LED3 P42
extern unsigned char cnt ;					//流水灯速查表偏移变量
extern unsigned char disp_tmp[];	//流水灯速查表
extern unsigned char qinp;
extern unsigned char model; 														
extern unsigned int NO,ms;//
//extern bit  channel;
extern u8  channel;
extern unsigned char   channel2;

//----------------编码器参数微调宏定义----------------//
#define EC11_SCAN_PERIOD_MS 		   1							//EC11编码器扫描周期
#define KEY_COUNT_DESHAKING 		( 12/EC11_SCAN_PERIOD_MS)		//按键消抖时间
#define KEY_COUNT_LONGTIME			(600/EC11_SCAN_PERIOD_MS)		//长按按键判断时间
#define KEY_COUNT_DUALCLICKTIME		(150/EC11_SCAN_PERIOD_MS)		//双击按键判断时间
#define KEY_LONG_REPEAT_TIME		(200/EC11_SCAN_PERIOD_MS)		//长按按键的回报率的倒数,即一直长按按键时响应的时间间隔

//----------------局部文件内变量列表----------------//
static 	char 	EC11_A_Last = 0;						//EC11的A引脚上一次的状态
static 	char 	EC11_B_Last = 0;						//EC11的B引脚上一次的状态
static	char	EC11_Type = 1;							//定义变量暂存EC11的类型---->>>>----  0:一定位对应一脉冲;  1:两定位对应一脉冲
														//所谓一定位对应一脉冲,是指EC11旋转编码器每转动一格,A和B都会输出一个完整的方波。
														//而  两定位对应一脉冲,是指EC11旋转编码器每转动两格,A和B才会输出一个完整的方波,只转动一格只输出A和B的上升沿或下降沿

														
static	 int	EC11_KEY_COUNT = 0;						//EC11按键动作计数器
static	 int	EC11_KEY_DoubleClick_Count = 0;			//EC11按键双击动作计数器
static 	char	FLAG_EC11_KEY_ShotClick = 0;			//EC11按键短按动作标志
static 	char	FLAG_EC11_KEY_LongClick = 0;			//EC11按键长按动作标志
static 	char	FLAG_EC11_KEY_DoubleClick = 0;			//EC11按键双击动作标志

static 	char	FLAG_EC11_KEY_SK_ShotClick = 0;			//EC11按键短按松开时的动作标志