گھر > خبریں > مواد

FT_App_Clocks

May 06, 2019

/ *

# stdio.h> شامل کریں

# Arduino.h> شامل کریں

#EEPROM.h> شامل کریں

# SPI.h> شامل کریں

# avr / pgmspace.h> شامل کریں

* /

/ * # شامل ہیں "FT_Platform.h"

"FT_Hal_SPI.cpp" شامل کریں

# Fclude "FT_CoPro_Cmds.cpp"

* /


<وائر.h> شامل کریں


# Fclude "FT_Platform.h"

"FT_Hal_I2C.h" شامل کریں



# نمونہ SAMAPP_DELAY_BTW_APIS (1000)

#deafine SAMAPP_ENABLE_DELAY () Ft_Gpu_Hal_Sleep (SAMAPP_DELAY_BTW_APIS)

# ڈیفالٹ SAMAPP_ENABLE_DELAY_VALUE (ایکس) Ft_Gpu_Hal_Sleep (ایکس)


/ * ڈسپلے قرارداد کے لئے عالمی متغیر مختلف ڈسپلے پینل کی حمایت کرنے کے لئے * /


ft_int16_t FT_DispWidth = 480؛

ft_int16_t FT_DisHighight = 272؛

ft_int16_t FT_DispHCycle = 548؛

ft_int16_t FT_DispHoffset = 43؛

ft_int16_t FT_DispHSync0 = 0؛

ft_int16_t FT_DispHSync1 = 41؛

ft_int16_t FT_DispVCycle = 292؛

ft_int16_t FT_DispVOffset = 12؛

ft_int16_t FT_DispVSync0 = 0؛

ft_int16_t FT_DispVSync1 = 10؛

ft_uint8_t FT_DispPCLK = 5؛

ft_char8_t FT_DispSwizzle = 0؛

ft_char8_t FT_DisPCLKPol = 1؛


# DISPLAY_QVGA ڈسپلے کریں


#define ON 1

# بند آف 0

#define فونٹ 27 // حرف کا سائز

# مزید MAX_LINES 4 // زیادہ سے زیادہ لائنوں کو ظاہر کرنے کی اجازت دیتا ہے


# ڈیفینس SPECIAL_FUN 251

#define BACK_SPACE 251 // واپس جگہ

#define CAPS_LOCK 252 // کیپس لاک

#define NUMBER_LOCK 253 // نمبر لاک

# ڈیفائن بیک 254 // باہر نکلیں


#define LINE_STARTPOS FT_DispWidth / 50 // لائن کا آغاز

#define LINE_ENDPOS FT_DispWidth // لائن کی زیادہ سے زیادہ لمبائی


/ * عالمی بفر اصلاح کے لئے استعمال کیا جاتا ہے * /

Ft_Gpu_Hal_Context_t میزبان، * phost؛



ft_uint32_t Ft_CmdBuffer_Index؛

ft_uint32_t Ft_DlBuffer_Index؛


# بذریعہ BUFFER_OPTIMIZATION

ft_uint8_t Ft_DlBuffer [FT_DL_SIZE]؛

ft_uint8_t Ft_CmdBuffer [FT_CMD_FIFO_SIZE]؛

#ختم کرو اگر


ft_void_t فیلڈ

{

# بذریعہ BUFFER_OPTIMIZATION

/ * بفر میں حکم ہدایت کاپی کریں *

ft_uint32_t * pBuffcmd؛

pBuffcmd = (ft_uint32_t *) اور Ft_CmdBuffer [Ft_CmdBuffer_Index]؛

* pBuffcmd = cmd؛

#ختم کرو اگر

#ifdef ARDUINO_PLATFORM

Ft_Gpu_Hal_WrCmd32 (فوسٹ، سی ایم ڈی)؛

#ختم کرو اگر

/ * کمانڈ انڈیکس میں اضافہ * /

Ft_CmdBuffer_Index + = FT_CMD_SIZE؛

}


ft_void_t Ft_App_WrDlCmd_Buffer (Ft_Gpu_Hal_Context_t * phost، ft_uint32_t cmd)

{

# بذریعہ BUFFER_OPTIMIZATION

/ * بفر میں حکم ہدایت کاپی کریں *

ft_uint32_t * pBuffcmd؛

pBuffcmd = (ft_uint32_t *) اور Ft_DlBuffer [Ft_DlBuffer_Index]؛

* pBuffcmd = cmd؛

#ختم کرو اگر


#ifdef ARDUINO_PLATFORM

Ft_Gpu_Hal_Wr32 (فوسٹ، (RAM_DL + Ft_DlBuffer_Index)، سینٹیڈی)؛

#ختم کرو اگر

/ * کمانڈ انڈیکس میں اضافہ * /

Ft_DlBuffer_Index + = FT_CMD_SIZE؛

}


ft_void_t فیلڈ

{

# بذریعہ BUFFER_OPTIMIZATION

ft_uint16_t لمبائی = 0؛

لمبائی = strlen (s) + 1؛ // آخری ختم کے لئے آخری

strcpy (& Ft_CmdBuffer [Ft_CmdBuffer_Index]، s)؛


/ * لمبائی میں اضافہ اور 4 بائٹس کی طرف سے اسے سیدھ کریں /

Ft_CmdBuffer_Index + = ((لمبائی + 3) اور ~ 3)؛

#ختم کرو اگر

}


ft_void_t فیٹآپ فلاش ڈیل بوفر (Ft_Gpu_Hal_Context_t * phost)

{

# بذریعہ BUFFER_OPTIMIZATION

اگر (Ft_DlBuffer_Index> 0)

Ft_Gpu_Hal_WrMem (فوسٹ، RAM_DL، Ft_DlBuffer، Ft_DlBuffer_Index)؛

#ختم کرو اگر

Ft_DlBuffer_Index = 0؛

}


ft_void_t فیٹآپ فلاش کیو بوفر (Ft_Gpu_Hal_Context_t * phost)

