基于单片机的简易计算器的设计

1970-01-01 08:00

基于单片机的简易计算器的设计

摘 要 单片机是采用超大规模集成电路技术,把一台计算机的主要部件集成在一个芯片上所构成的一种集成电路芯片,因此单片机被称为单片微型计算机。由于单片机体积小、价格低、可靠性高、适用面宽以及有其本身的指令系统等诸多优势,在各个领域、各个行业都得到了广泛应用。很多大专、本科院校都开设了关于单片机原理与应用方面的课程。

本设计就是依据单片机的原理来进行简易计算器的设计的,设计采用了STC89C52RC单片机作为计算器的主控制器,TC1602液晶作为显示器,4×4矩阵键盘作为输入按键,通过软硬件相结合,来实现整数的“加”、“减”、“乘”、“除”运算。并在计算器顺利完成的基础上,对系统进行了简单的扩展,增加了电子表功能,使系统完善化和多功能化。

关键词: 单片机,计算器,运算,扩展

ABSTRACT

SCM is a integrated circuit chips that integrated the main cmponents of a computer in a chip by using the large scale integrated circuit technology.So the SCM is called the single chip computer. In various fields, SCM has been widely used for its small size, low price, high reliability, and wide application etc. Many college and universities opened the courses about the principle and application of SCM.

I

The design is a simple calculato that based on the principle of SCM. The chip of STC89C52RC is the main controller of the calculator and the display is TC1602LCD in my design, the keyboard of 4 × 4 matrix is used as input keys, With the combination of hardware and software, it can achieve the integer to plus, reduction, multiplication, division. on the basis of the successful completion, the design can expand the system and make it perfect and multi-functional. Key Words:MCS Calculator Operation Expand

II

目 录

1. 绪论 ......................................................................................................................................... 1

1.1课题简介 ......................................................................................................................... 1 1.2设计目的 ......................................................................................................................... 1 1.3设计任务 ......................................................................................................................... 2 2. 课题背景 ................................................................................................................................. 3

2.1单片机的发展现状 ......................................................................................................... 3 2.2 STC89系列单片机的简介 ............................................................................................. 4 2.3计算器的总体功能描述 ................................................................................................. 8 3. 计算器的硬件系统设计 ......................................................................................................... 9

3.1计算器的硬件系统框架 ................................................................................................. 9 3.2最小系统的设计 ........................................................................................................... 10 3.3键盘接口电路的设计 ................................................................................................... 12 3.4显示电路的设计 ........................................................................................................... 13 3.5 DS1302实时时钟电路的设计 ..................................................................................... 15 3.6计算器的硬件电路原理图 ........................................................................................... 17 4. 计算器的软件系统设计 ....................................................................................................... 18

4.1主模块程序的设计 ....................................................................................................... 18 4.2键盘扫描模块程序的设计 ........................................................................................... 19 4.3运算模块程序的设计 ................................................................................................... 21 4.4显示模块程序的设计 ................................................................................................... 22 4. 5 DS1302实时时钟模块程序的设计 ............................................................................ 23 5. 计算器系统的组装与调试 ................................................................................................... 26

5.1软件系统的调试与仿真 ............................................................................................... 26 5.2硬件系统的组装与调试 ............................................................................................... 27 总 结 ........................................................................................................................................ 30 参考文献 .................................................................................................................................... 31 答 谢 ........................................................................................................................................ 32 附录一 ........................................................................................................................................ 33

III

1. 绪论

1.1课题简介

近年来,随着社会的不断发展与进步,人民生活水平、物质水平的不断提高,各种各样的电子产品走进了家家户户,为我们的生活、学习、工作、娱乐提供了各种各样的便利。其中,计算器作为一种操作简便、运算快速、正确率高、便于携带的计算工具而被广泛使用,成为了我们最亲密的伙伴之一。

单片机也被称为“单片微型计算机”、“微控制器”、“嵌入式微控制器”等。目前,单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域,许多本科、大专院校、职业培训学校,都开设了单片机原理与应用这方面的课程。这是一门技术性和实践性很强的学科,学习它研究它不论对我们自身还是社会都具有重大的意义。

本设计就是依据单片机的原理来进行的设计,它采用了51单片机作为计算器的主控制器,加上必要的外围扩展,通过软硬件的相结合,来实现整数的“加”、“减”、“乘”、“除”运算。

1.2设计目的

本文设计的计算器看似简单,没有创新性,但是它不仅需要运用我所学过的关于单片机的知识,并且需要查阅大量的资料,这可以进一步提升我对单片机的认识。而且亲自动手设计与制作可以对硬件的结构和功能有全新的认识,以达到理论与实践更好的结合,进一步提高综合运用所学知识进行设

