版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录V总结及展望本文首先对自动售货机控制系统研究背景及意义进行分析,从而证明课题研究价值,同时对国内外相关研究成果进行总结分析;然后根据设计要求完成本文系统整体设计方案,并从多方面综合考虑,确定各模块的硬件配置;随后,按照模块化设计思想,完成硬件系统设计和软件系统设计;最后,按照具体的设计方案进行了软件和硬件的调试,以达到预定的效果,并在仿真环境中对系统进行测试验证,测试结果表明本文设计的系统可以实现对自动售货机全套流程的仿真模拟,可以为售货机的深入研究提供一定的参考价值。[14]由于时间及设计成本限制,本文构建的自动售货机控制系统仅实现基本功能,仍存在许多不足之处有待改进研究,例如:本文系统仅完成基本流程的仿真模拟,无法进行实用,后续可根据实际需求选用合适的硬件器件,构建具有实际应用价值的自动售货机控制系统。本文系统功能较为单一,后续可根据用户需求对系统功能进行丰富更新,如增加支付方式等。
参考文献[1]王惠,聂建华,王庆龙.基于ESP32单片机的自动售货机设计[J].今日制造与升级,2022,(09):46-49.[2]张冀洲.基于游戏化理论的饮品自动售货机设计研究[D].东北石油大学,2022.(09):46-49.[3]张慧.数字经济背景下自动售货机发展影响因素及建议[J].时代经贸,2022,19(04):33-36.[4]赵茹,万肖.基于移动支付的自动售货机实时监控系统设计[J].自动化与仪器仪表,2022,(01):95-99.[5]毛宇晨,黎俊.货架管理模型的选品与布局启示——以自动售货机为例[J].科技促进发展,2021,17(12):2138-2147.[6]葛晓丹.基于用户体验的自动售货机人机交互设计研究[D].东南大学,2021.28(05):177-178.[7]邵华梅,汪志成,徐丽琴,沈博韬.基于STM32的散装食品自动售货机设计[J].机械制造与自动化,2021,50(03):220-223.[8]张安莉,谢檬,郭月.基于LabVIEW的自动售货机系统设计[J].电子设计工程,2021,29(11):1-6.[9]沈靖宇.M便利店杭州公司自动售货机业务竞争战略研究[D].大连理工大学,2021.28(05):177-178[10]王超.顾客感知价值对自动售货机持续使用意愿的影响研究[D].北京邮电大学,2021.28(05):177-178[11]吴鹃.人脸识别技术下烟草自动售货机在线支付系统设计[J].自动化与仪器仪表,2021,(01):119-123.[12]李红科,王庆春,贾晓菲.基于VerilogHDL的自动售货机设计与仿真[J].电子技术与软件工程,2021,(01):54-56.[13]高振,江若尘.消费情景、感知质量对产品溢价的影响——基于自动售货机业态的实证研究[J].北京工商大学学报(社会科学版),2020,35(06):15-27.[14]查明皓,翟娟,张婷婷,罗辉辉.一种基于单片机的自动售货机设计[J].软件,2020,41(11):42-44.[15]陈金宝.基于PLC的水果自动售货机设计[J].电子世界,2020,(20):114-115+120.[16]姚莹.自动售货机触摸屏设计原理[J].电子技术与软件工程,2020,(16):75-76.[17]金薇.基于PLC的自动售货机控制系统设计[J].中国新技术新产品,2020,(14):15-16.[18]孙豪.面向新零售的自动售货机监控系统设计与实现[D].东南大学,2020,(14):15-16
附录main.c文件源程序:#include"stm32f10x.h"#include"delay.h"#include"sys.h"#include"keyboard.h"#include"beep.h"#include"led.h"#include"motor.h"#include"oled.h"#include"deal.h"#include"ds18b20.h"#include"timer.h"#include"lightsensor.h"#include"usart.h"externuint8_tKeyValue;externuint8_tsell_num[4];externuint8_tstock[4];externuint16_ttotal_money;externuint16_tpay_money;externuint16_tback_money;uint8_tflag1=1;//各个功能界面切换标志uint8_tflag2=0;//找零标志位uint8_tflag3=0;//支付界面,不能通过按键切换,只能有选择模式触发shorttemperature=0;uint8_tadcx=0;u16len; u16times=0;voidDISPLAY_MODEL(void);voidMODEL_OLED(void);voidDS18B20_DEAL(void);voidLISEN_DEAL(void);voidusart_1(void);staticvoidUsart_SendString(USART_TypeDef*pUSARTx,char*str);staticintanalysisQ(void);staticintanalysisW(void);staticintanalysisE(void);staticintanalysisR(void);staticintanalysisT(void);staticintanalysisY(void);staticintanalysisU(void);staticintanalysisI(void);staticintanalysisO(void);staticintanalysisP(void);staticintanalysisA(void);staticintanalysisS(void);staticintanalysisD(void);staticintanalysisF(void);staticintanalysisG(void);voidUsart_SendByte(USART_TypeDef*pUSARTx,uint8_tch);staticvoidUsart_SendString(USART_TypeDef*pUSARTx,char*str);staticintanalysisMode(u8*s,u8len);intanalysisUsart(u8*s,u8len);intmain(void)/**************************************主函数开始*****************************************************/{ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB,ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); delay_init();KEYBOARD_Init(); BEEP_Init(); LED_Init(); MOTOR_Init(); TIM3_Int_Init(9999,7199);//10Khz的计数频率,计数到9999 while(DS18B20_Init())delay_ms(200);//DS18B20初始化 Lsens_Init(); //初始化光敏传感器 OLED_Init(); OLED_ColorTurn(0);//0正常显示,1反色显示OLED_DisplayTurn(0);//0正常显示1屏幕翻转显示 OLED_Refresh(); oledstart();//开始界面 uart_init(115200); //串口初始化为115200while(1) { Key_Scan(); switch(Key_Scan()) { case(1):delay_ms(300);drink_choose();break; case(2):delay_ms(300);drink_choose();break; case(3):delay_ms(300);drink_choose();break; case(4):delay_ms(300);drink_choose();break; case(5):delay_ms(300);pay();break; case(6):delay_ms(300);pay();break; case(7):delay_ms(300);pay();break; case(8):delay_ms(300);pay();break; case(9):delay_ms(300);OK_Cancel();break; case(10):delay_ms(300);OK_Cancel();break; case(11):delay_ms(300);break; case(12):delay_ms(300);add_drink();break; case(13):delay_ms(300);DISPLAY_MODEL();break; case(14):;break; case(15):;break; case(16):;break; } usart_1(); DS18B20_DEAL(); LISEN_DEAL(); MODEL_OLED(); }}/****************************************************主函数结束*****************************************************/voidDISPLAY_MODEL(void)//模式选择标志{ OLED_Clear(); flag1++; flag2=0; if(flag1>3) { flag1=1; } KeyValue=0;}voidMODEL_OLED(void)//显示模式判断和处理数据//////////////{ if(flag1==1) { OLED_Choose(); OLED_ShowNum(45,16,sell_num[0],1,12); OLED_ShowNum(105,16,sell_num[1],1,12); OLED_ShowNum(42,30,sell_num[2],1,12); OLED_ShowNum(114,30,sell_num[3],1,12); OLED_ShowNum(65,48,total_money,3,16); } elseif(flag1==2) { OLED_Inventory(); OLED_ShowNum(85,0,stock[0],1,16); OLED_ShowNum(85,16,stock[1],1,16); OLED_ShowNum(85,32,stock[2],1,16); OLED_ShowNum(85,48,stock[3],1,16); } elseif(flag1==3) { OLED_SENSOR(); if(temperature<0) { OLED_ShowString(50,0,"-",16); //显示负号 temperature=-temperature; //转为正数 }elseOLED_ShowString(50,0,"+",16); OLED_ShowNum(63,0,temperature/10,2,16); OLED_ShowString(82,0,".",16);OLED_ShowNum(90,0,temperature%10,1,16); OLED_ShowChinese(100,0,43,16); OLED_ShowNum(50,16,adcx,3,16); } elseif(flag3==1) { OLED_Pay(); OLED_ShowNum(62,16,total_money,3,16); OLED_ShowNum(62,32,pay_money,3,16); if(pay_money<total_money) { LED0=0; } else LED0=1; if((flag2==1)&&(pay_money>total_money)) { back_money=pay_money-total_money; OLED_ShowNum(62,48,back_money,3,16); } }}voidDS18B20_DEAL(void){ temperature=DS18B20_Get_Temp();if(temperature>320) { wdjd_1; }else { wdjd_0; } }voidLISEN_DEAL(void){ adcx=Lsens_Get_Val(); if(adcx<50) { gmjd_1; } else { gmjd_0; } }voidusart_1(void){ if(USART_RX_STA&0x8000) { uint8_ti=0; len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度 printf("\r\n您发送的消息为:\r\n\r\n"); analysisUsart(USART_RX_BUF,len); BEEP=1; delay_ms(500); BEEP=0; deliver_drink(); for(i=0;i<4;i++) { sell_num[i]=0; } printf("\r\n\r\n");//插入换行 USART_RX_STA=0; }else { times++; if(times%5000==0) { printf("\r\n自动售货机\r\n"); } if(times%200==0)printf("请输入数据,以回车键结束\n"); delay_ms(10); }}staticintanalysisQ(){ sell_num[0]+=0; sell_num[1]+=0; sell_num[2]+=0; sell_num[3]+=0; Usart_SendString(USART1,"getQ"); return0;}staticintanalysisW(){ sell_num[0]+=2; sell_num[1]+=0; sell_num[2]+=0; sell_num[3]+=0; Usart_SendString(USART1,"getW"); return1;}staticintanalysisE(){ sell_num[0]+=0; sell_num[1]+=2; sell_num[2]+=0; sell_num[3]+=0; Usart_SendString(USART1,"getE"); return2;}staticintanalysisR(){ sell_num[0]+=0; sell_num[1]+=0; sell_num[2]+=2; sell_num[3]+=0; Usart_SendString(USART1,"getR"); return3;}staticintanalysisT(){ sell_num[0]+=0; sell_num[1]+=0; sell_num[2]+=0; sell_num[3]+=2; Usart_SendString(USART1,"getT"); return4;}staticintanalysisY(){ sell_num[0]+=2; sell_num[1]+=2; sell_num[2]+=0; sell_num[3]+=0; Usart_SendString(USART1,"getY"); return5;}staticintanalysisU(){ sell_num[0]+=2; sell_num[1]+=0; sell_num[2]+=2; sell_num[3]+=0; Usart_SendString(USART1,"getU"); return6;}staticintanalysisI(){ sell_num[0]+=2; sell_num[1]+=0; sell_num[2]+=0; sell_num[3]+=2; Usart_SendString(USART1,"getI"); return7;}staticintanalysisO(){ sell_num[0]+=0; sell_num[1]+=2; sell_num[2]+=2; sell_num[3]+=0; Usart_SendString(USART1,"getO"); return8;}staticintanalysisP(){ sell_num[0]+=0; sell_num[1]+=2; sell_num[2]+=0; sell_num[3]+=2; Usart_SendString(USART1,"getP"); return9;}staticintanalysisA(){ sell_num[0]+=0; sell_num[1]+=0; sell_num[2]+=2; sell_num[3]+=2; Usart_SendString(USART1,"getA"); return10;}staticintanalysisS(){ sell_num[0]+=2; sell_num[1]+=2; sell_num[2]+=2; sell_num[3]+=0; Usart_SendString(USART1,"getS"); return11;}staticintanalysisD(){ sell_num[0]+=2; sell_num[1]+=2; sell_num[2]+=0; sell_num[3]+=2; Usart_SendString(USART1,"getD"); return12;}staticintanalysisF(){ sell_num[0]+=0; sell_num[1]+=2; sell_num[2]+=2; sell_num[3]+=2; Usart_SendString(USART1,"getF"); return13;}staticintanalysisG(){ sell_num[0]+=2; sell_num[1]+=2; sell_num[2]+=2; sell_num[3]+=2; Usart_SendString(USART1,"getG"); return14;}/*****************发送一个字符**********************/voidUsart_SendByte(USART_TypeDef*pUSARTx,uint8_tch){ /*发送一个字节数据到USART*/ USART_SendData(pUSARTx,ch); /*等待发送数据寄存器为空*/ while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TXE)==RESET); }/*****************发送字符串**********************/staticvoidUsart_SendString(USART_TypeDef*pUSARTx,char*str){ unsignedintk=0;do{Usart_SendByte(pUSARTx,*(str+k));k++;}while(*(str+k)!='\0');/*等待发送完成*/while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET){}}staticintanalysisMode(u8*s,u8len){ intmode; u8first; if(len<=0)return0; first=*s; //printf("\r\nmode第一个字符为%c\n",first); if(first=='Q') {mode=0; }elseif(first=='W') {mode=1; }elseif(first=='E') {mode=2; }elseif(first=='R'){ mode=3; } elseif(first=='T'){mode=4; }elseif(first=='Y'){ mode=5; }elseif(first=='U'){ mode=6; }elseif(first=='I'){ mode=7; }elseif(first=='O'){ mode=8; }elseif(first=='P'){ mode=9; }elseif(first=='A'){ mode=10; }elseif(f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026小学数学四年级下册国测练习卷(西师大版)及答案
- 2022 年扬州工业职业技术学院单招考试试题及答案解析
- 铁岭市辅警招聘考试题库及答案
- 天水市辅警招聘考试题及答案
- 战创伤血气胸前线救治专家共识核心总结2026
- (新版)企业人力资源管理师(技师)技能鉴定考前自测300题(答案版)
- 2026年人教版四年级下册数学国测练习卷附答案
- 公务员行测数量关系试题及分析
- 26年腮腺癌精准医疗质控要点梳理
- 上饶市护士招聘考试题库及答案
- 外科学椎间盘突出症
- 传感器技术与应用-说课
- GB/T 3452.4-2020液压气动用O形橡胶密封圈第4部分:抗挤压环(挡环)
- GB/T 13816-1992焊接接头脉动拉伸疲劳试验方法
- 碳捕集、利用与封存技术课件
- 新生儿听力筛查(共29张)课件
- (精心整理)数学史知识点及答案
- 王家岭煤矿初设说明书201204
- GB 5749-2022 生活饮用水卫生标准
- 《国家电网公司十八项电网反事故措施(试行)》实施细则
- 场地平整土方工程量实训指导书
评论
0/150
提交评论