⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 includes.h

📁 只是一个基于飞思卡尔十六位单片机编写的C一个例程SPI
💻 H
字号:
//[Includes.h]总头文件-----------------------------------------------------*
//本文件包含:                                                              *
//    主函数(main)文件中用到的头文件、外部函数声明及有关常量命名         *
//-------------------------------------------------------------------------*
//1.包含通用头文件
#include "isr.h"        //中断处理函数头文件
#include "Type.h"       //类型别名定义
#include "MCUInit.h"    //芯片初始化头文件
 
         
//2.包含面向硬件对象头文件
#include "SCI.h"        //串行通信头文件
#include "ADC.h"        //A/D转换头文件
#include "DS12C887.c"   //时钟头文件


//*******************************************************************/
//DS12C887寄存器地址定义
//*******************************************************************/
#define DS12C887_M  XBYTE [0x7f00]//秒
#define DS12C887_MA XBYTE [0x7f01]//秒报警
#define DS12C887_F  XBYTE [0x7f02]//分
#define DS12C887_FA XBYTE [0x7f03]//分报警
#define DS12C887_S  XBYTE [0x7f04]//时
#define DS12C887_SA XBYTE [0x7f05]//时报警
#define DS12C887_X  XBYTE [0x7f06]//星期
#define DS12C887_R  XBYTE [0x7f07]//日
#define DS12C887_Y  XBYTE [0x7f08]//月
#define DS12C887_N  XBYTE [0x7f09]//年
#define DS12C887_A  XBYTE [0x7f0a]//寄存器A,A.7—只读判断忙闲
#define DS12C887_B  XBYTE [0x7f0b]//寄存器B,B.7—控制工作状态:0正常、1停止
                                  //         B.2—BCD码或二进制选择:0 二进制
								                  //         B.1—24/12小时模式选择:1 24小时进制
#define DS12C887_C  XBYTE [0x7f0c]//寄存器C
#define DS12C887_D  XBYTE [0x7f0d]//寄存器D  只读,读取该寄存器可使设置的时间和工作模式生效

//*******************************************************************/
//使用触摸屏数据库保存信息 
//*******************************************************************/

#define PIC_INDEX       0x01        //使用外部非掉电字节,图片自加索引好
#define PIC_SAVE_INDEX  0x02        //图片在0x40~0x50存贮位置的号码

#define WAIT_COST_H     0x03        //等待单价的外部存贮高位
#define WAIT_COST_L     0x04        //等待单价的外部存贮低位
#define SINGLE_COST_H   0x05        //单价
#define SINGLE_COST_L   0x06        //单价
#define FIRST_COST_H    0x07        //起步价
#define FIRST_COST_L    0x08        //起步价

#define PASSWORD_H      0x09        //密码的外部保存
#define PASSWORD_L      0x0a        //

/*11.22添加,单价信息的十分位信息*/
#define WAIT_COST_DOT   0x0b        //等待单价十分位
#define SINGLE_COST_DOT 0x0c        //单价十分位
#define FIRST_COST_DOT  0x0d        //起步价十分位
#define WAIT_MINUTE_H  	0x19  
#define WAIT_MINUTE_L  	0x0e        //
#define MILEAGE_H  		0x0f        //
#define MILEAGE_L       0x10
#define TOTAL_COST_H  	0x11        //
#define TOTAL_COST_L  	0x12        //
#define TIME_YEAR       0x13
#define TIME_MONTH      0x14
#define TIME_DAY        0x15
#define TIME_HOUR       0x16
#define TIME_MINUTE     0x17
#define DIAODIAN_FLAG   0x18

///////////////////////////////////

/* AD转换的入口参数,仅低4位有意义,高4位恒0,低4位意义依次为:StartBit|SGL|ODD|SelectBit
其中起始位恒为1,这里不归入此字节 */
#define CHANNEL_0 0x0c  //单通道0采集
#define CHANNEL_1 0x0e  //单通道1采集
#define CHANNEL_2 0x0d  //单通道2采集
#define CHANNEL_3 0x0f  //单通道3采集
/////////////////////////////////////

/*继电器端口号*/
#define PA XBYTE [0xBFFC]   //PA口状态控制字
#define PB XBYTE [0xBFFD]   //PM口状态控制字
#define PC XBYTE [0XBFFE]   //PP口状态控制字
#define CR XBYTE [0xBFFF]   //8255控制字
/////////////////////

