📄 master_main.c
字号:
#include<reg51.h>
#include"math.h"
#include"Config.h"
#include"IOCfg.c"
#include"TimeDLY.h"
#include"IIC_PCA8574.h"
#include"LogValue.h"
#include"LCD.h"
#include"Key.h"
#include"Touch.h"
#include"Serial.h"
//"0 ~ 9"字库码
INT16U NUM[10]={
0xA3B0,0xA3B1,0xA3B2,0xA3B3,0xA3B4,
0xA3B5,0xA3B6,0xA3B7,0xA3B8,0xA3B9};
bit TOUCH_SET = 0; //设置触发指示
INT8U TOUCH_MODE = SINGLE; //触发方式
INT32U TOUCH_WORD = 0x00; //触发字
INT8U TOUCH_ADDR = 8; //触发位置
bit PAGE = 0; //分页显示指示
INT8U PAGE_NUM = 0; //当前页号
FP32 GATE_VALUE = 4.0; //门限电平
INT8U GATE_N = 0; //门限设置通道
INT16U FREQ = 100; //采样频率
void InitIO()
{
bit x;
P0 = 0x00;
P1 = 0x00;
P2 = 0x00;
ZLG7289INT = 1;
IIC_INT = 1;
RAM_WE = 0;
RAM_OE = 0;
x = PCA8574_PutOne(0x40,0x00);
x = PCA8574_PutOne(0x41,0x00);
x = PCA8574_PutOne(0x42,0x00);
x = PCA8574_PutOne(0x43,0xff);
}
void main()
{
bit x;
INT8U key,i;
INT32U temp=0;
INT16U addr=0;
INT8U TX_Data;
INT8U tword[10]={0};
InitIO();
InitSerial();
InitIIC();
InitLCD();
while(1)
{
//触发方式显示
DispOneWord(0,0,0xB4A5); //"触"
DispOneWord(0,1,0xB7A2); //"发"
DispOneWord(0,2,0xB7BD); //"方"
DispOneWord(0,3,0xCABD); //"式"
if(TOUCH_MODE==SINGLE)
{
DispOneWord(0,5,0xB5A5); //"单"
DispOneWord(0,6,0xB4CE); //"次"
}
else
{
DispOneWord(0,5,0xC8FD); //"三"
DispOneWord(0,6,0xBCB6); //"级"
}
//触发位置显示
DispOneWord(1,0,0xB4A5); //"触"
DispOneWord(1,1,0xB7A2); //"发"
DispOneWord(1,2,0xCEBC); //"位"
DispOneWord(1,3,0xD6C3); //"置"
DispTwoCharacter(1,5,NUM[TOUCH_ADDR/10],NUM[TOUCH_ADDR%10]);
//页号显示
DispOneWord(2,0,0xD2B3); //"页"
DispOneWord(2,1,0xBAC5); //"号"
DispTwoCharacter(2,4,NUM[PAGE_NUM/10],NUM[PAGE_NUM%10]);
key=ZLG7289_ReadKey(); //取得按键数值
switch(key)
{
case 1://复位
{ TOUCH_MODE = SINGLE;
TOUCH_WORD = 0x00;
TOUCH_ADDR = 8;
PAGE_NUM = 0;
PAGE = 0;
GATE_VALUE = 4.0;
FREQ = 100;
break;}
case 2://取消,删除
{ temp >>=1;
break;}
case 3://确认
{ TOUCH_WORD = temp;
break;}
case 4://分页显示
{ PAGE=~PAGE;
break;}
case 5://页UP
{ if(PAGE_NUM<10)PAGE_NUM++;
else PAGE_NUM=0;
break;}
case 6://页DOWN
{ if(PAGE_NUM>0)PAGE_NUM--;
else PAGE_NUM=10;
break;}
case 7://采样频率
{ if(FREQ<20000)FREQ++;
else FREQ = 20;
break;}
case 8://门限电平通道选择
{ if(GATE_N<7)GATE_N++;
else GATE_N = 0;
break;}
case 9://门限电平+
{ GATE_VALUE +=0.25;
break;}
case 10://门限电平-
{ GATE_VALUE -=0.25;
break;}
case 11://触发位置
{ if(TOUCH_ADDR<40)TOUCH_ADDR++;
else TOUCH_ADDR = 0;
break;}
case 12://触发方式
{ TOUCH_MODE=~TOUCH_MODE;
break;}
case 13://触发字设置
{ TOUCH_SET = 1;
break;}
case 14://0
{ temp <<= 1;
break;}
case 15://1
{ temp = (temp<<1) + 1;
break;}
default:
{ TOUCH_SET = 0;
break;}
while(!ZLG7289INT);
}
Set_NLogic(GATE_N,GATE_VALUE);
addr = PAGE_NUM*40 + TOUCH_ADDR;
RAM_CS = 1;
RAM_WE = 1;
RAM_ADDR_L = addr&0xff;
RAM_ADDR_L = (addr>>8)&0xff;
x=PCA8574_GetOne(0x43,TX_Data);
x=PCA8574_PutOne(0x42,TX_Data); //LED指示
RAM_CS = 0;
RAM_WE = 0;
Serial_TX(TX_Data);
addr += 1;
for(i=0;i<19;i++)
{
RAM_CS = 1;
RAM_WE = 1;
RAM_ADDR_L = addr&0xff;
RAM_ADDR_L = (addr>>8)&0xff;
x=PCA8574_GetOne(0x43,TX_Data);
RAM_CS = 0;
RAM_WE = 0;
Serial_TX(TX_Data);
addr += 1;
}
} }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -