基于单片机的食堂售饭收费系统设计_第1页
基于单片机的食堂售饭收费系统设计_第2页
基于单片机的食堂售饭收费系统设计_第3页
基于单片机的食堂售饭收费系统设计_第4页
基于单片机的食堂售饭收费系统设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的食堂售饭系统设计姓名:刘磊学号:班级:电气091指导老师:闫群民课设日期:2023年6月单片机的食堂售饭收费系统应用摘要0引言第一章.系统功能说明1.就餐阶段2.充值阶段3.初始化阶段第二章.系统的整体设计2.1应用系统结构设计2.2设备选择2.2.1IC卡2.2.1按钮2.2.3显示单元2.2.4上位机连接第三章硬件部分3.1IC卡接口连接3.2键盘和显示接口的设计3.3蜂鸣器报警单元连接3.4IC卡上电检测电路设计第四章4.1软件结构设计4.1.1主程序4.1.2按键解决程序附录;软件部分.单片机的食堂售饭收费系统应用摘要本文叙述了传统食堂售饭系统的局限性,介绍了以IC卡为媒介的单片机售饭系统。从系统功能说明出发,对控制系统的组成结构、系统设备选型进行了分析,设计出了以单片机为核心的硬件电路和支持各硬件部分的软件程序。通过集成测试,该系统安全、准确无误、性能稳定可靠,实现了售饭管理的科学化和现代化。关键词AVR单片机,10卡,三极管,SLE4442卡,232芯片0引言IC卡,又称集成电路卡或者智能卡,是继磁卡、光电卡之后的新一代标记卡。这种具有智能便于携带的卡片,为现代信息解决和传输提供了一种全新豹手段。随着超大规模集成电路、大容量存储芯片以及信怠安全技术的发展,IC卡技术也不断有新进展,应用领域也不断地扩大,以IC卡为媒介的单片枫售饭系统就是一个范例。IC卡的应用提高了人们生活和工作的现代化限度,已成为一个国家科技发展水平现代化限度的标志之一.IC卡售饭机是合用于就餐人数密集的食堂收费系统,该系统从主线上解决了餐券流通过中盼伪造、丢失、维茵交叉感染等一系列闻题,促进了饮食鼹务管理南规范化、系统化和科学化方向的发展。第一章.系统功能说明食堂IC卡售饭机作为食堂收费终端,根据实际使用环境,应具有如下功能特点,以合用不同阶段的数据解决。就餐阶段就餐阶段即正常使用阶段。在IC卡插入售饭机后,系统能读出IC卡里面预先存储的金额,并能在面对就餐者和售饭员两方面双屏进行显示。售饭员运用键盘输入就餐者选定的食物的金额,售饭机自动用卡中的金额减去应付金额。操作完毕后屏幕显示应付金额|以及卡中的余额。假如就餐者卡中的余额小于预先设定的金额,售饭机则给出报警音,提醒就餐卡为IC卡进行充值。食堂售饭窗口不具有为卡充值的功能,就餐者必须到指定的地方进行充值。假如就餐卡出现故障,售饭机给出报警音,提醒就餐者修卡,食堂售饭窗口不具有对卡进行修复的功能。就餐者必须到指定的地方修复。假如修复失败,就餐者只有到充值窗口重新办理就餐卡。充值阶段在充值阶段,IC卡售饭机读出卡里面的余额,就餐者在充值窗口交纳一定的金额后,由工作人员通过键盘输入次此充值金额,售饭机自动将本次充值金额加入卡中。操作完毕后,屏幕显示充值后卡中的余额。初始化阶段初始化阶段是为卡的发行做准备。在此阶段,工作人员通过键盘进行就餐卡的初始化工作。此阶段的重要任务是写入用户群号和初始金额。只有通过初始化之后,就餐卡方能发行.第二章.系统总体设计2.1.应用系统结构设计根据1.1所述IC卡售饭机的功能特点,售饭机系统需要完毕数据的输入、显示和处理三种功能,整个系统的结构框图如图2-1所示。2.2设备选择本设计采用Atmel公司高性能低功耗AT90S8535作为控制核心,按照上图所拟定的系统结构,选择合适的功能部件,完毕完整的系统控制电路设计,控制系统需要选择IC卡单元,键盘单元,显示单元三部分。 2.2.1IC卡根据IC卡的读写特点,IC卡分为接触型IC卡和射频卡两类。(1)接触型IC卡接触型IC卡的表露有6个或8个金属触点,IC卡插入读写器内后,在徽解决器的控制下完毕可是的读写操作。(2)射频卡射频卡没有金属触点,丽是在卡内置有天线和射频卡处在读写卡器一定距离内时,读写卡器通过发射射频信号对卡进行读写操作。根据IC卡的内部结构,IC卡又可分为存储卡、逻辑加密卡和CPU卡。(1)存储卡(2)逻辑加密卡(3)CPU卡2.2.2按钮独力按钮独立型按键的一脚通过电阻接电源端或者地,而另一脚接单片机的I/0口,其结构如图2-2所示。在按键被按下和没有按下时,I/0口电平刚好相反。这样通过检测I/0口的电平状态即可判断哪个按键被按下了。此类键盘的特点是按键电路配置灵活、按键的状态辨认简朴,但是每一个按键需要占用一个l/口,资源占用率较高,当按键的数量不是很多或者系统有睨较多的I/0口剩余时,可以采用此类设计。行列式按钮矩阵扫描键盘有行线和列线组成。按键位子行列线的交叉点上,结构图如2-3所示。一个3*3的矩阵结构就可以构成一个具有9个按键的键盘。按键设立在行列线的交叉点上,行列线分别接到按键开关的两端。行列通过上拉电阻接到+5V上。平时当没有按键按下时,列线处在高电平的状态;而当有键按下时,行列线导通,因此列线的电平状态将由此相连接,各键按下与否会影响该键所在的行列线的电平。这样行列线配合起来进行适当的解决,即可拟定按键的位置。此类键盘与独立式键盘相比,要节省很多的I/0口,合用于按键数量较多的场合。矩阵扫描键盘有行线和列线组成。按键位子行列线的交叉点上,结构图如2-3所示。此类键盘与独立式键盘相比,要节省很多的I/0口,合用于按键数量较多的场合。 2.2.3显示单元IC卡售饭机系统只需要进行数字的显示即可,但需要显示器件直观和高亮度。在此基础上,本设计采用的高亮度红色LED数码管作为显示器件,具体的设计见硬件设计部分。2.2.4上位机连接第三章硬件部分IC卡售饭机的硬件电路如图3—1所示,,下面对各单元电路分别予以明如图3-1所示3.1IC卡接口连接本设计采用西门子SLE4442逻辑加密型IC卡,它与AT90D8535的连接如图3—2所示。1〉IC卡简介SLE4442是西门子公司的一款具有可编程安全代码(PSC)和写保护功能的智能型存、储芯片。它有2568EEPROM主存储器,不可逆的4个写保护存储器,lB的错误计数器具有3B密码保护功能。SLE4442采用两线数据传输方式,符合IS07816-3标准。每个字节的写入/擦除时间为2.5豪秒,数据保存时间2023上.SLE4442具有一个安全逻辑,用以控制存储器的读写操作.在密码成功之前,除3B密码(可编程安全代码)外,数据都可以读出,只有在校验密码成功之后才可以执行数据的写入动作.在校验密码之前,可以将错误计数器的某一位写“0”。错误计数器的初始值为0X03,每校验密码错误一次则将其中一位写“0”,假如连续三次密码校验错误,错误计数器的值变为OX03,IC卡报废。2〉SLE4442IC卡的引脚配置3.2键盘和显示接口的设计键盘编码根据对系统功能的分析,为了使IC卡售饭机可以适应不同阶段的数据解决,系统设置了如下16个数字键和功能键。数字键:O到9、小数点按键“."功能键:+、一、初始化键、修复键、确认键其按键配置如图3—17所示。2.键盘功能定义就餐阶段就餐阶段属于消费阶段,待就餐者插入IC卡后,按“一"键后从键盘输入消费的金额,爵按“拟定’’键即可完毕一次正常消费。假如就餐者插入的是合法卡,则会显示IC卡中的金额;假如插入的是非法卡,则会显示“EEEEEEEE”,同时发出警报声。假如IC卡出错,同时发出警报声提醒进行修复工作。假如修复失败,则会显示“EEEEFFFF",同时发出报警声。(2)充值阶段就餐者在充值阶段为IC卡充值。插入IC卡后,显示卡里面的余额。按“+"键后从键盘输入充值金额,然后再按“拟定”键,即可完毕一次充值过程。假如充值失败,则会显示“FFFFFF"同时给出报警提醒重新充值。(3)修复阶段将损坏的就餐卡插入售饭机,按“修复"键,再按“确认’’键,即可对就餐卡进行修复。假如修复失败,系统会发出报警声。(4)初始化阶段初始化阶段为IC卡的发行做准备。插入新卡后按“初始化”键,然后从键盘输入预充值金额,然后按“拟定",售饭机自动完毕IC卡的初始化工作并写入预充值金额。3.3蜂鸣报警器接口设计本设计采用电磁式蜂鸣器作为IC卡犯错报警提醒。它与单片机AT90S8535的连接如图3-18所示。单片机AT90S8535的PD3口通过NPN型三极管驱动蜂鸣器。当PD3输出高电平时,三极管导通,蜂鸣器发出报警声。3.4IC卡上电检测电路设计IC卡上电检测电路如图3-19所示。单片机在检测到IC卡上电后才开始执行卡的读写操作。IC卡上电检测电路即IC卡上电检测以保证单片机正常的操作。在IC卡的卡座上通常有静动两片金属片。在IC卡插入卡座时,动金属片被IC金属片的一端固定通过电阻LED接地。静金属片固定装5伏电压,在IC卡没有插入时,动金属片为0伏电压,IC卡插入后静金属片变为5伏电压,LED点亮,提醒有IC卡插入单片对卡进行初始检测,这样通过与动金属片连接的单片机DP2的电平,即可检测IC2是否上电。第四章软件结构设立1.软件结构设计