1

计的能力,这是对本人大学四年的学习的检验,具有重要的意义。

1.3设计任务

本设计主要通过单片机的原理和应用,以电子技术基础的基本理论为指导,利用Protues仿真软件和Keil编程软件来设计简易计算器,并制作实物。

其主要设计要求有:

1、对计算器硬件系统的设计;

2、运用keil进行计算器软件系统的设计;

3、在protues仿真平台上,对软件进行调试及仿真; 4、计算器实物的焊接;

5、软硬件结合之后,进行整体电路的调试与测试。

2

2. 课题背景

2.1单片机的发展现状

单片机是采用超大规模集成电路技术,把一台计算机的主要部件集成在一个芯片上所构成的一种集成电路芯片,因此单片机被称为单片微型计算机(SCM)。其主要组成部分有中央处理器(CPU)、存储器(RAM和ROM)、基本I/O端口以及定时器/计数器等部件,并具有独立的指令系统。

由于单片机体积小、价格低、可靠性高、适用面宽以及有其本身的指令系统等诸多优势,在各个领域、各个行业都得到了广泛应用。

单片机的发展大致可归纳为四个阶段。

1、第一阶段(1976—1980):低性能单片机探索阶段。该阶段是以较简单的8位低档单片机为主,将原有的单板机功能集成在一块芯片上,该芯片具有原来单板机的功能。其主要代表芯片为Intel公司的MCS-48系列,该系列芯片内集成了8位CPU、并行口I/O接口、8位定时器/计数器,寻址范围为4KB,没有串行通信接口。

2、第二阶段(1980—1983):高性能单片机发展阶段。这一阶段仍以8位机为主,主要增加了串行口、多级中断处理系统、16位定时器/计数器,除片内RAM、ROM容量加大外,片外寻址范围达64KB。这一阶段的单片机以Intel公司的MCS-51系列、Motorla公司的6801系列和Zilong公司的Z8系列为代表。

3、第三阶段(1983—1990):高性能的16位单片机发展阶段。这一阶段的单片机性能更加完善,主频速率提高,运算速度加快,具有很强的实时处理能力,更加适用于速度快、精度高、响应及时的应用场合。其主要代表

3

为Intel公司的MCS-96系列。

4、第四阶段(1990至今):微控制器的全面发展阶段。各公司的产品在尽量兼容的同时,出现了高速、强运算能力,寻址范围更大的8位、16位、32位通用型单片机,以及小型廉价的专用型单片机。

随着微电子技术的不断发展,单片机正朝着高集成度、低能耗、低电压、多功能的方向发展。[1]

2.2 STC89系列单片机的简介

MCS-51单片机是由美国的Intel公司开发研制的。该系列单片机以其优越的性能、成熟的技术及高可靠性和高性价比,迅速占领了工业测控和自动化工程应用的主要市场,成为国内单片机应用领域中的主流。正因为其优越的性能和完善的结构,导致后来许多单片机生产商多沿用或参考了其体系结构。像Atmel、Philips、Dallas等著名的半导体公司都推出了兼容MCS-51的单片机产品。这些著名厂商的加盟使51系列单片机获得了飞速发展,进一步丰富和发展了51系列单片机,产品性能得到了很大提升。[2]

在这里我们要介绍的是由美国研发,台湾公司生产的STC89系列单片机。STC89系列单片机是MCS-51系列单片机的派生产品,它们在指令系统、硬件结构和片内资源上与标准8051单片机完全兼容。

其主要特性有:

1、80C51核心处理单元。

2、64/32/16/8KB片内Flash ROM,具有在应用可编程(IAP)、在系统可编程(ISP)的功能,可实现远程软件升级,无需编程器。

3、1K字节RAM;

4

4、双DPTR数据指针; 5、支持12时钟或6时钟模式;

6、4个8位I/O口, P1口、P2口、P3口可直接驱动LED; 7、SPI(串行外围接口)和增强型UAPT;

8、有PCA(可编程计数器阵列),具有PWM的捕获/比较功能; 9、3个16位定时器/计数器; 10、可编程看门狗定时器; 11、低EMI方式(ALE禁止); 12、兼容TTL和COMS逻辑电平; 13、掉电模式和低功耗模式等; 14、全静态操作0Hz~24Hz;

图2.1为STC系列单片机的引脚排列图:

图2.1 STC系列单片机引脚排列图

其引脚功能如下: 1、主电源引脚Vcc和Vss

5

Vcc (40脚):接+5V电源正端; Vss (20脚):接电源地。

2、外接时钟引脚XTAL1和XTAL2

