基于单片机自助订餐终端设计.docx
《基于单片机自助订餐终端设计.docx》由会员分享,可在线阅读,更多相关《基于单片机自助订餐终端设计.docx(64页珍藏版)》请在冰豆网上搜索。
基于单片机自助订餐终端设计
基于单片机自助订餐终端设计
1绪论
1.1本课题的研究背景
随着计算机的普及,社会电子信息化的脚步在进一步加快,信息化已经从多个方面和领域影响到了我们的日常生活。
充分利用信息化的手段,实现现代生活的高品质和高效率,也就成为了当今信息系统集成商的追求目标。
在这样的趋势下,自助终端作为各类信息的发布载体和功能扩充手段,受到了系统集成商越来越多的重视,握准了它的发展方向,顺应甚至超前的实现思路,就能够为各集成商带来广阔的发展空间。
随着现代科技的发展与进步,人们的生活水平和生活方式也发生着变化,自助服务终端正在发挥着日益显著的作用。
尤其是在餐饮业,餐饮业是被称为中国的黄金产业的具有巨大投资市场的行业[1]。
而自助式餐饮的目的就是利用先进的无线通信技术、嵌入式手持终端技术、嵌入式移动数据库和无线控制技术。
这种终端操作简便,能够实现自动结账。
此外,类似的自助服务终端也广泛的应用于当今人们的方方面面,比如旅游业。
无论是餐饮业、旅游业还是其他行业,自助服务终端都有着很多的优势:
一方面可以为使用者提供方便快捷的服务,使人们可以足不出户地解决自己的需求;另一方面,对于从业者来说,自助服务终端无疑节约了人力资源,一个设计人性化、能够高效运行的终端系统可以极大地提高效率[2]。
医院住院部是一个特殊的部门,在这样的部门对于病人日常生活的服务更是繁杂,为了能够减少人力消耗,提高工作效率,实现建立更好的住院服务秩序,自助终端是一个非常好的选择。
本课题的研究正是基于以上背景,以单片机为实现方式,主要应用于医院的住院部,通过所设计的终端可以实现点菜订餐服务。
1.2国内外发展现状
1.2.1国内发展现状
总结自助终端的发展历史,它正在从专门的行业应用领域向公众应用领域切换,而由于行业应用领域的高专业化,高稳定性,高安全性等方面的要求,促使自助终端的实现手段一步一步的完善,这样的应用趋势,为自助终端的多行业化应用奠定了坚实的技术和市场基础。
现代信息化的实现手段,就要求有成熟和先进的实现技术。
自助终端因为其面对的对象为非专业化的使用群体,决定了自助终端系统设计的首先的出发点就是易理解性和易操作性,它必须满足使用者在没有任何相关行业知识背景的情况下,能自由的使用,完成对相关信息的处理和展示[11]。
自助终端的应用,是一个复杂的综合应用体。
这其中,对外部设备的使用是其中一个相当重要的部分。
良好的体系结构,需要有先进的设计思想。
自助终端是一个比较广泛的定义,涵盖了从银行到其他行业的各类自助类服务设备。
广泛的产品类型需要开发者在设计和实现时充分考虑系统的开放性,具有了良好的开放性和可扩展性,才能使自助终端的设计和使用进入新的阶段[3]。
现在丰富的系统设计和实现技术为自助终端良好的开放性奠定了基础。
模块化的设计,多层体系架构,是自助终端迈向全面应用的第一步。
只有符合这样的设计思想,才能在现在和将来的应用中不断创新,满足不断出现的新需求。
目前订餐终端都以IC卡作为媒介,它克服了以往使用菜票的诸多缺点,方便就餐人员用IC卡与食堂结算。
用餐者到食堂吃饭前,先交一定数额现金,上位机应用软件通过IC卡读写器将用户信息写入IC卡并交予用户,每个用户就拥有一个自己的饭卡,用于存储用户的姓名、编号、金额等相关信息[4]。
用户到食堂用餐时只需将IC卡插入食堂售饭机窗口,由用餐者选定饭菜后,售饭机自动用卡中金额减去应付金额,并且液晶屏会显示出卡中余额,最终完成订餐。
我国正在快速进入IC卡时代,国内先后组建华旭、华鑫集团公司等,出现了一批科研及生产、经营单位。
国内第一张用芯片设计、研制到卡片制作生产全部国产化的中华IC卡顺利通过技术鉴定[9]。
目前国内引进IC卡装配线较多,它们采用国外芯片,生产能力未充分发挥。
近几年国内IC卡应用市场发展迅猛,已经应用于各行各业。
1.2.2国外发展现状
在经济发达国家,就餐饮业而言,其发展的速度与需求远远比经济不发达的国家要高很多。
因为发达国家人们的时间观念很强[7],对于服务的要求也比较高,更重要的是其餐饮业能不断运用先进的管理方法和手段,也别是信息技术的应用程度很高。
在经济较为发达的国家和地区,计算机技术、嵌入式技术、无线通信技术等应用与餐饮业已经十分成熟,如IBM公司的POS产品已经获得了较大范围的应用。
2004年,在美国100家最有效利用信息技术的企业中,美国最大的食品和多种服务公司ARAGroupIne,名列第四[5]。
1.3本课题的研究目的
医院的住院部是一个特殊的餐饮服务领域,照顾病人的饮食起居需要耗费很多的人力物体,而使用订餐终端后,病人可以不出房门,不需亲人照顾,就可以吃到自己想吃的饭菜,病人通过射频卡,可以在床前的订餐终端上预订相应时间段的六次的饭菜(根据需要也可以延长),通过按键可以查询各个餐段的菜名,然后选择自己喜欢吃的饭菜,操作完成后,订餐终端打印出小票。
到吃饭时间时,食堂服务人员或护士就会将饭菜送到病人床前,这样就极大的方便了病人就餐。
此外,该订餐终端可以大大地节省资源,医院食堂可以根据订餐情况决定所做的饭菜的数量,这样可以避免造成浪费现象。
本课题虽然已经研究过,但是仍在存在很多值得改进的地方。
首先,之前的系统是有线传输,虽然保证了信号的稳定传输,但是实际应用中,有线传输存在着埋线的问题,对于已经建成的建筑来说,是一个很难实现的问题,所以,在本次设计中,将会把有线传输更改为无线传输,使其在实际应用中有更好的发展。
其次,在之前的系统设计中,很多类似的指令都是分别定义的,这使得延时很长,在使用人数较多的情况下,延时问题会严重影响该系统的使用,所以,把类似指令打包定义、操作,将会使延时大大缩小,系统的可靠性也会随之提高。
此外,之前的系统可以预定的是两天以内的饭菜,但是这样的规定略显死板、不够人性化,将其改为六餐,即可以更加灵活的订餐,而不仅仅拘泥于两天内,比如,实现改进后,病人可以通过此终端预定今晚、明早中晚、后天早中这六顿饭,但是原来的系统却不能实现这样的订餐功能。
针对本课题,我通过查阅资料与设计调试,完成一个自助订餐终端,该终端具有以下六个模块:
控制模块、键盘模块、显示模块、射频卡接收模块、打印模块和通信模块。
并通过完成毕业设计,掌握基本检测、控制电路的设计方法,器件的选型以及测试系统的软硬件设计与调试方法和相关的专业知识等[14]。
于此同时,吸收学习前人的经验,并运用自己所学知识使其不断完善。
2基于单片机自助订餐终端的设计方案
2.1该设计的基本功能
本设计分析当前订餐终端发展形势,设计出适合住院部使用的订餐终端。
本订餐终端能够售出六顿之内的饭菜,用餐者能够通过显示器查看两天内的菜名,通过键盘能够预订菜名及份数,用餐者订餐后,屏幕能显示出本次消费金额及卡上余额,并通过打印机打印出小票。
设计分为六个个模块,各个模块可以实现以下功能:
1、单片机控制模块:
采用AVR系列ATmega128A,实现对整个系统的控制。
2、显示模块:
显示可供选择的点餐时段和菜谱;显示关于订餐操作的提示信息;显示订餐者所预定的菜谱、份数、消费情况及卡上余额[10]。
3、键盘模块:
该模块具有8个按键,其中有1个按键为备用键,其余7个按键分别为上移、下移、确定、修改、翻页、浏览、复位:
通过上移键和下移键可以选择不同的点餐时段、菜名和点餐份数;确定键可以选择订餐时段、菜名和点餐份数,此外也可以通过确定键来打印小票;通过修改键可以修改已经选择的菜名和点餐份数;通过翻页键可以查看某一点餐时段内的所有菜谱;浏览键可以浏览所点的饭菜名称、份数及消费额;复位键可以使系统复位。
4、打印模块:
能够打印出订餐者已订的菜名、菜份数、消费金额以及终端号等。
5、通信模块:
能够实现上位机和所有通终端的信。
通信功能是整个系统的重要环节,要求终端能够向上位机及时、准确、可靠的传送已订菜名、份数及订餐卡号等各种信息。
6、读卡模块:
能够读出有效的卡号。
键盘模块
单片机
控制模块
显示模块
读卡模块
打印模块
通信模块
2.2该设计系统框图
图2.2:
系统结构框图
2.3设计选用的主要器件简介
2.3.1ATmega128单片机
本设计以ATmega128单片机作为中心控制芯片。
ATmega128是一种基于AVRRISC结构的8位低功耗CMOS微处理器。
由于其先进的指令集以及单周期指令执行时间,ATmega128的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
ATmega128具有如下特点:
128K字节的系统内可编程Flash(具有在写的过程中还可以读的能力,即RWW)、4K字节EEPROM、4K字节的SRAM、53个通用I/O口线、32个通用工作寄存器、实时时钟RTC、4个灵活的具有比较模式和PWM功能的定时器/计数器(T/C)、两个USART、面向字节的两线接口TWI、8通道10位ADC。
其丰富的I/O口及2个通信串口完全能够满足订餐系统的要求,所以选择此芯片作为系统核心控制器[9]。
2.3.2C240128Z液晶显示屏
C240128Z是综合了中英文文字和绘图显示的240(列)*128(行)的全点阵显示模块。
内含硬件字库,可以显示中文字型、数字符号、西文字符与日文字符。
在文字模式中,可以通过送入中文字型的内码直接显示中文,而不需要在绘图模式下以绘图的方式描绘中文,可以节省许多处理时间[10]。
提升液晶显示中文的处理效率。
编程模式简洁方便,为项目开发节约了宝贵的成本和时间。
此液晶能够显示8×15个汉字,并且其所需电源电压与TTL电平兼容,所以选择它作为显示器。
2.3.3键盘模块
为了减少键盘占用单片机的I/O线数目,采用行列式键盘结构,根据本系统具体需要采用2×4键盘结构。
矩阵键盘电路连接复杂,但提高了I/O口的利用率,软件编程较复杂,适用于需使用大量按键的场合[12]。
单片机对按键的识别是通过键扫描法来实现的。
键扫描法就是要判断有无键按下,当扫描到有键按下时再进行下一步处理,否则退出键盘处理程序。
独立式键盘扫描只需读取I/O口状态,而矩阵式键盘扫描通常有两种方法:
逐行扫描法和线反转法。
逐行扫描法是依次从第一至最末行线上发出低电平信号,如果该行线所连接的键没有按下的话,则列线所接的端口得到的是全“1”信号,如果有按键按下的话,则得到非全“1”信号。
由于矩阵键盘和独立键盘相比有占用I/O口少的特点,本次设计采用2
4矩阵键盘,因此按键识别必须通过软件来实现。
本系统采通过逐行扫描法,用switch-case语句来实现按键识别,由于按键按下时的机械动作,在按键被按下或松开的瞬间,其输出电压会产生波动,称为键的抖动。
为确保每按一次键单片机只进行一次处理,使键盘可靠的工作,必须消除按键抖动[14]。
消除方法有硬件消抖和软件消抖两种。
硬件消抖法就是在键盘中附加去抖动电路,从根本上消除抖动产生的可能性。
软件消抖法是采用延时(一般延时10~20ms)的方法,以避开按键的抖动,即在按键已稳定的闭合或断开时才读出其状态。
本系统通过延时10ms来对按键进行消抖处理。
2.3.4炜煌热敏打印机E22
E22打印机采用直接热敏打印的方法打印,打印纸宽为57.5
0.5mm,打印密度为8点/mm,有效打印宽度为48mm,可以打印20H-7fH间的标准ASCII码半角字符和国标一、二级汉字,此打印机一行可打印12个汉字。
接口形式为并口,提供缺纸、打印机不在线等功能,并且与TTL电平兼容[15]。
2.3.5GW200KB无线通信
GW200KB无线通信模块能够支持RS485/RS232/TTL接口,具有64个频道,可以软、硬件修改频道,可以软件修改波特率,同时可以可以软件修改发射功率。
最多256个负载;内置高速MCU做FEC(前向纠错)处理,通信可靠性可与有线媲美;可以软件控制的待机模式;可以硬件跳线设置上电后工作频道,以适合不需要实时软件更改频道的应用;内置硬件看门狗,适合极端恶劣条件的应用。
其无线通信距离大于800米,适用于本设计的需要[17]。
2.3.6M106BXN非接触射频读卡
非接触射频读卡模块采用125K射频基站。
以韦根或UART接口输出ID卡卡号,在UART模式下,可工作于主动方式和被动方式,更适合用户需求:
(1)主动方式下:
当有卡靠近模块时,ID卡号连续从串口输出。
(2)被动方式下:
当有卡靠近模块,同时模块CLK端出现下降沿,串口才输出卡号。
该读卡模块完全支持EM、TK及其125K兼容ID卡片的操作。
通讯协议:
(1)UART:
适用于PC机或8位UART的单片机,波特率9600与19200可选;
(2)韦根26/34:
通用读卡器接口。
自带看门狗[19]。
3基于单片机自助订餐终端的设计
3.1该设计的操作流程图
确定键
Y
修改键
N
N
N
Y
Y
浏览键
Y
Y
上电
选择菜名
待机页面
显示本次消费清单及余额
显示卡中余额
选择餐段间
继续点菜
刷卡卡
确认份数
图2系统程序流程图
3.2控制模块设计与功能实现
本次设计,使用protelDXP软件作为电路绘制软件,并完成了自助订餐终端的实物制作。
在下文中,将从protelDXP软件电路图、实物图片、各模块器件接口定义与功能的实现的角度对该基于单片机的自助订餐系统的设计进行阐述与介绍。
图3.1单片机最小系统
单片机最小系统如图3.1,单片机晶振为7.3728MHz,通过ISP方式向单片机下载程序。
3.3显示模块的设计与功能实现
3.3.1显示模块流程图
复位
确定
Y
初始页面
显示卡中余额
显示菜谱
显示份数
消费情况
刷卡
确定
确定
订餐
复位
复位
复位
复位
确定
确定
订餐
显示餐段
图3.2液晶模块流程图
上电之后,LCD显示器显示初始页面,即“欢迎使用自助订餐系统,请刷卡”,成功刷卡之后显示卡上余额,确定后显示可以订餐的餐段,确认后可以选择该餐段的菜谱,通过确定键可以选择餐名和分数,确定订餐之后可以打印小票。
3.3.2显示模块路电路图
图3.3显示模块电路图
3.3.3显示模块实物图
图3.4显示模块实物图
3.3.4显示模块LCD接口定义
表3.1显示模块接口定义
引脚号
引脚名称
引脚功能描述
1
VSS
电源地
2
VDD
电源正
3
VO(NC)
LCD驱动电压调节(对比度调节)
4
RS
指令数据选择H:
数据L:
指令
5
RD
读信号低有效
6
WR
写信号低有效
7~14
DB0~DB7
八位三态并行数据总线
15
CS1
片选1,低有效
16
CS2
片选2,高有效
17
RST
复位信号低有效
18
VEE(NC)
LCD驱动电压
19
BLA
背光正
20
BLK
背光负
21
INT
中断信号
22
BUSY
忙信号
3.3.5LCD指令寄存器介绍
寄存器00H=0XCD:
正常电源模式,文字显示模式,屏幕显示开启,屏幕显示正常,不反白。
寄存器01H=0XF2:
系统时钟8MHZ。
寄存器10H=0X2B:
中英文不对齐,正常字形不加粗,数据写入时光标自动移位,不显示光标。
寄存器11H=0X20:
光标高度为2,行与行之间的距离为0。
寄存器12H=0X91:
光标移动顺序为先水平移动再垂直移动,只显示图层一,读写运行于图层一。
寄存器20H=0X1D:
工作窗口右边界240/8-1=29=0X1D。
寄存器30H=0X7F:
工作窗口底边界128-1=127=0X7F。
寄存器40H=0X00:
工作窗口左边界0。
寄存器50H=0X00:
工作窗口上边界0。
寄存器21H=0X1D:
显示窗口右边界240/8-1=29=0X1D。
寄存器31H=0X9F:
显示窗口底边界160-1=159=0X9F。
寄存器41H=0X00:
显示窗口左边界0。
寄存器51H=0X00:
显示窗口上边界0。
C240128Z是根据寄存器21H、31H、41H、51H的值来计算和设定驱动波形的,而控制器是专为240
160点阵设计的,为了不影响显示效果,这里的四个寄存器必须按照240
160来初始化。
寄存器60H=0X00:
光标横坐标x位置。
寄存器70H=0X00:
光标纵坐标y位置。
寄存器61H=0X00:
显示起始地址为0。
寄存器71H=0X00:
水平移动块起始位置为0。
寄存器72H=0X9F:
水平移动块结束位置为160-1=159=0X9F。
寄存器F0H=0XA0:
选择简体(GB)字形,选择ASCII区块0。
寄存器F1H=0XF1:
字体放大倍数为1倍[20]。
3.4键盘模块
3.4.1键盘模块流程图
键盘扫描
确定键
修改键
翻页键
复位键
订餐键
YN
YN
YN
YN
YN
结束
上移键
下移键
YN
YN
YN
图3.5键盘模块流程图
3.4.2键盘模块电路图
图3.6键盘模块电路图
3.4.3键盘模块实物图
图3.7键盘模块实物图
3.3.4键盘模块接口定义
表3.2键盘模块接口定义
Pb2=H0
行0
包含s1,s2,s3,s4;
Pb3=H1
行1
包含s5,s6,s7,s8
Pb4=L0
行0
包含s1,s5
Pb5=L1
行0
包含s2,s6
Pb6=L2
行0
包含s3,s7
Pb7=L3
行0
包含s4,s8
注:
各键盘含义:
S8:
上移;S7:
下移;S6:
浏览;S5:
复位;S4:
翻页;S3:
修改;S2:
确定;S1:
未用。
3.4打印模块
3.4.1打印模块电路图
图3.8打印模块电路图
3.4.2打印模块实物图
图3.9打印模块实物图
3.4.3打印模块接口定义
表3.3打印模块接口定义
引脚
信号
方向
说明
1
-STB
入
数据选通触发脉冲,上升沿时读入数据
3,5,7,9,11,
13,15,17
DATA1-DATA8
入
这些信号分别代表并行数据的第一至第八位信号
19
-ACK
出
回答脉冲,低电平表示数据已被接收
21
BUSY
出
高电平表示打印机忙,不能接收数据
23
PE
出
缺纸信号,高电平表示打印机缺纸
25
SEL
出
高电平表示打印机在线
4
-ERR
出
高电平打印机无故障
2,6,8
空脚
10-26(偶数)
GND
-
接地
3.4.4打印机设置与命令介绍
1、打印机设置
打印机有两个功能键:
LF键和SET键,一个指示灯:
绿灯。
绿灯本身即为LF键,上电后按一下LF键,打印机向前走纸一段。
SET键在打印机背部通信接口左侧孔内。
绿灯上电后为常亮状态,缺纸时为闪烁状态。
打印机断电,按LF键不放,给打印机加电,松手,打印机会打印出自检条。
打印机断电,按SET键不放,打印机加电,按LF键改变波特率:
1200,2400,4800,9600,19200bps,设置完成后需重新加电。
2、打印机命令详解
ESC6:
该命令使打印机打印字符集1中的字符,字符集1中有字符224个,代码范围20H-FFH。
包括ASCII字符,及各种图形符号等。
FS&:
该命令用于进入汉字方式,在中文打印方式时,打印机接收的汉字代码为标准机内码,根据代码寻找打印机内的汉字字模,如找到则打印,否则不打印。
打印机接收到单字节的ASCII码时,打印出相应的ASCII字符,与汉字等高。
CR:
回车命令,打印机收到本命令后,即对缓冲区内的命令和字符进行处理,按要求打印缓冲区内的全部字符或汉字,并换行。
ESCpn:
该命令是设定字符之间的空点,默认方式为0,n为字符间空点数,n在0~255之间。
ESCIn:
是否允许反白打印命令,n=1允许反白打印,n=0禁止反白打印,上电后初始化后n=0,允许反白打印后的字符和汉字将以黑底白字打印出来。
GSWn1n2:
设置条形码宽度尺寸,n1为条形码窄条尺寸,以点为单位,n2为条形码宽条尺寸。
GShn:
设置打印条形码的高度n=0~255,以点为单位,n=0为256点[22]。
3.5通信模块
3.5.1通信模块电路图
图3.10通信模块电路图
该电路图为RS485通信方式电路图,在毕业设计阶段,由于没有购买GW200KB无线通信模块,选用了RS485通信方式来替代并完成了相关的设计与制作。
RS485通信方式:
RS485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点,所以它成为首选的串行接口。
因为RS485接口组成的半双工网络,一般只需二根连线,所以RS485接口均采用屏蔽双绞线传输[23]。
在要求通信距离为几十米到上千米时,广泛采用RS485串行总线。
RS485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。
RS485采用半双工工作方式,任何时候只能有一点出于发送状态,因此,发送电路必须由使能信号加以控制。
RS485用于多点互联时非常方便,可以省掉许多信号线。
应用RS485可以联网构成分布式系统。
RS485具有以下特点:
1、RS485的电气特性:
逻辑“1”以两线间的电压差+2V~+6V表示,逻辑“0”以两线间的电压差-6V~-2V表示。
接口信号电平比RS232降低了,就不容易损坏接口的电路芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。
2、数据最高传输速率为10Mbps。
在使用RS485接口时对于特定的传输线路,从RS485接口到负载其数据信号传输所允许的最大电缆长度与信号传输的波特率成反比,这个长度数据主要是受信号失真及噪声等影响。
理论上,通信速率在100Kpbs及以下时,RS485的最长传输距离可达1200米,但在实际应用中传输的距离也因芯片及电缆的传输特性而所差异。
在传输过程中可以采用增加中继的方法对信号进行放大,最多可以加八个中继,也就是说理论上RS485的最大传输距离可以达到9.6公里[24]。
3、RS485接口采用平衡驱动器和差分接收器的组合,抗共模干扰能力强,即抗噪声性能好。
4、RS485接口在总线上允许连接多达128个接收器,即具有多站能力,这样用户可以利用单一的RS485接口方便的建立设备网络。
本系统经过比较选择RS485通信方式,RS485通信采用SN75176芯片,此芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。
R和D端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD1和TXD1相连即可,/RE和DE端分别为接收和发送的使能端,当/RE为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为逻辑1;当A的电平低于B端时,代表发送的数据为逻辑0。
在与单片机连接时接线非常简单。
只需要一个信号D_485控制SN75176芯片的接收和发送即可。
同时将A和B端之间加匹配电阻,一般可选100Ω的电阻[25]。
通信模块与单片机的串口1相连接,实现单片机与上位机通信。
波特率为9600bps,数据格式为1个起始位,8个数据位,1个停止位,无奇偶校验位。
3.6读卡模块
3.6.1读卡模块