{

# بذریعہ BUFFER_OPTIMIZATION

اگر (Ft_CmdBuffer_Index> 0)

Ft_Gpu_Hal_WrCmdBuf (فوسٹ، Ft_CmdBuffer، Ft_CmdBuffer_Index)؛

#ختم کرو اگر

Ft_CmdBuffer_Index = 0؛

}


/ * API سے 100 سے 0 * ڈسپلے PWM کو تبدیل کرکے فیڈ آؤٹ اثر دینے کے لئے API

ft_void_t SAMAPP_fadeout ()

{

ft_int32_t میں؛

کے لئے (i = 100؛ i> = 0؛ i - = 3)

{

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_PWM_DUTY، i)؛


Ft_Gpu_Hal_Sleep (2)؛ // 2 MS کے لئے نیند

}

}


* ڈسپلے PWM 0 سے 100 تک تبدیل کرکے آخر میں 128 * /

ft_void_t SAMAPP_fadein ()

{

ft_int32_t میں؛

کے لئے (i = 0؛ i <= 100؛="" i="" +="">

{

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_PWM_DUTY، i)؛

Ft_Gpu_Hal_Sleep (2)؛ // 2 MS کے لئے نیند

}

/ * آخر میں پی ڈبلیو ایم 100٪ * /

i = 128؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_PWM_DUTY، i)؛

}


# نمونہ SAMAPP_ENABLE_APIS_SET0


/ * گناہ اور کاسم ٹیبل کی مرضی کے مطابق عمل درآمد - صحت سے متعلق 16 بٹ * /

FT_PROGMEM ft_prog_uint16_t sintab [] = {

0، 402، 804، 1206، 1607، 2009، 2410، 2811، 3211، 3611، 4011، 4409، 4807، 5205، 5601، 5997، 6392،

6786، 7179، 7571، 7961، 8351، 8739، 9126، 9511، 9895، 10278، 10659، 11038، 11416، 11792، 12166، 12539،

12909، 13278، 13645، 14009، 14372، 14732، 15090، 15446، 15799، 16150، 16499، 16845، 17189، 17530، 17868،

18204، 18537، 18867، 19194، 19519، 19840، 2015 9، 20474، 20787، 21096، 21402، 21705، 22004، 22301، 22594،

22883، 23169، 23452، 23731، 24006، 24578، 24811، 25072، 25329، 25582، 25831، 26077، 26318، 26556، 26789،

27019، 27244، 27466، 27683، 27896، 28105، 28309، 28510، 28706، 28897، 29068، 29268، 29446، 29621، 29790، 29 955،

30116، 30272، 30424، 30571، 30713، 30851، 30 984، 31113، 31236، 31356، 31470، 31580، 31684، 31785، 31880، 31 970،

32056، 32137، 32284، 32350، 32412، 32468، 32520، 32567، 32609، 32646، 32678، 32705، 32727، 32744، 32757،

32764، 32767، 32764}؛



ft_int16_t SAMAPP_qsin (ft_uint16_t a)

{

ft_uint8_t f؛

ft_int16_t s0، s1؛


اگر (ایک اور 32768)

واپسی - ایس اے اے پی پی_قسن (ایک & 32767)؛

اگر (ایک اور 16384)

ایک = 32768 - ایک؛

f = a & 127؛

s0 = ft_pgm_read_word (sintab + (a >> 7))؛

s1 = ft_pgm_read_word (sintab + (a >> 7) + 1)؛

واپسی (s0 + ((ft_int32_t) f * (s1 - s0) >> 7))؛

}


/ * کاسمیٹریشن * /

ft_int16_t SAMAPP_qcos (ft_uint16_t a)

{

واپسی (SAMAPP_qsin (ایک + 16384))؛

}

#ختم کرو اگر


/ * API پچھلے DLSWAP کی حیثیت کو چیک کرنے اور نئے ڈی ایل کے DLSWAP انجام دینے کے لئے API * /

/ * پچھلے DLSWAP کی حیثیت کے لئے چیک کریں اور اگر ابھی تک کچھ ایم ایس کے لئے انتظار نہیں کیا جائے اور پھر دوبارہ چیک کریں * /

ft_void_t SAMAPP_GPU_DLSwap (ft_uint8_t DL_Swap_Type)

{

ft_uint8_t سویپ ٹائپ = DLSWAP_FRAME، Swap_Done = DLSWAP_FRAME؛


اگر (DL_Swap_Type == DLSWAP_LINE)

{

سویپ ٹائپ = DLSWAP_LINE؛

}


/ * ایک نئی ڈی ایل سویپ کو انجام دیں * /

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_DLSWAP، سویپ ٹائپ)؛


/ * دیر تک تک پہنچتے رہیں *

جبکہ (Swap_Done)

{

Swap_Done = Ft_Gpu_Hal_Rd8 (phost، REG_DLSWAP)؛


اگر (DLSWAP_DONE! = Swap_Done)

{

Ft_Gpu_Hal_Sleep (10)؛ // 10ms کے لئے انتظار

}

}

}


/ ************************************************* **************************** /

/ * مختلف رنگوں کے ساتھ مختلف آفسیٹ پر چند پوائنٹس کو ظاہر کرنے کے لئے مثال کے کوڈ * /




/ * FT800 کے بعد بوٹ اپ کے بعد گرافکس پرائمری نمونے کیس * /

/ * ابتدائی بوٹ اپ ڈی ایل - پس منظر سبز رنگ بنانا * /


const ft_uint8_t FT_DLCODE_BOOTUP [12] =