XTAL1 (19脚):外接石英晶体振荡器的一端。 XTAL2 (18脚):外接石英晶体振荡器的另一端。 3、控制信号或与其他电源复用引脚

(1)RST (9脚):RST即RESET,当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,即可实现系统复位。

(2)ALE/PORG (30脚):地址锁存允许信号,当访问外部存储器时,在每个机器周期内ALE信号会出现两个正脉冲,用于锁存出现在P0口的低8位地址信息。在不访问外部存储器时,ALE端仍以上述频率(振荡器频率的1/6)周期性地输出正脉冲信号,此信号可作为外部其他部件的时钟脉冲或用于定时目的。

(3)PSEN (29脚):片外程序存储器读选通信号输出端,低电平有效。当从外部程序存储器读取指令或读取常数期间,每个机器周期PSEN两次有效。访问外部数据存储器期间,PSEN信号将不出现。

(4)EA (31脚):EA为访问外部程序存储器控制信号,低电平有效。当EA端为高电平时,单片机访问片内程序存储器4KB(52系列为8KB),若超出此范围,自动转去执行外部程序存储器的程序。当EA端为低电平时,无论片内有无程序存储器,均只访问外部程序存储器。

4、输入/输出(I/O)引脚P0口、P1口、P2口及P3口

(1)P0口 (39脚~32脚):P0.0~P0.7。当不接外部存储器,也不扩展

6

I/O接口时,它可作为准双向8位输入/输出接口。当接有外部存储器或扩展I/O接口时,P0口为地址/数据分时复用端口。它分时提供低8位地址信息和8位双向数据信息。

(2)P1口 (1脚~8脚):P1.0~P1.7,P1口是一个带内部上拉电阻的8

位准双向I/O端口。在FLASH编程和校验时,P1口作为第八位地址接收。

(3)P2口 (21脚~28脚):P2.0~P2.7.,可作为普通准双向I/O接口。

当构成系统总线时,P2口作为高8位地址总线,传送高8位地址信息。

(4)P3口 (10脚~17脚):P3.0~P3.7,为双功能端口,可以作为一般

的准双向I/O接口使用,而每一位都具有第2功能(见表2.1),并且P3口的每一条引脚均可独立定义第1功能的输入/输出或第2功能。

表2.1 P3口第2功能

引脚 符号 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

第2功能 RXD 串行口输入端 TXD 串行口输出端 INT0 外部中断0请求输入端,低电平有效 INT1 外部中断1请求输入,低电平有效 T0 定时器/计数器0计数器脉冲输入端 T1 定时器/计数器1计数器脉冲输入端 WR 外部数据存储器写选通信号输出端,低电平有效 RD 外部数据存储器读选通信号输出端,低电平有效 7

2.3计算器的总体功能描述

计算器需要实现的功能如下:

1、本设计为基于单片机的简易计算器的设计,所以最基本的功能是可以进行整数的“加”、“减”、“乘”、“除”四则运算;

2、既然只需要进行基本的四则运算,那么键盘只需16个键即可,包括数字键0~9,符号键“+”、“-”、“*”、“/”、“=”和一个清零键;

3、运算时所键入的数字,符号(+、-、*、/)均需要在显示器上显示,当键下“=”号键时,显示计算所得的结果;

4、可以进行多次连续运算,即上次计算所得的结果可以作为下次运算的第一个值;

5、可以进行错误提示,如当除数为零,或者结算结果大于计算器所能运算的范围时(溢出),在显示器上提示错误并内部归零;

6、附加功能:在计算器顺利完成的基础上对系统进行简单的扩展,如加时钟芯片,让系统既可以作为计算器,同时也可作为电子表,电子表应具备调时功能。

8

3. 计算器的硬件系统设计

硬件系统是指构成微机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。

一个单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即当单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路;二是系统的配置,即按照系统功能要求配置外围设备,如键盘、显示器、打印机、A/D、D/A转换器等,并为这些外围设备设计合适的接口电路。

3.1计算器的硬件系统框架

计算器的硬件系统框架如图3.1所示:

电源系统 复位、晶振电路 按键及键扫电路 显示电路 单片机 实时时钟电路

图3.1 计算器的硬件系统框架图

9

3.2最小系统的设计

单片机最小系统是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。

1、单片机的选择

在第2部分中我们已经介绍了STC89系列的单片机,本设计中我们采用STC89C52RC单片机,其性能稳定,价格便宜。它相对于另一种比较常用的AT89系列的单片机来说,在功能上、引脚排列上并没有较大的差异,我会选择STC系列的单片机,主要是觉得其程序写入时可以通过串口采用STC-ISP软件在线下载,比AT系列大多采用编程器下载更方便。

