IOT

Tic-tac-toe játék STONE TFT LCD és STM32 alapján

Összegzésként

A Tic-tac-toe egy 3:3-as rácson játszott játék, hasonlóan a gobanghoz. Nevét azért kapta, mert a tábla általában nem húz határokat, és a rácsvonalak tic-tac-toe-ba vannak rendezve. A játékhoz csak papír és toll szükséges. Ezután két O-t és X-et képviselő játékos felváltva hagy nyomokat a rácson. Bármely három jel egy egyenest alkot, amely a nyerő.

Ez a cikk az STM32 mikrokontroller és a STONE LCD-kijelző használatával egy egyszerű tic-tac-toe játék fejlesztésére szolgál.

A kísérlethez szükséges anyagok

A rendszer elve

Adja meg, hogy a képernyő első érintésének O-nak kell lennie, a második érintésnek az X-et, ezt a ciklust megtette. Állítson be 8 tömböt az O és X számok tárolására az egyes rácsok soraiban, oszlopaiban és átlóiban, mindaddig, amíg három azonos jelű a győzelem, akkor egy villogó piros doboz bizonyítja a háló győzelmét. sor, oszlop vagy átlós, majd érintse meg a visszaállítás gombot a játék újraindításához.

A következő folyamatábra:

Tic-tac-toe játék STONE TFT LCD és STM32 IOT PlatoBlockchain adatintelligencián alapul. Függőleges keresés. Ai.

STM32 és STONE LCD kijelzőrendszer hardvertervezés

(A) STONE LCD kijelző

  1. „Tic-tac-toe játék” hardverkialakítás

Használja a Beijing STONE Technology Co., Ltd. STONE LCD kijelzőjét, a modell STWI070WT-01, integrált TFT kijelzővel és érintővezérlővel.

Tic-tac-toe játék STONE TFT LCD és STM32 IOT PlatoBlockchain adatintelligencián alapul. Függőleges keresés. Ai.
  1.  STVC070WT-01 A termék jellemzői
Fizikai paraméterek 
Méret7 inch
Felbontás800 × RGB × 480
Pixel távolság0.0642 (W) × 0.1790 (H) mm
színek262,144 szín (18 bit)
megtekintése Area154.08 (W) × 85.92 (H) mm
Megjelenítési méret186.4mmx105.5mm
Teljes méret186.4 mm x 105.5 mm x 17.4 mm (normál típus) 186.4 mm x 105.5 mm x 23.8 mm (Ethernet porttal)
Nettó súly300g
kijelző 
Háttérvilágítás típusaLED
Fényesség300 cd/m2 (a fényerő 100 fokozatban állítható)
Kontraszt500:1
Háttérvilágítás élete300,000 óra
Látószög70°/70°/50°/70° (L/R/U/D)
TFT panelEgy osztályú ipari panel
Touch Screen4 Vezetékellenállás érintés /Kapacitív érintés/ Érintőképernyő nélkül
Képernyőmód:Digitális
Processzor 
CPUCortex A8
Frissítési ráta1G Hz
Max képkockasebesség60 FPS
Felület 
Soros interfészRS232 / RS422 / RS485 / TTL szint
Ethernet interfész10M/100M (opcionális)
Vezeték nélküli interfészWi-Fi / Bluetooth (opcionális)
Projektfájl letöltéseUSB2.0 port vagy U tárolólemez
Tápegység 
névleges feszültség+12V DC vagy +5V DC
Megengedett feszültségtartomány+7V DC…+28V DC vagy +5V DC
Max. megengedett tranziensek+ 28V
Két tranziens közötti idő50 másodperc minimum
Belső biztosíték2A önvisszaálló biztosíték
Fogyasztás3.0 W
Környezeti feltételek 
Max. megengedett környezeti hőmérsékletOperationStorage-20℃~ +70℃-30℃~ +80℃
Relatív páratartalomOperationStorage55 ℃, 85% 60 ℃, 90%
Sokkoló terhelésOperationStorage15 g/11 ms25 g/6 ms
rezgésOperationStorage0.035 mm (10 – 58 Hz)/ 1 g (58 – 500 Hz) 3.5 mm (5 – 8,5 Hz)/ 1 g (8.5 – 500 Hz)
Légköri nyomásOperationStorage706-1030 hPa581-1030 hPa
Zajmentesség 
Statikus kisülés (érintkezési kisülés/levegős kisülés)EN 61000-4-2 6 kV/8 kV
RF besugárzásEN 61000-4-310 V/m, 80% AM1 kHz
Impulzus modulációENV 50204900 MHz ±5 MHz10 V/meff., 50% ED, 200 Hz
RF vezetésEN 61000-4-6150 kHz – 80 MHz, 10 V, 80% AM, 1 kHz
Burst interferenciaEllátó vonalak Adatvonalak feldolgozásaJelvonalakEN 61000-4-42kV2kV1kV
Támogató eszköz 
UART portTámogatás RS232 / RS422 / RS485 / TTL
Hálózati portTámogatás Ethernet port / Wi-Fi / Bluetooth
Flash memóriaNormál 256 MB támogatás, 1 GB vagy 2 GB bővítés
ZümmögőTámogatás
RTCTámogatás
USB portOnline letöltés támogatása USB-kábellel
U Tárolólemez interfészTámogatás.A felhasználói adatok offline letöltése vagy másolása
Touch Screen4 vezetékes ellenállás / kapacitív
vektoros betűtípusSzabványos TTF formátum
KépTámogatja a PNG/JPG/BMP/SVG/GIF formátumot
Audio InterfaceWAV formátum támogatása Az egyetlen hangfájl hossza nincs korlátozva, elméletileg legfeljebb 4096 hangfájl, a hangszóró teljesítménye 8 ohm 2 watt vagy 4 ohm 3 watt
ParancskészletEgységes egyszerűsített parancskészletek
Memory design 
Flash memóriaNormál 256 MB, kiterjesztés 1 GB vagy 2 GB
Kép memória mennyiségeA kép képességei szerint javasoljon „PNG, BMP, JPG, SVG, GIF” formátumot.