{

255،255،255،2، // GPU ہدایات CLEAR_COLOR_RGB

7،0،0،38، // GPU ہدایت کلید

0،0،0،0، // GPU ہدایت DISPLAY


/ * خرابی شبیہیں * /

مستحکم فو_یوٹ 8_t home_star_icon [] = {0x78،0x9C، 0xE5،0x94،0xBF، 0x4E، 0xC2،0x40،0x1C، 0xC7،0x7F، 0x2D، 0x04،0x8B، 0x20،0x45،0x76،0x14،0x67،0xA3،0xF1،0x0D ، 0x64،0x75،0xD2،0x डी 5،0x09،0x27،0x17،0x13،0xE1،0x0D، 0xE4،0x0D، 0x78،0x04،0x98،0x5 डी، 0x30،0x26،0x0E، 0x4A، 0xA2،0x3E، 0x82،0x0E، 0x8E ، 0x82،0xC1،0x38،0x62،0x51،0x0C، 0x0A، 0x42،0x7F، 0xDE، 0xB5،0x77،0xB4،0x77،0x17،0x28،0x21،0x26،0x46،0xFD، 0x26،0xCD، 0xE5،0xD3،0x7C ، 0xFB، 0xBB، 0xFB، 0xFD، 0xB9،0x02،0xCC، 0xA4،0xE8،0x99،0x80،0x61،0xC4،0x8A، 0x9F، 0xCB، 0x6F، 0x31،0x3B، 0xE3،0x61،0x7A، 0x98،0x61،0xC ، 0x37،0xF6،0xFC، 0xC8،0xDD، 0x45،0x00،0xDD، 0xBA، 0xC4،0x77،0xE6،0xEE، 0x40،0xEC، 0x0E، 0xE6،0x91،0xF1،0xD2،0x00،0x42،0x34،0x5E، 0xCE ، 0xE5،0x08،0x16،0xA0،0x84،0x68،0x67،0x B4،0x86،0xC3،0x ڈی 5،0x26،0x2C، 0x20،0x51،0x17،0xA2،0xB8،0x03،0xB0،0xFE، 0x49،0x ڈی ڈی، 0x54،0x15 ، 0xD8،0xEE، 0x73،0x11،0x 9.0x 9 डी، 0xD4،0x1A، 0xB7،0xA5،0x26،0xC4،0x91،0xA9،0x0B، 0x06،0xEE، 0x72،0xB7،0xFB، 0xC5،0x16،0x80،0xE9،0xF1 ، 0x07،0x8 ڈی، 0x3F، 0x15،0x5F، 0x1C، 0x0B، 0xFC، 0x0A، 0x90،0xF0،0xF3،0x09،0xA9،0x90،0xC4،0xC6،0x37،0xB0،0x93،0x BF، 0xE1،0x71،0x ڈی بی، 0xA9،0xD7،0x41،0xAD، 0x46،0xEA، 0x19،0xA9،0xD5،0xCE، 0x93،0x B3،0x35،0x73،0x0A، 0x69،0x59،0x91،0xC3،0x0F، 0x22، 0x1B، 0x1D، 0x91،0x13،0x3 ڈی، 0x91،0x73،0x43،0xF1،0x6C، 0x55،0xDA، 0x3A، 0x4F، 0xBA، 0x25،0xCE، 0x4F، 0x04،0xF1،0xC5،0xCF، 0x71،0xDA، 0x3C، 0xD7،0xB9،0xB2،0x48،0x B4،0x89،0x38،0x20،0x4B، 0x2A، 0x5،0x0C، 0xD5،0xEF، 0x5B، 0xAD، 0x96،0x45،0x8A، 0x41،0x96،0x7A، 0x1F، 0x60،0x0D، 0x7D، 0x22،0x75،0x82،0x2B، 0x0F، 0xFB، 0xCE، 0x51،0x3D، 0x2E، 0x3A، 0x21،0xF3،0x1C، 0xD9،0x38،0x86،0x2C، 0xC6،0x05،0xB6،0x7B، 0x9A، 0x8F، 0x0F، 0x97،0x1B، 0x72،0x6F، 0x1C، 0xEB، 0xAE، 0xFF، 0xDA، 0x97،0x0D، 0xBA، 0x43،0x32،0xCA، 0x66،0x34،0x3D، 0x54،0xCB، 0x24،0x9B، 0x43،0xF2، 0x70،0x3E، 0x42،0x بی بی، 0xA0،0x95،0x11،0x37،0x46،0xE1،0x4F، 0x49،0xC5،0x1B، 0xFC، 0x3C، 0x3A، 0x3E، 0xD1،0x65،0x0E، 0x6F، 0x58،0xF8،0xE، 0x5B، 0xDB، 0x55،0xB6،0x41،0x34،0xCB، 0xBE، 0xDB، 0xA9،0xD،0،085،0x6B، 0xB3،0x17،0x9C، 0x61،0x0C، 0x9B، 0xA2،0x5D، 0x61،0x10، 0xED، 0x2A، 0x9B، 0xA2،0x5D، 0x61،0x10،0xED، 0x2A، 0x9، 0xA2،0x5D، 0x61،0x10،0xED، 0x2A، 0x9B، 0xED، 0xC9،0xFC، 0xDF، 0x14،0x54،0x8F، 0x80، 0x 7A، 0x06،0xF5،0x23،0xA0،0x9F، 0x41،0xF3،0x10،0x30،0x4F، 0x41،0xF3،0x18،0x30،0xCF، 0xCA، 0xFC، 0xFF، 0x35،0xC9،0x79،0xC9،0x89،0xFA، 0x33،0xD7،0x1D، 0xF6،0x5E، 0x84،0x5C، 0x56،0x6E، 0xA7،0xDA، 0x1، 0xF9،0xFA، 0xAB، 0xF5،0x97،0xFF، 0x2F، 0xED، 0x89،0x7E، 0x29،0x9E، 0xB4، 0x9F، 0x74،0x1E، 0x69،0xDA، 0xA4،0x9F، 0x81،0x94،0xEF، 0x4F، 0xF6،0xF9،0x0B، 0xF4،0x65،0x51،0x08}؛


PROGMEM چار * معلومات [] = {"FT800 گھڑیوں کی درخواست"،


"اے پی پی انٹرایکٹو گھڑیوں کا مظاہرہ کرنے کے لئے،"

"گھڑیوں کا استعمال کرتے ہوئے، ٹریک"

"& RTC کنٹرول."

# مزید ممالک COUNTRIES 12


چار، ملک [] = {"بھارت"، "سنگاپور"، "نیوزی لینڈ"، "جاپان"، "ڈنمارک"، "چین"، "آسٹریلیا"، "بیلجیم"، "بحرین"، "اٹلی"، "ناروے "،" جرمنی "}؛


typedef struct

{

ft_uint8_t ghr؛

ft_uint8_t gmin؛

ft_uint8_t arith؛

} t_gmtprp؛


[12] = {{5،30، '+'}، {8،0، '+'}، {12،45، '+'}، {9،0، '+'}، {4، 0، '+'}، {8،0، '+'}، {10،0، '+'}، {1،0، '+'}، {3،0، '+'}، {1، 0، '+'}، {1،0، '+'}، {1،0، '+'}}؛

جامد ساخت {

پر دستخط مختصر ڈریگریشن؛

int vel؛ // رفتار

طویل بیس؛ 1 / 16ths پکسل میں // اسکرین X سمنوی

لمبی حد؛

} سکومر؛

ساختہ

{

ft_uint8_t Hrs؛

ft_uint16_t دماغ؛

ft_uint16_t سیکنڈ؛

ft_uint16_t msecs؛

} ist، utc؛

/ ******** پرائمری / ویجٹ کے لئے پھانسی جب مقررہ TAG قیمت واپس کرنے کے لئے API ****** /


مستحکم ft_uint8_t sk = 0؛

ft_uint8_t پڑھنے_کیز ()

{

مستحکم فو_یوٹ 8_t پڑھیں_tag = 0، temp_tag = 0، ret_tag = 0؛

Read_tag = Ft_Gpu_Hal_Rd8 (phost، REG_TOUCH_TAG)؛

ret_tag = نوڈل؛

اگر (Read_tag! = NULL) اگر اجازت دی گئی تو کلیدی طور پر جاری کیا جائے

{

اگر (temp_tag! = Read_tag)

{

temp_tag = Read_tag؛

sk = Read_tag؛ // متغیر کو طے کرنے کے لئے پڑھیں ٹیگ لوڈ کریں

}

}

اور

{

اگر (temp_tag! = 0)

{

ret_tag = temp_tag؛

}

سکی = 0؛

}

واپسی ret_tag؛

}

/ *********************** API ICON ******************** سیٹ کریں ********************** /

/ * ایپلیکیشن نوٹ میں بہاؤ چارٹ میں دستیاب کوڈ کے بہاؤ کو ملاحظہ کریں * /


ft_void_t ہوم سیٹ اپ ()

{

/ * آئکن فائل کو فائل کو بڑھانا اور GRAM * میں لکھنے کے لئے J1 کمانڈ استعمال کیا جاتا ہے.

Ft_Gpu_Hal_WrCmd32 (فوسٹ، CMD_INFLATE)؛

Ft_Gpu_Hal_WrCmd32 (phost، 250 * 1024L)؛

Ft_Gpu_Hal_WrCmdBuf (phost، home_star_icon، sizeof (home_star_icon))؛

/ * آئونس کے لئے بٹمپ کی خصوصیات مقرر کریں *

Ft_Gpu_CoCmd_Dlstart (phost)؛ // آغاز

Ft_App_WrCoCmd_Buffer (فاسٹ، کلی (1.11))؛

Ft_App_WrCoCmd_Buffer (فونٹ، COLOR_RGB (255، 255، 255))؛

Ft_App_WrCoCmd_Buffer (فاسٹ، BITMAP_HANDLE (13))؛ // پس منظر ستاروں کے لئے ہینڈل

Ft_App_WrCoCmd_Buffer (فوسٹ، بٹمپ سرورس (250 * 1024L))؛ // گرام میں شروع ایڈریس

Ft_App_WrCoCmd_Buffer (phost، BITMAP_LAYOUT (L4، 16، 32))؛ // شکل

Ft_App_WrCoCmd_Buffer (فاسٹ، BITMAP_SIZE (دورہ، ریپیٹ، ریپیٹ، 512، 512))؛

Ft_App_WrCoCmd_Buffer (فاسٹ، BITMAP_HANDLE (14))؛ // پس منظر ستاروں کے لئے ہینڈل

Ft_App_WrCoCmd_Buffer (فوسٹ، بٹمپ سرورس (250 * 1024L))؛ // گرام میں شروع ایڈریس

Ft_App_WrCoCmd_Buffer (phost، BITMAP_LAYOUT (L4، 16، 32))؛ // شکل

Ft_App_WrCoCmd_Buffer (فاسٹ، BITMAP_SIZE (قریب، بارڈر، بورڈ، 32، 32))؛

Ft_App_WrCoCmd_Buffer (phost، DISPLAY ())؛

Ft_Gpu_CoCmd_Swap (phost)؛

Ft_App_Flush_Co_Buffer (phost)؛

Ft_Gpu_Hal_WaitCmdfifo_empty (phost)؛

}

باطل فوٹ پلے ساؤنڈ (ft_uint8_t آواز، ft_uint8_t vol، ft_uint8_t مidi)

{

ft_uint16_t ویل = (مڈی < 8)=""> آواز؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_SOUND، ویل)؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_PLAY، 1)؛

}