STC89C52RC主要性能有: (1)8K Byte程序存储器;

(2)工作频率从静态到33MHz,更加灵活; (3)32根IO端口;

(4)内置两个16位定时计数器,利用单片机周期工作,方便控制且可靠性高;

(5)包含了全双工串行接口,方便与电脑或其它终端通信;

(6)内置看门狗,防止程序跑丢,在外界环境突变时可自行复位继续工作;

(7)编程简单,可以在线下载,很方便。

其引脚如图3.2所示,引脚功能我们在2.2 STC89系列单片机的简介中已详细介绍过,在此就不多做介绍了。

10

图3.2 STC89C52RC引脚图

2、晶振电路的设计

晶振电路的设计如图3.3所示。对于时间要求不是很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。但由于图中的电容C1、C2有对系统时钟频率有微调和稳定的作用,因此,在本计算器系统的实际应用中要注意正确选择参数(本设计采用30pF),振荡频率范围是1.2MHz~12MHz,这里采用11.0592MHz是因为可以准确地得到9600波特率和19200波特率,便于和计算机进行串口通讯。[3]

图3.3 晶振电路

11

3、复位电路的设计

复位是单片机的初始化操作。其主要功能是把程序计数器PC值初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要按复位键重新启动单片机。

复位操作有上电自动复位和按键手动复位两种方式,其中,按键手动复位分为电平方式和脉冲方式两种。在本设计中,按键手动复位明显比上电复位更人性化、更方便,所以这里采用按键手动复位中的按键电平复位,电路设计如图3.4所示。[4]

图3.4 按键电平复位电路

3.3键盘接口电路的设计

键盘是一种按键的集合,它是单片机应用系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。键盘中每个按键都是一个常开开关电路。

本设计是基于单片机的简易计算器的设计,不需要进行复杂的运算,因此,采用4×4矩阵式键盘16个键来实现基本的“加” 、“减” 、“乘” 、“除”运算即可。

12

矩阵式键盘的硬件结构比较简单,有行输出口和列输出口构成行列式键盘,按键设置在行、列的交点上。[5]

4×4矩阵式键盘具体按键安排如下:

第0列 第1列 第2列 第3列 第0行: 0 1 2 3 第1行: 4 5 6 7 第2行: 8 9 + - 第3行: * / = 复位

电路设计如图3.5所示,图中1.、2、3、4分别接单片机的P1.0~P1.4口,5、6、7、8分别接P1.4~P1.8口。

图3.5 键盘接口电路

3.4显示电路的设计

单片机应用系统中常用的显示器件有LED数码管显示器、LED阵列显示器和液晶显示器等。液晶显示器较之LED数码管显示器来说虽价格较贵,但其显示功能较强大,体积小、功耗低、界面美观大方。

本设计进行的是计算器设计,如果用液晶作为显示器,两行就足够了,

13

一行显示算式,一行显示结果,所以本设计采用TC1602字符型液晶模块进行显示。

TC1602的工作原理:

TC1602显示模块采用点阵图形来显示字符,显示分为2行、每行16个字符或1行16个字符两种模式,常用模式为2行16个字符。它有16个引脚,其引脚和电路连接如图3.6所示,引脚功能如下:

第1脚GND:电源地。 第2脚Vcc:接+5V电源。

第3脚VL:液晶显示器对比度调整端。

第4脚RS:寄存器选择信号线。高电平时进行读操作,低电平时选择指令寄存器。

第5脚RW:读写信号线。高电平时进行读操作,低电平时进行写操作。 第6脚E:使能端,当E端由高电平跳变成低电平时,可以写入数据。 第7~14脚:8位双向数据线D0~D7。 第15脚BLA:背光电源正极输入端。

第16脚BLK:背光电源负极输入端。BLA接正,BLK接负便会点亮背光灯。

图3.6 TC1602电路图

图中7~14脚接单片机的P0口。

14

TC1602液晶显示模块内置有字符发生ROM,字符发生RAM和字符显示RAM,字符发生存储器已经存储了192个不同的点阵字符图形,每一个字符都有固定的代码,我们可以通过查表找出所需要显示的字符的地址让其在液晶中显示出来。[1]

3.5 DS1302实时时钟电路的设计

在本设计中,DS1302时钟电路属于一个系统扩展模块,是一个附加功能,它跟计算器是分离开来的,在时间和硬件条件的允许下,我决定添加这个模块,让我的计算器除了能进行计算外,还能当电子表使用,使系统功能更加完善。计算器和电子表两种模式通过一个独立按键来进行切换,在同一块液晶屏上显示。