//函数声明部分
void send_char(INT8U ch);
void send_string(INT8U *str,INT8U strlen);
void ini_lcd();
void ini_serialcomm();
void delay_ms(INT8U n);
bit Btn_click(INT16U x,INT16U y);
void btn_sel(INT8U index,INT8U btn_index,INT8U bit_index);//不同图片的按钮的响应
void btn_focus(INT8U index,INT8U count);//按钮的动态效果
void btn_release(INT8U index,INT8U btn_index,INT8U bit_index);//释放按钮的响应函数
void Num_Pad(INT8U index);//小键盘函数,所有键盘的操作都在上面完成
void clock_paste(INT8U num,INT8U num_pos,INT8U row);
void num_paste(INT8U num,INT8U num_pos,INT8U row);
void time_dis();//显示时间
void D_update();//车门状态更新
void K_paste(INT16U num,INT8U row);             //三位数的粘帖
void print_num(INT16U num);                     //发送到打印机的数字
void AD_dis();                                //AD状态的显示
void M600_Write_Data(INT8U m_data,char index);//M600的读写函数
INT8U M600_Read_Data (char index);

void ms250_Proc(void);
////////////////////////

////////////////////////////////////////////////////////////////////
////对屏幕分块,分为7*6=42块
INT8U btn[25]={0,1,2,3,4,5,8,9,10,11,16,17,22,23,28,29,34,35,36,37,38,39,40,41,7};
////将要发送的字符存于固化在ROM中
INT8U code text1[13]={0x20,0x20,0x20,0x20,0xD7,0xDC,0x20,0x20,0x20,0x20,0xBC,0xDB,0x3A};
//总价:后加total_cost
INT8U code text2[17]={0xD4,0xAA,0x0D,0x0A,0x20,0x20,0x20,0x20,0xD7,0xDC,0x20,0xC0,0xEF,0x20,0xB3,0xCC,0x3A};
//总里程:后加公里数
INT8U code text3[17]={0x6B,0x6D,0x0D,0x0A,0x20,0x20,0x20,0x20,0xB5,0xA5,0x20,0x20,0x20,0x20,0xBC,0xDB,0x3A};
//单价:后加单价single_cost
INT8U code text4[20]={0xD4,0xAA,0x2F,0x6B,0x6D,0x0D,0x0A,0x20,0x20,0x20,0x20,0xB5,0xC8,0xB4,0xFD,0xCA,0xB1,0xBC,0xE4,0x3A};
//等待时间:后加等待时间
INT8U code text5[18]={0x6D,0x69,0x6E,0x0D,0x0A,0x20,0x20,0x20,0x20,0xB5,0xC8,0xB4,0xFD,0xB5,0xA5,0xBC,0xDB,0x3A};
//等待单价:后加等待单价wait_cost
//INT8U code text6[22]={0xD4,0xAA,0x2F,0x35,0x6D,0x69,0x6E,0x0D,0x0A,0x20,0x20,0x20,0x20,0xC6,0xF0,0x20,0xB2,0xBD,0x20,0xBC,0xDB,0x3A};
INT8U code text6[21]={0xD4,0xAA,0x2F,0x6D,0x69,0x6E,0x0D,0x0A,0x20,0x20,0x20,0x20,0xC6,0xF0,0x20,0xB2,0xBD,0x20,0xBC,0xDB,0x3A};
//起步价:后加起步价
INT8U code text7[15]={0xD4,0xAA,0x0D,0x0A,0x20,0x20,0x20,0x20,0xCD,0xA3,0xD6,0xB9,0x3A,0x32,0x30};
//停止:后加停止时间
INT8U code text8[13]={0x0D,0x0A,0x20,0x20,0x20,0x20,0xBF,0xAA,0xCA,0xBC,0x3A,0x32,0x30};
//开始:后加开始时间
INT8U code text9[2]={0x0D,0x0A};
//截止
////////////////////////////////////////////////////////////////////////
////不常用的指令也固化,以节省空间
INT8U code zouzhi[4] = {27,74,54,13};                    //打印机走纸
INT8U code jiaozhun[6] = {0xaa,0xe4,0x55,0xaa,0x5a,0xa5};//触摸屏校准指令
INT8U code M600_DB_W[9] = {0xaa,0x90,0x55,0xaa,0x5a,0xa5,0x01,0xde,0x00};    //触摸屏写数据指令
INT8U code M600_DB_R[5] = {0xaa,0x91,0x01,0xde,0x00};    //触摸屏读数据指令
INT8U code M600_DB_LEN[2] = {0x00,0x01};                 //读取字符数
INT8U code LIGHT_OFF[2] = {0xaa,0x5e};                   //关闭触摸屏灯管
INT8U code LIGHT_ON[2] = {0xaa,0x5f};                    //开启触摸屏灯管
////////////////////////////////////////////////////////////////////////
INT16U posx,posy;     //单击的屏幕坐标位置,计算多用直接寻址   
INT8U pic_cut[15]={170,113,9};//用直接寻址
INT8U code cmd_end[4]={0xcc,0x33,0xc3,0x3c};
INT8U idata pic_index=9;//主界面图片