ft_void_t معلومات ()

{

ft_uint16_t dloffset = 0، z؛

Ft_CmdBuffer_Index = 0؛


// ٹچ اسکرین انشانکن

Ft_Gpu_CoCmd_Dlstart (phost)؛

Ft_App_WrCoCmd_Buffer (فاسٹ، کلی (1.11))؛

Ft_App_WrCoCmd_Buffer (فونٹ، COLOR_RGB (255،255،255))؛

Ft_Gpu_CoCmd_Text (فوسٹ، FT_DispWidth / 2، FT_DispHeight / 2،26، OPT_CENTERX | OPT_CENTERY، "براہ کرم ڈاٹ پر ٹپ کریں")؛

Ft_Gpu_CoCmd_Calibrate (phost، 0)؛

Ft_App_WrCoCmd_Buffer (phost، DISPLAY ())؛

Ft_Gpu_CoCmd_Swap (phost)؛

Ft_App_Flush_Co_Buffer (phost)؛

Ft_Gpu_Hal_WaitCmdfifo_empty (phost)؛

// Ftdi علامت حرکت پذیری

Ft_Gpu_CoCmd_Logo (فاسٹ)؛

Ft_App_Flush_Co_Buffer (phost)؛

Ft_Gpu_Hal_WaitCmdfifo_empty (phost)؛

جبکہ (0! = Ft_Gpu_Hal_Rd16 (فوسٹ، REG_CMD_READ))؛

// ڈی جی رام سے GRAM تک ڈسپلے فہرست کاپی کریں

dloffset = Ft_Gpu_Hal_Rd16 (phost، REG_CMD_DL)؛

dloffset - = 4؛

Ft_Gpu_Hal_WrCmd32 (فوسٹ، CMD_MEMCPY)؛

Ft_Gpu_Hal_WrCmd32 (فوسٹ، 100000L)؛

Ft_Gpu_Hal_WrCmd32 (فوسٹ، رام ڈی ایل)؛

Ft_Gpu_Hal_WrCmd32 (phost، dloffset)؛

کیا

{

Ft_Gpu_CoCmd_Dlstart (phost)؛

Ft_Gpu_CoCmd_Append (فوسٹ، 100000L، ڈلوفسیٹ)؛

// لوگو حرکت پذیری کے دوران استعمال کردہ BITMAP خصوصیات کو دوبارہ ترتیب دیں

Ft_App_WrCoCmd_Buffer (phost، BITMAP_TRANSFORM_A (256))؛

Ft_App_WrCoCmd_Buffer (phost، BITMAP_TRANSFORM_A (256))؛

Ft_App_WrCoCmd_Buffer (phost، BITMAP_TRANSFORM_B (0))؛

Ft_App_WrCoCmd_Buffer (phost، BITMAP_TRANSFORM_C (0))؛

Ft_App_WrCoCmd_Buffer (phost، BITMAP_TRANSFORM_D (0))؛

Ft_App_WrCoCmd_Buffer (phost، BITMAP_TRANSFORM_E (256))؛

Ft_App_WrCoCmd_Buffer (phost، BITMAP_TRANSFORM_F (0))؛

// ایج پٹی کا استعمال کرتے ہوئے شفاف لوگو کے ساتھ معلومات کو ظاہر کریں

Ft_App_WrCoCmd_Buffer (phost، SAVE_CONTEXT ())؛

Ft_App_WrCoCmd_Buffer (فونٹ، COLOR_RGB (219،180،150))؛

Ft_App_WrCoCmd_Buffer (فاسٹ، COLOR_A (220))؛

Ft_App_WrCoCmd_Buffer (phost، BEGIN (EDGE_STRIP_A))؛

Ft_App_WrCoCmd_Buffer (phost، VERTEX2F (0، FT_DispHeight * 16))؛

Ft_App_WrCoCmd_Buffer (فونٹ، VERTEX2F (FT_DispWidth * 16، FT_DispHeight * 16))؛

Ft_App_WrCoCmd_Buffer (فاسٹ، کولوریہ (255))؛

Ft_App_WrCoCmd_Buffer (phost، RESTORE_CONTEXT ())؛

Ft_App_WrCoCmd_Buffer (فونٹ، COLOR_RGB (0،0،0))؛

// معلومات

Ft_Gpu_CoCmd_Text (فاسٹ، FT_DispWidth / 2،20،28، OPT_CENTERX | OPT_CENTERY، (چار *) pgm_read_word (اور معلومات [0]))؛

Ft_Gpu_CoCmd_Text (فاسٹ، FT_DispWidth / 2،60،26، OPT_CENTERX | OPT_CENTERY، (چار *) pgm_read_word (اور معلومات [1]))؛

Ft_Gpu_CoCmd_Text (فاسٹ، FT_DispWidth / 2،90،26، OPT_CENTERX | OPT_CENTERY، (چار *) pgm_read_word (اور معلومات [2]))؛

Ft_Gpu_CoCmd_Text (فاسٹ، FT_DispWidth / 2،120،26، OPT_CENTERX | OPT_CENTERY، (چار *) pgm_read_word (اور معلومات [3]))؛

Ft_Gpu_CoCmd_Text (فوسٹ، FT_DispWidth / 2، FT_DispHeight-30، 26، OPT_CENTERX | OPT_CENTERY، "کھیلنا کلک کریں")؛

// چیک کریں اگر چابی کلید اور رنگ تبدیل کریں

اگر (sk! = 'P')

Ft_App_WrCoCmd_Buffer (فونٹ، COLOR_RGB (255،255،255))؛

اور

Ft_App_WrCoCmd_Buffer (فونٹ، COLOR_RGB (100،100،100))؛

Ft_App_WrCoCmd_Buffer (phost، BEGIN (FTPOINTS))؛

Ft_App_WrCoCmd_Buffer (phost، POINT_SIZE (20 * 16))؛

Ft_App_WrCoCmd_Buffer (phost، TAG ('P'))؛

Ft_App_WrCoCmd_Buffer (فاسٹ، VERTEX2F ((FT_DispWidth / 2) * 16، (FT_DispHeight-60) * 16))؛

Ft_App_WrCoCmd_Buffer (فونٹ، COLOR_RGB (180،35،35))؛

Ft_App_WrCoCmd_Buffer (phost، BEGIN (BITMAPS))؛

Ft_App_WrCoCmd_Buffer (فاسٹ، VERTEX2II ((FFDWWthth / 2) -14، (FT_DispHeight-75)، 14،4))؛

Ft_App_WrCoCmd_Buffer (phost، DISPLAY ())؛

Ft_Gpu_CoCmd_Swap (phost)؛

Ft_App_Flush_Co_Buffer (phost)؛

Ft_Gpu_Hal_WaitCmdfifo_empty (phost)؛

} جبکہ (Read_Keys ()! = 'P')؛

Ft_Play_Sound (0x50،255،0xx0)؛

/ * انتظار کریں جب تک کہ بٹن کی چابی پر دباؤ نہ ہو *

}


