简易超市收银机采用AT89C55WD单片机为核心控制器.docx

上传人:牧羊曲112 文档编号:2030151 上传时间:2023-01-02 格式:DOCX 页数:34 大小:193.80KB
返回 下载 相关 举报
简易超市收银机采用AT89C55WD单片机为核心控制器.docx_第1页
第1页 / 共34页
简易超市收银机采用AT89C55WD单片机为核心控制器.docx_第2页
第2页 / 共34页
简易超市收银机采用AT89C55WD单片机为核心控制器.docx_第3页
第3页 / 共34页
简易超市收银机采用AT89C55WD单片机为核心控制器.docx_第4页
第4页 / 共34页
简易超市收银机采用AT89C55WD单片机为核心控制器.docx_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《简易超市收银机采用AT89C55WD单片机为核心控制器.docx》由会员分享,可在线阅读,更多相关《简易超市收银机采用AT89C55WD单片机为核心控制器.docx(34页珍藏版)》请在三一办公上搜索。

1、简易超市收银机摘要:系统采用AT89C55WD单片机为核心控制器,完成了简易超市收银机的各项功能要求。实现了通过4*4键盘输入商品信息等收银机最基本的功能。本系统的键盘支持数字输入,26个英文字母的输入,功能强大,性能稳定。用灵敏的数字温度传感器DS18B20完成温度测量,精确的日历时钟芯片DS1302作为实时时钟源。同时我们用AT24C512极大扩充了系统存储空间,可以充分满足存储1000个商品价目表和2000个销售日志的要求。收银机的液晶显示采用RT240128GB液晶屏,可滚动显示输入的购物条目信息,并利用FYD12864-0402B液晶显示器来突出显示最后总价,方便顾客看到,使我们的设

2、计作品更加成熟。关键词:AT89C55WD 键盘 AT24C512 液晶Abstract :The system takes the AT89C55WD as the core controller to complete the simple supermarket cash register each function request. It can realize the most basic functions of cash register ,such as reading in many kinds of sales information from 4*4 keyboard.

3、This systems keyboard supports English as well as digital input.The function is formidable and the performance is stable. Use the accurate digital temperature sensor DS18B20 to report to survey the temperature. Use the precise calendar clock chip DS1302 to be the real-time clock source. Simultaneous

4、ly we used the AT24C512 to expand the systems memory storage space which enormously satisfy fully the space request of 1000 commodity price lists as well as 2000 shopping diary. Our cash registers LCD screen is the RT240128GB. We make it roll the shopping clause information that the demonstration sc

5、ans. The final total price is also displayed by theFYD12864-0402B. The convenient for customer to see the result causes our design work to be maturer. Keywords: AT89C55WD keyboard AT24C512 LCD1.方案论证31.1 控制器模块选型31.2 键盘模块方案选择31.3 液晶模块方案选择31.4 存储模块方案选择31.5 温度测量模块方案选择32详细硬件电路设计42.1 单片机之间的通信42.2 液晶显示设计52

6、.2.1 主液晶52.2.2 从液晶62.3 键盘输入设计62.4 存储模块接口电路设计62.5 温度接口电路设计72.6 日历时钟接口电路设计73. 系统软件设计83.1 主程序流程:83.2 通信流程93.2.1 主机通信流程93.2.2 从机通信流程93.3 销售程序流程103.4 存储程序流程113.5 系统各级输入流程123.5.1 最底层 键盘流程123.5.2 条形码输入流程:133.5.3 商品数量输入流程143.5.4 商品名称输入流程143.6 时钟温度程序流程153.7 密码修改流程163.8 时间修改流程173.9 销售日志查看流程图184. 理论分析与计算194.1

7、AT24C512存储空间的分配194.2 DS18B20温度数据的读取与转换195. 测试205.1 开机屏测试205.2 存货测试及销售测试205.3 销售日志测试225.4 时间温度测试236. 结论237. 附录247.1 硬件清单247.2 资源利用247.3 参考文献241.方案论证1.1 控制器模块选型方案一:采用SPCE061A单片机做主控制芯片。61单片机自带语音功能,可用资源丰富,且灵活的C语言编写实现容易,可扩展功能多,可以同时实现语音和显示。 方案二:采用传统的8位的51系列单片机作为系统控制器。AT89C55WD单片机片内具有20K字节程序存储器、256字节数据存储器、

