基于STM32的智能点餐系统
生活随笔
收集整理的這篇文章主要介紹了
基于STM32的智能点餐系统
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
提示:記錄2022年4月做的畢設4
文章目錄
- 前言
- 一、功能要求:
- 二、代碼思路
- 三、硬件說明
- 四、代碼以及框圖等資料
- 喜歡請點贊哦!
前言
基于STM32的智能點餐系統(tǒng),主控使用STM32F103C8T6核心板
- 針對傳統(tǒng)就餐點餐流程出現(xiàn)的問題,進行需求分析,對點餐流程和功能模塊 進行分析,設計一款以單片機為主控器的智能點餐系統(tǒng)。該系統(tǒng)結(jié)合紅外線傳感器、嵌入式芯片、無線傳感器、語音模塊等設備,把點餐數(shù)據(jù)傳輸?shù)椒掌鳌?/li>
- 智能餐廳由手機終端APP與智能管理終端機兩部分組成,擁有實時的快餐制作的流程、提前預約、支持線上線下支付、實時評價、建議采集等功能,從而減少人力成本,方便客戶享受快節(jié)奏、高品質(zhì)的就餐點餐服務。
一、功能要求:
- 基于單片機系統(tǒng)設計點餐系統(tǒng),
- 實現(xiàn)前臺點餐,后臺可以看到
- 實現(xiàn)后臺做好菜品,前臺可以收到通知
二、代碼思路
- 打開定時器2,作為系統(tǒng)運行時間;
- esp8266每2.5S刷新一次;
- dht11每1s刷新一次;
- OLED每2s刷新一次;
三、硬件說明
-
系統(tǒng)啟動后,會有“MyPro”這個WiFi,用手機網(wǎng)絡助手連接上,
-
ip地址:192.168.1.1 ,端口8080
-
引腳連接:
- ESP8266: EN B0RST B1RX B10 TX B11 OLED: D0 PA5(SCL1)D1 PA7(SDA1)RES PB7DC PA4CS PA6
- @attention 1、提供給ESP8266的電壓(3-4v)或者電流不夠時,連接wifi會失敗
- 實驗平臺:STM32C8T6核心板
四、代碼以及框圖等資料
//前臺代碼 int main(void) { while(1) {while(systeminit){//OLED_Clear();key=KEY_Scan(0); //得到鍵值if(key){switch(key){ case WKUP_PRES:OLED_Clear(); table();table_num++; break;case KEY2_PRES:OLED_Clear(); table_num--; table();break;case KEY1_PRES:systeminit=0;OLED_ShowString(20,6,"Waiting...",16);delay_ms(1000);OLED_Clear();show_page1();break;case KEY0_PRES:break;}}else delay_ms(2); }/*****************************************************///以下是選菜界面/*****************************************************/while(!systeminit){ key3=Yu_Scan(0); //得到鍵值if(key3){switch(key3){ case YuYin1_PRES:send_dat(1);food1++; break;case YuYin2_PRES:send_dat(2); food2++; break;case YuYin3_PRES: send_dat(3);food3++;break;case YuYin4_PRES:send_dat(4); food4++; break;case YuYin5_PRES: send_dat(5); food5++; break;case YuYin6_PRES: send_dat(6);food6++; break;}}else delay_ms(1);/*****************************************************///以下是更新數(shù)量,標題,價格/*****************************************************/if(!jiezhang){show_caption();switch(page){ case 1: OLED_ShowNum(74,3,food1,1,16);OLED_ShowNum(74,6,food2,1,16);OLED_ShowNum(110,3,food1_m,2,16);OLED_ShowNum(110,6,food2_m,2,16);break;case 2: OLED_ShowNum(74,3,food3,1,16);OLED_ShowNum(74,6,food4,1,16);OLED_ShowNum(110,3,food3_m,2,16);OLED_ShowNum(110,6,food4_m,2,16);break;case 3:OLED_ShowNum(74,3,food5,1,16);OLED_ShowNum(74,6,food6,1,16);OLED_ShowNum(110,3,food5_m,2,16);OLED_ShowNum(110,6,food6_m,2,16);break;} } /*****************************************************///以下是按鍵/*****************************************************/ key=KEY_Scan(0); //得到鍵值if(key){switch(key){case WKUP_PRES: if(page==1){switch(choose){case 1 : food1++;send_dat(1);//ESP8266_SendString ( DISABLE, send_str1, strlen ( send_str1 ), ( ENUM_ID_NO_TypeDef ) 0 );break;case 2 : food2++;send_dat(2);//ESP8266_SendString ( DISABLE, send_str2, strlen ( send_str2 ), ( ENUM_ID_NO_TypeDef ) 0 );break;}}else if(page==2){switch(choose){case 1 : food3++;send_dat(3);//ESP8266_SendString ( DISABLE, send_str3, strlen ( send_str3 ), ( ENUM_ID_NO_TypeDef ) 0 );break;case 2 : food4++;send_dat(4);//ESP8266_SendString ( DISABLE, send_str4, strlen ( send_str4 ), ( ENUM_ID_NO_TypeDef ) 0 ); break;}}else if(page==3){switch(choose){case 1 : food5++; send_dat(5);//ESP8266_SendString ( DISABLE, send_str5, strlen ( send_str5 ), ( ENUM_ID_NO_TypeDef ) 0 );break;case 2 : food6++;send_dat(6);//ESP8266_SendString ( DISABLE, send_str6, strlen ( send_str6 ), ( ENUM_ID_NO_TypeDef ) 0 );break;} } break;case KEY2_PRES:if(page==1){switch(choose){case 1 : food1--;send_dat(7);//ESP8266_SendString ( DISABLE, send_str7, strlen ( send_str7 ), ( ENUM_ID_NO_TypeDef ) 0 );break;case 2 : food2--;send_dat(8);//ESP8266_SendString ( DISABLE, send_str8, strlen ( send_str8 ), ( ENUM_ID_NO_TypeDef ) 0 );break;} }else if(page==2){switch(choose){case 1 : food3--;send_dat(9);//ESP8266_SendString ( DISABLE, send_str9, strlen ( send_str9 ), ( ENUM_ID_NO_TypeDef ) 0 );break;case 2 : food4--; send_dat(10);//ESP8266_SendString ( DISABLE, send_str10, strlen ( send_str10 ), ( ENUM_ID_NO_TypeDef ) 0 );break;} }else if(page==3){switch(choose){case 1 : food5--;send_dat(11);//ESP8266_SendString ( DISABLE, send_str11, strlen ( send_str11 ), ( ENUM_ID_NO_TypeDef ) 0 );break;case 2 : food6--; send_dat(12);//ESP8266_SendString ( DISABLE, send_str12, strlen ( send_str12 ), ( ENUM_ID_NO_TypeDef ) 0 );break;} } break;case KEY1_PRES: page++;if(page>3)page=1;if(page==1){ show_page1();//if(choose==1) OLED_ShowString(68,3,"*",16);//else if(choose==2)OLED_ShowString(68,6,"*",16); break;}else if(page==2){show_page2();//if(choose==1) OLED_ShowString(68,3,"*",16);//else if(choose==2)OLED_ShowString(68,6,"*",16); }else if(page==3){show_page3(); //if(choose==1) OLED_ShowString(68,3,"*",16);//else if(choose==2)OLED_ShowString(68,6,"*",16); }break;case KEY0_PRES:page--;if(page<1)page=3;if(page==3){show_page1();//if(choose==1) OLED_ShowString(68,3,"*",16);//else if(choose==2)OLED_ShowString(68,6,"*",16); break;}else if(page==2){ show_page2();//if(choose==1) OLED_ShowString(68,3,"*",16);//else if(choose==2)OLED_ShowString(68,6,"*",16); }else if(page==3){show_page3(); //if(choose==1) OLED_ShowString(68,3,"*",16);//else if(choose==2)OLED_ShowString(68,6,"*",16); }break; }}else delay_ms(2); /*****************************************************///以下是按鍵/*****************************************************/ key2=KEY_Scan2(0); //得到鍵值if(key2){switch(key2){case WKUPUP_PRES:choose++;if(choose>2)choose=1;switch(choose){case 1 : OLED_Clear(); if(page==1)show_page1();else if(page==2)show_page2();else if(page==3)show_page3(); OLED_ShowString(106,3,"*",16); break;case 2 : OLED_Clear(); if(page==1)show_page1();else if(page==2)show_page2();else if(page==3)show_page3(); OLED_ShowString(106,6,"*",16);break;}break;case KEY22_PRES:jiezhang=1;if(jiezhang){OLED_Clear(); show_page4();LED_F=1;delay_ms(1000);delay_ms(1000);LED_F=0; } break; case KEY11_PRES:OLED_Clear();table();food1=0;food2=0;food3=0;food4=0;food5=0;food6=0; jiezhang=0;table_num=1;systeminit=1;break;case KEY00_PRES:LED=!LED; break; }}else delay_ms(2); /*****************************************************///以下是ESP8266向PC發(fā)送數(shù)據(jù),每1s發(fā)送一次/*****************************************************/ if(esp_flag==1){esp_flag=0;//LED=!LED; //類似于c語言中向屏幕打印的printf//這里是將第二、三個參數(shù)打印到第一個參數(shù)的字符串中 ESP8266_SendString ( DISABLE, send_str, strlen ( send_str ), ( ENUM_ID_NO_TypeDef ) 0 );}/*****************************************************///以下是接收ESP8266數(shù)據(jù)/*****************************************************/ strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ] = '\0';revStr=strEsp8266_Fram_Record .Data_RX_BUF; if(strstr(revStr, ":c"))continue; strtok(revStr, ":");revStr=strtok(NULL, ":"); // 這里判斷緩存內(nèi)if(revStr!=NULL){if(*revStr=='M'){OLED_Clear(); food1_change=!food1_change;show_page1();}else if(*revStr=='N'){OLED_Clear(); food2_change=!food2_change;show_page1();}}} }}void show_caption(void) {//名稱、數(shù)量、價格OLED_ShowCHinese(2,0,46);OLED_ShowCHinese(18,0,47);OLED_ShowCHinese(48,0,48);OLED_ShowCHinese(64,0,49);OLED_ShowCHinese(96,0,44);OLED_ShowCHinese(112,0,45); }void Show_Chinese(void) {OLED_ShowCHinese(0,3,8);OLED_ShowCHinese(18,3,11);OLED_ShowCHinese(64,3,9);OLED_ShowCHinese(82,3,11);OLED_ShowCHinese(0,6,10);OLED_ShowCHinese(18,6,11);OLED_ShowCHinese(64,6,12);OLED_ShowCHinese(82,6,13);}void show_page1() { OLED_Clear();show_caption();//魚香肉絲/麻婆豆腐if(food1_change>=1){OLED_ShowCHinese(0 ,3,8);OLED_ShowCHinese(18,3,9);OLED_ShowCHinese(36,3,10);OLED_ShowCHinese(54,3,11);}else{OLED_ShowCHinese(0 ,3,34);OLED_ShowCHinese(18,3,35);OLED_ShowCHinese(36,3,36);OLED_ShowCHinese(54,3,37); }//辣子雞丁/紅燒茄子if(food2_change>=1){ OLED_ShowCHinese(0 ,6,12);OLED_ShowCHinese(18,6,13);OLED_ShowCHinese(36,6,14);OLED_ShowCHinese(54,6,15);}else{OLED_ShowCHinese(0 ,6,40);OLED_ShowCHinese(18,6,41);OLED_ShowCHinese(36,6,42);OLED_ShowCHinese(54,6,43); } }void show_page2() { OLED_Clear();show_caption();OLED_ShowCHinese(0 ,3,16);OLED_ShowCHinese(18,3,17);OLED_ShowCHinese(36,3,18);OLED_ShowCHinese(54,3,19);OLED_ShowCHinese(0 ,6,20);OLED_ShowCHinese(18,6,21);OLED_ShowCHinese(36,6,22);OLED_ShowCHinese(54,6,23); } void show_page3() {OLED_Clear();show_caption();OLED_ShowCHinese(0 ,3,24);OLED_ShowCHinese(18,3,25);OLED_ShowCHinese(36,3,26);OLED_ShowCHinese(54,3,27);OLED_ShowCHinese(0 ,6,28);OLED_ShowCHinese(18,6,29);OLED_ShowCHinese(36,6,30);OLED_ShowCHinese(54,6,31); }void show_page4() { OLED_Clear();//點餐系統(tǒng)OLED_ShowCHinese(0,0,0);OLED_ShowCHinese(16,0,1);OLED_ShowCHinese(96,0,6);OLED_ShowCHinese(112,0,7);//x號總價OLED_ShowNum(2,3,table_num,3,16);OLED_ShowCHinese(32,3,39);OLED_ShowCHinese(50,3,32);OLED_ShowCHinese(68,3,33);OLED_ShowString(94,3,":",16);count = food1*food1_m + food2*food2_m + food3*food3_m + food4*food4_m + food5*food5_m + food6*food6_m;OLED_ShowNum(84,3,count,4,16); }void table() {//點餐系統(tǒng)OLED_Clear();OLED_ShowCHinese(0,0,0);OLED_ShowCHinese(16,0,1);OLED_ShowCHinese(96,0,6);OLED_ShowCHinese(112,0,7); OLED_ShowCHinese(20,3,38);OLED_ShowCHinese(40,3,39);OLED_ShowNum(80,3,table_num,4,16); } //聯(lián)系我 //承接stm32單片機、STC系列單片機設計、嵌入式 //問題聯(lián)系QQ:2424644692 //某寶店鋪,搜:“暉億科創(chuàng)”鏈接: 提取碼:vqv0
喜歡請點贊哦!
總結(jié)
以上是生活随笔為你收集整理的基于STM32的智能点餐系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 出行必备降噪耳机哪款好?南卡、华为降噪耳
- 下一篇: C语言 英汉互译电子词典 命令行,MFC