(B) STM32 kártya

STM32 kártya használatával az STM32 chipje CKS32F303.

Tic-tac-toe játék STONE TFT LCD és STM32 IOT PlatoBlockchain adatintelligencián alapul. Függőleges keresés. Ai.

Az ARM Cortex-M32, M0+, M0, M3 és M4 magokból álló STM7 családot nagy teljesítményt, alacsony költséget és alacsony energiafogyasztást igénylő beágyazott alkalmazásokhoz tervezték.

  • 2.0V-3.6V tápegység
  • 5V kompatibilis I/O érintkezők
  • Kiváló biztonságos óra mód
  • Alacsony fogyasztású üzemmód ébresztő funkcióval
  • Belső RC oszcillátor
  • Beágyazott reset áramkör
  • Működési hőmérséklet tartomány.
  • -40°C és +85°C vagy 105°C között

Rendszerszoftver tervezés

Az STM32 és a STONE LCD kijelző fejlesztési folyamata

1: hozza létre a projektet és töltse be a szükséges képeket a projektbe.

2: a Stone-designer szoftver használata dinamikusan társított kapcsolatok létrehozására; a fő kezelőszervek a következők: „Button”, „image”;

3: szoftveres szimuláció és fordítás a végrehajtható fájlok előállításához.

4: az LCD kijelző USB-n keresztül csatlakozik a számítógéphez, és másolja a végrehajtható fájlt a képernyőre.

Először hozzon létre egy új projektet az alábbiak szerint.

Tic-tac-toe játék STONE TFT LCD és STM32 IOT PlatoBlockchain adatintelligencián alapul. Függőleges keresés. Ai.
Tic-tac-toe játék STONE TFT LCD és STM32 IOT PlatoBlockchain adatintelligencián alapul. Függőleges keresés. Ai.

Másodszor, importálja az összes képet az erőforrásba

Tic-tac-toe játék STONE TFT LCD és STM32 IOT PlatoBlockchain adatintelligencián alapul. Függőleges keresés. Ai.

Ezután állítsa be a gombvezérlőket az egyes rácsokhoz, és tegye láthatatlanná a gombokat. 

Tic-tac-toe játék STONE TFT LCD és STM32 IOT PlatoBlockchain adatintelligencián alapul. Függőleges keresés. Ai.

Ne felejtse el beállítani a reset gombot!

A kész hatás az alábbiakban látható:

Tic-tac-toe játék STONE TFT LCD és STM32 IOT PlatoBlockchain adatintelligencián alapul. Függőleges keresés. Ai.

Ezután ugyanígy adjon hozzá képvezérlőket minden rácshoz, és állítsa őket fehér képekre.

Végül add hozzá a gif vezérlőt, és állítsd láthatatlanra.

A kész hatás részei az alábbiakban láthatók:

