郭焰昌:基于液晶显示的乘法口诀测试仪的设计
3.4.7 LCD1602液晶显示器与AT89S52接线分析
图3-7 LCD1602液晶显示器与AT89S52接线图
其中的D0---D7标注全写应该是DB0---DB7,这样的简洁写法为了芯片的版面视觉好看,D0---D7与P1.0---P1.7一一对应连接,P2.0---P2.1分别接RS、RW、E引脚。VLCD接10K可调电阻到GND。AT89S52的晶振频率为12MHz。
3.4.8 如何在LCD1602上显示显示数字
从D0-D7的8位数据接口知道使用了8位的指令。开始为初始态,屏幕即以及光标被打开,但是没有显示数字符号,如下表示;
当进入模式设定时候变
为:
当写入数字“8”到显示储存
器??DD-RAM”中,数字“8”写到屏幕上,并且光标地址加1,因此被移到右边,其意图就成为:
- 16 -
安徽工程科技学院机电学院毕业设计(论文)
同样的原理,如果键入需要
是“81”的话,那么示意图会变成:
光标地址加1,又被移动到右
边。
在使用1602液晶显示的时候,第一行和第二行只显示最大的16数字符号,由于用到了程序自定义,随机能产生乘法口诀题目,出现在第一行:
键入的数值会使光标自动右移动。
3.4.9 对测试者输入的结果判断
整个系统完成的核心部分是要对测试者给出的结果的判断,并且能对错误的结果给出正确的值。
测试者做好题目后,按“确认”键即可知道对错了,
如果结果与保存的“64”一致,则蜂鸣器会发出响声,开关复位后,随机又能出题;如果
结果与“64”不一致的,则蜂鸣器不会发声,测试者如果想知道正确结果,按下“C”键,隐藏不显示的正确答案“64”会在屏幕上显示出来。按“F”键又可以产生新的随机题目。 3.5 蜂鸣器
设计的乘法口诀测试仪在测试者答对了随机给定的题目以后会自动报警蜂鸣,给测试者提醒作用,为了使蜂鸣器能够正常工作,必须用一个三级管放大电路来实现。
连接三级管放大电路的时候注意基极、集电极、发射极端接线,因为其R3端要靠低电平才有效果,而P3口功能一些用于编程和程序校验的控制信号,所以选择了P3.7口。
软件对蜂鸣器的控制主要是控制了蜂鸣器的响声次数,每次答对一个题目,确认后会自动响三声,用以来告诉测试人该结果和正确答案一致,是对的,如果没有响的话,就告诉测试者该题目答错。
3.6 本章设计总结
本章硬件设计是为了能更好的让设计的思路清晰明白,对各个部分都要求很慎重,比如先是单片机任何选择问题,考虑到了很多因数:抗干扰、节约性、方便、速度快等
- 17 -
郭焰昌:基于液晶显示的乘法口诀测试仪的设计
方面,而且从实际的使用仿真角度去发,由于一些老的芯片已经完全停产了,所以不利于购买,因此放弃了一些芯片的选择,最后选择功能比较全面的AT89S52,有看门狗定时,低功耗空闲和掉电模式、掉电后中断可唤醒、双数据指针等比较全面的功能,适合该设计的需要。液晶显示器从实用的角度出发,因为本次设计是乘法口诀,就可以用个两行的显示器,而LCD1602正是16字2行,就满足了需要。
键盘因为需要用0-9之间的数字来计算乘法所以用了4×4矩阵键盘,能安排16个功能键盘,8个数据输出,节约来芯片的利用资源。
基本完成选择后,就是进一部来考察各器件的使用和性质、接线,难度比较大的是如何来实现设计要求的各个功能,除了认真的去研究各个元器件的功能和作用之外,就很难完成要求的内容。
完成了硬件设计之后就对整个设计有了一个很仔细的认知,对学习专业和掌握专业知识是有莫大的帮助的。
完成的下一个阶段就是把软件和硬件的双向作用有效的结合到一快来,使设计完善。
- 18 -
安徽工程科技学院机电学院毕业设计(论文)
第4章 软件设计
乘法口诀主程序包含了主程序、键盘键值查找子程序、键入数据子程序、数据比较、写指令数据到LCD、写显示数据到LCD、LCD初始化、延时120ms等子程序。各部分系统的配合着完成乘法口诀测试仪的软件部分。 4.1 主程序
4.1.1 主程序流程图 开始
初始化
清除显示地址 调用子程序 出题 键盘扫描
否 是否有键按下
是
和答案比较, 否
相等吗?
是 显示“OK”;
蜂鸣器响 显示“Error”; 提示正确答案
延时等待 图4-1 主程序流程图
主程序是实现整体功能的核心部分,通过调用其它各个自程序来实现一个完整的乘法口诀测试仪的判断测试者的答案。包括了调用延时、数据比较、写指令数据到LCD、
- 19 -
郭焰昌:基于液晶显示的乘法口诀测试仪的设计
写显示数据到LCD、LCD初始化等功能。
4.2 子程序
子程序包括数据比较子程序、键盘扫描子程序、显示子程序等。 4.2.1 数据比较子程序流程图
开始 高位比较(十位) 低位比较(个位) 高低位都正确? 正确蜂鸣几声 返回
图4-2 数据比较子程序图
比较数据的子程序是逐渐从高位到低位的进行的,先看高位有没有“0”,有“0”则直接跳过不比较,没有就继续比较,只有当地位和高位的比较全正确的时候,才能蜂鸣器发出响声。
测试者通过输入键盘按钮的先后主芯片自行判断高低位正误。
- 20 -