📄 main.c.bak
字号:
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include <twi.h>
#include <avr/pgmspace.h>
#include <string.h>
#include <stdio.h>
#include <deprecated.h>
#include <avr/eeprom.h>
#include <stdlib.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long int
#define TRUE 1
#define FAIL 0
#define ON 1
#define OFF 0
#define FREQ 4
//*************时间中断**********
static uchar Flag_1S = OFF;
static uchar Flag_1M = OFF;
static uchar GS_1S,GS_1M;
//**************压力*************************
static uchar PRESS_TX[6] = { '#','0','1','R','D',13 };
static uchar PRESS_RX[13] = { 0 };
static uchar Press_Mid[10] = { 0 };
double Press_Data;
uint WWW;
uint WWW1;
static uchar Re_Press =0;
uchar Flag_ZD = 0;
//***************SC16C2550*************************
#define BTUON 0x80
#define RXRDY 0x04
#define TXRDY 0x02
uchar Re_Sc16A[40]= {0};
uchar Re_Sc16B[40]= {0};
static uchar Re_PB = 0;
static uchar Re_PA = 0;
#define UART_A_DATA (*(volatile uint8_t *) 0x8000)
#define UART_A_IER (*(volatile uint8_t *) 0x8001) //0X03
#define UART_A_STATE (*(volatile uint8_t *) 0x8002)
#define UART_A_DLL (*(volatile uint8_t *) 0x8000) //0C
#define UART_A_DLM (*(volatile uint8_t *) 0x8001) //00
#define UART_A_LCR (*(volatile uint8_t *) 0x8003) //
#define UART_A_MCR (*(volatile uint8_t *) 0x8004)
#define UART_A_LSR (*(volatile uint8_t *) 0x8005)
//
#define UART_B_DATA (*(volatile uint8_t *) 0xC000)
#define UART_B_IER (*(volatile uint8_t *) 0xC001) //0X03
#define UART_B_STATE (*(volatile uint8_t *) 0xC002)
#define UART_B_DLL (*(volatile uint8_t *) 0xC000) //0C
#define UART_B_DLM (*(volatile uint8_t *) 0xC001) //00
#define UART_B_LCR (*(volatile uint8_t *) 0xC003) //
#define UART_B_MCR (*(volatile uint8_t *) 0xC004)
#define UART_B_LSR (*(volatile)uint8_t *) 0xC005)
static uchar Flag_Tx_A;
static uchar Flag_Tx_B;
#define Sc16_Tx_A_OPEN UART_A_IER = 0x03
#define Sc16_Rx_A_OPEN UART_A_IER = 0x01
#define Sc16_Tx_B_OPEN UART_B_IER = 0x03
#define Sc16_Rx_B_OPEN UART_B_IER = 0x01
//**************Flow *****************
static uchar W_One[5]= {'*','@','=','A',13 };//Flow_One[5] = { '*','@','=','A',13 };
static uchar W_P_21[5] = { '*','W','2','1','=' };
static uchar W_D_22[5] = { '*','W','2','2','='};
static uchar W_Enter[2] = { 13,13 };
static uchar W_PD_MID[10] = {0};
static uchar W_RBS[2] = {'A',13 };
static uchar Flow_MID[10] = {0};
static uchar Flag_ReA = 0;
static uchar Flag_Gf = 0;
//***************Plump ********************
static uchar Plump_Open[2] = {'O',13 };
static uchar Plump_Close[2] = { 'C',13 };
static uchar Plump_Set_Point[2] = { 'S','1'};
static uchar Plump_End [2] = { 13,13 };
static uchar Plump_P[1] = { 'G'};
static uchar Plump_D[1] = { 'L'};
//***********KEY-TABLE 左 右 中*****************
static int KEY_LEFT[4] ={6,205,84,234 };
static int KEY_LEFT_P[4] = {0};
static int KEY_RIGH[4] ={230,208,310,235 } ;
static int KEY_RIGH_P[4] = {0};
static int KEY_MID[4] = {110,205,192,234 };
static int KEY_MID_P[4] = { 0 };
//*********Pin_6_KEY *************************
static int KEY_P6_rate[4] = { 116,61,265,98};
static int KEY_P6_rateP[4] = { 0 };
static int KEY_P6_press[4] = { 116,109,265,146 };
static int KEY_P6_pressP[4] = { 0 };
static int KEY_P6_time[4] = { 116,155,265,194 };
static int KEY_P6_timeP[4] = { 0 };
static uint16_t Fix_Flow = 45;
static uint16_t Fix_Press = 388;
static uint16_t Fix_Time = 20;
static uint16_t Buff_Time =0;
static double Valve = 0;
static uint16_t Flow_Ret = 0;
//ZZZZZZZZZZZZZZZZZZZ
static uint16_t Fix_ZX =0;
//XXXXXXXXXXXXXXXXXXXX
//*********Pin_8_KEY***************************
static int KEY_P8_flow[4] = { 105,94,268,131 };
static int KEY_P8_flowP[4] = { 0 };
static int KEY_P8_press[4] = { 105,157,268,194 };
static int KEY_P8_pressP[4] = { 0 };
//*********Pin17_KEY **************************
static uint16_t Fix_P = 200;
static uint16_t Fix_D = 500;
static int KEY_P17_p[4] = { 90,95,251,130 };
static int KEY_P17_pP[4] = { 0 };
static int KEY_P17_d[4] = { 90,158,2251,193 };
static int KEY_P17_dP[4] = { 0 };
//*********Pin16_Key 1 2 3 ***********
static int KEY_P16_1[4] = {56,43,230,75 };
static int KEY_P16_1P[4] = {0};
static int KEY_P16_2[4] = {57,84,213,116 };
static int KEY_P16_2P[4] = {0};
static int KEY_P16_3[4] = {56,126,196,158 };
static int KEY_P16_3P[4] = {0};
//*********Pin15_Key 1 2 ..Q*******************
static int KEY_P15_1[4] = {5,110,54,142 };
static int KEY_P15_1P[4] = {0};
static int KEY_P15_2[4] = {56,110,105,142 };
static int KEY_P15_2P[4] = {0};
static int KEY_P15_3[4] = {107,110,156,142 };
static int KEY_P15_3P[4] = {0};
static int KEY_P15_4[4] = {158,110,207,142 };
static int KEY_P15_4P[4] = {0};
static int KEY_P15_5[4] = {209,110,258,142 };
static int KEY_P15_5P[4] = {0};
static int KEY_P15_6[4] = {260,110,308,142 };
static int KEY_P15_6P[4] = {0};
//
static int KEY_P15_7[4] = {5,149,54,181 };
static int KEY_P15_7P[4] = {0};
static int KEY_P15_8[4] = {56,149,105,181 };
static int KEY_P15_8P[4] = {0};
static int KEY_P15_9[4] = {107,149,156,181 };
static int KEY_P15_9P[4] = {0};
static int KEY_P15_0[4] = {158,149,207,181 };
static int KEY_P15_0P[4] = {0};
static int KEY_P15_c[4] = {209,149,258,181 };
static int KEY_P15_cP[4] = {0};
static int KEY_P15_q[4] = {260,149,308,181 };
static int KEY_P15_qP[4] = {0};
//**********Pin_18_Key**********************
static uint16_t Fix_18_Press = 100;
static uint16_t Fix_18_P = 12;
static uint16_t Fix_18_D = 5;
static uint16_t GonGon=0;
static uint16_t JINYU = 0;
static uint16_t DD = 0;
static uint16_t AAA1 = 0;
static uint16_t AAA2 = 0;
//**********LCD使用***********
#define CONTR_LCD_PORT PORTE //定义LCD控制口
#define LE PE7
#define BUSY 0x04
#define STB PE3
#define LCD_DATA_PORT PORTB
uchar Pin;
uchar RxLen =0;
uchar Receive_Dat[11];
uchar Flag_Rec;
int X_Zb;
int Y_Zb;
static int touch_lefttop_x,touch_lefttop_y;
static int touch_rightbottom_x,touch_rightbottom_y;
float ratio_x,ratio_y;
uchar point[7] = { 0x1B,0x11,0x1B,0x1E,0x1B,0x58,0x01 };
uchar Point_Date[10]= { 0 };
uchar Point_Kong[10] = {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20 };
//****************************
void DelayMs(uint t)
{
uint i;
for(i =0;i<t;i++)
_delay_loop_2( 250*FREQ );
}
//*******************************
void Send_byte(uchar a);
//****************************
//接受中断触摸屏
SIGNAL(SIG_UART0_RECV)
{
uchar c;
c = UDR0;
if( Flag_Rec == OFF)
{
if(( RxLen == 0) && (c == 'T'))
{
Receive_Dat[RxLen] = c;
RxLen ++;
}
else
{
if( RxLen != 0 )
{
Receive_Dat[RxLen] = c;
RxLen ++;
}
}
if(RxLen == 11)
{
if((Receive_Dat[10]==13) && (Receive_Dat[5]== 44))
{
RxLen = 0 ;
Flag_Rec = ON;
}
else
{
RxLen = 0;
}
}
}
}
//******************************************
//接受中断压力
SIGNAL(SIG_UART1_RECV)
{
uchar c;
c = UDR1;
if( Re_Press != 0 )
{
PRESS_RX[Re_Press] = c;
Re_Press ++;
}
if((Re_Press ==0) && (c == '*'))
{
PRESS_RX[Re_Press] = c;
Re_Press ++;
}
if(Re_Press == 13)
{
Re_Press = 0 ;
Flag_ZD = ON;
}
}
//**********SC162550-UART-A******************
SIGNAL(SIG_INTERRUPT4)
{
uchar a,b,c;
a = UART_A_STATE;
if( a & TXRDY )
{
Flag_Tx_A = ON;
}
if( Flag_ReA == OFF)
{
if( a & RXRDY )
{
b = UART_A_DATA;
Re_Sc16A[Re_PA] = b;
Re_PA ++;
}
}
else
{
c = UART_A_DATA;
}
}
//**********SC162550-UART-B********************
SIGNAL(SIG_INTERRUPT5)
{
uchar a,b;
a = UART_B_STATE;
if( a & TXRDY )
{
Flag_Tx_B = ON;
}
if( a & RXRDY )
{
b = UART_B_DATA;
Re_Sc16B[Re_PB] = b;
Re_PB ++;
}
}
//*******************************
void Asc_Dig(void)
{
char a;
X_Zb = 0;
Y_Zb = 0;
//------X---------
a = Receive_Dat[1];
a -= 48;
X_Zb = a * 1000;
a = Receive_Dat[2];
a -= 48;
X_Zb += a * 100;
a = Receive_Dat[3];
a -= 48;
X_Zb += a * 10;
a = Receive_Dat[4];
a -= 48;
X_Zb += a ;
//-------Y---------
a = Receive_Dat[6];
a -= 48;
Y_Zb += a * 1000;
a = Receive_Dat[7];
a -= 48;
Y_Zb += a * 100;
a = Receive_Dat[8];
a -= 48;
Y_Zb += a * 10;
a = Receive_Dat[9];
a -= 48;
Y_Zb += a ;
}
//*********触摸屏*******************
void Uart0_Init(void)
{
UCSR0B = (1<<RXCIE0) | (1 << RXEN0);
UBRR0L = 47;
}
//*********压力****************
void Uart1_Init(void)
{
UCSR1B = (1 << RXEN1) |(1 << TXEN1) | (1 << RXCIE1); //( 1<<TXCIE1 )|(1<<RXCIE1) |
UBRR1L = 23;
}
//***************************
void LCD_Init(void)
{
DDRB = 0XFF;
PORTB = 0XFF;
DDRE = 0XC8;
PORTE = 0XFF;
}
//********显示触摸屏********************
void Disp_Pin(uchar number)
{
uchar a;
a = number;
a = a *5 -1;
LCD_DATA_PORT = 0x1B;
cbi(CONTR_LCD_PORT,LE);
asm("nop");
sbi(CONTR_LCD_PORT,LE);
while( PINE & BUSY);
cbi(CONTR_LCD_PORT,STB);
asm("nop");
sbi(CONTR_LCD_PORT,STB);
LCD_DATA_PORT = 0x50;
cbi(CONTR_LCD_PORT,LE);
asm("nop");
sbi(CONTR_LCD_PORT,LE);
while( PINE & BUSY);
cbi(CONTR_LCD_PORT,STB);
asm("nop");
sbi(CONTR_LCD_PORT,STB);
LCD_DATA_PORT = a;
cbi(CONTR_LCD_PORT,LE);
asm("nop");
sbi(CONTR_LCD_PORT,LE);
while( PINE & BUSY);
asm("nop");
asm("nop");
cbi(CONTR_LCD_PORT,STB);
asm("nop");
sbi(CONTR_LCD_PORT,STB);
}
//***************************
void Send_byte(uchar a)
{
LCD_DATA_PORT = a;
cbi(CONTR_LCD_PORT,LE);
asm("nop");
sbi(CONTR_LCD_PORT,LE);
while( PINE & BUSY);
cbi(CONTR_LCD_PORT,STB);
asm("nop");
sbi(CONTR_LCD_PORT,STB);
}
//**********Return_Point******************
void Return_Point()
{
uchar i;
for(i=0;i<7;i++)
{
Send_byte(point[i]);
}
}
//*********Move_point********************
void Move_Point(uchar x,uchar y)
{
Send_byte(0x1b);
Send_byte(0x0d);
Send_byte(x);
Send_byte(0x1b);
Send_byte(0x52);
Send_byte(y);
}
//**********Disp_Date*******************
void Disp_Date(uchar *p,uchar len)
{
uchar i;
for(i=0;i<len;i++)
{
Send_byte(*(p+i));
}
}
//**********CLEAR DATA*******************
void Clear_Data(uchar *p,uchar len)
{
uchar i;
for(i=0;i<len;i++)
{
Send_byte( *(p+i));
}
}
//********READ-EEPROM********
void Read_Eeprom(void)
{
eeprom_busy_wait();
touch_lefttop_x = eeprom_read_word(0);
eeprom_busy_wait();
touch_lefttop_y = eeprom_read_word(2);
eeprom_busy_wait();
touch_rightbottom_x = eeprom_read_word(4);
eeprom_busy_wait();
touch_rightbottom_y = eeprom_read_word(6);
eeprom_busy_wait();
}
//****************************
void LJ_Zb(int *p,int *p1)
{
*p1 = *p * ratio_x +touch_lefttop_x;
*(p1+1) =(*(p +1)) * ratio_y + touch_lefttop_y;
*(p1+2) =(*(p +2)) * ratio_x + touch_lefttop_x;
*(p1+3) =(*(p +3)) * ratio_y + touch_lefttop_y;
}
//*********按键位置*******************
void Key_Wz(void)
{
LJ_Zb(KEY_LEFT,KEY_LEFT_P);
LJ_Zb(KEY_RIGH,KEY_RIGH_P);
LJ_Zb( KEY_MID,KEY_MID_P );
LJ_Zb(KEY_P16_1,KEY_P16_1P);
LJ_Zb(KEY_P16_2,KEY_P16_2P);
LJ_Zb(KEY_P16_3,KEY_P16_3P);
//
LJ_Zb(KEY_P15_1,KEY_P15_1P);
LJ_Zb(KEY_P15_2,KEY_P15_2P);
LJ_Zb(KEY_P15_3,KEY_P15_3P);
LJ_Zb(KEY_P15_4,KEY_P15_4P);
LJ_Zb(KEY_P15_5,KEY_P15_5P);
LJ_Zb(KEY_P15_6,KEY_P15_6P);
LJ_Zb(KEY_P15_7,KEY_P15_7P);
LJ_Zb(KEY_P15_8,KEY_P15_8P);
LJ_Zb(KEY_P15_9,KEY_P15_9P);
LJ_Zb(KEY_P15_0,KEY_P15_0P);
LJ_Zb(KEY_P15_c,KEY_P15_cP);
LJ_Zb(KEY_P15_q,KEY_P15_qP);
//
LJ_Zb(KEY_P6_rate,KEY_P6_rateP);
LJ_Zb(KEY_P6_press,KEY_P6_pressP);
LJ_Zb(KEY_P6_time,KEY_P6_timeP);
//
LJ_Zb(KEY_P8_flow,KEY_P8_flowP);
LJ_Zb(KEY_P8_press,KEY_P8_pressP);
//
LJ_Zb(KEY_P17_p,KEY_P17_pP);
LJ_Zb(KEY_P17_d,KEY_P17_dP);
}
//********************************
void Sc16_Tx_A_byte(uchar a)
{
Flag_Tx_A = OFF;
UART_A_DATA = a;
while( Flag_Tx_A == OFF );
}
//********************************
void Sc16_Tx_B_byte(uchar a)
{
Flag_Tx_B = OFF;
UART_B_DATA = a;
while( Flag_Tx_B == OFF);
}
//********************************
void Sc16_Init(void)
{
EICRB = 0x0f;
EIMSK = 0x30;
//A
UART_A_LCR = BTUON;
UART_A_DLL = 0X06; //19200
UART_A_DLM = 0X00;
UART_A_LCR = 0X03;
UART_A_MCR = 0X08;
UART_A_IER = 0x03;
//B
UART_B_LCR = BTUON;
UART_B_DLL = 0X0C; //9600
UART_B_DLM = 0X00;
UART_B_LCR = 0X03;
UART_B_MCR = 0x08;
UART_B_IER = 0x03;
}
//********************************
void Fa_A(uchar *p,uchar len)
{
uchar i;
for(i=0;i<len;i++)
{
Sc16_Tx_A_byte(*(p+i));
}
}
//********************************
void Fa_B(uchar *p,uchar len)
{
uchar i;
for(i=0;i<len;i++)
{
Sc16_Tx_B_byte(*(p+i));
}
}
//********************************
void Putc_Press(uchar c)
{
while( !(UCSR1A & (1<<UDRE1)) );
UDR1=c;
}
//********************************
uchar Getc_Press( void )
{
while( !(UCSR1A & (1<<RXC)));
return UDR1;
}
//********************************
void PRESS_Write(uchar *p,uchar len)
{
uchar i;
for(i=0;i<len;i++)
{
Putc_Press( *( p+i ) );
}
}
//********************************
void PRESS_Read(uchar *p,uchar len)
{
uchar i;
for(i=0;i<len;i++)
{
*(p+i) = Getc_Press();
}
}
//*******显示键盘并处理按键输入****************
void Key_board( uint16_t *p)
{
uint16_t a;
uint16_t *b;
uchar w;
b = p;
a = 0;
Disp_Pin(15);
loop15: while(Flag_Rec == OFF );
Flag_Rec = OFF;
Asc_Dig();
if((KEY_MID_P[0] <= X_Zb) && (X_Zb <= KEY_MID_P[2]) && (Y_Zb <=KEY_MID_P[1])&&(KEY_MID_P[3]<= Y_Zb))
goto over;
//
if( a <= 6553)
{
if((KEY_P15_1P[0] <= X_Zb) && (X_Zb <= KEY_P15_1P[2]) && (Y_Zb <=KEY_P15_1P[1])&&(KEY_P15_1P[3]<= Y_Zb))
{
a = a * 10 + 1;
goto XsData;
}
if((KEY_P15_2P[0] <= X_Zb) && (X_Zb <= KEY_P15_2P[2]) && (Y_Zb <=KEY_P15_2P[1])&&(KEY_P15_2P[3]<= Y_Zb))
{
a = a * 10 + 2;
goto XsData;
}
if((KEY_P15_3P[0] <= X_Zb) && (X_Zb <= KEY_P15_3P[2]) && (Y_Zb <=KEY_P15_3P[1])&&(KEY_P15_3P[3]<= Y_Zb))
{
a = a * 10 + 3;
goto XsData;
}
if((KEY_P15_4P[0] <= X_Zb) && (X_Zb <= KEY_P15_4P[2]) && (Y_Zb <=KEY_P15_4P[1])&&(KEY_P15_4P[3]<= Y_Zb))
{
a = a * 10 + 4;
goto XsData;
}
if((KEY_P15_5P[0] <= X_Zb) && (X_Zb <= KEY_P15_5P[2]) && (Y_Zb <=KEY_P15_5P[1])&&(KEY_P15_5P[3]<= Y_Zb))
{
a = a * 10 + 5;
goto XsData;
}
if( a != 6553)
{
if((KEY_P15_6P[0] <= X_Zb) && (X_Zb <= KEY_P15_6P[2]) && (Y_Zb <=KEY_P15_6P[1])&&(KEY_P15_6P[3]<= Y_Zb))
{
a = a * 10 + 6;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -