为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

叶俊豪-超市收银系统设计

2017-09-29 33页 doc 291KB 17阅读

用户头像

is_219945

暂无简介

举报
叶俊豪-超市收银系统设计叶俊豪-超市收银系统设计 摘 要 近年来,随着社会的不断进步,大小型的超市已经陆续进入了城市里。为了实现更加有效,人性化的超市收银管理,超市收银系统是必不可少的。针对大小型超市,我们设计了一款成本低廉、功能完善的超市收银系统,为广大店主降低和经营成本提供一个良好的选择。 本文给出了一种基于单片机的超市收银系统的设计与实现。本文设计是使用STC89C52单片机实现对超市收银系统的开发,实现所需要的硬件电路,并使用 C语言对软件进行编程,系统功能完善,具有条形码的输入,商品名称与数量的统计,总价的统计并最后在液晶显示器显示等...
叶俊豪-超市收银系统设计
叶俊豪-超市收银系统设计 摘 要 近年来,随着社会的不断进步,大小型的超市已经陆续进入了城市里。为了实现更加有效,人性化的超市收银管理,超市收银系统是必不可少的。针对大小型超市,我们设计了一款成本低廉、功能完善的超市收银系统,为广大店主降低和经营成本提供一个良好的选择。 本文给出了一种基于单片机的超市收银系统的设计与实现。本文设计是使用STC89C52单片机实现对超市收银系统的开发,实现所需要的硬件电路,并使用 C语言对软件进行编程,系统功能完善,具有条形码的输入,商品名称与数量的统计,总价的统计并最后在液晶显示器显示等功能,能协助基于计算机的超市收银系统,成为大小超市财务经营治理的良好选择。 本设计以单片机STC89C52作为控制核心,完成了超市收银系统的各项基本功能的要求。我们实现了按照串口从条码阅读器读取条形码信息,以及输出条码信息所对应的商品名称,数量,单价,并且最后统计一次性购买的总价,并在液晶显示屏显示数据,方便顾客看到,使我们的设计作品更加成熟。 关键词:一维条码 STC89C52 MAX232 LCD1602 目 录 1 前言 ???????????????????????????????????????????????????????????????????????????????????? 1 1.1 课的目的和意义 ????????????????????????????????????????????????????????????????? 1 1.2 设计的目的和要求 ????????????????????????????????????????????????????????????????? 2 2 的比较与选择 ??????????????????????????????????????????????????????????????????? 2 2.1 控制器模块的选择 ????????????????????????????????????????????????????????????????? 2 2.2 液晶显示屏的选择 ????????????????????????????????????????????????????????????????? 2 3 电路设计 ?????????????????????????????????????????????????????????????????????????????? 2 3.1 系统电路设计 ??????????????????????????????????????????????????????????????????????? 3 3.1.1 整体框图 ?????????????????????????????????????????????????????????????????????????? 3 3.1.2 控制模块 ?????????????????????????????????????????????????????????????????????????? 4 3.1.3 显示模块 ?????????????????????????????????????????????????????????????????????????? 4 3.1.4 串口模块 ?????????????????????????????????????????????????????????????????????????? 5 3.2 系统元件分析 ??????????????????????????????????????????????????????????????????????? 6 3.2.1 一维条码 ?????????????????????????????????????????????????????????????????????????? 6 3.2.2 条码阅读器 ??????????????????????????????????????????????????????????????????????? 7 3.2.3 STC89C52芯片 ???????????????????????????????????????????????????????????????????? 7 3.2.4 MAX232芯片 ??????????????????????????????????????????????????????????????????????? 9 3.2.5 串口 ?????????????????????????????????????????????????????????????????????????????? 10 3.2.6 LCD1602液晶显示屏 ????????????????????????????????????????????????????????????11 4 软件设计 ???????????????????????????????????????????????????????????????????????????? 12 程序流程图 ???????????????????????????????????????????????????????????????????????? 12 4.1 5 测试数据及测试结果分析计算 ??????????????????????????????????????????????????? 14 6 结论 ?????????????????????????????????????????????????????????????????????????????????? 16 致谢 ?????????????????????????????????????????????????????????????????????????????????????? 17 参考文献 ????????????????????????????????????????????????????????????????????????????????? 18 英文摘要 ????????????????????????????????????????????????????????????????????????????????? 19 附录 毕业设计成绩评定表 1 前言 1.1 本课题的目的和意义 现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,这使得对超市收银系统的进一步开发和利用显得尤为迫切。在我国超市形成在20世纪90年代初期,现在已成为我国零售业的一种重要形态,为国民经济的发展发挥了重要的作用。随着超市高速的发展,其经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售的发展,这样就迫切地需要引入新的管理技术。 超市形态具有种种优点,但在目前状况下,它仍存在零售业企业所共有的落后的一面,如:不能有效地管理每种商品,收款结算速度慢,容易出现营业差错,不宜进行商品调价,盘点效率低等,而且在超市日常管理中,商品的进、销、存等决策以经验为主,缺乏实时分析功能,管理人员对及时传递资料的要求始终得不到满足。 超市形态的高速发展,其经营管理也变得愈加复杂,日常所需要处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。为此,在选题过程中,我选择了超市收银系统设计题目,依靠现代化的单片机信息处理技术来管理超市,从而节省了大量的人力、物力,改善了员工的工作条件,减轻了劳动强度,并且能够快速反映出商品的进、销、存等状况和各种反馈信息分析,使管理人员快速对市场的变化做出相应的决策,加快超市经营管理效率。 21世纪,超市的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。技术的提升和管理的升级是超市业的竞争核心。零售领域目前呈多元发展趋势,多种业态:超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市营业者努力追求的目标。针对超市的特点,为了帮助小城市超市解决现在面临的问题,提高小型超市的竞争力,我们将开发基于单片机超市系统。随着现代科学技术的迅猛发展,计算机技术已渗透到各个领域,成为各行业必不可少的工具。在当今激烈的市场竞争中,让顾客享受既实惠又快捷的购物服务是商战中制胜的一大要素。改革开放的今天,各种大型超市林立,超市已成为消费者日常活动的主要场所。而超市商品也非常之多,建立 1 一套方便快捷的超市收费系统是企业必然要解决的一个问题。系统采用的编程工具是C语言版本。 1.2 设计的目的和要求 本设计的关键技术是51单片机的核心控制器STC89C52对数据的处理,条形码阅读器对一维条码的识别技术,串口通信的数据传输技术,液晶显示的技术,C语言编程的软件技术。 本设计以单片机STC89C52作为控制核心,完成了超市收银系统的各项基本功能的要求。我们实现了按照串口协议从条码阅读器读取条形码信息,进而输出条码信息所对应的商品名称,数量,单价,并且最后统计一次性购买的总价,最后在液晶显示屏显示,方便顾客看到,使我们的设计作品更加成熟。 2 方案的比较与选择 2.1 控制器模块的选择 方案1:采用32位的ARM2138作为超市收银系统的控制核心。 ARM2138具有强大的存储空间,内嵌32k片内静态RAM和512k的flash储存器,可以实现在系统可编程(ISP),在应用可编程(IAP),2个8路10位A/D转换器,转换迅速准确,引脚资源丰富,多达47个可承受5V电压的通用I/O口,多个串行接口,包括2个16C550工业UART,2个告诉I2C接口(400kb/s),SPI和具有缓冲作用和数据长度可变功能的SSP。无论是从内部结构还是编程方面ARM2138都相对复杂,比较难掌握和使用,并且成本更高,不利于满足设计超市收银系统的要求。 方案2:采用传统的8位51系列单片机作为系统控制器。STC89C52单片机是一款具有ISP/IAP功能的单片机,它的片内具有64K字节Flash程序存储器,1K字节数据存储器,3个16位定时/计数器,6个中断,1个全双工串行口等资源。无论是从内部结构还是编程方面都STC89C52相对简单,比较容易和使用,并且成本更低,有利于满足设计简易收银系统的要求。 经综合比较,由于51系列的单片机本设计采用方案2。 2.2 液晶显示屏的选择 下面是本设计选用LCD1602液晶显示屏的原因: 1. 显示质量高。由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新亮点:因 2 此,液晶显示器画质高且不会闪烁: 2. 数字式接口。液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便: 3. 体积小,重量轻。液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多: 4. 功耗低。相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多: 3 电路设计 3.1 系统电路设计 3.1.1 整体框图 如图1所示,该系统实现了超市系统条形码阅读器信息的录入,串口模块的数据传输,51单片机内的数据处理和LCD1602液晶显示等功能。单片机接收 条形码读器读取出来的输出信号并经过串口模块进行传送,继而进行数据处理,最后通过液晶显示对处理好的数据进行显示。 条形码阅读器 液晶显示 STC89C52 图1 本设计整体系统框图 3.1.2 控制模块 [1~4]控制器模块即单片机最小系统模块STC89C52芯片如图3 所示,其主要由电源、时钟、复位电路组成。本系统采用外部11.0592M 晶振,便于单片机内 [3]部定时器产精确的定时。单片机外部资源分配:P3.0-P3.1串口接入,P1.0-P1.7接LCD1602的7-14脚,P2.5接RS,P2.6接LCDEN,RXD口接MAX232的R20,TXD口接MAX232的T21。 3 图2 最小系统电路图 3.1.3 显示模块 LCD1602液晶屏为5V电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字。液晶1,2端为电源;15,16为背光电源;为防止直接加5V而烧坏背光灯,在15脚串联一个1k电阻用于限流。液晶3端为液晶对比度调节端,通过一个10k的变位器来调节液晶显示对比度。液晶4端为向液晶控制器写数据/写命令选择端,接单片机的P2.5口。液晶5端为读/写选择端,因为我们不从液晶中读取数据,只向其写入命令和显示数据,因此此端始终选择为写状态,即低电平接地。液晶6端为使能信号,是操作时必须的信号,接单片机的P2.6口。其电路如图所示: 图3 LCD1602液晶显示 4 3.1.4 串口模块 51单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如计算机的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电 路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。 我们采用了三线制连接串口,也就是说和条形阅读器的9针串口只连接其中 、第2脚与MAX232的第7脚T20连接、第3脚与MACX232的3根线:第5脚的GND 的第8脚R2I连接,MAX232第9脚和单片机的第10脚P3.0连接,MAX232的第10脚和单片机的第11脚P3.1脚连接,其他的连接电路如下图所示: 图4 串口模块 3.2 系统元件分析 3.2.1 一维条码 条码是由一组规则排列的条、空以及对应的字符组成的标记,“条”指对光线反射率较低的部分 ,“空”指对光线反射率较高的部分,这些条和空组成的数据表达一定的信息,并能够用特定的设备识读,转换成与计算机兼容的二进制和十进制信息。通常对于每一种物品,它的编码是唯一的,对于普通的一维条码来说,还要通过数据库建立条码与商品信息的对应关系,当条码的数据传到计算 5 机上时,由计算机上的应用程序对数据进行操作和处理。因此,普通的一维条码在使用过程中仅作为识别信息,它的意义是通过在计算机系统的数据库中提取相应的信息而实现的。一维条码如下图所示: 图5 一维条码实例 3.2.2 条形阅读器 本设计使用镭码LV906条形码阅读器,外形如下图所示 图6 条形码阅读器 LV906条形码阅读器功能如下: 1.手持近距虹光条形码阅读器,内置解码器,准确识读各种一维条码。 6 2.本条码阅读器符合人体工学设计,独特枪式握持手柄,舒适的操作手感,长期使用不易疲劳。 3.LV906条形码阅读器拥有2种提示音和音量可调节的蜂鸣器,可根据使用的环境的调节蜂鸣器的音量。 4.LV906条形码阅读器多个内置接口(RS232,键盘接口,光笔和先进的USB接口)。我们采用标准RS232串口接口,接口简单。 3.2.3 STC89C52芯片 STC89C52是一个低功耗,高性能、高速度的51内核的含有8K可编程可擦写只读存储器的低功率高性能CMOS 8位单片机,该器件运用了ATMEL公司的高密度不易丢失存储技术并且兼容MCS-51工业标准的设置和管脚输出。片内的闪存允许用系统内模式编程或者传统的不易失程序编写器。内部资源比较丰富,全面,而且通用性强,可履盖多种应用要求,片内含8k空间的可反复擦些1000次的Flash只读存储器,具有256 bytes的随机存取数据存储器(RAM),32个IO口,2个16位可编程定时计数器。且该系列的51单片机可以不用烧写器而直接用串口或并口就可以向单片机中下载程序,使得ATMEL的STC89C52成为一片具有高灵活性,可有解决大多嵌入式控制应用的高性能单片机。单片机STC89C52引脚图如图7: 图7 STC89C52引脚示意图 Vcc:为芯片提供+5V电源。 7 RST:单片机复位引脚,高电平有效。当此输入端保持两个机器周期的高电平时,就可以完成复位操作。 ALE/PROG:地址锁存允许信号端。当STC89C52上电正常工作后,ALE引脚不断向外输出正脉冲信号,此频率为振荡器频率的1/6,CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控制信号。 PSEN:程序存储允许输出信号端。当STC89C52由片外程序存储器取指令时,每个机器周期两次PSEN有效。 EA/Vpp:外部程序存储器地址允许输入端/固化编程电压输入端。当EA引脚接高电平时,CPU只访问片内Flash ROM并执行内部程序存储器中的指令;但当PC的值超过0FFFH时,将自动转去执行片外程序存储器内的程序。当输入信号EA引脚接低电平时,CPU只访问片外ROM并执行片外程序存储器中的指令,而不管是否有片内存储器。 P0端口:P0口是一个漏极开路的8位准双向I/O端口。 P1、P2端口:P2是一个带有内部上拉电阻的8位双向I/O端口。其中P1.0-P1.7口接1602液晶显示。 P3端口:P3是一个带内部上拉电阻的8位双向I/O端口,P3作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。P3端口还用于一些复用功能, XTAL1、XTAL2:接外部晶振和微调电容的一端。 GND:接地端。 P1.0-P1.7:是8个带有内部上拉电阻的I/O口。而P1.0则通过上拉电阻接电源,也就是给P1.0一个高电平,这个高电平是让小车处于运行作态。 3.2.4 MAX232芯片 MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。 8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。 TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成 8 TTL/CMOS数据后从R1OUT、R2OUT输出。 第三部分是供电,15脚GND、16脚VCC(+5v)。 主要特点: 1.符合所有的RS-232C技术标。 2.只需要单一 +5V电源供电。 3.片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V- 。 4.功耗低,典型供电电流5mA 。 5.内部集成2个RS-232C驱动器 。 6.内部集成两个RS-232C接收器。 内部结构图如图8: 图8 MAX232引脚图和内部结构图 9 3.2.5 串口接口 串行接口简称串口,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口Serial Interface是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位传送,传按位顺序进行,最少只需一根传输线即可完成;成本低但送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。串行接口按电气标准及协议来分为RS-232-C、RS-422、RS485等。RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。本设计采用的是RS-232-C串口。RS-232也称标准串口,最常用的一种串行通讯接口。传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座(DB25),后来使用简化为9芯D型插座(DB9),现在应用中25芯插头座已很少采用。 RS-232采取不平衡传输方式,即所谓单端通讯。由于其发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为3,7kΩ。所以RS-232适合本地设备之间的通信。 图9 RS232串口 3.2.6 LCD1602液晶显示屏 10 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。1602LCD应用于智能仪表、通信和办公自动化等领域,它的主要作用是显示ASCII码字符,因此又被称作"字符型显示器件"。利用点阵字形特点可自定义汉字字库让其显示汉字。本设计采用点阵字符型液晶显示器LCD1602,分辨率较高,显示范围较广,同时支持数字和字符显示。1602LCD的主要技术参数:1. 显示容量:16×2个字符。2. 芯片工作电压:4.5—5.5V。3. 工作电流:2.0mA(5.0V)。4. 模块最佳工作电压:5.0V。 引脚功能表如下表: 表1 LCD1602引脚功能 编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据/命令选择 12 D5 数据 5 R/W 读/写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 4 软件设计 软件系统的总体设计与开发是实现简易超市收银系统基本功能的关键。本毕业设计的软件开发过程使用C语言,为了弥补C语言在可读性和维护性的缺陷,部分程序将带有必要的注释。软件的设计与硬件的设计相对应,采用模块化设计的思想,将软件设计分为:串口接收程序设计和数据处理程序设计,液晶显示设计。串口接受程序的主要任务是利用单片机的串口中断程序,在初始化串口的前提下(串口工作模式1,定时器工作方式2,波特率9600、数据位8、停止位1,效验位无),当有数据录入的时候,将每一位的数据先存储在SFUB的寄存器里面,然后定义字符型数组变量,将SFUB里面的所有数据一位一位存储到数组里面。 11 数据处理的程序首先是判断条形码是否13位都已经存储在字符型数组Receive里面,接着判断条形码与商品的种类,然后统计单价和数量。 对于LCD1602,在程序设计方面首先将LCD1602初始化,并定义命令函数,数据函数,字符串函数和清屏函数。在主函数上,将在首页设计的通过命令函数和字符串函数输出。命令函数是用来确定位置,并且指针会随着单字节的增加而自动加一。字符串函数是用来确定内容。LCD1602液晶显示只有2行,每行16位,所以数据的位置和内容有所限制。 4.1 程序流程图 开始 系统初始化 定义函数 定义函数和变量 打开中断 条码信息读取 累加条形码所对应 单价和数量 否 一次性购买完 毕完毕 是 液晶显示总价 结束 12 5 测试数据及测试结果分析计算 本设计进行的多次的测试,准确无误地显示出商品的一维条形码,该条形码所对应的商品名称,条形码所对应的商品数量和一次性购买的总价。下面是其中一次测试的情况。 液晶显示的首页如下图10: 图10 液晶显示首页 本次操作的过程是首先先读取四次第一种商品的条形码,液晶显示屏上面就会显示出对应的13位一维条码4893333762211,对应的名称Bee,对应的商品单价01元,和一次性购买的总价。然后再次读取三次第二种商品的条形码,液晶显示屏上面就会显示出对应的13位一维条码6922266439728,对应的名称Lev,对应的商品单价02元,和一次性购买的总价。最后读取四次第三种的商品的条形码。液晶显示屏上面就会显示出对应的13位一维条码9787121098567,对应的名称Caf,对应的商品单价05元,和一次性购买的总价。 经过单片机的数据处理,本次购买过程是购买4个第一种商品Bee,3个第二种商品Lev和3个第三种商品Caf,总价一共是25元。所有的信息准确无误地显示在液晶显示屏上面。 下面是购买第一种商品Bee显示的数据,如图11所示: 13 图11 第一种商品显示 下面是购买第一种商品Bee显示的数据, 如图12所示: 图12 第二种商品显示 下面是购买第一种商品Bee显示的数据, 如图13所示: 14 图13 第三种商品显示 6 结论 本设计利用51单片机实现了超市收银系统的基本功能,采用控制核心89C52进行条形码的识别和数据的处理和存储,经试验验证,能够准确无误读取条形码的信息,所对应的商品名称,商品的单价和一次性购买产品的总价。 超市收银系统是综合多门学科的前沿课题,有着非常广泛的应用前景,但要达到人们设想的高度管理化和人性化还有很长的距离,它的发展与条码检测、数据存储和控制和其他人性化的设备等诸多技术的进一步提高密切相关,需要坚持不懈的探索和研究。 15 致 谢 转眼间大学四年就即将过去了,在这里对四年来曾关心、指导、帮助和鼓励过我的老师、同学表示衷心的感谢。 本论文是在导师郭云志老师的悉心指导下完成的。从设计方案到毕业论文的撰写,导师都给予了精心的指导。值此之际,谨向郭老师致以深深的感谢和敬意。郭老师丰富的理论知识和研究经验,让我受益颇深;严谨务实的治学态度和工作作风,在潜移默化中影响了我为人行事的方式。同样对在毕业设计中给予我极大帮助的各位同学致以衷心的感谢。 感谢我的室友,我们在四年时间结下了深厚的友谊,我们如兄弟一般。感谢你们对我的照顾、帮助和宽容。如今我们即将各奔东西,我一定会把你们记心上。 感谢在百忙之中评阅论文和参加答辩的各位老师、教授~ 最后,祝愿所有老师和同学在今后的工作、学习和生活中事事顺心,心想事成。 16 参 考 文 献 [1]谭浩强. C语言程序设计(第2版)( 北京:清华大学出版社,2006( 50-55 [2]邢素平. C语言程序设计( 南京:东南大学出版社,2005年( 81-109 [3]张迎新. 单片微型计算机原理、应用及接口技术( 北京:国防工业出版社,2004年( 47-88 [4]李朝青( 单片机原理及接口技术(第3版)( 北京:国防工业出版社,2007年( 20-79 17 System of Supermarket Cashier Ye Junhao (College of engineering, South China Agricultural University Guangzhou 510642,China) Abstract:In recent years, with the development of the science and society, all kinds of supermarket have step into the big and small cities. It is necessary to develop the System of Supermarket Cashier. According to supermarket chain, it designed a system of supermarket cashier, which is of low cost, and perfect foundation, providing a good choice for the overwhelming majority of rural shopkeeper to reduce operating costs. The report shows a kind of system supermarket cashier based on microcontroller. The paper presents the development of system of supermarket cashier with STC89C- 52 microcontroller and realizes hardware circuit. And it use language C for software program. This system’s functions are perfect, including of barcode input, commodity names and quantity statistics, the total statistics of prize , which can take place of system of supermarket cashier based on computer and become the country supermar- ket financial management good choice. This design uses STC89C52 MCU as control core, completed all basic function requirements of system of supermarket cashier. We follow the barcode reader serial agreement to read the barcode information, and the information output barcode corr- esponding name of goods, quantity, unit price, and total price, more conveniently for customers, which make our design more perfect. Keywords: Single-Dimensional Barcode STC89C52 MAX232 18 附录1 总电路图 19 设计实物图 20 源程序 #include #include #include "DELAY.h" #include "LCD1602.h" #include "UART.h" unsigned char cnt=0,Receive[13], price=0,temp=0; //unsigned char temp1[]="978508466743"; //unsigned char num = 0; /******************************************************************/ /* 主函数 */ /******************************************************************/ void main(void) { EA=1; UART_init(); LCD1602_init(); LCD_write_str(0,0,"Welcome to"); LCD_write_str(5,1,"HM's Shop"); while(1) { if(cnt == 13) { LCD_clear(); cnt = 0; LCD_write_com(0x80); while(cnt != 13) { 21 LCD_write_Data(Receive[cnt]); ++cnt; } if(Receive[0]=='4') { LCD_write_str(13,0,"Bee"); price=price+1; LCD_write_str(0,1,"Price01 Total "); temp=price/10 ; LCD_write_com(0x80+0x40+14); LCD_write_Data(temp+0x30); temp=price%10 ; LCD_write_com(0x80+0x40+15); LCD_write_Data(temp+0x30); } if(Receive[0]=='6') { LCD_write_str(13,0,"Lev"); price=price+2; LCD_write_str(0,1,"Price02 Total "); temp=price/10 ; LCD_write_com(0x80+0x40+14); LCD_write_Data(temp+0x30); temp=price%10 ; LCD_write_com(0x80+0x40+15); LCD_write_Data(temp+0x30); } if(Receive[0]=='9') { LCD_write_str(13,0,"Caf"); 22 price=price+5; LCD_write_str(0,1,"Price05 Total "); temp=price/10 ; LCD_write_com(0x80+0x40+14); LCD_write_Data(temp+0x30); temp=price%10 ; LCD_write_com(0x80+0x40+15); LCD_write_Data(temp+0x30); } cnt = 0; } } } /******************************************************************/ /* 串口中断程序 */ /******************************************************************/ void GSM_Receive() interrupt 4 using 1 { if(RI==1) { RI=0; Receive[cnt]=SBUF; // Send_Byte_A(Receive[cnt]); ++cnt; } // if(cnt == 13) cnt = 0; } #include 23 #include "UART.h" /******************************************************************/ /* 串口初始化程序 */ /******************************************************************/ void UART_init(void) { SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1 TMOD |= 0x20; //定时器工作方式2 PCON |= 0x80; TH1 = 0xFA; // //baud*2 /* 波特率9600、数据位8、停止位1。效验 位无 (11.0592M) TL1 = 0xFA; TR1 = 1; ES = 1; //开串口中断 } /******************************************************************/ /* 发送单个字节程序 */ /******************************************************************/ void Send_Byte(unsigned char byte) { SBUF = byte; while(!TI); TI = 0; } /******************************************************************/ /* 发送字符串程序 */ /******************************************************************/ 24 void SendString(unsigned char *str) { while(*str) { Send_Byte(*str) ; ++str; } } #include #include "DELAY.h" #include "LCD1602.h" sbit RS = P2^5; // 数据/命令选择端(H/L) sbit RW = P2^6; // 读/写选择端(H/L) sbit EN = P2^7; // 使能端 /******************************************************************/ /* 写入命令函数 */ /******************************************************************/ void LCD_write_com(unsigned char com) { RS=0; RW=0; EN=1; P1=com; delay_us(5); EN=0; } 25 /******************************************************************/ /* 写入数据函数 */ /******************************************************************/ void LCD_write_Data(unsigned char Data) { RS=1; RW=0; EN=1; P1=Data; delay_us(5); EN=0; } /******************************************************************/ /* 清屏函数 */ /******************************************************************/ void LCD_clear(void)//清屏函数 { LCD_write_com(0x01); delay_ms(5); } /******************************************************************/ /* 写入字符串函数 */ /******************************************************************/ void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s) { if (y == 0) { LCD_write_com(0x80+x); 26 } else { LCD_write_com(0xC0+x); } while(*s) { LCD_write_Data(*s); s++; } } /******************************************************************/ /* 写入字节函数 */ /******************************************************************/ /* void LCD_write_char(unsigned char x,unsigned char y,unsigned char Data) { if (y == 0) { LCD_write_com(0x80+x); } else { LCD_write_com(0xC0+x); } LCD_write_Data(Data); } */ 27 /******************************************************************/ /* 1602初始化函数 */ /******************************************************************/ void LCD1602_init(void) { LCD_write_com(0x38);/*显示模式设置*/ delay_ms(5); LCD_write_com(0x38); delay_ms(5); LCD_write_com(0x38); delay_ms(5); LCD_write_com(0x38); LCD_write_com(0x08);/*显示关闭*/ LCD_write_com(0x01);/*显示清屏*/ LCD_write_com(0x06);/*显示光标移动设置*/ delay_ms(5); LCD_write_com(0x0C);/*显示开及光标设置*/ } 28
/
本文档为【叶俊豪-超市收银系统设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索