خلاصه
Tic-tac-toe یک بازی است که در شبکه 3 در 3 شبیه به gobang انجام می شود. این نام به این دلیل است که تخته معمولاً مرزها را ترسیم نمی کند و خطوط شبکه به صورت tic-tac-toe مرتب شده اند. ابزار مورد نیاز بازی فقط کاغذ و خودکار است. سپس، دو بازیکن به نمایندگی از O و X به نوبت به جای گذاشتن علائم در شبکه. هر سه علامت یک خط مستقیم را تشکیل می دهند که برنده است.
این مقاله استفاده از میکروکنترلر STM32 و صفحه نمایش STONE LCD برای توسعه یک بازی ساده تیک تاک است.
مواد مورد نیاز برای آزمایش
اصل سیستم
مشخص کنید اولین ضربه روی صفحه باید O باشد، ضربه دوم روی صفحه نمایش X است، این چرخه را انجام داده است. 8 آرایه را تنظیم کنید تا تعداد O و X در هر سطر، ستون و مورب هر شبکه ذخیره شود، تا زمانی که سه عدد از همان علامت پیروزی وجود دارد، سپس یک کادر قرمز چشمک زن برای اثبات پیروزی وجود خواهد داشت. ردیف، ستون یا مورب، و سپس روی بازنشانی ضربه بزنید تا بازی دوباره شروع شود.
در زیر نمودار جریان است:
طراحی سخت افزاری STM32 و STONE LCD Display System
(الف) صفحه نمایش LCD STONE
- طراحی سخت افزاری “Tic-tac-Toe Game”.
از صفحه نمایش STONE LCD شرکت Beijing STONE Technology Co., ltd استفاده کنید، مدل STWI070WT-01 با نمایشگر TFT و کنترلر لمسی یکپارچه است.
- STVC070WT-01 مشخصات محصول
پارامتر فیزیکی | |
اندازه | 7 اینچ |
وضوح | 800×RGB×480 |
فاصله پیکسل | 0.0642 (W) × 0.1790 (H) میلی متر |
رنگ | 262,144 رنگ (18 بیت) |
منطقه مشاهده | 154.08 (W) × 85.92 (H) میلی متر |
ابعاد نمایش | 186.4mmx105.5mm |
ابعاد کلی | 186.4mmx105.5mmx17.4mm (نوع استاندارد) 186.4mmx105.5mmx23.8mm (با درگاه اترنت) |
وزن خالص | 300g |
نمایش دادن | |
نوع نورپردازی | رهبری |
روشنایی | 300cd/m2 (روشنایی در 100 سطح قابل تنظیم است) |
کنتراست | 500:1 |
عمر نور پس زمینه | ساعت 300,000 |
زاویه دید | 70°/70°/50°/70° (L/R/U/D) |
پنل TFT | یک پانل صنعت کلاس |
صفحه نمایش لمسی | 4 سیم مقاومت لمسی / لمسی خازنی / بدون صفحه نمایش لمسی |
حالت صفحه نمایش: | دیجیتال |
پردازنده | |
پردازنده | قشر A8 |
نرخ تجدید صفحه | 1G هرتز |
حداکثر نرخ فریم | 60 FPS |
رابط | |
رابط سریال | سطح RS232 / RS422 / RS485 / TTL |
رابط اترنت | 10M/100M (اختیاری) |
رابط بی سیم | Wi-Fi / بلوتوث (اختیاری) |
دانلود فایل پروژه | پورت USB2.0 یا دیسک ذخیره سازی U |
منبع تغذیه | |
ولتاژ محاسبه شده | +12V DC یا +5V DC |
محدوده ولتاژ مجاز | +7V DC…+28V DC یا +5V DC |
حداکثر گذرای مجاز | + 28V |
زمان بین دو گذرا | حداقل 50 ثانیه |
فیوز داخلی | 2A فیوز خود بازیابی |
مصرف برق | 3.0 W |
شرایط محیطی | |
حداکثر دمای محیط مجازOperationStorage | -20℃℃+70℃-30℃℃+80℃ |
رطوبت نسبیOperationStorage | 55 ℃، 85% 60 ℃، 90% |
بارگیری شوکOperationStorage | 15 گرم / 11 میلی ثانیه 25 گرم / 6 میلی ثانیه |
ارتعاشOperationStorage | 0.035 میلی متر (10 - 58 هرتز) / 1 گرم (58 - 500 هرتز) 3.5 میلی متر (5 - 8,5 هرتز) / 1 گرم (8.5 - 500 هرتز) |
فشار هواOperationStorage | 706 تا 1030 hPa581 تا 1030 hPa |
ایمنی سر و صدا | |
تخلیه استاتیک (تخلیه تماسی/تخلیه هوا) | EN 61000-4-2 6 kV/8 kV |
تابش RF | EN 61000-4-310 V/m، 80% AM1 کیلوهرتز |
مدولاسیون پالس | ENV 50204900 MHz ± 5 MHz10 V/meff.، 50% ED، 200 هرتز |
هدایت RF | EN 61000-4-6150 کیلوهرتز - 80 مگاهرتز 10 ولت، 80٪ AM، 1 کیلوهرتز |
تداخل انفجاری خطوط تامین خطوط داده پردازش خطوط سیگنال | EN 61000-4-42kV2kV1kV |
دستگاه پشتیبانی | |
بندر UART | پشتیبانی RS232 / RS422 / RS485 / TTL |
پورت شبکه | پشتیبانی از پورت اترنت / وای فای / بلوتوث |
حافظه فلش | پشتیبانی استاندارد 256 مگابایت، گسترش 1 یا 2 گیگابایت |
زنگ اخبار | پشتیبــانی |
RTC | پشتیبــانی |
پورت USB | پشتیبانی آنلاین دانلود با کابل USB |
رابط دیسک ذخیره سازی U | پشتیبانی. دانلود آفلاین یا کپی اطلاعات کاربر |
صفحه نمایش لمسی | 4 سیم مقاومت / خازنی |
فونت برداری | فرمت استاندارد TTF |
تصویر | پشتیبانی از فرمت PNG/JPG/BMP/SVG/GIF |
صوتی رابط | پشتیبانی از فرمت WAV طول فایل صوتی منفرد محدود نیست، از نظر تئوری تا 4096 فایل صوتی، قدرت بلندگو 8 اهم 2 وات یا 4 اهم 3 وات است. |
مجموعه فرمان | مجموعه دستورات ساده شده یکپارچه |
حافظه | |
حافظه فلش | استاندارد 256 مگابایت، برنامه افزودنی 1 یا 2 گیگابایتی |
مقدار حافظه برای تصویر | با توجه به قابلیت تصویر فرمت “PNG, BMP, JPG, SVG, GIF” را پیشنهاد دهید. |
(ب) برد STM32
با استفاده از برد STM32، تراشه STM32 CKS32F303 است.
خانواده STM32 از هستههای ARM Cortex-M0، M0+، M3، M4 و M7 برای برنامههای تعبیهشده که نیاز به عملکرد بالا، هزینه کم و مصرف انرژی کم دارند، طراحی شدهاند.
- منبع تغذیه 2.0 ولت - 3.6 ولت
- پین های ورودی/خروجی سازگار با 5 ولت
- حالت ساعت ایمن عالی
- حالت کم مصرف با عملکرد بیدار شدن
- نوسان ساز داخلی RC
- مدار تنظیم مجدد تعبیه شده
- محدوده دمای کار
- -40 درجه سانتی گراد تا +85 درجه سانتی گراد یا 105 درجه سانتی گراد
طراحی نرم افزار سیستم
روند توسعه نمایشگر STM32 و STONE LCD
1: پروژه را ایجاد کنید و تصاویر مورد نیاز را در پروژه بارگذاری کنید.
2: از نرم افزار Stone-designer برای ایجاد روابط مرتبط پویا استفاده کنید. کنترل های اصلی عبارتند از: "دکمه"، "تصویر".
3: شبیه سازی و کامپایل نرم افزار برای تولید فایل های اجرایی.
4: صفحه نمایش LCD از طریق USB به رایانه شخصی متصل می شود و فایل اجرایی را روی صفحه کپی می کند.
ابتدا یک پروژه جدید مطابق شکل زیر ایجاد کنید.
در مرحله دوم، تمام تصاویر را به منبع وارد کنید
سپس، کنترل دکمه ها را روی هر شبکه تنظیم کنید و دکمه ها را نامرئی کنید.
فراموش نکنید که دکمه تنظیم مجدد را تنظیم کنید!
اثر تمام شده در زیر نشان داده شده است:
پس از آن، کنترل های تصویر را به همین ترتیب به هر شبکه اضافه کنید و همه آنها را روی تصاویر سفید قرار دهید.
در نهایت کنترل gif را اضافه کنید و آن را روی invisible قرار دهید.
بخش های اثر نهایی در زیر نشان داده شده است:
نمودار اتصال مدار
به اشتراک گذاری کد
/* شامل می شود ----------------------*/
#include "stm32f0xx_hal.h"
#include "Uart.h"
#include "string.h"
#include "ws2812.h"
#include "IWDG.h"
RGB_COLOR USER_RGB_COLOR؛
کاراکتر بدون علامت TX_Mode = 1; // نوع انتقال پرچم بیت 1:232 0:TTL
کاراکتر بدون امضا BLINK_2=0;
char بدون امضا RX3_BUF[32]; //بافر دریافت سفارشی سه سطحی
#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
int بدون علامت r_flag1 = 0;
unsigned int quan[4][2]={0};
بدون علامت 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;
بدون علامت int quan_zuoxia = 0;
بدون علامت int quan_youxia = 0;
بدون علامت int cha_hang1 = 0;
بدون علامت int cha_hang2 = 0;
بدون علامت int cha_hang3 = 0;
بدون علامت int cha_lie1 = 0;
بدون علامت int cha_lie2 = 0;
بدون علامت int cha_lie3 = 0;
بدون علامت int cha_zuoxia = 0;
بدون علامت int cha_youxia = 0; //int بدون علامت r_flag10 = 0;
void SystemClock_Config(void);
void Error_Handler(void);
static void MX_GPIO_Init(void);
int main (void)
{
uint8_t color_buf = 0;
//انتخاب تابع
/* بازنشانی همه تجهیزات جانبی، رابط Flash و Systick را راه اندازی می کند. */
HAL_Init();
/* پیکربندی ساعت سیستم */
SystemClock_Config();
/* راهاندازی تمام ابزارهای جانبی پیکربندی شده */
MX_GPIO_Init();
TX_Mode = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4)؛
if (TX_Mode)
MX_USART1_UART_Init();
//232 مقداردهی اولیه
دیگر
MX_USART1_UART_Init2();
// TTl مقداردهی اولیه
در حالی که (1)
{
if (TX_Mode != HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4))
HAL_NVIC_SystemReset();
//برگشت جامپر، راه اندازی مجدد و شروع مجدد
if (MNG_USART1.RX_OVER_FLG ==TRUE)
//
داده های سریال بیت پرچم را دریافت می کنند
{
RX3_BUF[0]=MNG_USART1.RX_BUF[7]؛
//روش 2: نام کنترل طول ثابت را دریافت کنید
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)
//کنترل را انتخاب کنید
{
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;
}
سوئیچ (color_buf)
{
دکمه موردی 1:
//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\":\"Circle\" "}>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 = CLEAR;
}
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 = CLEAR;
}
//r_flag1 = 1;
زنگ تفريح؛
دکمه موردی 2:
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\":\"Circle\" "}>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 = CLEAR;
}
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 = CLEAR;
}
زنگ تفريح؛
دکمه موردی 3:
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\":\"Circle\" "}>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 = CLEAR;
}
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 = CLEAR;
}
زنگ تفريح؛
دکمه موردی 4:
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\":\"Circle\" "}>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 = CLEAR;
}
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 = CLEAR;
}
زنگ تفريح؛
دکمه موردی 5:
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\":\"Circle\" "}>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 = CLEAR;
}
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 = CLEAR;
}
زنگ تفريح؛
دکمه موردی 6:
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\":\"Circle\" "}>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 = CLEAR;
}
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 = CLEAR;
}
زنگ تفريح؛
دکمه موردی 7:
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\":\"Circle\" "}>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 = CLEAR;
}
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 = CLEAR;
}
زنگ تفريح؛
دکمه موردی 8:
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\":\"Circle\" "}>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 = CLEAR;
}
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 = CLEAR;
}
زنگ تفريح؛
دکمه موردی 9:
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\":\"Circle\" "}>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 = CLEAR;
}
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 = CLEAR;
}
زنگ تفريح؛
دکمه موردی 0:
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)؛
زنگ تفريح؛
پیش فرض:
MNG_USART1.RX_OVER_FLG = FALSE;
زنگ تفريح؛
}
///////////////////////////////////////////////////////////////////////// //////////////////
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 = FALSE;
}
}
}
/** پیکربندی ساعت سیستم
*/
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.PLLSمنبع = RCC_PLLSOURCE_HSI;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12;
RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;
اگر (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;
اگر (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
Error_Handler();
}
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
/* پیکربندی وقفه SysTick_IRQn */
HAL_NVIC_SetPriority(SysTick_IRQn، 0، 0)؛
}
/** پیکربندی Pinout
*/
استاتیک void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
/* ساعت پورت های GPIO فعال */
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP ;
GPIO_InitStruct.Pull = GPIO_PULDOWN;
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);
}
/* کد کاربر شروع 4 */
/* کد کاربر انتهای 4 */
/ **
* @brief این تابع در صورت بروز خطا اجرا می شود.
* @param هیچکدام
* @retval هیچکدام
*/
void Error_Handler(void)
{
/* CODE USER BEGIN Error_Handler */
/* کاربر می تواند پیاده سازی خود را برای گزارش وضعیت بازگشت خطای HAL اضافه کند */
در حالی که (1)
{
}
/* USER CODE END Error_Handler */
}
#ifdef USE_FULL_ASSERT
/ **
* @brief نام فایل منبع و شماره خط منبع را گزارش می کند
* جایی که خطای assert_param رخ داده است.
* فایل param@: اشاره گر به نام فایل منبع
* @param line: شماره منبع خط خطا assert_param
* @retval هیچکدام
*/
void assert_failed(فایل uint8_t*، خط uint32_t)
{
/* کد کاربر شروع 6 */
/* کاربر می تواند پیاده سازی خود را برای گزارش نام فایل و شماره خط اضافه کند،
ex: printf("مقدار پارامترهای اشتباه: فایل %s در خط %d\r\n"، فایل، خط) */
/* کد کاربر انتهای 6 */
}
# اندیف
/ **
* @}
*/
/ **
* @}
*/
/************************ (C) حق کپی رایت STMicroelectronics *****پایان فایل****/
نتایج نهایی نشان می دهد
منبع: اطلاعات داده های افلاطون