/ * اسکرینر میں داخل کریں * /

مستحکم فو_void_t scroller_init (ft_uint32_t کی حد)

{

scroller.dragprev = -32768؛

scroller.vel = 0؛ // رفتار

scroller.base = 0؛ 1 / 16ths پکسل میں // اسکرین X سمنوی

scroller.limit = limit؛

}


/ * افقی linearlly میں سکرال چلائیں * /


مستحکم ft_void_t scroller_run ()

{

ft_int32_t تبدیلی؛


دستخط مختصر SX = Ft_Gpu_Hal_Rd16 (فوسٹ، REG_TOUCH_SCREEN_XY + 2)؛


اگر ((sx! = -32768) & (scroller.dragprev! = -32768))

{

scroller.vel = (scroller.dragprev - sx) <>

}

اور

{

تبدیل = زیادہ سے زیادہ (1، abs (scroller.vel) >> 5)؛

اگر (scroller.vel <>

scroller.vel + = تبدیلی؛

اگر (scroller.vel> 0)

scroller.vel - = تبدیلی؛

}

scroller.dragprev = sx؛

scroller.base + = scroller.vel؛

scroller.base = زیادہ سے زیادہ (0، منٹ (scroller.base، scroller.limit))؛

}


مستحکم ft_uint8_t clk_adj = 0؛

مستحکم ft_uint16_t min_val؛

ft_uint8_t temp [7]؛

/ * ڈیٹا آرٹیکل کے لئے آر ٹی سی * /

بائٹ decToBcd (بائٹ ویل)

{

واپسی ((ویل / 10 * 16) + (ویل٪ 10))؛

}


// عام بیزاری نمبروں پر بائنری کوڈڈ کی شکل بدلیں

بائٹ BCDToDec (بائٹ والو)

{

واپسی ((ویل / 16 * 10) + (ویل٪ 16))؛

}


/ * RTC میں ڈیٹا لکھیں * /

باطل Rtc_puts ()

{

temp [0] = 0x80 | (dectocdcd (ist.Secs))؛

temp [1] = decToBcd (ist.Mins)؛

temp [2] = decToBcd (ist.Hrs)؛

hal_rtc_i2c_write (0، (ft_uint8_t *) اور temp، 7)؛

}


// تاریخ اور وقت ہو جاتا ہے

باطل Rtc_gets ()

{

hal_rtc_i2c_read (0، (ft_uint8_t *) اور temp، 3)؛

ist.Hrs = bcdToDec (temp [2] & xx1f)؛

ist.Mins = bcdToDec (temp [1] & 0x7f)؛

ist.Secs = bcdToDec (temp [0] اور 0x7f)؛

}

/ * API روٹری قیمت سے وقت کو مرتب کرنے کے لئے استعمال کیا جاتا ہے * /

مستحکم ft_uint16_t adj_time = 0؛

مستحکم ft_uint32_t t_adj = 0؛

مستحکم ft_uint16_t Get_TagRotary_Value (ft_uint16_t ٹیگال، ft_uint16_t رینج، ft_uint16_t max_rotation، ft_uint16_t CT) // -180 کے لئے 90

{

ft_int32_t trackval = 0؛

مستحکم ft_int16_t thcurr = 0، prevth = 0، adj = 0؛

جامد فوٹ_int32_t کے ارد گرد = 0؛

مستحکم ft_uint16_t ریٹال = 0؛

trackval = Ft_Gpu_Hal_Rd32 (فوسٹ، REG_TRACKER)؛

اگر (trackval)

{

thcurr = (trackval >> 16)؛

اگر (adj == ٹیگول)

{

adj_val + = (ft_int16_t) (thcurr - غالب)؛

اگر (adj_val <>

adj_val + = (max_rotation * 65536L)؛

اگر (adj_val> = ((max_rotation * 65536L))

adj_val - = (max_rotation * 65536L)؛

ریٹال = (adj_val / (65536L / رینج))؛

}

غالب = thcurr؛

ایڈو = ٹریکول & 0xff؛

clk_adj = 0؛

}

اور

{

اگر (adj = = 0) clk_adj = 1؛

اور پھر ریٹٹ = CT؛

ایڈجسٹمنٹ کے لئے 16 بٹ دباؤ میں // موجودہ وقت

adj_val = ((ct / 60) * 65536L) + ((ct٪ 60) * (65536L / range))؛

adj = 0؛

}

واپسی کی واپسی؛

}

/ * اے پی آئی ممالک کے لئے معیاری وقت مرتب کرتا ہے * /


باطل ٹائمر (ft_uint8_t نام)

{

مستحکم ft_uint8_t temp_time = 0؛

چار hrs_t [2]، min_t [2]، * temp؛

مستحکم ft_uint16_t temp_m = 0، Hrs = 0؛

مستحکم ft_uint16_t temp_msecs = 0، temp_secs = 0؛

ft_uint32_t t؛

ft_int32_t دماغ؛

دماغ = gmt_prp [نام]. gmin؛

Hrs = gmt_prp [name] .ghr؛

دماغ = ممنوع + (گھنٹے * 60)؛

اگر (gmt_prp [نام]. کے ساتھ == '+')

منٹ = min_val + دماغ؛

اگر (gmt_prp [نام]. کے ساتھ == '-')

{

منٹ = min_val-Mins؛

اگر (دماغ <>

منٹ = 720-منٹ؛

}

utc.Hrs = (دماغ / 60)٪ 12؛

utc.Mins = (دماغ)٪ 60؛

/ * مطابقت پذیری آر ٹی سی اور MCU وقت * /

# Rde_PRESENT #ifdef

ٹی = ملیس ()؛

t = t٪ 1000L؛


اگر (ist.Secs! = temp_secs)

{

temp_secs = ist.Secs؛

temp_msecs = 1000L-t؛

}

utc.mSecs = (t + temp_msecs)٪ 1000L؛

#ختم کرو اگر

// utc.cecs = ist.Secs؛

/ * اگر وقت ایڈجسٹمنٹ ہوا تو پھر آر ایس سی * میں لکھتا ہے /

اگر (clk_adj)

{

clk_adj = 0؛

ist.Mins = min_val٪ 60؛

ist.Hrs = (min_val / 60)٪ 12؛

# Rde_PRESENT #ifdef

Rtc_puts ()؛

#else

t_adj = ملز ()؛

t_adj = (t_adj / 60000L)٪ 60؛

adj_time = ((ist.Mins) + (ist.Hrs * 60)) - t_adj؛

#ختم کرو اگر

}

}

جامد بائٹ istouch ()

{

واپسی! (Ft_Gpu_Hal_Rd16 (فوسٹ، REG_TOUCH_RAW_XY اور 0x8000))؛

}

/ * گھڑی فنکشن * /

ft_void_t گھڑی (ft_uint8_t clksize، ft_uint8_t اختیارات)

{

ft_uint8_t

clk_s = clksize / 10، per_f، n_f، نام، ٹیگ، startup_time = 0؛


ft_uint16_t dx = (clk_s * 2) + (2 * clksize)،

dy = (FT_DispHeight / 2) + clksize + 10،

Temp_m، Hrs؛


ft_uint8_t col = FT_DispWidth / dx؛

ft_int16_t آکس، اوی، ایس ایکس، ڈریگ = 0، prev = 0، ڈریگ = 0، میں، cts = 0، th، pv؛

ft_int32_t ٹریک، دماغ، رفتار = 0؛

per_f = col؛

n_f = (ممالک) / per_f؛

اوہ = (FT_DispHeight / 2)؛

scroller_init (16 * (ممالک) * (dx) -FT_DispWidth))؛

ٹائمر (0)؛

کیا

{

ٹیگ = Ft_Gpu_Hal_Rd8 (phost، REG_TOUCH_TAG)؛

# Rde_PRESENT #ifdef

Rtc_gets ()؛

temp_m = (ist.Mins + (ist.Hrs * 60))٪ 720L؛

#else

ft_uint32_t t = millis ()؛

utc.mSecs = t٪ 1000L؛

ist.Secs = (t / 1000L)٪ 60؛

ist.Mins = (t / 60000L)٪ 60؛

ist.Hrs = (t / 3600000L)٪ 12؛

temp_m = ((ist.Mins) + (ist.Hrs * 60))؛

temp_m + = adj_time؛

temp_m٪ = 720؛

#ختم کرو اگر

min_val = Get_TagRotary_Value (ٹیگ، 60،12، temp_m)؛

اگر ((Ft_Gpu_Hal_Rd32 (فوسٹ، REG_TRACKER) اور 0xff) == 0)

{

scroller_run ()؛


ڈریگ = scroller.base >> 4؛

cts = drag / dx؛

ڈریگ = ڈریگ٪ dx؛

} اور

{

scroller.vel = 0؛

}

Ft_Gpu_CoCmd_Dlstart (phost)؛

Ft_App_WrCoCmd_Buffer (فاسٹ، کلی (1.11))؛

Ft_App_WrCoCmd_Buffer (phost، TAG_MASK (1))؛

Ft_App_WrCoCmd_Buffer (phost، TAG (0))؛

Ft_Gpu_CoCmd_Gradient (phost، 0، 135، 0x000000، 0، 272، 0x605040)؛

کے لئے (i = -1؛ i <(per_f +="" 2)؛="" i="">

{

آکس = (کلکسیز + clk_s) + (dx * i)؛

آکس- ڈریگ؛

نام = (ممالک + i + cts)٪ ممالک؛

ٹائمر (نام)؛

// گھڑیوں کے بی جی رنگ مقرر کریں

اگر (ٹیگ == نام + 1) Ft_Gpu_CoCmd_BgColor (phost، 0x4040a0)؛ اور

Ft_Gpu_CoCmd_BgColor (phost، 0x101040)؛

// ٹریکر کے ساتھ گھڑیوں کو ڈرا

Ft_App_WrCoCmd_Buffer (فونٹ، ٹیگ (نام + 1))؛

Ft_Gpu_CoCmd_Clock (فاسٹ، آکس، FT_DispHeight / 2، کلکسیز، 0، utc.Hrs، utc.Mins، ist.Secs، utc.mSecs)؛

Ft_Gpu_CoCmd_Track (phost، آکس، FT_DispHeight / 2،1،1، نام + 1)؛

}

Ft_App_WrCoCmd_Buffer (فونٹ، TAG_MASK (0))؛

// ملک کا نام ڈسپلے کریں

کے لئے (i = -1؛ i <(per_f +="" 2)؛="" i="">

{

آکس = (کلکسیز + clk_s) + (dx * i)؛

آکس- ڈریگ؛

نام = (ممالک + i + cts)٪ ممالک؛

Ft_Gpu_CoCmd_Text (فوسٹ، آکس، ڈی، 29، OPT_CENTERX، ملک [نام])؛

}

اگر (scroller.vel! = 0) رفتار = scroller.vel؛

Ft_App_WrCoCmd_Buffer (phost، DISPLAY ())؛

Ft_Gpu_CoCmd_Swap (phost)؛

Ft_App_Flush_Co_Buffer (phost)؛

Ft_Gpu_Hal_WaitCmdfifo_empty (phost)؛

#if FT_801_ENABLE کی وضاحت کی

Ft_Gpu_Hal_Sleep (30)؛

#ختم کرو اگر

} جبکہ (1)؛

}

#ifdef MSVC_PLATFORM

/ * اہم داخلہ پوائنٹ * /

ft_int32_t اہم (ft_int32_t argc، ft_char8_t * argv [])

#ختم کرو اگر

#ifdef ARDUINO_PLATFORM

ft_void_t سیٹ اپ ()

#ختم کرو اگر

{

/ * مقامی متغیرات /

ft_uint8_t chipid؛


Ft_Gpu_HalInit_t halinit؛


halinit.TotalChannelNum = 1؛

Ft_Gpu_Hal_Init (& halinit)؛

host.hal_config.channel_no = 0؛

#ifdef MSVC_PLATFORM_SPI

میزبان. ہال_config.spi_clockrate_khz = 12000؛ // میں KHZ

#ختم کرو اگر

#ifdef ARDUINO_PLATFORM_SPI

میزبان. ہال_config.spi_clockrate_khz = 4000؛ // میں KHZ

#ختم کرو اگر

Ft_Gpu_Hal_Open (& میزبان)؛


فاسٹ = اور میزبان؛


/ * محفوظ طرف کے لئے ایک پاور سائیکل * /

Ft_Gpu_Hal_Powercycle (فونٹ، FT_TRUE)؛

Ft_Gpu_Hal_Rd16 (فوسٹ، RAM_G)؛

/ * کل گھڑی کو بیرونی گھڑی میں سیٹ کریں * /

Ft_Gpu_HostCommand (phost، FT_GPU_EXTERNAL_OSC)؛

Ft_Gpu_Hal_Sleep (10)؛



/ * سوئچ PLL آؤٹ پٹ 48MHz * /

Ft_Gpu_HostCommand (phost، FT_GPU_PLL_48M)؛

Ft_Gpu_Hal_Sleep (10)؛


/ * محفوظ طرف کے لئے ایک بنیادی ری سیٹ کیا * * /

Ft_Gpu_Host کمانڈ (فسٹس، FT_GPU_CORE_RESET)؛

// Ft_Gpu_CoreRetet (فوسٹ)؛


/ * رسائی کے پتہ 0 FT800 * /

Ft_Gpu_HostCommand (phost، FT_GPU_ACTIVE_M)؛


{

// FT800 تیار ہے تو چیک کرنے کے لئے رجسٹرڈ ID پڑھیں.

چپڈ = Ft_Gpu_Hal_Rd8 (phost، REG_ID)؛

جبکہ (چپ! = 0x7C)

چپڈ = Ft_Gpu_Hal_Rd8 (phost، REG_ID)؛

#ifdef MSVC_PLATFORM

پرنف ("بیک اپ کے بعد VC1 رجسٹرڈ ID٪ x"، چپڈ)؛

#ختم کرو اگر

}

/ * LCD ڈسپلے کی ترتیب * /

# نمائش SAMAPP_DISPLAY_QVGA

/ * QVGA LCD ڈسپلے کے لئے مخصوص قیمت * /

FT_DispWidth = 320؛

FT_DispHeight = 240؛

FT_DispHCycle = 408؛

FT_DispHoffset = 70؛

FT_DispHSync0 = 0؛

FT_DispHSync1 = 10؛

FT_DispVCycle = 263؛

FT_DiscVset = 13؛

FT_DispVSync0 = 0؛

FT_DispVSync1 = 2؛

FT_DispPCLK = 8؛

FT_DispSwizzle = 2؛

FT_DispPCLKPol = 0؛

#ختم کرو اگر


Ft_Gpu_Hal_Wr16 (فوسٹ، REG_HCYCLE، FT_DispHCycle)؛

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_HOFFSET، FT_DispHoffset)؛

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_HSYNC0، FT_DispHSync0)؛

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_HSYNC1، FT_DispHSync1)؛

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_VCYCLE، FT_DispVCycle)؛

Ft_Gpu_Hal_Wr16 (فاسٹ، REG_VOFFSET، FT_DispVOffset)؛

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_VSYNC0، FT_DDVVync0)؛

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_VSYNC1، FT_DDVVync1)؛

