这是一篇最近做的课设,选题要求如下:

设计任务: 模拟银行排队业务, 能提供三种业务, 服务代码首字
母分别为 A、 B、 C, 要求:
1、 用按键+1 表示新增一个客户, -1 表示减少一个客户。
2、 能对三种业务排队情况分别进行统计, 例如 A 业务当前有八个客户正在等待, 液晶屏显示 A08。 客户完成服务后相应队列统计值减 1。

使用了正点原子的stm32精英板,显示用的是正点原子的ALIENTEK OLED 模块。自己又加上了正点原子的ATK-ESP8266 WIFI模块来通过手机进行控制和信息交互。
基础要求逻辑并不复杂,自己写了几个函数完成相关操作,关于OLED的使用可以到B站上找正点原子的视频看。关于WIFI模块的使用我是使用指令控制的,使用的是server模式,即WiFi模块当主机,手机为从机。这个模块有相关的资料,使用usart串口进行通信,把资料研究一下使用起来并不是很难。需要的也可以找我要。我QQ:2254786469
程序里有的东西是以前做东西剩下的,因为对本次实验无影响,我也就没删掉,希望大家不要对其感到困惑。
关于WIFI模块,主函数前面的发送的一些指令完全是初始化配置,配置模式,联网,ip地址等。我把整个工程文件也附下。以供大家有需要的参考。
难点在于WIFI模块的使用,因为没有视频讲解,大家可以右键选择点到函数的定义去研究。
我把工程文件上传了,大家可以在在到我的主页找到并免费下载。

附上一下和通过WIFI模块手机通信的图片,不好意思,发现没截屏,嘿嘿。需要详细了解的私信或者加我QQ联系我吧。