IC卡售饭祝软件系统采用模块纯程序设计。从结构主看,系统控制软件重要涉及一个主程序、按键解决程序和其他一些辅助解决程序。从功能上看,系统控制软件则重要由IC卡控制程序。4.1-1主程序主程序重要完毕系统初始化、IC卡插入检测、读写和键盘输入与解决、异常情况的报警解决等工作,以完毕人机交互的功能。

图4-1主程序流程图4.1.2按键解决程序按键解决程序是系统服务程序的一部分。按键解决程序完毕按键的辨认与解决工作。在确认有键被按下后,通过查找按键,区分功能键与数字键,从而根据不同的情况进行相应解决附录:程序#include<io8385v.h>#include<SLE4442.h>#defineucharunsignedchar#defineunitunsignedint#defineMAM0/*定义主存储器代号*/#defineSCM1/*定义加密存储器代号*/#definePRM2/*定义保护存储器代号*/sbitIsCard=P3^2;//判断是否有卡,当P3.2口为低电平时,卡插入;当P3.2口为高电平时,无卡。(由于当卡插入时,E1口与E2口接通,由于E2口接地,则E1被拉成低电平)#defineDisPortPA//PA口为段选口#defineDigPortPC//PC口为位选口ucharDisplayData[4];//更新显示的四位数组ucharDisplayDig=0;uintTimeCount;uintDisplayTemp=0xffff;ucharcodeDisplayCode[11]={0xC0,/*0*/0xF9,/*1*/0xA4,/*2*/0xB0,/*3*/0x99,/*4*/0x92,/*5*/0x82,/*6*/0xF8,/*7*/0x80,/*8*/0x90,/*9*/0xBF,/*-*/};ucharFuHao;bitXiuGai;ucharDig[4]={0x60,0xa0,0xc0,0xf0};//4位数码管的代码(由于在硬件中将第四位数码管的三极管误焊成了NPN型的8050,8050的特点是输入为高电平时亮,而8550的特点是当输入为低电平时亮,所以当第一位数码管亮时,应为01100000,即0X60)intYuE;sbitBee=P3^3;voidTimer0Init(void) //100微秒@11.0592MHz{ AUXR&=0x7F; //定期器时钟12T模式(STC89C52有2个工作模式:6T和12T的,12T表达12个时钟完毕1个指令) TMOD&=0xF0; //设立定期器模式 TMOD|=0x02; //设立定期器模式 TL0=0xA4; //设立定期初值 TH0=0xA4; //设立定期重载值 TF0=0; //清除TF0标志 TR0=1; //定期器0开始计时ET0=1; EA=1;}voidUpDisplay() //更新显示{ if(DisplayTemp!=0xffff) { DisplayData[0]=DisplayTemp/1000%10; DisplayData[1]=DisplayTemp/100%10; DisplayData[2]=DisplayTemp/10%10; DisplayData[3]=DisplayTemp%10; } else { DisplayData[0]=10; DisplayData[1]=10; DisplayData[2]=10; DisplayData[3]=10;//DisplayTemp=0xffff时,数码管显示---- }}ucharkeyscan(){uchartemp,key;P3=oxfe;temp=P3;temp=temp&oxf0;if(temp!=oxf0){delayms(10);temp=P3;temp=temp&oxf0;if(temp!=oxf0){temp=P3;switch(temp){caseoxee:key=1;break;caseoxde:key=2;break;caseoxbe:key=3;break;caseox7e:key=4;break;}While(temp!=oxf0){temp=P3;temp=temp&oxf0;}}}P3=oxfd;temp=P3;temp=temp&oxf0;if(temp!=oxf0){delayms(10);temp=P3;temp=temp&oxf0;if(temp!=oxf0){temp=P3;switch(temp){caseoxed:key=5;break;caseoxdd:key=6;break;caseoxbd:key=7;break;caseox7d:key=8;break;}While(temp!=oxf0){temp=P3;temp=temp&oxf0;}}}P3=oxfb;temp=P3;temp=temp&oxf0;if(temp!=oxf0){delayms(10);temp=P3;temp=temp&oxf0;if(temp!=oxf0){temp=P3;switch(temp){caseoxeb:key=9;break;caseoxdb:key=0;break;caseoxbb:key=‘.’;break;caseox7b:key=‘+’;break;}While(temp!=oxf0){temp=P3;temp=temp&oxf0;}}}P3=oxf7;temp=P3;temp=temp&oxf0;if(temp!=oxf0){delayms(10);temp=P3;temp=temp&oxf0;if(temp!=oxf0){temp=P3;switch(temp){caseoxe7:key=‘-’;break;caseoxd7:key=‘==’;break;caseoxb7:caseox7e7:}While(temp!=oxf0){temp=P3;temp=temp&oxf0;}}}voiddelay(ucharnum){P0=table[10]:}uchardat[4]={0,0,0,0};voidkeypro(key){switch(key) { case0: case1: case2: case3: case4: case5: case6: case7: case8: case9: dat[0]=dat[1]; dat[1]=dat[2]; dat[2]=dat[3]; dat[3]=key; //数码管位移 DisplayTemp=dat[0]*1000+dat[1]*100+dat[2]*10+dat[3]; break; case'+': XiuGai=1; dat[0]=0; dat[1]=0; dat[2]=0; dat[3]=0; FuHao='+'; DisplayTemp=0;//总的数码管显示0 break; case'-': XiuGai=1; dat[0]=0; dat[1]=0; dat[2]=0; dat[3]=0; FuHao='-'; DisplayTemp=0; break; case'.': dat[0]=0; dat[1]=0; dat[2]=0; dat[3]=0; DisplayTemp=0; break; case'==': if(FuHao=='+') { YuE+=DisplayTemp; DisplayTemp=YuE; } elseif(FuHao=='-') { YuE=YuE-DisplayTemp; DisplayTemp=YuE; } UpDisplay(); if(YuE>0) { if(IChkpsw_4442(0xff,0xff,0xff)==0)//假如IC卡的密码为0XFF,0XFF,0XFF { ISenddat_4442(MAM,50,4,DisplayData);//则将数据发送给4442卡,MAM表达将数据发送给4442的主存储器,起始地址为50的4个字节,更新显示 } else { Bee=0;//若密码不是0XFF,0XFF,0XFF,则蜂鸣 } } else { Bee=0;//若所消费的金额大于等于卡中的金

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论