📄 includes.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 + -