8、3个16位定时/计数器,8个中断、1个全双工串行口等资源。无论是从内部构造还是编程方面51系列单片机都相对简单,容易掌握和使用。由于本系统使用51能实现全部功能且51价格低廉,所以我们选择了方案二。1.2 键盘模块方案选择方案一:采用传统的扫描键盘,传统的扫描键盘需要占用较多的IO口,且程序繁琐,不利于系统程序的设计。方案二: 采用由74LS148和74LS00组成的数字键盘,两片74LS148和一片74LS00构成4*4的编码键盘,优点是只需要占用4个IO口,且返回值即为数字量,即节省了系统的硬件资源,又节省了系统的软件资源。所以我们选择方案二。1.3 液晶模块方案选择方案一:采用点阵显示完

9、成系统的显示功能,点阵显示具有亮度高,寿命长,功耗低,性能温度等优点,同时能显示汉字。方案二:采用液晶显示,液晶显示器体积小,功耗小,画面稳定无闪烁,显示驱动简单,方便显示多行汉字,可调对比度,特别是自带字库的液晶显示器非常利于汉字的显示。超市收银机需要显示大量的商品信息其中包括大量的汉字信息,所以我们选择方案二。1.4 存储模块方案选择方案一:采用传统的RAM或者ROM,但是它们或者没有掉电保护功能,或者数据不能在线修改,且占用较多的数据端口,特别是容量越大,占用的端口就越多。且随着商品数量的增加,扩展很不方便。一旦系统成型,以后修改就十分的不便。方案二:采用IIC接口的AT24C512作为

10、商品信息的存储器,IIC接口规范,占用资源很少,具有掉电保护的作用,多达64KByte容量,可扩展至64K*4 Byte容量,非常利于程序编写,且AT24C512中的数据可以通过程序在线修改,方便程序随时修改商品的信息,或增加新的商品。所以我们选择了方案二。1.5 温度测量模块方案选择方案一:采用PT100作为测温电路的温度传感器。PT100传感器是利用铂电阻的阻值随温度变化而变化、并呈一定函数关系的特性来进行测温的,具有抗振动、稳定性好、准确度高、耐高压等优点。但使用起来比较复杂。方案二:采用DS18B20作为测温电路的温度传感器。DS18B20的数字温度输出通过“一线”总线的方式来传送数据

11、。它在测温精度、转换时间、传输距离、分辨率等方面比其他温度传感器有了很大的进步,且可直接输出数字量,直接送单片机处理。通过比较,DS18B20直接输出数字温度值,不需要校正,因此选择方案二。综上所述,我们选择以8位的ATMLEL 89C55WD作为收银机的控制核心,扩展键盘、扩展RT240128GB中文点阵液晶显示屏实现汉字及图形显示、使用AT24C512扩展系统存储资源等实现简易超市收银机的制作。2详细硬件电路设计根据系统的要求,超市收银机的系统硬件结构如图1所示。图1 系统结构图2.1 单片机之间的通信主单片机AT89C55WD与从单片机AT89S52之间的通信是通过串行口来完成的,通信过

12、程中两个单片机保持相同的工作方式(方式一)和相同的波特率,作为从单片机AT89S52,只需要接收来自主单片机AT89C55WD的数据完成控制主液晶的显示即可,单片机之间的通信连接如图2:图2 单片机之间的通信2.2 液晶显示设计2.2.1 主液晶RT240128GB中文字库液晶显示模块是一个英文文字与绘图模式的点矩阵液晶显示模块,内建512KByte的ROM字型码,可以显示中文字型,数字符号,英日欧文等字母,并且内建双图层(two page)的显示内存。当字型为16*16时,可秀出15*8个全角文字,在字型方面有多种字号可供选择使用:16*16 32*32 48*48 64*64及不同比例的混

13、合显示模式,同时内建的512KByet SRAM提供了自行造字的功能。主液晶与从单片机的连接如图3左边:其中4脚与19脚是调节显示的对比度的,若接可调电阻则对比度可调,若接固定电阻则对比度固定。P2口是作为数据口与单片机传输数据,5、6、8、18脚分别为液晶的功能引脚与单片机相连。20、21脚为液晶提供背光电源。图3 主从液晶电路图2.2.2 从液晶 FYD12864-0402B是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模

14、块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。从液晶与主单片机的连接电路图如图3右边。为了节约主单片机的端口资源,我们通过串行通信方式让主单片机与从液晶通信,其中3脚与18脚为从液晶对比度调节端口,若接可调电阻则对比度可以调节。5、6脚分别与单片机的P3.3、P3.2相连为单片机提供串行数据。2.3 键盘输入设计我们采用了由两片74148及一

15、片7400构成的4*4数字键盘,每一个74148的输入都是8个按键的一端,这样两片74148即可连接16个键盘,7400有4个并行的输出端口,与主单片机的P1口的高四位相接。所以有16种输出状态,每一种状态即代表一个按键被按下。电路图如图4所示该键盘的优点是节约了系统的资源,且方便编写程序,由于超市收银机需要输入拼音,所以我们采用英文输入法,即用9个按键实现输入26个英文字母的方法。图4键盘电路2.4 存储模块接口电路设计AT24C512是ATMEL公司生产的一款高性能的串行存储器,内有64KByte的存储单元,128字节的页写模式(128-Byte page write mode(parti

16、al page writes allowed),最多可扩展至64K*4 Byte,能存储达8000个商品的信息。由于51单片机内部没有IIC总线,所以我们用普通的IO口模拟了IIC总线的时序,AT24C512与单片机的接口示例图如图5:其中串行存储器的数据端口与单片机P1.0、P1.1相接传输串行数据。串行存储器的1、2脚为串行存储器的地址端口。图5存储器电路2.5 温度接口电路设计DS18B20只需要占用控制芯片的一根IO口,用于传输数字温度数据。能够检测的温度范围宽达:-55-125,并且在-10-80之间精度为0.5,能够满足一般家庭的要求。每一个DS18B20都有一个唯一的64位的序列

17、号,这样就方便了在一条IO口上扩展多个DS18B20。P1.5用于传输温度数据。如图6图6 温度传感器电路2.6 日历时钟接口电路设计DS1302慢速充电时钟芯片包括实时时钟/日历和31个字节的静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒分时日周月和年等信息。对于小于31天的月,月末的日期自动进行调整,还包括了闰年校正的功能。时钟的运行可以采用24小时或带AM/PM的12小时格式。使用同步串行通信,简化了DS1302与微处理器的通信。单片机通过时钟芯片的5、6、7脚提供时钟并读取1302的时间数据。如图7图7 时间芯片电路3. 系统软件设计3.1 主程序流程:开机即

18、按照图8所示流程执行程序,没有按键之前主机一直处于待机界面(时间温度界面),一旦有键盘被触发,即进入了系统登陆界面,等待用户输入账号和密码,密码正确方能进入系统菜单界面,系统菜单界面下有6个菜单选项,不同的键值即进入了不同的功能界面。图8 主程序流程3.2 通信流程3.2.1 主机通信流程一旦发送数据了,主机将连续发送35个字节的数据给从机,其中第一1个字节为标志位,用于当从机接收到了数据之后识别应调用哪一个函数。程序框图如图9所示。图9 主机通信流程3.2.2 从机通信流程从机接收到主机的数据之后,根据第一个字节的数据进行判断选择该执行的程序。程序框图如图10所示。图 10 从机通信流程3.

19、3 销售程序流程销售流程即牵涉到主液晶的控制,又与从液晶的控制有关,一旦用户输入商品的条形码之后,主机即开始查询,如果查询到则显示相应的信息并自动对商品进行编号,若没有查询到商品,则显示提示信息。显示查询到的商品信息之后等待用户输入需要购买此件商品的数量,输入数量并确认之后,存储商品的信息以及销售时间至第二块存储器,作为销售日志的信息。主显示器即进入等待输入下一个商品的状态。此时从液晶显示了购买商品的单价以及件数,并计算出此件商品的总价且显示出来。程序流程如图11所示。图11 销售流程3.4 存储程序流程如果商店新到了一种商品,用户可以通过键盘手动输入该商品的相应信息到收银机中并保存,程序流程

20、如图12,首先等待用户输入商品的条形码,如果已经存在此件商品则显示相应信息并等待用户修改商品的价格以及商品的数量。如果没有此件商品则等待用户输入商品的所有信息,包括商品名称、价格、数量,输入完之后可以保存也可以放弃,保存之后,在销售商品时即可以看到修改之后的商品信息。程序流程如图12所示。通过对键盘的扩展我们实现了输入商品的英文名称,其实现方法在下面的商品名称输入框图中给出。图12 存储流程3.5 系统各级输入流程3.5.1 最底层 键盘流程这个键盘是系统所有有输入的地方都要调用的最底层的的键盘驱动程序,此程序返回每个键盘的数字编码,程序流程图如图13所示,以后的所有输入程序就根据调用这个程序

21、所得到的数字编码来执行相应的程序。图 13 键盘流程3.5.2 条形码输入流程:这个部分实现了商品13位条形码的输入,输入过程中如果有错误可以通过光标移动按键移动到错误的地方进行修改,一旦确定按键被按下,条形码输入结束,主机开始查询输入的条形码。程序框图如图14所示。图14 条形码输入流程3.5.3 商品数量输入流程数量输入流程与条形码输入流程是类似的,所以在此就不列出3.5.4 商品名称输入流程 这里我们只能用10个数字键盘输入商品的英文名称。拼音与数字是共用键盘的(就像手机的键盘一样)如图15,默认情况下键盘是拼音,只有当选择一组拼音中的某一个时,键盘才被当成数字键盘,因为有的按键能代表3

22、个拼音,有的却能代表4个拼音,所以选择拼音的时候,若选择数字=4,需要判断选择的是否是拼音,若是拼音则显示出来,若不是则显示默认的拼音,程序流程如图16所示。图 15 键盘分布图图16 商品名称输入流程3.6 时钟温度程序流程温度传感器我们采用的是DS18B20,可达12位的数字值,分辨率为0.0625C。DS18B20测时钟温程序流程如图17:图17 时间温度流程3.7 密码修改流程进入系统之后可以对本账号的系统密码进行重新修改。修改的过程当中,需要用户输入系统的旧密码,正确之后才可以输入系统的新密码,为了防止输入新密码的时候输入出现差错,用户需要连续输入两次新密码,两次一样之后才算修改成功

23、。程序框图如图18所示。图18 密码修改流程3.8 时间修改流程 通过方向键,和数字键,人为的输入*年*月*日 *时*分*秒 星期* 数值。最后按下确认键保存时间,返回到系统菜单界面。 在输入过程中,已通过程序自动校正输入数值的合法性。例如:当光标定位于时的十位时候,若输入数值大于2该位自动校正为合法的最大值2。当光标定位于时的个位时,若十位为2则输入的最大合法值自动校正为3.如此通过程序控制,自动校正其他所有数值的输入合法性。 程序框图如图19图 19 时间修改流程3.9 销售日志查看流程图我们在销售商品的时候,会对销售的信息进行存储,包括商品的的名称,购买数量,以及销售时间。所以当从系统菜

24、单界面进入销售日志界面时,只需要调出显示即可。在销售日志界面我们可以通过上一页或者下一页查看最近的3800多个商品销售信息,当超过这个范围的时候系统自动覆盖最早的销售日志。程序框图如图20图 20 销售日志流程4. 理论分析与计算4.1 AT24C512存储空间的分配 每一个商品的信息占用8K的AT24C512中的32个字节,所以一块AT24C512能够大约存储2000个商品的信息,但是我们可以扩展达4块AT24C64,所以能存储多达8000多个商品的信息,同时不会多占用单片机的任何资源。这样就可以满足一般小型超市的要求了。即:64K*4/32=81924.2 DS18B20温度数据的读取与转

25、换在DS18B20中,温度是用两个字节的数据来存储的,如下图所示:图21 温度数据格式由于用于一般家庭的温度显示,所以我们省去了小数部分的温度,只读取的整数部分的温度数值进行计算,在读取的过程中,我们先读取存储温度数据寄存器的低字节的高四位,然后再与高字节的低四位组合成一个字节,最后把该字节转化成十进制数就是具体的温度数值。 5. 测试5.1 开机屏测试开机之后主液晶即显示待机界面入图21所示,从液晶显示欢迎界面如图22所示。图22 主液晶待机画面图23 从液晶待机画面5.2 存货测试及销售测试销售商品时大液晶的销售界面如下图所示,因240*128液晶只能显示8行汉字,当超过6件商品信息时,我

26、们实现了刷新屏幕从第一行重新显示的功能。如图23所示图24 销售画面存储商品时大液晶的画面如下图所示,我们实现了英文名称的输入及存储。如图24所示图25 存储画面销售时,当输入完商品的条形码后,从液晶即显示商品的单价,同时还可以显示同一件商品所买的件数,并且计算除所有所买商品的总价。如图25所示图26 从液晶销售画面结账后主液晶的画面如图26所示:图27 主液晶结账画面结账后从液晶的画面如图27所示:图28 从液晶结账画面5.3 销售日志测试 本部分最终实现可以在销售记录存储空间里面任意查询我想要的销售记录。销售记录里面存储的信息是:商品名称、数量、单价、日期及时间信息。如图28图29 销售日

27、志画面5.4 时间温度测试主机开机之后即进入时间温度界面如下图29,在该界面下,触发任意按键即进入了登陆系统界面。图30 时间温度界面温度测试第一次第二次第三次第四次实际温度1818.617.819.2测试温度18181819结论:温度测量基本正确。5.5测试分析通过一系列的测试,我们已经较好的完成了超市收银机的所有功能,能够完成时间的修改以及自动校正,实现了系统密码的修改并保存,准确的计算出了用户购买商品的价格,并可以通过销售日志查看以前的销售记录,同时实现了新到商品的存储以及英文的,但是由于时间的限制没有能够实现通过键盘输入汉字的功能。由于用于一般的超市,所以对温度要求不高,我们忽略了温度

28、的小数部分,如果能够加上条形码扫描仪和打印机,超市收银机的功能将会更加的完善。6. 结论本设计实现了题目基本功能和发挥功能的全部内容,但由于时间和硬件资源的限制,个别指标做得不是非常完善。我们设计的简易超市收银机实现了如下功能 :1.可以设置大于1000个商品价目表(PLU),并通过AT24C512实现了掉电保护;2.商品的数字编号、品名(数字或英文字母)、单价等信息可键盘输入;3.键盘实现了英文、数字输入;可以实现商品的条形码及商品名称的输入;4.显示器可以通过键盘切换显示环境温度以及当前的时间;5.实现了多账号密码的功能,且可以随时修改系统密码,安全可靠实用;6.实现了3800个商品销售日

29、志的存储,并可以随时调出显示商品销售数量、时间等信息;7.能够修改已存商品信息,实现商品数量、价格等信息的修改;8.销售时可以自动对购买商品进行编号,且可以自动翻屏以便显示更多的商品信息。7. 附录7.1 硬件清单AT89S52单片机最小系统AT89C55WD 6264 74LS373RT240128GB液晶显示器、FTD12864-0402B液晶显示器4*4数字键盘一个AT24C512存储芯片两个数字温度传感器DS18B205V直流稳压源两个7.2 资源利用C52 端口: P0 6264的数据与低地址端口 P1.0-P1.3 数字键盘端口 P1.4-P1.5 AT24C512的串行口 P1.

30、6-P1.7 未用 P2.0-P2.4 6264的高地址端口 P2.5-P2.7 未用 P3.0-P3.1-P3.4 与S52单片机的通信. P3.2-P3.3 FYD12864-0402B的串行数据端口 P3.5-P3.7 未用S52端口: P0 未用 P1.0-P1.5 RT240128GB的功能端口 P1.6 未用 P2 RT240128GB的数据端口 P3.0-P3.1-P1.7 与C52单片机的通信 P3.2-P3.7 未用7.3 参考文献余锡存 曹国华 单片机原理及接口技术 西安电子科技大学出版社杨颂华 等 数字电子技术基础 西安电子科技大学出版社 陈涛 单片机应用及C51程序设计

31、 机械工业出版社谭浩强 C语音程序设计(第二版) 清华大学出版社7.4 部分程序清单存储部分:void store() while(keyval!=b) /按b键退出存储画面bit k;uchar temp_position,j;uchar in_isbn13,write_name8,write_price7,write_num4;uchar read_isbn13; for(j=0;j13;j+) in_isbnj=0x20;for(j=0;j8;j+) write_namej=0x20;for(j=0;j7;j+) write_pricej=0x20;for(j=0;j4;j+) writ

32、e_numj=0x20;CLRLCD( );PrintStr(0,4,splr,12); /编号PrintStr(2,0,pinming,6); /品名PrintStr(3,0,danjia,5); /单价PrintStr(4,0,shuliang,6); /数量PrintStr(7,13,queren,4); /确认PrintStr(7,3,quxiao,4); /确认/光标在此闪烁提示收银员输入ISBN码PrintStr(1,3,xiahua,13);PrintStr(1,0,isbn,5); /ISBN/光标在此闪烁提示收银员输入ISBN码 in_random(1,6,18,in_isb

33、n); rd_24512(read,30,1);/每用到merch_count前 要从新读出 merch_count=read0; for(temp_position=1;temp_positionmerch_count;temp_position+) rd_24512(read_isbn,temp_position5,13); if(strncmp(in_isbn,read_isbn,13)=0) rd_24512(write_name,(temp_position5)+13,8); /若ISBN存在则显示其商品信息 并且修改数量 按确认就写入新的数量 rd_24512 (write_pri

34、ce,(temp_position5)+21,7); rd_24512 (write_num,(temp_position=merch_count) / 如果不存在 LOCAL_XY(2,6); in_randchar(2,6,13,write_name); LOCAL_XY(3,6); in_price(3,6,12,write_price); LOCAL_XY(4,6); in_random(4,6,9,write_num); WRITE_COM(0x10,0x6c); /关闭光标 keyval=e; k=0; while(keyval!=a) k=k; if(k) WRITE_COM(0

35、x10,0x4b);PrintStr(7,13,queren,4); WRITE_COM(0x10,0x6b);PrintStr(7,3,quxiao,4); /确认 Else WRITE_COM(0x10,0x4b);PrintStr(7,3,quxiao,4); WRITE_COM(0x10,0x6b);PrintStr(7,13,queren,4); keyscan(); if(k) if(temp_position=merch_count) wr_2464(in_isbn,(temp_position5),13); wr_2464(write_name,(temp_position5)

36、+13,8); wr_2464(write_price,(temp_position5)+21,7);wr_2464(write_num,(temp_position5)+28,4);merch_count+; /商品数目加一read0=merch_count; / wr_2464(read,8190,1); /通过read数组写入24c64 8190个单元 wr_2464(write_num,(temp_position5)+28,4); CLRLCD( ); PrintStr(3,1,xxrk,16); /提示信息已经成功输入 WRITE_COM(0x10,0x6c); /关闭光标 key

37、val=e; k=0; while(keyval!=a) k=k; if(k)WRITE_COM(0x10,0x4b);PrintStr(6,2,jixu,4); WRITE_COM(0x10,0x6b);PrintStr(6,10,tuichu,4); /确认 ElseWRITE_COM(0x10,0x4b);PrintStr(6,10,tuichu,4); WRITE_COM(0x10,0x6b);PrintStr(6,2,jixu,4); keyscan(); if(!k) keyval=b; WRITE_COM(0x10,0x6e); /打开光标 Else CLRLCD( ); Pri

38、ntStr(3,1,xxcx,16); /提示信息已经成功输入 WRITE_COM(0x10,0x6c); /关闭光标 keyval=e; k=0; while(keyval!=a) k=k; if(k) WRITE_COM(0x10,0x4b);PrintStr(6,2,jixu,4); WRITE_COM(0x10,0x6b);PrintStr(6,10,tuichu,4); /确认 ElseWRITE_COM(0x10,0x4b);PrintStr(6,10,tuichu,4); WRITE_COM(0x10,0x6b);PrintStr(6,2,jixu,4); keyscan();

39、if(!k) keyval=b; 销售部分:void sale() uchar in_isbn13,write_isbn13,write_name8,write_price7,write_num4; uchar i,j; uchar localx; bit k ; uchar sale_count=0x01; uchar *infor=该商品已经失效; uchar temp7=0000000;/存储现实总价的数组 uchar each_count2; uchar code bianhao =编号; /uchar code gukehao=顾客号:; uchar code next=Next;

40、uchar code cont=结账; for(j=0;j7;j+) tempj=0x30; /每位顾客开始销售时候 总价清零while(keyval!=b)/b为结束键 结账 localx=sale_count%6; if(!localx)localx=6; if(localx=1) CLRLCD( ); PrintStr(0,0,bianhao,4); /编号 PrintStr(0,3,pinming,4); /品名 PrintStr(0,8,danjia,5); /单价 PrintStr(0,13,shuliang,4); /数量 /光标在此闪烁提示收银员输入ISBN码 for(j=0;

41、j13;j+) in_isbnj=0;PrintStr(7,3,xiahua,13);PrintStr(7,0,isbn,5); /ISBN/光标在此闪烁提示收银员输入ISBN码disponelinechar(1,0,danjia,4);WriteOneByte(0x3a);disponelinechar(3,0,zongjia,6); WRITE_COM(0x60,0x01);/ 地址定位 显示编号由卖的总类数量的十为百位决定 WRITE_COM(0x70,localx4); /规定一个顾客不可能买100种商品 借助变量j实现 j=(sale_count%100)/10; WRITE_DAT(j+0x30); j=(sale_count%10); WRITE_DAT(j+0x30); SetDDRAM_Add(14); /设定地址回到数量显示的位置 WriteOneByte(0x20); /单价后面写两个空格覆盖上次单价后的数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号