简易 收银机.doc
文本预览下载声明
课 程 设 计
简易收银机
张重庆
通信工程07-1班
王琼 吴从中
2010年9月9日
简易收银机
一、任务与要求:
1、设计目的:
利用MCS-51单片机及相关芯片构成简易收银机。
2、设计要求:
系统实现如下功能:
⑴ 具有可扩展键盘用以实现数字和“+”、“×”、“=”的输入。
⑵ 可循环实现单个用户消费总金额的计算。
⑶ 具有复位、清零、找零和小数点显示等扩展的功能。
二、设计过程:
1、方案论证:
(A)工作流程:
①通电后收银机数码管的初始显示状态为:最右边的数码管显示“0”,其他数码管不亮。
②按数字键键入商品单价和数量,键入数字时先高位后低位,单价按元的十位、个位、1/10位、1/100位依次键入,数量按件的十位、个位依次键入。计算商品的金额时,先键入商品单价,再键入商品的数量。键入单价第一个数字时,最右边的数码管由原来的“0”变为这个数字,以后键入新的数字时,老的数字依次逐位左移,最后一位是新键入的数字。
③按“×”键再键入商品的数量,此时,原商品的单价显示不变,等待商品数量键入。当键入商品的数量时,数码管单价显示立即消失,转为逐位显示商品的数量。
④按“+”键后将计算出最近一笔商品的金额。如有“乘数量”标志,便进行这笔商品单价乘以数量的运算,运算的乘积金额累加到此前各笔商品累计的总金额中去,数码管显示最新累计的总金额。如无“乘数量”标志位,就直接把这笔商品的单价累加到以前的总金额中去,得出最新累计的总金额。
⑤按过“+”键后,再键入下一笔商品的单价时,刚才数码管显示的总金额消失,转为逐位显示键入商品的单价。
⑥最后的操作时按“=”键。“=”键与“+”键的作用相似,差别在于当前“最新累计的总金额”已是最终“累计的总金额”了,至此,一位顾客的累计结束,不再等待下一笔商品单价的键入。
⑦在键入单价或数量时,如按错数字可以按清零键重新输入,初始化时小数点为亮的,在输入数字键时,小数点消失。最终结果小数点是为亮的。
⑧收银机一位顾客的累计结束,可按复位键,回到初始显示状态,也是准备接待下一位顾客。
(B)硬件系统说明与电路原理图:
根据收银机的工作流程可知只需运用“单片机试验系统”教学试验箱上的8279、键盘及LED显示电路即可实现所有的功能。其原理图如图1所示。
其中8279可按其功能分为键盘功能块显示功能块控制功能块与CPU接口功能块控制功能块包括控制和定时寄存器定时和控制扫描计数器三部分它主要用来控制键盘和显示功能块工作显示地址寄存器保存当前CPU读或写的那个RAM地址,以及正显示着的那两个4位半字节的地址读写地址由CPU命令编程也可置为每次读写后地址自动加1的工作方式在设置了正确的工作方式后显示RAM可直接由CPU读出半字节A和半字节B地址自动由8279更新以适应由CPU送入的数据A和B半字节可独立送入也可作为一个字送入,随CPU所设置的工作方式而定⑴在单片机内部RAM分配的6个单元显示缓冲区为39H~3EH,数码管自右至左分别显示39H~3EH单元内容;商品单价输入后自高到低存放在30H和33H单元中,商品数量输入后存放在34H~35H单元中;还要为总金额存放分配50H~55H,称为和缓冲区,总金额自高到低存放在里面。
⑵在键盘的中断服务程序中将“单片机试验系统”教学试验箱键盘中的“A”、“B”、“C”、“D”、“E”、“F”分别扩展为“*”、“+”、“清零”、“找零”、“=”和“复位”键。
⑶收银机的显示器上要显示单价、数量、金额等数字,实验装置LED显示器有6个数码管,如将最右边两位分别认作角、分,则六位可以表示的总金额不大于9999.99元,与此对应,每件商品的单价和数量也要有一定限制;故规定单价只可为0.01元-99.99元,数量只可为1件-99件。
⑷在单片机内RAM的位单元中分配5个标志位,01H标志位代表是否输入符号键,即输入“+”、“*”、“找零”键时,01H置1;02H代表是否指向数量位,即当02H为0时,代表指向单价位,为1时代表指向数量位;03H代表是否按完乘号键;04H代表按完乘号键的第一次输入,若为非零则置1;05H代表是否按过“=”,按过则置1。
图1 简易收银机电路原理图
三、软件主要模块流程图、源程序及注释
1、软件环境:Windows2000、Keil2
2、程序思想:
(1)首先进行8279的初始化,内存清零,
显示全部