Ft_Gpu_Hal_Wr8 (فاسٹ، REG_SWIZZLE، FT_DispSwizzle)؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_PCLK_POL، FT_DSPPCLKPOL)؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_PCLK، FT_DSPPCLK)؛ // اس ڈسپلے کے بعد LCD پر نظر آتا ہے.

Ft_Gpu_Hal_Wr16 (پوسٹر، REG_HSIZE، FT_ ڈس کلیمر)؛

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_VSIZE، FT_DispHeight)؛


/ * ابتدائی طور پر پنگ اور پونگ بفر دونوں بھریں *

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_GPIO_DIR، 0xff)؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_GPIO، 0x0ff)؛

/ * رابطے کی ترتیب - مزاحمت کی قیمت کو 1200 تک ترتیب دیں - یہ قیمت کسٹمر کی ضروریات کے لئے مخصوص ہے اور تجربے سے حاصل کیا جاتا ہے * /

Ft_Gpu_Hal_Wr16 (فوسٹ، REG_TOUCH_RZTHRESH، 1200)؛




/ * یہ اسکرین کو صاف کرنے کیلئے اختیاری ہے * /

Ft_Gpu_Hal_WrMem (فاسٹ، RAM_DL، (ft_uint8_t *) FT_DLCODE_BOOTUP، سائزف (FT_DLCODE_BOOTUP))؛

Ft_Gpu_Hal_Wr8 (فوسٹ، REG_DLSWAP، DLSWAP_FRAME)؛


Ft_Gpu_Hal_Sleep (1000)؛ // بوٹنگ اپ کی سکرین دکھائیں.

# Rde_PRESENT #ifdef

hal_rtc_i2c_init ()؛

بائٹ WriteByte = 0x03؛

hal_rtc_i2c_write (0x07، اور لکھنا بائی، 1)؛

hal_rtc_i2c_read (0x00، & writeByte، 1)؛

اگر ((WriteByte & 0x80) == 0)

{

لکھیںByte = 0x80؛

hal_rtc_i2c_write (0x00، اور لکھنا بائی، 1)؛

}

#ختم کرو اگر


ہوم آفسیٹ ()؛

معلومات ()؛

گھڑی (80،0)؛

/ * تمام کھلی ہینڈل بند کریں * /

Ft_Gpu_Hal_Close (phost)؛

Ft_Gpu_Hal_DeInit ()؛

#ifdef MSVC_PLATFORM

واپسی 0؛

#ختم کرو اگر

}


باطل لوپ ()

{

}



/ * اس سے باہر کچھ نہیں *