///////外部时钟时间的存贮////////////
extern INT8U idata year;
extern INT8U idata month;
extern INT8U idata day;
extern INT8U idata hour;
extern INT8U idata minute;
extern INT8U idata second;
////////////////////////////////////

//////记录开始时间
INT8U idata start_hour;
INT8U idata start_minute;
//INT8U idata wait_minute = 0;//等待时间,由于要显示,必须先赋初值
///////////////////////////////////

///////标记位,须为全局变量
bit flag_pad=0;        //小键盘标识
bit flag_time_set = 0; //时间设置是否完成
bit flag_save=0;       //是否保存的标识
bit flag_jiaozhun = 0; //屏幕校准标记
bit flag_power=0;      //总电源标记
bit flag_hqsh=0;       //换气扇标记
bit flag_wait=0;       //等待标记等待时间开始计数
bit flag_start=0;      //开始标记
bit flag_password=0;   //密码标志
bit flag_cost_set = 0; //单价设置标记,11.11号修改
bit flag_m600_read = 0;//m600读取标记,11.16增加
bit flag_light = 1;    //触摸屏灯管启用标记,11.16增加
bit flag_mileage=0;    //里程增加标记
//bit flag_250ms = 0;    //250ms标记
//////////////////////////////

/////////////Num_Pad中使用的全局变量
INT16U idata px,py;     //粘帖数字字符的坐标
char idata click_count; //小键盘的按键计数总数(有两次和三次的差别)
char idata click_index; //要修改的索引
INT8U idata pre_TL0=0x10;//保存TL0的上一次数值
INT8U idata pre_TH0=0xfe;
////////////

////////////
INT16U idata wait_cost;      //等待单价
INT16U idata single_cost;    //单价
INT16U idata first_cost;     //起步价
INT16U total_cost;           //总价
char idata wait_cost_dot;  //保存的小数位
char idata single_cost_dot;//
char idata first_cost_dot; //
////////////

/////////////////存贮于触摸屏数据库中
INT8U idata m_PIC_INDEX;
INT8U idata m_PIC_SAVE_INDEX;
INT8U idata m_PASSWORD_H;
INT8U idata m_PASSWORD_L;
INT8U idata M600_Data; //11.16增加
INT8U idata diaodian_flag;
INT8U idata m_hour;
INT8U idata m_minute;
INT8U idata m_day;
/////////////////

/////////////////////////////////////////////////////////////////
//指示触摸屏点击次数,必须赋初值
INT16U idata touch_count = 0;    //指示点击次数,在一分钟内不超过65536下 
INT16U idata old_touch_count = 0;//保存一分钟前的点击数
INT8U idata s_pic_index;       //保存进入屏保界面的pic_index
/////////////////////////////////////////////////////////////////

//////////////////AD装换数据
INT8U idata DATA_0;
INT8U idata DATA_1;
INT8U idata DATA_2;
INT8U idata DATA_3;
////////////////////////////

////////////////////////////
//INT8U mileage;//公里数
INT16U idata mileage;
INT8U idata mileage_add=0;//T0共溢出的次数
INT16U idata wait_minute;
////////////////////////////

/*自定义的按键状态存储(车门状态的存贮显示)*/
sbit D_l_front  = PAD0;//前左门
sbit D_r_front  = PAD1;//前右门
sbit D_l_back   = PAD2;//后左门
sbit D_r_back   = PAD3;//后右门
sbit D_r_middle = PAD4;//新增加中门的状态
/////////////////////////////////////////////

#pragma  LINK_INFO DERIVATIVE "mc9s12dj128b"










⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -