1、第第 1 页页 共共 13 页页 一、任务与要求:一、任务与要求: 1、设计目的: 利用 MCS-51 单片机及相关芯片构成收银机。 2、设计要求: 系统实现如下功能: 具有可扩展键盘用以实现数字和“” 、 “” 、 “”的输入。 可循环实现单个用户消费总金额的计算。 具有复位、清零、找零和小数点显示等扩展的功能。 二、设计过程:二、设计过程: (A)工作流程: 通电后收银机数码管的初始显示状态为:最右边的数码管显示“0” ,其他 数码管不亮。 按数字键键入商品单价和数量,键入数字时先高位后低位,单价按元的十 位、个位、1/10 位、1/100 位依次键入,数量按件的十位、个位依次键入。计算
2、商品的金额时,先键入商品单价,再键入商品的数量。键入单价第一个数字时, 最右边的数码管由原来的“0”变为这个数字,以后键入新的数字时,老的数字 依次逐位左移,最后一位是新键入的数字。 按“”键再键入商品的数量,此时,原商品的单价显示不变,等待商品 数量键入。当键入商品的数量时,数码管单价显示立即消失,转为逐位显示商品 的数量。 按“”键后将计算出最近一笔商品的金额。如有“乘数量”标志,便进 行这笔商品单价乘以数量的运算, 运算的乘积金额累加到此前各笔商品累计的总 金额中去,数码管显示最新累计的总金额。如无“乘数量”标志位,就直接把这 笔商品的单价累加到以前的总金额中去,得出最新累计的总金额。
3、按过“”键后,再键入下一笔商品的单价时,刚才数码管显示的总金额 消失,转为逐位显示键入商品的单价。 最后的操作时按“”键。 “”键与“”键的作用相似,差别在于当 前“最新累计的总金额”已是最终“累计的总金额”了,至此,一位顾客的累计 结束,不再等待下一笔商品单价的键入。 在键入单价或数量时,如按错数字可以按清零键重新输入,初始化时小数 点为亮的,在输入数字键时,小数点消失。最终结果小数点是为亮的。 第第 2 页页 共共 13 页页 收银机一位顾客的累计结束,可按复位键,回到初始显示状态,也是准备 接待下一位顾客。 (B)硬件系统说明与电路原理图: 根据收银机的工作流程可知只需运用“单片机试验系
4、统”教学试验箱上的 8279、键盘及 LED 显示电路即可实现所有的功能。其原理图如图 1 所示。 其中 8279 可按其功能分为:键盘功能块、显示功能块、控制功能块、与 CPU 接口功能块。控制功能块包括控制和定时寄存器、定时和控制、扫描计数器三部 分,它主要用来控制键盘和显示功能块工作。 显示地址寄存器保存当前 CPU 读或写的那个 RAM 地址,以及正显示着的那两 个 4 位半字节的地址,读写地址由 CPU 命令编程,也可置为每次读写后地址自动 加 1 的工作方式,在设置了正确的工作方式后,显示 RAM 可直接由 CPU 读出,半 字节 A 和半字节 B 地址自动由 8279 更新,以适
5、应由 CPU 送入的数据,A 和 B 半 字节可独立送入,也可作为一个字送入,随 CPU 所设置的工作方式而定。 当键盘上出现有效的输入时,键输入数据讲自动进入 8279 的键盘 RAM 存储 器,并向 MCS-51 单片机请求中断,单片机响应中断读取键盘 RAM 中的键输入数 据,并进入中断服务程序进行相应的处理,最后将数据返送到 8279 的显示 RAM 中,通过 74LS138 选通与六个存储字节相对应的 LED 并显示。若要更新显示器输 出,仅需改变 8279 中显示 RAM 中的内容。 2、设计原理: 在单片机内部 RAM 分配的 6 个单元显示缓冲区为 39H3EH,数码管自右至
6、左分别显示 39H3EH 单元内容; 商品单价输入后自高到低存放在 30H 和 33H 单元 中,商品数量输入后存放在 34H35H 单元中;还要为总金额存放分配 50H55H, 称为和缓冲区,总金额自高到低存放在里面。 在键盘的中断服务程序中将 “单片机试验系统” 教学试验箱键盘中的 “A” 、 “B” 、 “C” 、 “D” 、 “E” 、 “F”分别扩展为“*” 、 “+” 、 “清零” 、 “找零” 、 “=”和“复 位”键。 收银机的显示器上要显示单价、数量、金额等数字,实验装置 LED 显示器 有 6 个数码管,如将最右边两位分别认作角、分,则六位可以表示的总金额不大 于 9999.99 元,与此对应,每件商品的单价和数量也要有一定限制;故规定单价 只可为 0.01 元-99.99 元,数量只可为 1 件-99 件。 在单片机内 RAM 的位单元中分配 5 个标志位,01H 标志位代表是否输入符 号键,即输入“+” 、 “*” 、 “找零”键时,01H 置 1;02H 代表是否指向数量位,即 当 02H 为