福建电力职业技术学院课程设计课程名称:《智能仪器》题目:基于STC89C52的简易计算器设计专业班次:姓名:学号:指导教师:学期:2011-2012学年第2学期日期:2012.2目录目录1.引言 (1)1.1 设计意义 (1)1.2 设计任务和主要内容 (1)2. 硬件设计 (2)2.1 系统框图 (2)2.2 最小系统 (2)2.3 矩阵键盘 (3)2.4 LCD1602 (4)3. 软件设计 (5)3.1矩阵键盘扫描原理 (5)3.2 LCD1602的软件设计 (6)3.3 主程序设计 (8)3.4 源程序 (9)3.5 调试结果 (9)4. 设计小结 (9)参考文献 (10)附录 (10)1.引言随着社会的发展,人们生活水平的提高,单片机的应用越来越贴近生活了,人们常用单片机来实现一些简单的电子设计。
计算器在人们的日常生活中是不可或缺的电子产品之一,目前市场上的计算器基本可以满足我们的日常需求,但它还在发展之中,我们要继续研究出更加强大的计算器。
基于这样的理念,本设计采用单片机来设计简易计算器。
本设计是以STC89C52为单片机,LCD为显示器设计的简易计算器,所设计的计算器将完成两位数的加、减、乘、除等功能。
1.1 设计意义通过本次课程设计,进一步掌握单片机知识,知道AT89S52单片机的原理、编程和各种功能的应用,了解简易计算器的工作原理,初步掌握计算器的硬软件设计、编写、调试和仿真,充分提高动手能力和排除故障的能力,同时通过课程设计加深我们对单片机的认识和兴趣,发挥我们的创新能力和动手能力。
1.2 设计任务和主要内容本设计要制作的就是单片机于生活中最为常见的一种应用——简易计算器,以STC89C52单片机作为核心来进行的数字计算器模拟系统设计,可以完成计算器的键盘输入,进行加、减、乘、除两位数范围内的基本四则运算,并在LCD 上显示相应的结果。
设计电路采用AT89C51单片机为主要控制电路,显示采用LCD静态显示,软件方面使用C语言编程,并用PROTUES仿真。
①查阅相关文献资料,了解简易计算器程序的原理,能够运用C 语言进行简易计算器的设计与制作。
②设计基于C 语言的计算器的控制系统硬件部分,画出控制系统硬件框图,设计简易计算器的控制系统的软件部分,首先根据简易计算器所需的具体功能设计好程序流程图,包括控制流程图、控制时序图、梯形图程序设计;根据设计的程序流程图写出代码,并进行代码编译的调试。
③把设计好的软件代码烧入硬件中,然后进行总体调试,直至原先预定要实现的功能完全实现为止。
④设计出系统方框图、单元图、原理总图;画出控制程序流程图,以及编写完整的程序2. 硬件设计2.1 系统框图本文所设计的简易计算器显示系统由STC89C52单片机及其最小系统、LCD1602液晶显示和矩阵键盘等部分组成。
其系统框图如图2.1所示。
STC89C52主控制器件ISP 下载接口晶振电路复位电路编码键盘模块LCD1602图2.1 简易计算器系统框图2.2 最小系统单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。
对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。
如图2.2为单片机的最小系统。
VCC 4039383736353433323130292827262524232221P20P21P22P23P24P25P26P271602RS 1602RW 1602E R310K VCCP07P06P05P04P03P02P01P00123456789RM1P10P11P12P13P14P15P16P17P30P31P32P33P34P35P36P371234567891011121314151617181920RSTXTAL1XTAL2P10P11P12P13P14P15P16P17RST P30/Rx D P31/TxD P32/INT0P33/INT 1P34/T0P35/T1P36/WR P37/RD XTAL1XTAL2GND P20P21P22P23P24P25P26P27EA ALE PSEN VCC P00P01P02P03P04P05P06P07U1AT89S5297531108642P15RST P17P16CN3VCCSELUSB 12CN2ISPISP VCCC410UF RST R210K+BT0BUTTON1234RESET XTAL1XTAL2CRY112MC6C530P CRYSTAL VCC图2.2 STC89C52最小系统STC89C52 单片机概述:STC89C52是一个低功耗,高性能CMOS 8位单片机,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
STC89C52具有如下特点:40个引脚,8k 的flash 存储器,128 bytes 的随机存取数据存储器(RAM ),32个外部双向输入/输出(IO )口,5 个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT )电路,片内时钟振荡器。
2.3 矩阵键盘键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。
目前市场上键盘有独立键盘和矩阵键盘,经过多方考量,本设计采用矩阵键盘。
在键盘中按键数量较多时,为了减少IO 口的占用,通常将按键排列成矩阵形式。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口就可以构成4*4=16个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显。
所以,在需要的键数比较多时,采用矩阵法来做键盘较为合理。
2.3.1 独立键盘与矩阵键盘的区别计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会比较简单,但是会占用大量的IO 口资源,因此在很多情况下都不采用这种方式。
矩阵键盘扫描程序的优点在于,不用专门的按键延时程序,提高了CPU 效率,也不用中断来扫描键盘,节省了硬件资源。
此外,本键盘扫描程序每次扫描占用CPU 时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。
2.3.2 矩阵键盘与单片机的接口电路下图为矩阵键盘与单片机的接口电路图,由图可知,当无按键闭合时, P10~P13与P14~P17之间开路;当有键闭合时,与闭合键相连的两条IO 口线之间短路。
12 3 +4 5 6 — 78 9 * 0Oc / n=/P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7——图2.3 矩阵键盘接口电路 2.4 LCD16022.4.1 LCD1602液晶简介本设计使用LCD1602液晶显示器来显示。
液晶是介于固态和液态间的有机化合物,将其加热会变成透明液态,冷却后变成结晶的混作固态。
在点击的作用下,产生冷热变化,从而影响它的透光性,来达到显示的目的。
1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,它有若干个5*7或者5*11等点阵字符位组成,每个点阵字符位都可以显示一个字符。
每位之间有一个点距的间隔,每行之间也有也有间隔,起到了字符间距和行间距的作用,所以它不能显示图形 。
LCD1602液晶显示器具有以下几个优点:低压、微功耗、显示信息量大、寿命长、无辐射、无污染。
2.4.2 LCD1602与单片机的接口电路1602液晶模块内部的控制器共有11条控制指令,丰富的指令可以完成液晶的时序控制、工作方式设置和数据显示等。
本设计采用的是LCD1602液晶模块,是标准的16针插座,接口电路如下图所示:12345678910111214151613VSS VDD VL RS R/WED0D1D2D3D4D5D6D7BLA BLK0.1UFC6+5D1602P20P21P22P10P11P12P13P14P15P16P17R2 200+5DJP2图2.4 LCD1602接口电路知道接口图后,还要了解每个引脚接口的说明,引脚接口说明如下表所示:表2.4 引脚接口说明表3.软件设计3.1矩阵键盘扫描原理如图2.3所示,初始化时,将P1.4置为低电平,通过与0x0f 相与来判断编号符号 引脚说明 编号符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据/命令选择 12 D5 数据 5 R/W 读/写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8D1数据16BLK背光源负极所按下的键,此次为扫描位于P1.4那一行的键,若相与结果为0x0e 时说明P1.0所检测出的为低电平,闭合的键应为P1.4行与P1.0列的交叉处的键。
若相与结果为0x0d 则P1.1所检测为低电平,闭合的键应为P1.4行与P1.1列的交叉处的键。
若相与结果为0x0b 则P1.2所检测为低电平,闭合的键应为P1.4行与P1.2列的交叉处的键。
若相与结果为0x07则P1.3所检测为低电平,闭合的键应为P1.4行与P1.3列的交叉处的键。
要把16个键盘全部扫描完需要进行4次这样的逐行扫描,所用方法相同程序类似分别另P1.5,P1.6,P1.7为低电平执行相同操作。
判断有无按键按下的方法:第一步,置列线P14~P17为输入状态,从行线P10~P13输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。
第二步,行线轮流输出低电平,从列线P14~P17读入数据,若有某一列为低电平,则对应行线上有键按下。
综合一二两步的结果,可确定按键编号。
但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。
12 3 +4 5 6 — 78 9 * 0Oc / n=/P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7——图2.3 矩阵键盘接口电路3.2 LCD1602的软件设计 3.2.1 LCD1602的指令说明1602液晶模块内部的控制器共有11条控制指令,如表3.2所示。
表 3.2控制命令表 序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 01*3置输入模式1 I/D S4 显示开/关控制0 0 0 0 0 0 1 D C B5 光标或字符移位0 0 0 0 0 1 S/C R/L * *6 置功能0 0 0 0 1 DL N F * *7 置字符发生存贮器地址0 0 0 1 字符发生存贮器地址8 置数据存贮器地址0 0 1 显示数据存贮器地址9 读忙标志或地址0 1 BF 计数器地址10 写数到CGRAM或DDRAM) 1 0 要写的数据内容11 从CGRAM或DDRAM读数 1 1 读出的数据内容如上表所示,1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。