How to use TopWay Touch Screen?
- To know How to build your GUI watch this: https://www.youtube.com/watch?v=t7VGK24kyLE
- For More Information Follow Top Way Touch Screen User Guide: https://www.topwaydisplay.com/sites/default/files/2020-09/TOPWAY-Smart-TFT-LCD-Module-RGTools-user-handbook.pdf
- To simply Build Your own Project using Resistive touch Screen and Any Host MCU check this Link: https://www.topwaydisplay.com/sites/default/files/2020-06/Smart-LCD-Module-on-electronic-scale.pdf
- To connect the screen with AVR Atmega32 use "UART to RS232 Converter": https://www.codrey.com/embedded-systems/uart-serial-communication-rs232/
To interface the Screen with Atmega32 MCU :
- Setup Atmel Studio to write and compile your code.
- Create a new project and add these software drivers to your project(Touch screen -UART-Data_types)..
- check this link to download code https://github.com/taman2/HMI
- Use "Touch_Screen.h" to get commands code and functions prototypes.
- Use these commands to generate packets and save it in "TScreen_Send_Buffer".
- To Generate packet use "TScreen_Generate_VpFunctions_packet" Function.
- use "TScreen_Send_Packet" function to send command to the screen.
- To Receive screen packets use "TScreen_Receive_packet" Function.
- Touch Screen Software Driver to interface screen with AVR Atmega32 using Atmel Studio IDE For Writing & compiling the code
#include "Data_Types.h"
#include "UART.h"
#ifndef T_SCREEN_H_
#define T_SCREEN_H_
#define HAND_SHAKE ( 0x30 )
#define READ_VERSION ( 0x31 )
#define READ_PG_ID ( 0x32 )
#define T_RESPONSE ( 0x72/ 0x73/ 0x77/ 0x78/ 0x79)
#define T_RESPONSE_Normal ( 0x77 )
#define T_RESPONSE_PageID ( 0x78 )
#define SET_SYS_CONFIG ( 0xE0 )
#define SEL_PROJECT ( 0xE1 )
#define T_CALIB ( 0xE4 )
#define SCREEN_SAVER ( 0x5E )
#define BACKLIGHT_CTRL ( 0x5F )
#define BUZZER_T_SOUND ( 0x79 )
#define BUZZER_CTRL ( 0x7A )
#define FLASH_WRITE ( 0x90 )
#define FLASH_READ ( 0x91 )
#define RTC_READ ( 0x9B )
#define RTC_SET ( 0x9C )
#define USR_BIN_READ ( 0x93 )
#define U_DRV_FORMAT ( 0xE2 )
#define U_DRV_UNLOCK ( 0xE3 )
/***************Display Control Function Commands Details***************************/
#define DISP_PAGE ( 0x70 )
#define SET_ELEMENT_FG ( 0x7E )
#define SET_ELEMENT_BG ( 0x7F )
#define SET_CODEPAGE ( 0xE7 )
#define SUSPEND_VP_REFRESH ( 0xE8 )
/************VP Function Commands Details ********************************/
#define SUCCESSIVE_WRITE ( 0x82 )
#define SUCCESSIVE_READ ( 0x83 )
#define BP1_WRITE ( 0x4B )
#define BP1_WRITE_COMPRESS ( 0x4C )
#define G16_WRITE ( 0x4D )
#define G16_WRITE_ROTATE ( 0x4E )
#define SYSTEM_Register_Write ( 0x3B )
#define SYSTEM_Register_Read ( 0x3C )
#define STR_WRITE ( 0x42 )
#define STR_READ ( 0x43 )
#define STR_FILL ( 0x46 )
#define N16_WRITE ( 0x3D )
#define N16_READ ( 0x3E )
#define N16_FILL ( 0x3F )
#define N32_WRITE ( 0x44 )
#define N32_READ ( 0x45 )
#define N32_FILL ( 0x47 )
#define N64_WRITE ( 0x48 )
#define N64_READ ( 0x49 )
#define N64_FILL ( 0x4A )
#define T_SCREEN_HEADER_BYTE (0XAA)
#define T_SCREEN_TAILE_BYTE1 (0XCC)
#define T_SCREEN_TAILE_BYTE2 (0X33)
#define T_SCREEN_TAILE_BYTE3 (0XC3)
#define T_SCREEN_TAILE_BYTE4 (0X3C)
#define Packet_OK 1U
#define Packet_NOT_OK 0U
#define T_SCREEN_VAR_SIZE_1 1U
#define T_SCREEN_VAR_SIZE_2 2U
#define T_SCREEN_VAR_SIZE_4 4U
#define T_SCREEN_VAR_SIZE_8 8U
#define T_SCREEN_NO_DATA 0U
#define T_SCREEN_TOGGLE_VAR_BIT 7U
#define T_16BIT_ADDRESS (0x08)
#define T_32BIT_ADDRESS (0x02)
#define MAIN_PAGE (0x00)
#define TIMER_PAGE (0X01)
#define HOUER_METER_PAGE (0X02)
#define INITIAL_PAGE (0X03)
#define HOUER_SET_TEMPRATURE_PAGE (0X04)
#define LED_CTRL_PAGE (0x05)
#define T_SCREEN_KEY1 (0X01)
#define T_SCREEN_KEY2 (0X02)
#define T_SCREEN_KEY3 (0X03)
#define T_SCREEN_KEY4 (0X04)
#define T_SCREEN_KEY5 (0X05)
#define T_SCREEN_KEY6 (0X06)
/************************* T SCREEN SYSTEM CONFIGRATION COMMANDS ****************************/
#define T_SCREEN_TIMER_UP_COUNT 03
#define T_SCREEN_TIMER_DOWEN_COUNT 01
#define T_SCREEN_TIMER_STOP 00
/******************** SCREEN USED 16bit VARIABLS ADDRESSES ***********************************/
#define T_SCREEN_VAR16_ADDRESS0 0X00080000
#define T_SCREEN_VAR16_ADDRESS1 0X00080002
#define T_SCREEN_VAR16_ADDRESS2 0X00080004
#define T_SCREEN_VAR16_ADDRESS3 0X00080006
#define T_SCREEN_VAR16_ADDRESS4 0X00080008
#define T_SCREEN_VAR16_ADDRESS5 0X0008000A
#define T_SCREEN_VAR16_ADDRESS6 0X0008000C
#define T_SCREEN_VAR16_ADDRESS7 0X0008000E
#define T_SCREEN_VAR16_ADDRESS8 0X00080010
#define T_SCREEN_VAR16_ADDRESS9 0X00080012
#define T_SCREEN_VAR16_ADDRESS10 0X00080014
#define T_SCREEN_VAR16_ADDRESS11 0X00080016
#define T_SCREEN_VAR16_ADDRESS12 0X00080018
#define T_SCREEN_VAR16_ADDRESS13 0X0008001A
/*********************** SCREEN USED 32bit VARIABLS ADDRESSES *********************************************/
#define T_SCREEN_VAR32_ADDRESS0 0X00020000
#define T_SCREEN_VAR32_ADDRESS1 0X00020004
#define T_SCREEN_VAR32_ADDRESS2 0X00020008
#define T_SCREEN_VAR32_ADDRESS3 0X0002000C
#define T_SCREEN_VAR32_ADDRESS4 0X00020010
#define T_SCREEN_VAR32_ADDRESS5 0X00020014
/*********************** SCREEN USED TIMER VARIABLS ADDRESSES *********************************************/
#define T_SCREEN_TIM0_VAR_ADDRESS 0X0002FFE0
#define T_SCREEN_TIM1_VAR_ADDRESS 0X0002FFE4
#define T_SCREEN_TIM2_VAR_ADDRESS 0X0002FFE8
#define T_SCREEN_TIM3_VAR_ADDRESS 0X0002FFEC
#define T_SCREEN_TIM4_VAR_ADDRESS 0X0002FFF0
/*************** SCREEN USED TIMER CTR RIGISRERs VARIABLS ADDRESSES ********************************/
#define T_SCREEN_TIM0_CTR_ADDRESS 0X00FFFF00
#define T_SCREEN_TIM1_CTR_ADDRESS 0X00FFFF01
#define T_SCREEN_TIM2_CTR_ADDRESS 0X00FFFF02
#define T_SCREEN_TIM3_CTR_ADDRESS 0X00FFFF03
#define T_SCREEN_TIM4_CTR_ADDRESS 0X00FFFF04
/******************************************** SCREEN GLOBAL VARS ************************** *********************************************/
extern volatile uinteg8_t TScreen_Recived_Buffer[15];
extern volatile uinteg8_t TScreen_Send_Buffer[15];
extern volatile uinteg8_t TScreen_Recieve_Complete_Flag;
extern volatile uinteg8_t TScreen_Recived_Buffer_Index;
extern volatile uinteg8_t TScreen_Recieved_key_pressed;
extern volatile uinteg8_t TScreen_Recieved_current_Page;
extern volatile uinteg8_t TScreen_Recieve_Data__Not_Complete_Flag;
extern volatile uinteg32_t TScreen_Recived_Var_Address;
extern volatile uinteg32_t TScreen_Recived_Var_Value;
/***************************************** SCREEN MAIN FUNCTIONS ************************** *********************************************/
void TScreen_Init(void);
void TScreen_Send_Packet(volatile uinteg8_t *TScreen_sentPacket);
void TScreen_Recieve_Packet(void);
void TScreen_Generate_VpFunctions_packet(volatile uinteg8_t *Screen_packet ,uinteg8_t T_Screen_Command ,uinteg32_t T_Screen_Var_Adress
,uinteg32_t T_Screen_Var_Value, uinteg8_t T_Screen_Var_Size );
void TScreen_GenerateConfig_Status_Functions_packet( uinteg8_t *Screen_packet ,uinteg8_t T_Screen_Command , uinteg64_t T_Screen_Data_Value,
uinteg8_t T_Screen_Data_Size);
uinteg8_t TScreen_GetData_From_Recievd_Buffer(void);
void TScreen_Start_Timer(uinteg8_t Timer_Num);
void TScreen_Stop_Timer(void);
void TScreen_Read_Timer_value(uinteg8_t Timer_Num);
void TScreen_Write_Timer_value(uinteg32_t Timer_Value,uinteg8_t Timer_Num);
void TScreen_Read_Temp_value(uinteg8_t Command);
void TScreen_Write_Temp_value(float32_t Temp1,float32_t Temp2);
void TScreen_Disable_Item(uinteg32_t Item_Address);
void Send_Temprature_values_EverySec_ISR(void);
void Send_Temprature_values_EverySec(void);
void TScreen_Mian_State(void);
void TScreen_Set_Time_State(void);
void TScreen_Get_KeyPressed_From_Recievd_Buffer(void);
void TScreen_Get_Value32_From_Recievd_Buffer(void);
void TScreen_Get_Value16_From_Recievd_Buffer(void);
void TScreen_Chang_Page(uinteg8_t U8_PageNum);
void TScreen_Write_Var16(uinteg16_t U16_Value,uinteg32_t Address);
void TScreen_Write_Var32(uinteg16_t U32_Value,uinteg32_t Address);
/*
* T_SCREEN.c
*
* Created: 9/26/2020 5:32:10 PM
* Author: Mohamed Salah Taman
*/
#include "TOUCH_SCREEN.h"
#include "UART.h"
#include "avr/eeprom.h"
#include "DHT.h"
volatile uinteg8_t TScreen_Recived_Buffer[15]={0};
volatile uinteg8_t TScreen_Send_Buffer[15]={0};
volatile uinteg8_t TScreen_Recived_Command=0;
volatile uinteg32_t TScreen_Recived_Var_Address=0;
volatile uinteg32_t TScreen_Recived_Var_Value=0;
volatile uinteg8_t TScreen_Recieve_Complete_Flag=0;
volatile uinteg8_t TScreen_Recieve_Data__Not_Complete_Flag=1;
volatile uinteg8_t TScreen_Recived_Buffer_Index=0;
volatile uinteg8_t TScreen_Recieved_current_Page=0;
volatile uinteg8_t TScreen_Recieved_key_pressed=0;
/***********************FOR VP Functions*************************************************************************/
void TScreen_Generate_VpFunctions_packet(volatile uinteg8_t *Screen_packet ,uinteg8_t T_Screen_Command , uinteg32_t T_Screen_Var_Adress ,uinteg32_t T_Screen_Var_Value, uinteg8_t T_Screen_Var_Size )
{
if(T_Screen_Var_Size ==T_SCREEN_VAR_SIZE_2)
{
Screen_packet[0]=T_SCREEN_HEADER_BYTE;
Screen_packet[1]=T_Screen_Command;
Screen_packet[2]=(uinteg8_t)(T_Screen_Var_Adress>>24);
Screen_packet[3]=(uinteg8_t)(T_Screen_Var_Adress>>16);
Screen_packet[4]=(uinteg8_t)(T_Screen_Var_Adress>>8);
Screen_packet[5]=(uinteg8_t)(T_Screen_Var_Adress);
Screen_packet[6]=(uinteg8_t)(T_Screen_Var_Value>>8);
Screen_packet[7]=(uinteg8_t)(T_Screen_Var_Value);
Screen_packet[8]=(T_SCREEN_TAILE_BYTE1);
Screen_packet[9]=(T_SCREEN_TAILE_BYTE2);
Screen_packet[10]=(T_SCREEN_TAILE_BYTE3);
Screen_packet[11]=(T_SCREEN_TAILE_BYTE4);
}
else if(T_Screen_Var_Size ==T_SCREEN_VAR_SIZE_1)
{
Screen_packet[0]=T_SCREEN_HEADER_BYTE;
Screen_packet[1]=T_Screen_Command;
Screen_packet[2]=(uinteg8_t)(T_Screen_Var_Adress>>24);
Screen_packet[3]=(uinteg8_t)(T_Screen_Var_Adress>>16);
Screen_packet[4]=(uinteg8_t)(T_Screen_Var_Adress>>8);
Screen_packet[5]=(uinteg8_t)(T_Screen_Var_Adress);
Screen_packet[6]=(uinteg8_t)(T_Screen_Var_Value);
Screen_packet[7]=(T_SCREEN_TAILE_BYTE1);
Screen_packet[8]=(T_SCREEN_TAILE_BYTE2);
Screen_packet[9]=(T_SCREEN_TAILE_BYTE3);
Screen_packet[10]=(T_SCREEN_TAILE_BYTE4);
}
else if(T_Screen_Var_Size ==T_SCREEN_VAR_SIZE_4)
{
Screen_packet[0]=T_SCREEN_HEADER_BYTE;
Screen_packet[1]=T_Screen_Command;
Screen_packet[2]=(uinteg8_t)(T_Screen_Var_Adress>>24);
Screen_packet[3]=(uinteg8_t)(T_Screen_Var_Adress>>16);
Screen_packet[4]=(uinteg8_t)(T_Screen_Var_Adress>>8);
Screen_packet[5]=(uinteg8_t)(T_Screen_Var_Adress);
Screen_packet[6]=(uinteg8_t)(T_Screen_Var_Value>>24);
Screen_packet[7]=(uinteg8_t)(T_Screen_Var_Value>>16);
Screen_packet[8]=(uinteg8_t)(T_Screen_Var_Value>>8);
Screen_packet[9]=(uinteg8_t)(T_Screen_Var_Value);
Screen_packet[10]=(T_SCREEN_TAILE_BYTE1);
Screen_packet[11]=(T_SCREEN_TAILE_BYTE2);
Screen_packet[12]=(T_SCREEN_TAILE_BYTE3);
Screen_packet[13]=(T_SCREEN_TAILE_BYTE4);
}
else if(T_Screen_Var_Size ==T_SCREEN_NO_DATA)
{
Screen_packet[0]=T_SCREEN_HEADER_BYTE;
Screen_packet[1]=T_Screen_Command;
Screen_packet[2]=(uinteg8_t)(T_Screen_Var_Adress>>24);
Screen_packet[3]=(uinteg8_t)(T_Screen_Var_Adress>>16);
Screen_packet[4]=(uinteg8_t)(T_Screen_Var_Adress>>8);
Screen_packet[5]=(uinteg8_t)(T_Screen_Var_Adress);
Screen_packet[6]=(T_SCREEN_TAILE_BYTE1);
Screen_packet[7]=(T_SCREEN_TAILE_BYTE2);
Screen_packet[8]=(T_SCREEN_TAILE_BYTE3);
Screen_packet[9]=(T_SCREEN_TAILE_BYTE4);
}
else if(T_Screen_Var_Size ==T_SCREEN_TOGGLE_VAR_BIT)
{
Screen_packet[0]=T_SCREEN_HEADER_BYTE;
Screen_packet[1]=T_Screen_Command;
Screen_packet[2]=(uinteg8_t)(T_Screen_Var_Adress>>24);
Screen_packet[3]=(uinteg8_t)(T_Screen_Var_Adress>>16);
Screen_packet[4]=(uinteg8_t)(T_Screen_Var_Adress>>8);
Screen_packet[5]=(uinteg8_t)(T_Screen_Var_Adress);
Screen_packet[6]=(uinteg8_t)(T_Screen_Var_Value);
Screen_packet[7]=(T_SCREEN_TAILE_BYTE1);
Screen_packet[8]=(T_SCREEN_TAILE_BYTE2);
Screen_packet[9]=(T_SCREEN_TAILE_BYTE3);
Screen_packet[10]=(T_SCREEN_TAILE_BYTE4);
}
}
void TScreen_GenerateConfig_Status_Functions_packet( uinteg8_t *Screen_packet ,uinteg8_t T_Screen_Command , uinteg64_t T_Screen_Data_Value,uinteg8_t T_Screen_Data_Size)
{
if(T_Screen_Data_Size ==T_SCREEN_NO_DATA)
{
Screen_packet[0]=T_SCREEN_HEADER_BYTE;
Screen_packet[1]=T_Screen_Command;
Screen_packet[2]=(T_SCREEN_TAILE_BYTE1);
Screen_packet[3]=(T_SCREEN_TAILE_BYTE2);
Screen_packet[4]=(T_SCREEN_TAILE_BYTE3);
Screen_packet[5]=(T_SCREEN_TAILE_BYTE4);
}
else if(T_Screen_Data_Size ==T_SCREEN_VAR_SIZE_4)
{
Screen_packet[0]=T_SCREEN_HEADER_BYTE;
Screen_packet[1]=T_Screen_Command;
Screen_packet[2]=(uinteg8_t)(T_Screen_Data_Value>>24);
Screen_packet[3]=(uinteg8_t)(T_Screen_Data_Value>>16);
Screen_packet[4]=(uinteg8_t)(T_Screen_Data_Value>>8);
Screen_packet[5]=(uinteg8_t)(T_Screen_Data_Value);
Screen_packet[6]=(T_SCREEN_TAILE_BYTE1);
Screen_packet[7]=(T_SCREEN_TAILE_BYTE2);
Screen_packet[8]=(T_SCREEN_TAILE_BYTE3);
Screen_packet[9]=(T_SCREEN_TAILE_BYTE4);
}
else if(T_Screen_Data_Size ==T_SCREEN_VAR_SIZE_2)
{
Screen_packet[0]=T_SCREEN_HEADER_BYTE;
Screen_packet[1]=T_Screen_Command;
Screen_packet[2]=(uinteg8_t)(T_Screen_Data_Value>>8);
Screen_packet[3]=(uinteg8_t)(T_Screen_Data_Value);
Screen_packet[4]=(T_SCREEN_TAILE_BYTE1);
Screen_packet[5]=(T_SCREEN_TAILE_BYTE2);
Screen_packet[6]=(T_SCREEN_TAILE_BYTE3);
Screen_packet[7]=(T_SCREEN_TAILE_BYTE4);
}
else if(T_Screen_Data_Size ==T_SCREEN_VAR_SIZE_1)
{
Screen_packet[0]=T_SCREEN_HEADER_BYTE;
Screen_packet[1]=T_Screen_Command;
Screen_packet[2]=(uinteg8_t)(T_Screen_Data_Value);
Screen_packet[3]=(T_SCREEN_TAILE_BYTE1);
Screen_packet[4]=(T_SCREEN_TAILE_BYTE2);
Screen_packet[5]=(T_SCREEN_TAILE_BYTE3);
Screen_packet[6]=(T_SCREEN_TAILE_BYTE4);
}
else if(T_Screen_Data_Size ==7)
{
Screen_packet[0]=T_SCREEN_HEADER_BYTE;
Screen_packet[1]=T_Screen_Command;
Screen_packet[2]=(uinteg8_t)(T_Screen_Data_Value>>48);
Screen_packet[3]=(uinteg8_t)(T_Screen_Data_Value>>40);
Screen_packet[4]=(uinteg8_t)(T_Screen_Data_Value>>32);
Screen_packet[5]=(uinteg8_t)(T_Screen_Data_Value>>24);
Screen_packet[6]=(uinteg8_t)(T_Screen_Data_Value>>16);
Screen_packet[7]=(uinteg8_t)(T_Screen_Data_Value>>8);
Screen_packet[8]=(uinteg8_t)(T_Screen_Data_Value);
Screen_packet[9]=(T_SCREEN_TAILE_BYTE1);
Screen_packet[10]=(T_SCREEN_TAILE_BYTE2);
Screen_packet[11]=(T_SCREEN_TAILE_BYTE3);
Screen_packet[12]=(T_SCREEN_TAILE_BYTE4);
}
}
void TScreen_Send_Packet(volatile uinteg8_t *TScreen_sentPacket){
USART_Send_Packet(TScreen_sentPacket,T_SCREEN_TAILE_BYTE4);
}
void TScreen_Recieve_Packet(void)
{
USART_Receive_Byte_Iterrupt(&TScreen_Recived_Buffer[TScreen_Recived_Buffer_Index]);
TScreen_Recieve_Data__Not_Complete_Flag=1;
if(TScreen_Recived_Buffer[0]== T_SCREEN_HEADER_BYTE)
{
if(TScreen_Recived_Buffer[TScreen_Recived_Buffer_Index]!= T_SCREEN_TAILE_BYTE4)
{
TScreen_Recived_Buffer_Index++;
}
else
{
TScreen_Recived_Buffer_Index=0;
TScreen_Recieve_Complete_Flag=1;
TScreen_Recieve_Data__Not_Complete_Flag=0;
}
}
else
{
TScreen_Recived_Buffer_Index=0;
TScreen_Recieve_Complete_Flag=1;
TScreen_Recieve_Data__Not_Complete_Flag=0;
}
}
uinteg8_t TScreen_GetData_From_Recievd_Buffer(void)
{
if(TScreen_Recived_Buffer[0]==T_SCREEN_HEADER_BYTE &&TScreen_Recived_Buffer[1] ==T_RESPONSE_Normal &&TScreen_Recived_Buffer[3]==T_16BIT_ADDRESS)
{
TScreen_Recived_Var_Address=TScreen_Recived_Buffer[2];
TScreen_Recived_Var_Address=(TScreen_Recived_Var_Address<<8);
TScreen_Recived_Var_Address|=TScreen_Recived_Buffer[3];
TScreen_Recived_Var_Address=(TScreen_Recived_Var_Address<<8);
TScreen_Recived_Var_Address|=TScreen_Recived_Buffer[4];
TScreen_Recived_Var_Address=(TScreen_Recived_Var_Address<<8);
TScreen_Recived_Var_Address|=TScreen_Recived_Buffer[5];
TScreen_Recived_Var_Value=TScreen_Recived_Buffer[6];
TScreen_Recived_Var_Value=(TScreen_Recived_Var_Value<<8);
TScreen_Recived_Var_Value|=TScreen_Recived_Buffer[7];
TScreen_Recieve_Complete_Flag=0;
return 1;
}
else if(TScreen_Recived_Buffer[0]==T_SCREEN_HEADER_BYTE &&TScreen_Recived_Buffer[1] ==T_RESPONSE_Normal &&TScreen_Recived_Buffer[3]==T_32BIT_ADDRESS)
{
TScreen_Recived_Var_Address=TScreen_Recived_Buffer[2];
TScreen_Recived_Var_Address=(TScreen_Recived_Var_Address<<8);
TScreen_Recived_Var_Address|=TScreen_Recived_Buffer[3];
TScreen_Recived_Var_Address=(TScreen_Recived_Var_Address<<8);
TScreen_Recived_Var_Address|=TScreen_Recived_Buffer[4];
TScreen_Recived_Var_Address=(TScreen_Recived_Var_Address<<8);
TScreen_Recived_Var_Address|=TScreen_Recived_Buffer[5];
TScreen_Recived_Var_Value=TScreen_Recived_Buffer[6];
TScreen_Recived_Var_Value=(TScreen_Recived_Var_Value<<8);
TScreen_Recived_Var_Value|=TScreen_Recived_Buffer[7];
TScreen_Recived_Var_Value=(TScreen_Recived_Var_Value<<8);
TScreen_Recived_Var_Value|=TScreen_Recived_Buffer[8];
TScreen_Recived_Var_Value=(TScreen_Recived_Var_Value<<8);
TScreen_Recived_Var_Value|=TScreen_Recived_Buffer[9];
TScreen_Recieve_Complete_Flag=0;
return 1;
}
else if(TScreen_Recived_Buffer[0]==T_SCREEN_HEADER_BYTE &&TScreen_Recived_Buffer[1]
==T_RESPONSE_PageID)
{
TScreen_Recieved_current_Page=TScreen_Recived_Buffer[3];
TScreen_Recieved_key_pressed=TScreen_Recived_Buffer[4];
TScreen_Recieve_Complete_Flag=0;
return 1;
}
else if(TScreen_Recived_Buffer[0]==T_SCREEN_HEADER_BYTE &&TScreen_Recived_Buffer[1]==READ_PG_ID )
{
TScreen_Recieved_current_Page=TScreen_Recived_Buffer[3];
TScreen_Recieved_key_pressed=0;
TScreen_Recieve_Complete_Flag=0;
return 1;
}
else if(TScreen_Recived_Buffer[0]==T_SCREEN_HEADER_BYTE &&TScreen_Recived_Buffer[1]==N32_READ)
{
TScreen_Recived_Var_Value=TScreen_Recived_Buffer[2];
TScreen_Recived_Var_Value=(TScreen_Recived_Var_Value<<8);
TScreen_Recived_Var_Value|=TScreen_Recived_Buffer[3];
TScreen_Recived_Var_Value=(TScreen_Recived_Var_Value<<8);
TScreen_Recived_Var_Value|=TScreen_Recived_Buffer[4];
TScreen_Recived_Var_Value=(TScreen_Recived_Var_Value<<8);
TScreen_Recived_Var_Value|=TScreen_Recived_Buffer[5];
TScreen_Recieve_Complete_Flag=0;
}
else
{
TScreen_Recieve_Complete_Flag=0;
}
return 0;
}
void TScreen_Get_KeyPressed_From_Recievd_Buffer(void)
{
if(TScreen_Recived_Buffer[0]==T_SCREEN_HEADER_BYTE &&TScreen_Recived_Buffer[1] ==T_RESPONSE_PageID)
{
TScreen_Recieved_current_Page=TScreen_Recived_Buffer[3];
TScreen_Recieved_key_pressed=TScreen_Recived_Buffer[4];
TScreen_Recieve_Complete_Flag=0;
}
else
{
TScreen_Recieve_Complete_Flag=0;
}
}
void TScreen_Get_Value32_From_Recievd_Buffer(void)
{
if(TScreen_Recived_Buffer[0]==T_SCREEN_HEADER_BYTE &&TScreen_Recived_Buffer[1]==N32_READ)
{
TScreen_Recived_Var_Value=TScreen_Recived_Buffer[2];
TScreen_Recived_Var_Value=(TScreen_Recived_Var_Value<<8);
TScreen_Recived_Var_Value|=TScreen_Recived_Buffer[3];
TScreen_Recived_Var_Value=(TScreen_Recived_Var_Value<<8);
TScreen_Recived_Var_Value|=TScreen_Recived_Buffer[4];
TScreen_Recived_Var_Value=(TScreen_Recived_Var_Value<<8);
TScreen_Recived_Var_Value|=TScreen_Recived_Buffer[5];
TScreen_Recieve_Complete_Flag=0;
}
else
{
TScreen_Recieve_Complete_Flag=0;
}
}
void TScreen_Get_Value16_From_Recievd_Buffer(void)
{
if(TScreen_Recived_Buffer[0]==T_SCREEN_HEADER_BYTE &&TScreen_Recived_Buffer[1]==N16_READ)
{
TScreen_Recived_Var_Value=0x00;
TScreen_Recived_Var_Value=(TScreen_Recived_Var_Value<<8);
TScreen_Recived_Var_Value|=0x00;
TScreen_Recived_Var_Value=(TScreen_Recived_Var_Value<<8);
TScreen_Recived_Var_Value|=TScreen_Recived_Buffer[2];
TScreen_Recived_Var_Value=(TScreen_Recived_Var_Value<<8);
TScreen_Recived_Var_Value|=TScreen_Recived_Buffer[3];
TScreen_Recieve_Complete_Flag=0;
}
else
{
TScreen_Recieve_Complete_Flag=0;
}
}
void TScreen_Start_Timer(uinteg8_t Timer_Num)
{
switch(Timer_Num)
{
case(0):
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,SYSTEM_Register_Write,T_SCREEN_TIM0_CTR_ADDRESS,T_SCREEN_TIMER_DOWEN_COUNT,T_SCREEN_VAR_SIZE_1);
TScreen_Send_Packet(TScreen_Send_Buffer);
break;
case(1):
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,SYSTEM_Register_Write,T_SCREEN_TIM1_CTR_ADDRESS,T_SCREEN_TIMER_UP_COUNT,T_SCREEN_VAR_SIZE_1);
TScreen_Send_Packet(TScreen_Send_Buffer);
break;
case(2):
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,SYSTEM_Register_Write,T_SCREEN_TIM2_CTR_ADDRESS,T_SCREEN_TIMER_UP_COUNT,T_SCREEN_VAR_SIZE_1);
TScreen_Send_Packet(TScreen_Send_Buffer);
break;
case(3):
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,SYSTEM_Register_Write,T_SCREEN_TIM3_CTR_ADDRESS,T_SCREEN_TIMER_UP_COUNT,T_SCREEN_VAR_SIZE_1);
TScreen_Send_Packet(TScreen_Send_Buffer);
break;
}
}
void TScreen_Stop_Timer()
{
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,SYSTEM_Register_Write,T_SCREEN_TIM0_CTR_ADDRESS,T_SCREEN_TIMER_STOP,T_SCREEN_VAR_SIZE_1);
TScreen_Send_Packet(TScreen_Send_Buffer);
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,SYSTEM_Register_Write,T_SCREEN_TIM1_CTR_ADDRESS,T_SCREEN_TIMER_STOP,T_SCREEN_VAR_SIZE_1);
TScreen_Send_Packet(TScreen_Send_Buffer);
}
void TScreen_Read_Timer_value(uinteg8_t Timer_Num)
{
switch(Timer_Num)
{
case(0):
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,N32_READ,T_SCREEN_TIM0_VAR_ADDRESS,T_SCREEN_NO_DATA,T_SCREEN_NO_DATA);
TScreen_Send_Packet(TScreen_Send_Buffer);
break;
case(1):
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,N32_READ,T_SCREEN_TIM1_VAR_ADDRESS,T_SCREEN_NO_DATA,T_SCREEN_NO_DATA);
TScreen_Send_Packet(TScreen_Send_Buffer);
break;
case(2):
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,N32_READ,T_SCREEN_TIM2_VAR_ADDRESS,T_SCREEN_NO_DATA,T_SCREEN_NO_DATA);
TScreen_Send_Packet(TScreen_Send_Buffer);
break;
case(3):
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,N32_READ,T_SCREEN_TIM3_VAR_ADDRESS,T_SCREEN_NO_DATA,T_SCREEN_NO_DATA);
TScreen_Send_Packet(TScreen_Send_Buffer);
break;
}
}
void TScreen_Write_Timer_value(uinteg32_t Timer_Value,uinteg8_t Timer_Num)
{
switch(Timer_Num)
{
case(0):
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,N32_WRITE,T_SCREEN_TIM0_VAR_ADDRESS,Timer_Value,T_SCREEN_VAR_SIZE_4);
TScreen_Send_Packet(TScreen_Send_Buffer);
break;
case(1):
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,N32_WRITE,T_SCREEN_TIM1_VAR_ADDRESS,Timer_Value,T_SCREEN_VAR_SIZE_4);
TScreen_Send_Packet(TScreen_Send_Buffer);
break;
case(2):
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,N32_WRITE,T_SCREEN_TIM2_VAR_ADDRESS,Timer_Value,T_SCREEN_VAR_SIZE_4);
TScreen_Send_Packet(TScreen_Send_Buffer);
break;
case(3):
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,N32_WRITE,T_SCREEN_TIM3_VAR_ADDRESS,Timer_Value,T_SCREEN_VAR_SIZE_4);
TScreen_Send_Packet(TScreen_Send_Buffer);
break;
}
}
void TScreen_Disable_Item(uinteg32_t Item_Address){
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,N16_WRITE,Item_Address,(uinteg16_t)0x0000,T_SCREEN_VAR_SIZE_2);
TScreen_Send_Packet(TScreen_Send_Buffer);
}
void TScreen_Enable_Item(uinteg32_t Item_Address){
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,N16_WRITE,Item_Address,(uinteg16_t)0x0001,T_SCREEN_VAR_SIZE_2);
TScreen_Send_Packet(TScreen_Send_Buffer);
}
void TScreen_Chang_Page(uinteg8_t U8_PageNum)
{
TScreen_GenerateConfig_Status_Functions_packet(TScreen_Send_Buffer,DISP_PAGE,(uinteg64_t)U8_PageNum,T_SCREEN_VAR_SIZE_2);
TScreen_Send_Packet(TScreen_Send_Buffer);
}
void TScreen_Write_Var16(uinteg16_t U16_Value,uinteg32_t Address)
{
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,N16_WRITE,Address,(uinteg16_t)U16_Value,T_SCREEN_VAR_SIZE_2);
TScreen_Send_Packet(TScreen_Send_Buffer);
}
void TScreen_Write_Var32(uinteg16_t U32_Value,uinteg32_t Address)
{
TScreen_Generate_VpFunctions_packet(TScreen_Send_Buffer,N32_WRITE,Address,(uinteg16_t)U32_Value,T_SCREEN_VAR_SIZE_4);
TScreen_Send_Packet(TScreen_Send_Buffer);
}