Tic-tac-toe játék STONE TFT LCD és STM32 IOT PlatoBlockchain adatintelligencián alapul. Függőleges keresés. Ai.
Tic-tac-toe játék STONE TFT LCD és STM32 IOT PlatoBlockchain adatintelligencián alapul. Függőleges keresés. Ai.
Tic-tac-toe játék STONE TFT LCD és STM32 IOT PlatoBlockchain adatintelligencián alapul. Függőleges keresés. Ai.
Tic-tac-toe játék STONE TFT LCD és STM32 IOT PlatoBlockchain adatintelligencián alapul. Függőleges keresés. Ai.

Áramköri kapcsolási rajz

Tic-tac-toe játék STONE TFT LCD és STM32 IOT PlatoBlockchain adatintelligencián alapul. Függőleges keresés. Ai.

Kód Megosztás

/* Magába foglalja ----------------------*/ 

#include „stm32f0xx_hal.h” 

#include „Uart.h” 

#include „string.h” 

#include „ws2812.h” 

#include „IWDG.h” 

RGB_COLOR USER_RGB_COLOR; 

unsigned char TX_Mode = 1; //Átviteli típusjelző bit 1:232 0:TTL 

unsigned char BLINK_2=0; 

előjel nélküli karakter RX3_BUF[32]; //Testreszabott háromszintű fogadási puffer 

#define BUTTON1 0x81 

#define BUTTON2 0x82 

#define BUTTON3 0x83 

#define BUTTON4 0x84 

#define BUTTON5 0x85 

#define BUTTON6 0x86 

#define BUTTON7 0x87 

#define BUTTON8 0x88 

#define BUTTON9 0x89 

#define BUTTON0 0x8A 

#define CLEAR 0x8E 

unsigned int r_flag1 = 0; 

unsigned int quan[4][2]={0}; 

unsigned int cha [4][2]={0}; 

unsigned int quan_hang1 = 0; 

unsigned int quan_hang2 = 0; 

unsigned int quan_hang3 = 0; 

unsigned int quan_lie1 = 0; 

unsigned int quan_lie2 = 0; 

unsigned int quan_lie3 = 0; 

unsigned int quan_zuoxia = 0; 

unsigned int quan_youxia = 0; 

unsigned int cha_hang1 = 0; 

unsigned int cha_hang2 = 0; 

unsigned int cha_hang3 = 0; 

unsigned int cha_lie1 = 0; 

unsigned int cha_lie2 = 0; 

unsigned int cha_lie3 = 0; 

unsigned int cha_zuoxia = 0; 

unsigned int cha_youxia = 0; //előjel nélküli int r_flag10 = 0; 

void SystemClock_Config(void); 

void Error_Handler(void); 

static void MX_GPIO_Init(void); 

int fő (üres) 

uint8_t color_buf = 0; 

//Funkció kiválasztása 

/* Az összes periféria visszaállítása, Inicializálja a Flash interfészt és a Systick-et. */ 

HAL_Init(); 

/* A rendszeróra konfigurálása */ 

SystemClock_Config(); 

/* Az összes beállított periféria inicializálása */ 

MX_GPIO_Init(); 

TX_Mode = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4); 

if(TX_Mode) 

MX_USART1_UART_Init(); 

//232 Inicializálás 

más 

MX_USART1_UART_Init2(); 

//TTl Inicializálás 

míg (1) 

if(TX_Mode != HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4)) 

HAL_NVIC_SystemReset(); 

//Jumper visszafordítása, újraindítás és újrainicializálás 

if(MNG_USART1.RX_OVER_FLG ==TRUE) 

// 

Soros adatfogadási jelzőbit 

RX3_BUF[0]=MNG_USART1.RX_BUF[7]; 

//2. módszer: Rögzített hosszúságú vezérlőnév beszerzése 

RX3_BUF[1]=MNG_USART1.RX_BUF[8]; 

RX3_BUF[2]=MNG_USART1.RX_BUF[9]; 

RX3_BUF[3]=MNG_USART1.RX_BUF[10]; 

RX3_BUF[4]=MNG_USART1.RX_BUF[11]; 

RX3_BUF[5]=MNG_USART1.RX_BUF[12]; 

RX3_BUF[6]=MNG_USART1.RX_BUF[13]; 

//RX3_BUF[7]=MNG_USART1.RX_BUF[14]; 

if((strcmp("button1",(const char *)RX3_BUF))==0) 

//Válassza ki a vezérlőt

color_buf = BUTTON1; 

}

if((strcmp("button2",(const char *)RX3_BUF))==0) 