实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能,采用普通32.768kHz晶振,工作电压为2.5V~5.5V。它可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。在本设计中,我们设计的只是电子表,所以用上的只有时、分、秒,这似乎有点大材小用了,我争取在以后对系统进一步扩展,比如做个万年历,使时钟芯片得到充分的利用。 其引脚和电路连接如图3.7所示,引脚功能如下: 第1脚Vcc2:主电源。 第2脚X1、第3脚X2:振荡源,外接32.768HZ的晶振。 第4脚GND:地线。 第5脚RST:复位/片选线。 15

第6脚I/O:串行数据输入/输出端(双向)。 第7脚SCLK:串行时钟输入。 第8脚Vcc1:后背电源。

图3.7 DS1302电路图

一般的电子表都具有设置时间的功能,我的也不例外。在此模块中,我选择使用4个独立式按键,分别是:“设置” 、“确认” 、“+” 、“-” ,用来对时间进行设置。设置方法是:按设置键1下,可按“+”、“-”对“小时”进行设置,设置完毕按确认键退出;同理,按设置键2下对“分”进行设置,按设置键3下对“秒”进行设置。

独立式按键是指直接用一根I/O口线构成的单个按键电路,每个独立式按键单独占有一根I/O口线,每根I/O口线上的按键的工作状态不会影响其他I/O口线的工作状态。独立式按键接口电路配置灵活,软件结构简单。其电路设计如图3.8所示。

图3.8 时间设置按键电路

16

3.6计算器的硬件电路原理图

图3.9 计算器硬件电路原理图

17

a=a+b;b=0;flag=0;fuhao=0; }

else if(fuhao==2) //进行减法运算 {write_com(0x80+0x4f); write_com(0x04);

if(((a<0&&a>e)&&b>a-e)) { error(); break;} //减法溢出错误 if(a-b>0) c=a-b; else c=b-a; if(c==0) write_date(0x30); while(c!=0)

{write_date(0x30+c); c=c/10; }

if(a-b<0)

write_date(0x2d); //写'负号' write_com(0x80+0x40); a=a-b; b=0;flag=0;fuhao=0; }

else if(fuhao==3) //进行乘法运算 { write_com(0x80+0x4f); write_com(0x04); if(((a>0&&ad/a)||((a<0&&a>e)&&b>e/a)) { error(); break;} if(a!=0) {c=a*b;

if(c<0) c=-c;

if(c==0) write_date(0x30); while(c!=0)

{write_date(0x30+c); c=c/10; } }

else write_date(0x30);

if(a*b<0) write_date(0x2d); //写'负号' write_com(0x80+0x40); a=a*b;b=0;flag=0;fuhao=0; }

else if(fuhao==4) { write_com(0x80+0x4f); write_com(0x04); i=0; if(b!=0)

{ if(((a>0)&&((a/b)<(d/10000)))||((a<0)&&((a/b)>(e/10000))))

43

//乘法溢出错误

{c=(long)((a*1.0/b)*10000); if(c<0) c=-c; if(c>=1000) { while(c!=0) {

write_date(0x30+c); c=c/10; i++; if(i==4)

write_date(0x2e); } } else if(c<1000) { write_date(0x30+c); write_date(0x30+c/10); write_date(0x30+c/100); write_date(0x30); write_date(0x2e); } } else if(((a>0)&&((a/b)>(d/10000)))||((a<0)&&((a/b)<(e/10000)))) { c=a/b; if(c<0) c=-c; while(c!=0) {

write_date(0x30+c); c=c/10; } }

if(a/b==0) write_date(0x30);

if(a*1.0/b<0) write_date(0x2d); //写‘负号’ write_com(0x80+0x40); a=a/b;b=0; flag=0;fuhao=0; } else error(); } } break;

case 15:{write_com(0x01);a=0;b=0;flag=0;fuhao=0;} //表示按下的是‘清零键’ break; } }

44

P1=0xf0;

}

main() { key=1; setkey=1; surekey=1; pluskey=1; reducekey=1; next=0; kk=0;

d=2147483647; e=-2147483648; lcdinit() ; init();

ds1302_init(); while(1) { if(kk==0)

{ while(key==1) { kk=1;

keyscan(); } }

write_com(0x01);

a=0;b=0;flag=0;fuhao=0; if(kk==1)

{ while(key==1) { kk=0; Key();

display_hour(); display_min(); display_sec(); display_name(); } }

write_com(0x01); }

45


基于单片机的简易计算器的设计.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:八年级科学下册第二章微粒的模型与符号第1_3节测试卷新版浙教版

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: