7
**首届电子创意设计竞赛
1602液晶模块内部的控制器共有11条控制指令,丰富的指令可以完成液晶的时序控制、工作方式设置和数据显示等。
采用的LCD1602液晶模块是标准16针插座,接口电路如图2-2-5所示,及各引脚说明如表2-2-2所示。
图2-2-5 LCD1602的引脚接口电路图
第1脚 第2脚 第3脚 Vss为地电源 VDD接5V正电源 Vo为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 Rs为寄存器选择,高电平选择数据寄存器、低电平选择指令寄存器。 Rw为读写信号线,高电平时进行读操作,低电平时选择指令寄存器。 E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 D0-D7为8位双向数据线。 背光阳极和背光阴极。 表 2-2-2 LCD1602的引脚说明
3、其他方面简介
DDRAM用来暂存显示字符的代码,共80个字节,DDRAM的各个单元对应着显示屏上的各个字符位,如图2-2-6所示。因此,DDRAM的地址也就意味着显示字符的地址,显示字符时首先要向LCD送显示字符地址。 LCD 16字*2行 第4脚 第5脚 第6脚 第7-14脚 第15-16脚 8
**首届电子创意设计竞赛
00 40 01 41 02 42 03 43 04 44 05 45 06 46 07 47 08 48 00A 0B 0C 0D OE OF 19 0 44A 4B 4C 4D 4E 4F 59 0 …… …… 27 67 图 2-2-6 DDRAM单元地址与显示屏字符位的对应关系
三、系统的硬件设计
为了更好地实现系统的功能,硬件电路的设计应该遵循以下原则:
1、 优化硬件电路
采用软件设计与硬件设计相结合的方法。尽管采用软件来实现硬件系统的功能时,也许响应的时间会比单纯使用硬件时长,而且还要占用微处理器(MCU)的时间;但是,用软件实现硬件的功能可以简化硬件结构,提高电路的可靠性。所以,在设计本系统的时候,在满足可靠性和实时性的前提下,尽可能地通过软件来实现硬件功能。
2、 可靠性及抗干扰设计
根据可靠性设计理论,系统所用芯片数量越少,系统的平均无故障时间越长。而且,所用芯片数量越少,地址和数据总线在电路板上受干扰的可能性也就越小。因此,系统的设计思想是在满足功能的情况下争取较少数量的芯片。
3、 灵活的功能扩展
功能扩展是否灵活是衡量一个系统优劣的重要指标。一次设计往往不能完全考虑到系统的各个方面,系统需要不断完善以及进行功能升级。进行功能扩展时,应该在原有设计的基础上,通过修改软件程序和少量硬件完成。对于本系统而言,就是要求在系统硬件不变的情况下,能够通过修改软件程序,完成功能的升级和扩展。
根据提出的系统设计方案,结合以上三条原则,确定了系统硬件的设计。计算器主要由以下一些功能模块组成:非编码键盘模块、运算模块(单片机内部)、LCD液晶显示模块等。
该系统的硬件设计采用了模块化的设计方法。STC89C52单片机与LCD液晶显示屏显示电路是整个电路的核心,它们能实现系统的功能要求。
9
**首届电子创意设计竞赛
简易计算器主要包括:键盘电路、运算电路、输出显示电路。
前面说明了该系统的设计,系统采用了比较简单的设计方案,所以该系统的硬件设计的总外围电路不会产生过多的干扰。下面对系统的外围电路分别作了说明。键盘部分采用4*4按键键盘,显示部分采用LCD液晶显示屏完全能够很好地实现显示方面的要求。 4、键盘电路的设计
键盘可分为两类:编码键盘和非编码键盘。编码键盘是较多按键(20个以上)和专用驱动芯片的组合;当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。
通用计算机使用的键盘就是编码键盘。在智能仪器中,使用并行接口芯片8279或串行接口HD7279均可以组成编码键盘,同时还可以兼顾数码管的显示驱动,其相关的接口电路和接口软件均可在芯片资料中得到。当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。
非编码键盘成本低廉。从成本角度出发,本设计选用的是非编码键盘。如图
图 键盘电路
5、显示电路的设计
当系统需要显示少量数据时,采用LCD液晶显示屏进行显示是一种经济实用的方法。P0口作为液晶显示的数据端口,P2.0-P2.2口作为其控制端口,控制
LCD液晶显示屏显示输出数据。最终显示电路如图所示
10
**首届电子创意设计竞赛
6、其它电路部分
四、 计算器软件设计
11
**首届电子创意设计竞赛
五、项目总结与体会
这个项目的选择是基于提升自我的目的,在程序设计方面有一定的难度。 主要是在系统还没有到设计完全的时候就开始很心急地买元器件及动手焊板子。后来发现与设计的要求还有偏差,而后反复地改了好几次,浪费了大量的时间和精力。从这次做板子的过程中就发现,虽然制作电路板不是很难,但是马虎不得。不管你是在量长度或者是图线条是有一点疏忽,都可能导致做出的板子有问题不能正常工作。所以我们对待每一个部分都必须认真,这样才更能成功。
此次的项目是由我们小组共同完成的。其中遇到了许多的问题,例如有些意见不同。但是我们都尝试着去理解他人的想法,最终得以结合大家的意见完成项目,也让我们明白了合作的重要性。
六、程序部分
/* 简易计算器程序 */ #include
uchar code table[]={'0','1','2','3','4','5','6','7','8','9', '+','-','*','/','=','.'};
uchar key,flag1,cal,judge1,judge2;
//cal: 计算calculation flag : 标志 flag1用于标记按键进度 //judge1, judge2为两个判断变量 uchar a[20],b[25]; float Answer=0;
//定义端口