?? toucher2.c
字號(hào):
#include "allhead.h"
/****************************變量聲明********************************/
extern uchar realtimebuff[7];
extern uchar time_set[7];
extern uchar tx_buff[12]; //存放要發(fā)向轉(zhuǎn)換器的數(shù)
//TWI 相關(guān)全局變量
extern uchar i2c_rd_buff[32]; //i2c讀出的數(shù)最初存放的地方
extern uchar i2c_wt_buff[35]; //寫
extern uchar fhz;
extern uchar canuse[4]; //轉(zhuǎn)換器的投用情況 按位
extern uchar detuse[33][4]; //所有485節(jié)點(diǎn)的投用情況,0,1按位起作用
extern uchar det_link[33]; //探測器或聯(lián)動(dòng)模塊選擇字節(jié)段,按位起作用
//GAL門相關(guān)全局變量
extern uchar gal1data ;
extern uchar gal2data ; //繼電器控制信號(hào)1,聯(lián)動(dòng)模塊故障1,聯(lián)動(dòng)輸出都為1
extern uchar gal3data ; //指示燈為共陽極的
extern uchar gal4data ;
extern uchar gal5data ;
extern uint baojingaddr;
extern uint guzhangaddr; //第一次取用的最新故障地址
extern uint guzhangaddr2; //已存住的最新故障地址
extern uint baojingaddr2;
extern uint onaddr2 ; //開關(guān)機(jī)用
extern uchar canuse[4];
extern uchar detuse[33][4]; //所有485節(jié)點(diǎn)的投用情況,0,1按位起作用
extern uchar zhongbuff[32][10]; // 一次接收的轉(zhuǎn)換器的數(shù)
extern uint cuo1;
extern uint cuo2;
extern uchar keyc;
extern uchar gal1data;
extern uchar gal2data;
extern uchar gal3data;
extern uchar gal4data;
//系統(tǒng)坐標(biāo)
extern uchar xh; //橫坐標(biāo)高字節(jié)
extern uchar xl; //橫坐標(biāo)低字節(jié)
extern uchar yh; //縱坐標(biāo)高字節(jié)
extern uchar yl; //縱坐標(biāo)高字節(jié)
//矩形的右下角坐標(biāo)
extern uchar x2h; //橫坐標(biāo)高字節(jié)
extern uchar x2l; //橫坐標(biāo)低字節(jié)
extern uchar y2h; //縱坐標(biāo)高字節(jié)
extern uchar y2l; //縱坐標(biāo)高字節(jié)
//common use
extern uchar i;
extern uchar j;
//系統(tǒng)坐標(biāo)轉(zhuǎn)換后坐標(biāo)
extern uint x;
extern uint y;
extern uchar biaozhi; //USART1接收中斷數(shù)據(jù)標(biāo)志
extern uchar key; //鍵值
extern uchar RXC_BUFF[15]; //觸摸屏發(fā)送的數(shù)據(jù)
extern uchar jiemian; //界面標(biāo)志
//開關(guān)機(jī)記錄顯示用
extern uint addre2; //外部E2的當(dāng)前地址
extern uchar addre2hi; //地址高址
extern uchar addre2lo; //地址低址
extern uchar num_open; //存放開關(guān)機(jī)記錄中的編號(hào)
extern uchar num_open2; //存放翻頁后的第一個(gè)開關(guān)機(jī)記錄編號(hào)
extern uchar data[16]; //存放外部E2中的開關(guān)機(jī)記錄中信息
extern uchar baojing[16]; //存放外部E2中的報(bào)警記錄信息
extern uchar guzhang[8]; //存放外部E2中的故障記錄信息
extern uint chroma[16] ; //顯示的濃度
extern uchar c[3]; //通道關(guān)聯(lián)探測器編號(hào)及高低報(bào)情況
extern uint ccc; //等待CAN返回計(jì)數(shù)延時(shí)用
//uchar use_instance; //使用情況;
/********************************************************************/
extern uchar pass1[6]; //更改密碼所存數(shù)組
extern uchar pass2[6]; //確認(rèn)密碼所存數(shù)組
extern uchar pass3[6]; //輸入密碼所存數(shù)組
extern uchar pass[6]; //存放E2中讀出的密碼
extern uchar time[22]; //存放時(shí)間設(shè)定后的值
extern uchar high[4]; //高報(bào)濃度
extern uchar low[4]; //低報(bào)濃度
extern uchar passage1[4]; //通道1
extern uchar passage2[4]; //通道2
//extern uchar passage3[4]; //通道3
//extern uchar passage4[4]; //通道4
extern uchar linkage1[2]; //存放控制外設(shè)界面中輸入的轉(zhuǎn)換器編號(hào)
extern uchar linkage2[2]; //存放控制外設(shè)界面中輸入的探測器編號(hào)
extern uchar linkage[4]; //存放系統(tǒng)設(shè)置界面中輸入的調(diào)零地址號(hào)
extern uchar old_can[2]; //原來轉(zhuǎn)換器地址
extern uchar new_can[2]; //修改后轉(zhuǎn)換器地址
extern uchar can[2]; //修改探測器界面中can的地址
extern uchar old_det[2]; //原來探測器地址
extern uchar new_det[2]; //修改后探測器地址
extern uchar index_link1; //指向linkage1數(shù)組中的數(shù)
extern uchar index_link2; //指向linkage2數(shù)組中的數(shù)
extern uchar index_link; //指向linkage數(shù)組中的數(shù)
extern uchar bd; //指向biaoding數(shù)組中的數(shù)
//uchar send_buff[8];
//uchar recv_buff[8];
extern uchar p1; //對(duì)應(yīng)old_can數(shù)組
extern uchar p2; //對(duì)應(yīng)new_can數(shù)組
extern uchar p3; //對(duì)應(yīng)can數(shù)組
extern uchar p4; //對(duì)應(yīng)old_det數(shù)組
extern uchar p5; //對(duì)應(yīng)new_det數(shù)組
extern uchar m1; //對(duì)應(yīng)pass1數(shù)組
extern uchar m2; //對(duì)應(yīng)pass2數(shù)組
extern uchar m3; //對(duì)應(yīng)pass3數(shù)組
extern uchar m; //對(duì)應(yīng)pass數(shù)組
extern uchar n; //對(duì)應(yīng)time數(shù)組
extern uchar n1; //對(duì)應(yīng)high數(shù)組
extern uchar n2; //對(duì)應(yīng)low數(shù)組
extern uchar way1; //通道1標(biāo)志
extern uchar way2; //通道2標(biāo)志
//extern uchar way3; //通道3標(biāo)志
//extern uchar way4; //通道4標(biāo)志
extern uchar page; //翻頁標(biāo)志
extern uchar flag_can; //can標(biāo)志
//extern uchar flag_sound; //按鍵音
extern uchar flag_print; //打印標(biāo)志
extern uchar gas_type; //氣體類型
extern uchar unit_chroma; //濃度單位
extern uchar info_det[4]; //存放高低報(bào)濃度轉(zhuǎn)換后的值
extern uchar choice; //選擇
extern uchar regist; //注冊(cè)
extern uchar denglu; //登錄
extern uchar num_can; //can編號(hào)
extern uchar num_det; //節(jié)點(diǎn)編號(hào)
extern uchar num_det2; //已選擇的節(jié)點(diǎn)的編號(hào)
extern uchar addr_can; //控制外設(shè)界面中轉(zhuǎn)換器編號(hào)
extern uchar addr_can1; //聯(lián)動(dòng)界面中通道1關(guān)聯(lián)的轉(zhuǎn)換器編號(hào)
extern uchar addr_can2; //聯(lián)動(dòng)界面中通道2關(guān)聯(lián)的轉(zhuǎn)換器編號(hào)
//extern uchar addr_can3; //聯(lián)動(dòng)界面中通道3關(guān)聯(lián)的轉(zhuǎn)換器編號(hào)
//extern uchar addr_can4; //聯(lián)動(dòng)界面中通道4關(guān)聯(lián)的轉(zhuǎn)換器編號(hào)
extern uchar addr_det; //控制外設(shè)界面中探測器編號(hào)
extern uchar addr_det1; //聯(lián)動(dòng)界面中通道1關(guān)聯(lián)的探測器編號(hào)
extern uchar addr_det2; //聯(lián)動(dòng)界面中通道2關(guān)聯(lián)的探測器編號(hào)
//extern uchar addr_det3; //聯(lián)動(dòng)界面中通道3關(guān)聯(lián)的探測器編號(hào)
//extern uchar addr_det4; //聯(lián)動(dòng)界面中通道4關(guān)聯(lián)的探測器編號(hào)
//extern uchar high_low1; //聯(lián)動(dòng)界面中通道1關(guān)聯(lián)的高低報(bào)情況
//extern uchar high_low2; //聯(lián)動(dòng)界面中通道2關(guān)聯(lián)的高低報(bào)情況
//extern uchar high_low3; //聯(lián)動(dòng)界面中通道3關(guān)聯(lián)的高低報(bào)情況
//extern uchar high_low4; //聯(lián)動(dòng)界面中通道4關(guān)聯(lián)的高低報(bào)情況
extern uchar channel; //存放通道的吸合斷開情況
extern uchar cha_local; //存放本地通道的吸合斷開情況
extern uchar state_cha;
//光標(biāo)坐標(biāo)
extern uchar X1H;
extern uchar X1L;
extern uchar Y1H;
extern uchar Y1L;
extern uchar X2H;
extern uchar X2L;
extern uchar Y2H;
extern uchar Y2L;
extern uint X1; //光標(biāo)左上角橫坐標(biāo)
extern uint Y1; //光標(biāo)左上角縱坐標(biāo)
extern uint X2; //光標(biāo)右下角橫坐標(biāo)
extern uint Y2; //光標(biāo)右下角縱坐標(biāo)
//uchar first_clarm[11]; //存放首次報(bào)警信息
uint realaddr=0x3000; //實(shí)時(shí)地址
/******************************************************************
***********************打印*************************
**********************************************************/
//寫打印函數(shù)
void write_print(uchar cmd)
{
while((PIND&0x80)==0x80)
; //如果忙,等待
GAL5ADDR=cmd; //輸入命令
}
//命令打印函數(shù)
void cha_print(uchar temp1,uchar temp2)
{
write_print(temp1);
write_print(temp2);
}
//初始化打印機(jī)
void int_prt(void)
{
cha_print(0x1b,0x40); //初始化
cha_print(0x1b,0x31); //行間距6
write_print(0x06);
cha_print(0x1c,0x26); //設(shè)置漢字打印方式
}
//空格打印函數(shù)
void kong_print(uchar temp)
{
uchar kkk=0;
for(kkk=0;kkk<temp;kkk++)
write_print(0x20);
}
/*********************氣體類型選擇**********************/
void gas_choice(void)
{
// cha_print(0x1c,0x26); //設(shè)置漢字打印方式
switch(gas_type)
{
case 0xff:
{
cha_print(0xcc,0xec); //天
cha_print(0xc8,0xbb); //然
cha_print(0xc6,0xf8); //氣
}
break;
case 0x02:
{
cha_print(0xd2,0xba); //液
cha_print(0xbb,0xaf); //化
cha_print(0xc6,0xf8); //氣
}
break;
case 0x03:
{
cha_print(0xc3,0xba); //煤
cha_print(0xd6,0xc6); //制
cha_print(0xc6,0xf8); //氣
}
break;
case 0x04:
{
cha_print(0xb6,0xbe); //毒
cha_print(0xd0,0xd4); //性
cha_print(0xc6,0xf8); //氣
cha_print(0xcc,0xe5); //體
}
break;
case 0x05:
{
cha_print(0xbf,0xc9); //可
cha_print(0xc8,0xbc); //燃
cha_print(0xc6,0xf8); //氣
cha_print(0xcc,0xe5); //體
}
break;
case 0x06:
{
cha_print(0xd3,0xd0); //有
cha_print(0xbb,0xfa); //機(jī)
cha_print(0xc8,0xdc); //溶
cha_print(0xbc,0xc1); //劑
}
break;
default :
break;
}
}
/***********************濃度單位選擇**************************/
void unit_judge(void)
{
switch(unit_chroma) //濃度單位
{
case 0xff:
{
write_print(0x25); //%
write_print(0x4c); //L
write_print(0x45); //E
write_print(0x4c); //L
}
break;
case 0x02:
{
write_print(0x50); //P
write_print(0x50); //P
write_print(0x4d); //M
}
break;
case 0x03:
{
write_print(0x56); //V
write_print(0x4f); //O
write_print(0x4c); //L
}
break;
default:
break;
}
}
/***********************打印格式1*****************************/
void print1(uint num)
{
uchar p=0,q=0;
uchar temp[5];
uint temp1=0,temp2=0;
uint temp3=0;
temp2=num;
temp3=10000;
for(p=0;p<5;p++)
{
temp1=temp2/temp3;
temp2=temp2%temp3;
temp3=temp3/10;
temp[p]=(uchar)(temp1+0x30);
}
wdr();
//功能: 將一個(gè)uint型的數(shù)顯示出來,但是第一個(gè)非零數(shù)字前的零要省略
for(p=0;p<4;p++)
{
if(temp[p]!=0x30)
break;
}
for(q=0;q<p;q++)
{
write_print(0x20);
}
for(q=p;q<5;q++)
{
write_print(temp[q]);
}
}
/***********************時(shí)間處理打印函數(shù)*********************/
void date_print(uchar temp) //時(shí)鐘處理函數(shù)
{
uchar temp1=0;
uchar temp2=0;
temp1=temp>>4;
temp1=temp1+0x30;
write_print(temp1); //打印
temp2=temp&0x0f; //取年\月\日\時(shí)\分\秒的低四位
temp2=temp2+0x30;
write_print(temp2); //打印
}
/********************編號(hào)打印*******************/
void num_print(uchar temp)
{
uchar temp1=0;
uchar temp2=0;
temp1=temp/10+0x30; //編號(hào)高位
temp2=temp%10+0x30; //編號(hào)低位
write_print(temp1); //顯示編號(hào)高位
write_print(temp2); //顯示編號(hào)低位
}
/***********************報(bào)警記錄打印***************************/
void clarm_print(void)
{
uchar a[16];
uchar c=0;
uchar kkk=0;
uint temp=0;
uint temp1=0;
uint addr_gas=0x5c00; //外部E2中存放氣體類型的初始地址
uint addr_unit=0x6100; //外部E2中存放濃度單位的初始地址
uchar clarm_buff[17]; //取報(bào)警信息暫時(shí)用
temp1=baojingaddr+16;
if(temp1==0x4280) //到頭
temp1=0x0400; //調(diào)整
int_prt();
for(kkk=0;kkk<8;kkk++)
{
wdr();
/********************************************************/
clarm_buff[1]= (uchar)((temp1>>8)&0x00ff ) ; //FM24C256片內(nèi)地址高位字節(jié)
clarm_buff[2]= (uchar)(temp1&0x00ff) ; //FM24C256片內(nèi)地址低位字節(jié)
EIMSK&=~(1<<INT6);
//do
fhz=I2cRead( SLA2_W,SLA2_R , clarm_buff[1],clarm_buff[2],16);
//while(fhz==1);
for(c=0;c<16;c++)
a[c]=i2c_rd_buff[c] ; //
EIMSK|=(1<<INT6);
if(temp1==0x4270) //到頭
temp1=0x0400; //調(diào)整
else
temp1=temp1+16 ; //調(diào)整
/****************從外部E2中讀取氣體類型**********************/
addr_gas=addr_gas+baojing[0]*32+baojing[1]-1;
clarm_buff[1]= (uchar)((addr_gas>>8)&0x00ff ) ; //FM24C256片內(nèi)地址高位字節(jié)
clarm_buff[2]= (uchar)(addr_gas&0x00ff) ; //FM24C256片內(nèi)地址低位字節(jié)
EIMSK&=~(1<<INT6);
//do
fhz=I2cRead( SLA2_W,SLA2_R , clarm_buff[1],clarm_buff[2],1);
//while(fhz==1);
gas_type=i2c_rd_buff[0] ; //將讀出的氣體類型放入gas_type中
EIMSK|=(1<<INT6);
/***************從外部E2中讀取濃度單位**************************/
addr_unit=addr_unit+baojing[0]*32+baojing[1]-1;
clarm_buff[1]= (uchar)((addr_unit>>8)&0x00ff ) ; //FM24C256片內(nèi)地址高位字節(jié)
clarm_buff[2]= (uchar)(addr_unit&0x00ff) ; //FM24C256片內(nèi)地址低位字節(jié)
EIMSK&=~(1<<INT6);
//do
fhz=I2cRead( SLA2_W,SLA2_R , clarm_buff[1],clarm_buff[2],1);
//while(fhz==1);
unit_chroma = i2c_rd_buff[0] ; //將讀出的氣體類型放入unit_chroma中
EIMSK|=(1<<INT6);
/********************************************************/
if(a[0]==0xff) //如果外部E2中沒有數(shù),無操作
;
else
{
//氣體類型
kong_print(0x08);
gas_choice(); //報(bào)警類型打印
write_print(0x0d); //換行
cha_print(0xc6,0xf8); //氣
cha_print(0xb1,0xa8); //體
cha_print(0xc0,0xe0); //類
cha_print(0xd0,0xcd); //型
//cha_print(0x1b,0x36); //選擇字符集1
write_print(0x3a); //:
write_print(0x0d); //換行
//濃度
// cha_print(0x1c,0x26); //設(shè)置漢字打印方式
temp=(uint)(a[9]);
temp=(temp<<8)+a[10]; //報(bào)警濃度
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -