Özet
Tic-tac-toe, gobang'a benzer şekilde 3'e 3 ızgarada oynanan bir oyundur. Adını, tahtanın genellikle sınır çizmemesi ve ızgara çizgilerinin tic-tac-toe şeklinde düzenlenmesi nedeniyle alır. Oyun için gerekli olan araçlar sadece kağıt ve kalemdir. Ardından, O ve X'i temsil eden iki oyuncu sırayla ızgarada işaretler bırakır. Herhangi bir üç işaret, kazanan olan düz bir çizgi oluşturur.
Bu makale, basit bir tic-tac-toe oyunu geliştirmek için mikrodenetleyici STM32 ve STONE LCD ekranını kullanmaktır.
Deney için gerekli malzemeler
sistem prensibi
Ekrana ilk dokunuşun O olması gerektiğini belirtin, ikinci dokunuş X ise bu döngüyü yapıyor. Aynı işaretin üçü zafer olduğu sürece, her bir ızgaranın her satırında, sütununda ve köşegeninde O ve X sayısını saklamak için 8 dizi ayarlayın, o zaman zaferi kanıtlamak için yanıp sönen kırmızı bir kutu olacaktır. satır, sütun veya köşegen ve ardından oyunu yeniden başlatmak için sıfırla öğesine dokunun.
Aşağıdaki akış şemasıdır:
STM32 ve STONE LCD Ekran Sistemi donanım tasarımı
(A) TAŞ LCD ekran
- "Tic-tac-toe oyunu" donanım tasarımı
Beijing STONE Technology co., ltd'nin STONE LCD ekranını kullanın, model STWI070WT-01, entegre TFT ekran ve dokunmatik kontrolör ile.
- STVC070WT-01 Ürün Özellikleri
Fiziksel Parametre | |
beden | 7 inç |
çözüm | 800×RGB×480 |
Piksel Aralığı | 0.0642 (G) × 0.1790 (Y) mm |
Renk | 262,144 renk (18 bit) |
Görüş alanı | 154.08 (G) × 85.92 (Y) mm |
Ekran Boyut | 186.4mmx105.5mm |
Genel boyut | 186.4mmx105.5mmx17.4mm(Standart tip)186.4mmx105.5mmx23.8mm(Ethernet portlu) |
Net ağırlık | 300g |
ekran | |
Arka Işık Türü | LED |
Parlaklık | 300cd/m2(Parlaklık 100 kademede ayarlanabilir) |
Kontrast | 500:1 |
Arka ışık ömrü | 300,000 saat |
Görüş açısı | 70°/70°/50°/70°(Sol/Sağ/U/D) |
TFT Paneli | A Sınıfı Endüstri Paneli |
Dokunmatik Ekran | 4 Telli Dirençli Dokunmatik / Kapasitif Dokunmatik / Dokunmatik Ekransız |
Ekran modu: | Dijital |
İşlemci | |
işlemci | Cortex A8 |
Yenileme Hızı | 1G Hz |
Maksimum çerçeve hızı | 60 FPS |
arayüzey | |
Seri Arabirim | RS232 / RS422 / RS485 / TTL seviyesi |
Ethernet arayüzü | 10M/100M (Opsiyonel) |
Kablosuz arayüz | Wi-Fi / Bluetooth (Opsiyonel) |
Proje dosyası indiriliyor | USB2.0 bağlantı noktası veya U depolama Diski |
Power Supply | |
Anma gerilimi | +12V DC veya +5V DC |
İzin verilen voltaj aralığı | +7V DC…+28V DC veya +5V DC |
Maks. izin verilen geçici olaylar | + 28V |
İki geçici olay arasındaki süre | en az 50 saniye |
Dahili Sigorta | 2A kendini kurtarma sigortası |
Güç tüketimi | 3.0 W |
Çevre koşulları | |
Maks. izin verilen ortam sıcaklığıOperasyonDepolama | -20℃~ +70℃ -30℃~ +80℃ |
Bağıl nemOperasyonDepolama | 55℃,%85℃,60% |
Şok yüklemeOperasyonDepolama | 15 g/11 msn25 g/6 msn |
titreşimOperasyonDepolama | 0.035 mm (10 – 58 Hz)/ 1 gr (58 – 500 Hz)3.5 mm (5 – 8,5 Hz)/ 1 gr (8.5 – 500 Hz) |
Barometrik basınçOperasyonDepolama | 706 ila 1030 hPa581 ila 1030 hPa |
Gürültü Bağışıklığı | |
Statik deşarj (temas deşarjı/hava deşarjı) | EN 61000-4-2 6kV/8kV |
RF ışınlaması | EN 61000-4-310 V/m, %80 AM1 kHz |
Darbe modülasyonu | ENV 50204900 MHz ±5 MHz10 V/meff., %50 ED, 200 Hz |
RF iletimi | EN 61000-4-6150 kHz – 80 MHz10 V, %80 AM, 1 kHz |
Patlama girişimiTedarik hatlarıProses veri hatlarıSinyal hatları | EN 61000-4-42kV2kV1kV |
Destek cihazı | |
UART Bağlantı Noktası | DestekRS232 / RS422 / RS485 / TTL |
Ağ Bağlantı Noktası | DestekEthernet Bağlantı Noktası / Wi-Fi / Bluetooth |
Flash Bellek | SupportStandart 256MB, 1GB veya 2GB Genişletin |
Buzzer | Destek |
RTC | Destek |
USB bağlantı noktası | DestekÇevrimiçi USB Kablosu ile İndirme |
U Depolama Diski Arayüzü | Support.Offline Kullanıcı Verilerini İndirin veya Kopyalayın |
Dokunmatik Ekran | 4 Telli Direnç / Kapasitif |
vektör yazı tipi | Standart TTF Formatı |
Resim | PNG/JPG/BMP/SVG/GIF Formatını Destekleyin |
Ses Arabirimi | Destek WAV formatıTek ses dosyasının uzunluğu sınırlı değildir, teorik olarak 4096 ses dosyasına kadar, hoparlör gücü 8 ohm 2 watt veya 4 ohm 3 watt |
Komut Seti | Birleşik Basitleştirilmiş Komut Kümeleri |
Bellek | |
Flash Bellek | Standart 256MB, Uzantı 1GB veya 2GB |
Görüntü için Bellek Miktarı | Görüntünün özelliğine göre “PNG, BMP, JPG, SVG, GIF” biçimini önerin. |
(B) STM32 kartı
Bir STM32 kartı kullanarak, STM32'nin çipi CKS32F303'tür.
ARM Cortex-M32, M0+, M0, M3 ve M4 çekirdeklerinden oluşan STM7 ailesi, yüksek performans, düşük maliyet ve düşük güç tüketimi gerektiren gömülü uygulamalar için tasarlanmıştır.
- 2.0V-3.6V güç kaynağı
- 5V uyumlu G/Ç pinleri
- Mükemmel güvenli saat modu
- Uyandırma fonksiyonlu düşük güç modu
- Dahili RC osilatörü
- Gömülü sıfırlama devresi
- Çalışma sıcaklığı aralığı.
- -40°C ila +85°C veya 105°C
Sistem yazılımı tasarımı
STM32 ve STONE LCD ekranın geliştirme süreci
1: projeyi oluşturun ve gerekli resimleri projeye yükleyin.
2: Dinamik olarak ilişkili ilişkiler oluşturmak için Stone-designer yazılımını kullanın; ana kontroller şunlardır: “Düğme”, “görüntü”;
3: yürütülebilir dosyalar oluşturmak için yazılım simülasyonu ve derleme.
4: LCD ekran USB üzerinden PC'ye bağlanır ve yürütülebilir dosyayı ekrana kopyalar.
İlk önce aşağıda gösterildiği gibi yeni bir proje oluşturun.
İkinci olarak, tüm görüntüleri kaynağa aktarın
Ardından, düğme kontrollerini her bir ızgaraya ayarlayın ve düğmeleri görünmez yapın.
Sıfırlama düğmesini ayarlamayı unutmayın!
Bitmiş etki aşağıda gösterilmiştir:
Bundan sonra, her bir ızgaraya aynı şekilde görüntü kontrolleri ekleyin ve hepsini beyaz görüntülere ayarlayın.
Son olarak gif kontrolünü ekleyin ve görünmez olarak ayarlayın.
Bitmiş efektin bölümleri aşağıda gösterilmiştir:
Devre bağlantı şeması
Kod paylaşımı
/* İçerir ----------------------*/
#include “stm32f0xx_hal.h”
#include “Uart.h”
#include “dize.h”
# “ws2812.h”yi dahil et
# “IWDG.h”yi dahil et
RGB_COLOR KULLANICI_RGB_COLOR;
imzasız karakter TX_Mode = 1; // İletim tipi bayrak biti 1:232 0:TTL
imzasız karakter BLINK_2=0;
imzasız karakter RX3_BUF[32]; //Özelleştirilmiş üç seviyeli alma arabelleği
#define DÜĞME1 0x81
#define DÜĞME2 0x82
#define DÜĞME3 0x83
#define DÜĞME4 0x84
#define DÜĞME5 0x85
#define DÜĞME6 0x86
#define DÜĞME7 0x87
#define DÜĞME8 0x88
#define DÜĞME9 0x89
#define DÜĞME0 0x8A
#define TEMİZLE 0x8E
imzasız int r_flag1 = 0;
imzasız int quan[4][2]={0};
imzasız int cha [4]][2]={0};
imzasız int quan_hang1 = 0;
imzasız int quan_hang2 = 0;
imzasız int quan_hang3 = 0;
imzasız int quan_lie1 = 0;
imzasız int quan_lie2 = 0;
imzasız int quan_lie3 = 0;
imzasız int quan_zuoxia = 0;
imzasız int quan_youxia = 0;
imzasız int cha_hang1 = 0;
imzasız int cha_hang2 = 0;
imzasız int cha_hang3 = 0;
imzasız int cha_lie1 = 0;
imzasız int cha_lie2 = 0;
imzasız int cha_lie3 = 0;
imzasız int cha_zuoxia = 0;
imzasız int cha_youxia = 0; //imzasız int r_flag10 = 0;
geçersiz SystemClock_Config(void);
geçersiz Error_Handler(void);
statik boşluk MX_GPIO_Init(void);
int main (void)
{
uint8_t color_buf = 0;
//Fonksiyon Seçimi
/* Tüm çevre birimlerinin sıfırlanması, Flash arayüzünü ve Systick'i başlatır. */
HAL_Init();
/* Sistem saatini yapılandır */
SystemClock_Config();
/* Tüm yapılandırılmış çevre birimlerini başlat */
MX_GPIO_Init();
TX_Modu = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4);
eğer(TX_Modu)
MX_USART1_UART_Init();
//232 Başlatma
başka
MX_USART1_UART_Init2();
//TTl Başlatma
süre(1)
{
if(TX_Mode != HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4))
HAL_NVIC_SystemReset();
//Jumper ters çevirme, yeniden başlatma ve yeniden başlatma
if(MNG_USART1.RX_OVER_FLG ==DOĞRU)
//
Seri veri bayrak biti alır
{
RX3_BUF[0]=MNG_USART1.RX_BUF[7];
//Yöntem 2:Sabit uzunlukta kontrol adı alın
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)
//Kontrol seç
{
color_buf = DÜĞME1;
}
if((strcmp(“button2”,(const char *)RX3_BUF))==0)
{
color_buf = DÜĞME2;
}
if((strcmp(“button3”,(const char *)RX3_BUF))==0)
{
color_buf = DÜĞME3;
}
if((strcmp(“button4”,(const char *)RX3_BUF))==0)
{
color_buf = DÜĞME4;
}
if((strcmp(“button5”,(const char *)RX3_BUF))==0)
{
color_buf = DÜĞME5;
}
if((strcmp(“button6”,(const char *)RX3_BUF))==0)
{
color_buf = DÜĞME6;
}
if((strcmp(“button7”,(const char *)RX3_BUF))==0)
{
color_buf = DÜĞME7;
}
if((strcmp(“button8”,(const char *)RX3_BUF))==0)
{
color_buf = DÜĞME8;
}
if((strcmp(“button9”,(const char *)RX3_BUF))==0)
{
color_buf = DÜĞME9;
}
if((strcmp(“button0”,(const char *)RX3_BUF))==0)
{
color_buf = DÜĞME0;
}
geçiş (color_buf)
{
durum BUTTON1:
//if(r_flag1 == 0)
if((r_flag1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
r_flag1 ^= 1;
sprintf((char *)MNG_USART1.TX_BUF,
"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"widget\":\"image2\",\"image\":\"daire\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 ^= 1;
quan_hang1++;
quan_lie1++;
quan_youxia++;
//memset(RX3_BUF,0,7);
//memset(MNG_USART1.RX_BUF,0,USART1_RX_LEN);
color_buf = SİL;
}
else if((r_flag1 == 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_flag1 = 0;
cha_hang1++;
cha_lie1++;
cha_youxia++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
//r_flag1 = 1;
break;
durum BUTTON2:
if((r_flag1 == 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\":\"daire\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang1++;
quan_lie2++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
else if((r_flag1 == 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_flag1 = 0;
cha_hang1++;
cha_lie2++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
break;
durum BUTTON3:
if((r_flag1 == 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\":\"daire\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang1++;
quan_lie3++;
quan_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
else if((r_flag1 == 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_flag1 = 0;
cha_hang1++;
cha_lie3++;
cha_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
break;
durum BUTTON4:
if((r_flag1 == 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\":\"daire\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang2++;
quan_lie1++;
//memset(RX3_BUF,0,7);
//r_flag10=1;
color_buf = SİL;
}
else if((r_flag1 == 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_flag1 = 0;
cha_hang2++;
cha_lie1++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
break;
durum BUTTON5:
if((r_flag1 == 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\":\"daire\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang2++;
quan_lie2++;
quan_zuoxia++;
quan_youxia++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
else if((r_flag1 == 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_flag1 = 0;
cha_hang2++;
cha_lie2++;
cha_zuoxia++;
cha_youxia++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
break;
durum BUTTON6:
if((r_flag1 == 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\":\"daire\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang2++;
quan_lie3++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
else if((r_flag1 == 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_flag1 = 0;
cha_hang2++;
cha_lie3++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
break;
durum BUTTON7:
if((r_flag1 == 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\":\"daire\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang3++;
quan_lie1++;
quan_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
else if((r_flag1 == 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_flag1 = 0;
cha_hang3++;
cha_lie1++;
cha_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
break;
durum BUTTON8:
if((r_flag1 == 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\":\"daire\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang3++;
quan_lie2++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
else if((r_flag1 == 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_flag1 = 0;
cha_hang3++;
cha_lie2++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
break;
durum BUTTON9:
if((r_flag1 == 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\":\"daire\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang3++;
quan_lie3++;
quan_youxia++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
else if((r_flag1 == 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_flag1 = 0;
cha_hang3++;
cha_lie3++;
cha_youxia++;
//memset(RX3_BUF,0,7);
color_buf = SİL;
}
break;
durum BUTTON0:
r_flag1 = 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;
Varsayılan:
MNG_USART1.RX_OVER_FLG = YANLIŞ;
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;
}
başka 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;
}
başka 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;
}
başka 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;
}
başka 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;
}
başka 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;
}
başka 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;
}
başka 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 = YANLIŞ;
}
}
}
/** Sistem Saati Yapılandırması
*/
geçersiz SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;
RCC_PeriphCLKInitTypeDef PeriphClkInit;
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSISState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = 16;
RCC_OscInitStruct.PLL.PLLSState = 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 kesme yapılandırması */
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}
/** Pinout Yapılandırması
*/
statik boşluk MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO Bağlantı Noktaları Saat Etkin */
__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);
}
/* KULLANICI KODU BAŞLIYOR 4 */
/* KULLANICI KODU SON 4 */
/ **
* @brief Bu işlev, hata oluşması durumunda yürütülür.
* @param Yok
* @retval Yok
*/
geçersiz Error_Handler(void)
{
/* KULLANICI KODU BAŞLA Error_Handler */
/* Kullanıcı, HAL hata dönüş durumunu bildirmek için kendi uygulamasını ekleyebilir */
süre(1)
{
}
/* KULLANICI KODU SON Error_Handler */
}
#ifdef USE_FULL_ASSERT
/ **
* @brief Kaynak dosyanın adını ve kaynak satır numarasını bildirir
* assert_param hatasının oluştuğu yer.
* @param dosyası: kaynak dosya adına işaretçi
* @param satırı: assert_param hata satırı kaynak numarası
* @retval Yok
*/
void assert_failed(uint8_t* dosyası, uint32_t satırı)
{
/* KULLANICI KODU BAŞLIYOR 6 */
/* Kullanıcı, dosya adını ve satır numarasını bildirmek için kendi uygulamasını ekleyebilir,
örn: printf(“Yanlış parametre değeri: %s dosyası %d\r\n satırında”, dosya, satır) */
/* KULLANICI KODU SON 6 */
}
#endif
/ **
* @}
*/
/ **
* @}
*/
/**************************** (C) TELİF HAKKI STMicroelectronics *****DOSYA SONU****/
Nihai sonuçlar gösteriliyor
Kaynak: Plato Data Intelligence