color_buf = BUTTON2; 

}

if((strcmp("button3",(const char *)RX3_BUF))==0) 

color_buf = BUTTON3; 

}

if((strcmp("button4",(const char *)RX3_BUF))==0) 

color_buf = BUTTON4; 

}

if((strcmp("button5",(const char *)RX3_BUF))==0) 

color_buf = BUTTON5; 

}

if((strcmp("button6",(const char *)RX3_BUF))==0) 

color_buf = BUTTON6; 

}

if((strcmp("button7",(const char *)RX3_BUF))==0) 

color_buf = BUTTON7; 

}

if((strcmp("button8",(const char *)RX3_BUF))==0) 

color_buf = BUTTON8; 

}

if((strcmp("button9",(const char *)RX3_BUF))==0) 

color_buf = BUTTON9; 

}

if((strcmp("button0",(const char *)RX3_BUF))==0) 

color_buf = BUTTON0; 

}

kapcsoló (color_buf) 

tok BUTTON1: 

//if(r_zászló1 == 0) 

if((r_zászló1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

r_zászló1 ^= 1; 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image2\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 ^= 1; 

quan_hang1++; 

quan_lie1++; 

quan_youxia++;  

//memset(RX3_BUF,0,7); 

//memset(MNG_USART1.RX_BUF,0,USART1_RX_LEN); 

color_buf = TÖRLÉS; 

}

else if((r_zászló1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"widget\":\"image2\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 0; 

cha_hang1++; 

cha_lie1++; 

cha_youxia++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

//r_zászló1 = 1; 

break; 

tok BUTTON2: 

if((r_zászló1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image3\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 1; 

quan_hang1++; 

quan_lie2++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

else if((r_zászló1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"widget\":\"image3\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 0; 

cha_hang1++; 

cha_lie2++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

break; 

tok BUTTON3: 

if((r_zászló1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image4\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 1; 

quan_hang1++; 

quan_lie3++; 

quan_zuoxia++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

else if((r_zászló1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"widget\":\"image4\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 0; 

cha_hang1++; 

cha_lie3++; 

cha_zuoxia++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

break; 

tok BUTTON4: 

if((r_zászló1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image5\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 1; 

quan_hang2++; 

quan_lie1++; 

//memset(RX3_BUF,0,7); 

//r_flag10=1; 

color_buf = TÖRLÉS; 

}

else if((r_zászló1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"widget\":\"image5\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 0; 

cha_hang2++; 

cha_lie1++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

break; 

tok BUTTON5: 

if((r_zászló1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image6\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 1; 

quan_hang2++; 

quan_lie2++; 

quan_zuoxia++; 

quan_youxia++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

else if((r_zászló1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"widget\":\"image6\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 0; 

cha_hang2++; 

cha_lie2++; 

cha_zuoxia++; 

cha_youxia++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

break; 

tok BUTTON6: 

if((r_zászló1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image7\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 1; 

quan_hang2++; 

quan_lie3++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

else if((r_zászló1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02))

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"widget\":\"image7\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 0; 

cha_hang2++; 

cha_lie3++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

break; 

tok BUTTON7: 

if((r_zászló1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image8\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 1; 

quan_hang3++; 

quan_lie1++; 

quan_zuoxia++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

else if((r_zászló1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"widget\":\"image8\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 0; 

cha_hang3++; 

cha_lie1++; 

cha_zuoxia++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

break; 

tok BUTTON8: 

if((r_zászló1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image9\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 1; 

quan_hang3++; 

quan_lie2++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

else if((r_zászló1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"widget\":\"image9\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 0; 

cha_hang3++; 

cha_lie2++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

break; 

tok BUTTON9: 

if((r_zászló1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image10\”,\”image\”:\”circle\ ”}>ET”);

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 1; 

quan_hang3++; 

quan_lie3++; 

quan_youxia++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

else if((r_zászló1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"widget\":\"image10\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_zászló1 = 0; 

cha_hang3++; 

cha_lie3++; 

cha_youxia++; 

//memset(RX3_BUF,0,7); 

color_buf = TÖRLÉS; 

}

break; 

tok BUTTON0: 

r_zászló1 = 0; 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image2\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image3\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image4\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image5\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image6\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image7\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image8\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image9\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1);

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image10\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif4\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif5\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif6\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif7\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif8\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif9\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif10\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif11\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

//memset(RX3_BUF,0,7); 

memset(MNG_USART1.RX_BUF,0,USART1_RX_LEN); 

break; 

alapbeállítás: 

MNG_USART1.RX_OVER_FLG = HAMIS; 

break; 

}

//////////////////////////////////////////////////// ////////////////// 

if((quan_hang1==3)||(cha_hang1==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif4\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

}

else if((quan_hang2==3)||(cha_hang2==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif5\”,\”visible\”:true}>ET ”);

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

}

else if((quan_hang3==3)||(cha_hang3==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif6\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

}

else if((quan_lie1==3)||(cha_lie1==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif7\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

}

else if((quan_lie2==3)||(cha_lie2==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif8\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

}

else if((quan_lie3==3)||(cha_lie3==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif9\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

}

else if((quan_zuoxia==3)||(cha_zuoxia==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif11\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

}

else if((quan_youxia==3)||(cha_youxia==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

„ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif10\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

MNG_USART1.RX_OVER_FLG = HAMIS; 

}

/** Rendszeróra konfigurációja 

*/

void SystemClock_Config(void) 

RCC_OscInitTypeDef RCC_OscInitStruct; 

RCC_ClkInitTypeDef RCC_ClkInitStruct; 

RCC_PeriphCLKInitTypeDef PeriphClkInit; 

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; 

RCC_OscInitStruct.HSIState = RCC_HSI_ON; 

RCC_OscInitStruct.HSICalibrationValue = 16; 

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; 

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; 

RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12; 

RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1; 

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) 

Error_Handler(); 

}

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK 

|RCC_CLOCKTYPE_PCLK1; 

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; 

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; 

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; 

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) 

Error_Handler(); 

}

PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1; 

PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1; 

if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) 

Error_Handler(); 

}

HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); 

HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); 

/* SysTick_IRQn megszakítási konfiguráció */ 

HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); 

}

/** Pinout konfiguráció 

*/

static void MX_GPIO_Init(void) 

GPIO_InitTypeDef GPIO_InitStruct; 

/* GPIO portok óra engedélyezése */ 

__HAL_RCC_GPIOA_CLK_ENABLE(); 

GPIO_InitStruct.Pin = GPIO_PIN_7; 

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP ; 

GPIO_InitStruct.Pull = GPIO_PULLDOWN; 

GPIO_InitStruct.Speed ​​= GPIO_SPEED_FREQ_HIGH; 

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 

GPIO_InitStruct.Pin = GPIO_PIN_4; 

GPIO_InitStruct.Mode = GPIO_MODE_INPUT; 

GPIO_InitStruct.Pull = GPIO_PULLUP; 

GPIO_InitStruct.Speed ​​= GPIO_SPEED_FREQ_HIGH; 

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 

}

/* FELHASZNÁLÓI KÓD KEZDETE 4 */

/* FELHASZNÁLÓI KÓD VÉGE 4 */ 

/ **

* @brief Ez a funkció hiba előfordulása esetén kerül végrehajtásra. 

* @param Nincs 

* @retval Nincs 

*/ 

void Error_Handler(void) 

/* FELHASZNÁLÓI KÓD BEGIN Error_Handler */ 

/* A felhasználó hozzáadhatja saját implementációját, hogy jelentse a HAL hiba visszatérési állapotát */ 

míg (1) 

{

}

/* FELHASZNÁLÓI KÓD VÉGE Error_Handler */ 

}

#ifdef USE_FULL_ASSERT 

/ **

* @brief Jelenti a forrásfájl nevét és a forrás sor számát 

* ahol az assert_param hiba történt. 

* @param fájl: mutató a forrásfájl nevére 

* @param line: assert_param hibasor forrásszáma 

* @retval Nincs 

*/ 

void assert_failed(uint8_t* fájl, uint32_t sor) 

/* FELHASZNÁLÓI KÓD KEZDETE 6 */ 

/* A felhasználó hozzáadhatja saját implementációját a fájlnév és a sorszám jelentéséhez, 

pl.: printf(“Rossz paraméterérték: %s fájl a %d\r\n sorban”, fájl, sor) */ 

/* FELHASZNÁLÓI KÓD VÉGE 6 */ 

}

#endif 

/ **

* @} 

*/ 

/ **

* @} 

*/

/************************ (C) SZERZŐI JOG STMicroelectronics *****FÁJL VÉGE****/

A végeredmények mutatják

Tic-tac-toe játék STONE TFT LCD és STM32 IOT PlatoBlockchain adatintelligencián alapul. Függőleges keresés. Ai.

Forrás: Plato Data Intelligence