把主函数附下:

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "oled.h"
#include "stdlib.h"
#include "lcd.h"
#include "key.h"
#include "usmart.h"
#include "malloc.h"
#include "sdio_sdcard.h"
#include "ff.h"
#include "w25qxx.h"
#include "exfuns.h"
#include "text.h"
#include "touch.h"
#include "usart3.h"
#include "common.h"
#include "adc.h"
#include "lsens.h"
#include "timer.h"u8 a1,a2,b1,b2,c1,c2,t; void draw_A(u8 row){u8 a;for(a=0;a<=127;a++){if(a<36){OLED_DrawPoint(a,row,1);}else{OLED_DrawPoint(a,row,0);}}}
void draw_B(u8 row){u8 a;for(a=0;a<=127;a++){if(45<a&&a<82){OLED_DrawPoint(a,row,1);}else{OLED_DrawPoint(a,row,0);}}}void draw_C(u8 row){u8 a;for(a=0;a<=127;a++){if(a>91){OLED_DrawPoint(a,row,1);}else{OLED_DrawPoint(a,row,0);}}              }
void indicator(){//指示当前操作的业务,在上面画条线if(t==0) {draw_A(36);draw_A(37);}else if(t==1) {draw_B(36);draw_B(37);}else{draw_C(36);draw_C(37);}
}void addition_A(){if (a1<'9') a1++;
else {if (a2<'9'){a2++;a1='0';    }else {a1='0';a2='0';}
}
OLED_ShowChar(24,40,a1,24,1);//显示ASCII字符
OLED_ShowChar(12,40,a2,24,1);//显示ASCII字符
OLED_Refresh_Gram();}void addition_B(){if (b1<'9') b1++;
else {if (a2<'9'){b2++;b1='0';    }else {b1='0';b2='0';}}
OLED_ShowChar(70,40,b1,24,1);//显示ASCII字符
OLED_ShowChar(58,40,b2,24,1);//显示ASCII字符
OLED_Refresh_Gram();
}void addition_C(){if (c1<'9') c1++;
else {if (c2<'9'){c2++;c1='0';    }else {c1='0';c2='0';}}
OLED_ShowChar(116,40,c1,24,1);//显示ASCII字符OLED_ShowChar(104,40,c2,24,1);//显示ASCII字符     OLED_Refresh_Gram();
}void subtract_A(){if (a1<'1'&& a2<'1') a1=='0';//个位十位都等于0
else {if (a2>'0'&& a1<'1'){//个位等于0,十位大于零a2--;a1='9';    }else {//都大于0或十位等于0,个位大于0a1--;}  }
OLED_ShowChar(24,40,a1,24,1);//显示ASCII字符
OLED_ShowChar(12,40,a2,24,1);//显示ASCII字符
OLED_Refresh_Gram();}void subtract_B(){if (b1<'1'&& b2<'1') b1=='0';//个位十位都等于0
else {if (b2>'0'&& b1<'1'){//个位等于0,十位大于零b2--;b1='9';    }else {//都大于0或十位等于0,个位大于0b1--;}  }
OLED_ShowChar(70,40,b1,24,1);//显示ASCII字符
OLED_ShowChar(58,40,b2,24,1);//显示ASCII字符
OLED_Refresh_Gram();}void subtract_C(){if (c1<'1'&& c2<'1') c1=='0';//个位十位都等于0
else {if (c2>'0'&& c1<'1'){//个位等于0,十位大于零c2--;c1='9';    }else {//都大于0或十位等于0,个位大于0c1--;}  }
OLED_ShowChar(116,40,c1,24,1);//显示ASCII字符OLED_ShowChar(104,40,c2,24,1);//显示ASCII字符     OLED_Refresh_Gram();}void key_press(u8 a){if (a==0) ;else{if (a==1){if(t==0) addition_A();else if(t==1) addition_B();else addition_C();}else if(a==2){if(t==0) subtract_A();else if(t==1) subtract_B();else subtract_C();}else{//按下KEY3if(t==2) t=0;else t++; indicator();OLED_Refresh_Gram();} }}void mode(){u8 s,m;if(USART3_RX_STA&&((int)USART3_RX_BUF[0]>0)){s=USART3_RX_BUF[11];m=USART3_RX_BUF[12];
if((s=='A')&&(m=='+')){addition_A();atk_8266_send_cmd("AT+CIPSEND=0,10","H",50);delay_ms(100);   u3_printf("A排队成功\n");}
if((s=='A')&&(m=='-')){subtract_A();delay_ms(100);}
if((s=='B')&&(m=='+')){addition_B();atk_8266_send_cmd("AT+CIPSEND=0,10","H",50);delay_ms(100);   u3_printf("B排队成功\n");}
if((s=='B')&&(m=='-')){subtract_B();delay_ms(100);}
if((s=='C')&&(m=='+')){addition_C();atk_8266_send_cmd("AT+CIPSEND=0,10","H",50);delay_ms(100);   u3_printf("C排队成功\n");}
if((s=='C')&&(m=='-')){subtract_C();delay_ms(100);}
USART3_RX_STA=0;}}int main(void){   delay_init();           //延时函数初始化    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级LED_Init();                    //初始化与LED连接的硬件接口KEY_Init();                 //初始化按键uart_init(115200);       //串口初始化为115200usart3_init(115200);      //初始化串口3 TIM3_PWM_Init(899,0);   Lsens_Init();          //初始化光敏传感?OLED_Init();          //初始化OLED      t=0;a1='0';a2='0';b1='0';b2='0';c1='0';c2='0';OLED_ShowString(0,40,"A00",24);OLED_ShowString(46,40,"B00",24);  OLED_ShowString(92,40,"C00",24);  indicator();OLED_Refresh_Gram();       //更新显示到OLED atk_8266_send_cmd("AT+CWMODE=1","H",50);delay_ms(700);USART3_RX_STA=0;atk_8266_send_cmd("AT+RST","H",50);delay_ms(4000);USART3_RX_STA=0;//atk_8266_send_cmd("AT+CWJAP=\"HQU.501\",\"1815232036\"","H",50);//delay_ms(5000);//atk_8266_send_cmd("AT+CIPSTART=\"TCP\",\"192.168.0.4\",2100","H",50);//"AT+CIPSTART=\"TCP\",\"192.168.0.4\",2100"//elay_ms(2000);atk_8266_send_cmd("AT+CIPMUX=1","H",50);delay_ms(700);USART3_RX_STA=0;atk_8266_send_cmd("AT+CIPSERVER=1,8080","H",50);delay_ms(700);USART3_RX_STA=0;atk_8266_send_cmd("AT+CIFSR","H",50);delay_ms(1500);USART3_RX_STA=0;while(1){ mode();key_press(KEY_Scan(0));delay_ms(10);、
}}

`

基于stm32的银行排队叫号机设计相关推荐

  1. 基于stm32简易计算机电路图,基于STM32的简易电子计算器设计与实现(DOC).doc

    嵌入式系统设计实验综合设计报告 PAGE 四川师范大学成都学院通信工程学院 基于STM32的简易电子计算器设计与实现 实验综合设计报告 学生姓名 陶龑 学 号 2016301033 所在学院 通信工程 ...

  2. 基于STM32的多功能MP3设计 毕业设计(论文)开题报告

    中国计量学院 毕业设计(论文)开题报告 学生姓名:卢杰学 号:XXXXXXXXX 专    业:电子科学与技术 班    级:10电子1 设计(论文)题目: 基于STM32的多功能MP3设计 指导教师 ...

  3. 9、★♥★基于STM32单片机的颜色检测仪设计♥☆

    9.★♥★基于STM32单片机的颜色检测仪设计♥☆ 文章目录 9.★♥★基于STM32单片机的颜色检测仪设计♥☆ 引言 1.系统概述 1.1.设计任务 1.2.设计要求 2.方案设计与论证 2.1.芯 ...

  4. 基于stm32自动伸缩雨伞的设计与实现

    基于stm32自动伸缩雨伞的设计与实现 **==整篇文章字数有一万三左右,图片太多了,实在是懒得全部放在这上面来,太废时间了.完整论文可通过q963160156获得,也可在微信公众号 *高级嵌入式软件 ...

  5. 基于STM32单片机的智能手环设计(OLED显示)(Proteus仿真+程序+报告)

    编号8 基于STM32单片机的智能手环设计(OLED显示) 功能描述: 由 STM32单片机+按键模拟计步+RTC时钟模块+DS18B20温度传感器模块+心率采集模块+串口模块+OLED显示模块+键盘 ...

  6. 【STM32】【C】【嵌入式】分享一下我的项目经验--基于stm32桌面主从机械臂设计(二弹)

    本文为原创文章,转载需要注明转载出处 前言:嵌入式开发是相比其他IT行业是比较难的行业,它不仅需要你去掌握软件的经验,还要去学习一些硬件的知识, 它是软件和硬件的一个粘合剂,起到一个至关重要的地位 下 ...

  7. 基于STM32指纹密码锁proteus仿真设计

    基于STM32指纹密码锁proteus仿真设计. 有仿真,程序,原文. 功能: 1.六位密码,设定初始密码(123456) 2.Electronic Locks(电子密码锁) (等待输入密码,密码用* ...

  8. 基于STM32的智能小车--电机驱动设计

    基于STM32的智能小车 第一章 基于STM32的智能小车方案设计 基于STM32的智能小车--电机驱动设计 基于STM32的智能小车 前言 一.电机是什么? 二.常见电机分类 1.有刷电机 2.无刷 ...

  9. 基于STM32单片机水位检测系统仿真设计

    文章目录 主要功能 仿真图 程序(提供源文件源码) 本设计基于STM32单片机水位检测系统仿真设计(proteus仿真+程序) 仿真图proteus 8.11 程序编译器:keil 5 编程语言:C语 ...

  10. 基于STM32的数控精密恒流源设计

    目录 一.项目要求 二.方案设计 三.原理图 四.硬件电路介绍 五.实物照片 六.程序 七.资料清单 资料下载地址:基于STM32的数控精密恒流源设计 一.项目要求 (1)恒流源输入电压10~28V. ...

最新文章

  1. PYTHON学习笔记-DAY-16
  2. Matlab和Modelsim联合仿真的配置
  3. 14、ListView案例
  4. Android View坐标系
  5. php函数表达式,正规表达式函数_php
  6. python开发的系统有哪些_Python web开发=几个模板系统的性能对比
  7. 哈佛第二、哥大第三,第一还是它!2020USNews美国大学排名发布!
  8. 读书笔记--疯狂Android讲义 目录
  9. 力扣题目——997. 找到小镇的法官
  10. hadoop1.1.2集群安装指南
  11. 黑白群晖用做airplay一条命令实现USB声卡转音箱的网络播放(Docker-shairport-sync容器)
  12. 计算机技术与高中英语教学整合,计算机技术与高中英语课程整合的探讨(多媒体英语教学系列论文十篇).doc...
  13. 全面了解风控数据体系
  14. ubuntu下安装MP4Box
  15. Day12:一元N次方程的根(略窥群论一二)
  16. 犬类水疗跑步机的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. 数据库基础知识【 1 】
  18. 什么是慢查询?如何优化?
  19. MATLAB中求矩阵的逆矩阵方法(2种)
  20. 移动的 ipcam 视频无处不在

热门文章

  1. 华为方会提供一份CRS(客户需求)和SOW(工作任务书)
  2. 蓝屏代码——STOP:c000021a Unknown Hard Error
  3. 深度图像确定目标距离_技术交流一种距离选通水下激光成像系统设计与实验研究...
  4. 卡巴斯基安全部队 2012 (KIS 2018) 激活key (9月5日更新)=最新卡巴斯基永久激活码
  5. 播布客里小布老师的所有视频收集
  6. 刘鹏计算广告学听课笔记 第二章:合约广告系统(一)
  7. python交通流预测算法_使用KNN方法进行的短时交通流预测和结果分析
  8. [Android移动安全渗透基础教程] 模拟器篇
  9. 干货——IT项目管理之软件测试
  10. EasyX基础入门——这一篇就够啦