2.1.7 按键模块
按键电路的设计就是在一端公共接地,另一端通过上拉电阻接到P1口,如图9所示,当有按键按下,相应的口就会变成低电平,产生一个下降沿各键功能单一,互不影响,操作起来十分的清晰与方便。设计中使用了五个按键,S4键是价格牌的开始和清零;S5键的功能是输入左移;S6键的功能是改变当前位数数值;S7键的功能是输入右移;S8键的功能是连续改变当前位数数值。键盘功能模块如图10所示。
图9 键盘上拉排阻
2.2 设计课题原理图、实物图
设计课题电路原理图,见附录B;
设计课题实物图,见附录C。
2.3 设计课题元件清单
设计课题元件清单,见附录A
6
10键盘功能模块
图3 软件系统的设计
3.1 单片机资源使用情况
设计除了了使用单片机工作所必须的硬件资源(如连接晶振的引脚XTAL1和XTAL2,复位引脚RESET)外,还使用了P0.0-P0.7作为数码管显示器的段控。P2.0-P2.7和P3.0-P3.7分别控制数码管LED0-LED15的位控码驱动。P1.0-P1.3作为独立式键盘的输入端。
3.2 各模块功能介绍
主程序:系统初始化及主要功能。 显示P.子程序:启动时显示P.。 按键扫描子程序:扫描按键状态。
系统监控子程序:不断扫描哪些按键按下并跳转至键功能子程序。 键功能子程序:通过按键实现不通过按键的加减和移位功能。 显示子程序:处理价格信息显示在数码管上。
7
3.3 课程设计程序流程图
3.3.1 主程序流程图
主程序设置了栈底和PSW的状态并且将RAM清零,之后调显示P.的程序等待P1.0为0也就是按键1按下时之后显示初始价格,再进行按键扫描。流程图如图11所示。
8
图11 主程序流程图
3.3.2 系统监控子程序流程图
在键扫描程序的中添加显示子程序的调用,保持数码管在键扫描程序循环时时刻显示。并且不断查询按键1到8是否按下,如果按下则调用按键的子程序,在程序执行完成后返回键扫描程序。若无按键按下键扫描程序循环扫描。流程图如图12所示。
9
图12 系统监控子程序流程图
3.3.3 按键扫描子程序
在开始时调用显示子程序确定数码管持续显示。确定按键确定按下时运行按键消抖程序,确认按键是否按下。如果按键按下则执行子程序功能然后返回键扫描程序。如果按键没有按下则直接返回键扫描程序。如图13所示。
开始有键按下?Y调DIR去抖动调DIR去抖动键确实按下?Y计算保存键值NN按键释放?Y恢复键值N调DIR延时返回
图13 按键扫描子程序流程图
10