基于89C52嵌入式计算器的研究与设计

合集下载

基于STC89C52单片机的计算器

基于STC89C52单片机的计算器

基于STC89C52单片机的计算器一、引言计算器是一种用于进行数学运算的设备。

在现代社会中,计算器被广泛应用于各个领域,包括教育、科学研究、工程设计等。

本篇文章将介绍基于STC89C52单片机的计算器设计。

二、设计目标本设计的目标是实现一个简单的、功能齐全的四则运算计算器。

该计算器具有基本的加、减、乘、除运算功能,可以进行整数和小数的运算。

同时,该计算器还具备清零、撤回、保存结果等辅助功能。

三、硬件设计1.单片机选择本设计选择STC89C52单片机作为主控芯片。

STC89C52是一款具有低功耗、高性能的单片机,拥有8位宽的数据总线和16位宽的地址总线,适用于本设计所需的计算器功能。

2.显示器选择本设计选择8位共阳数码管作为显示器。

由于STC89C52单片机的IO 口输出电流较小,为了驱动数码管显示,需要通过数码管驱动芯片进行扩展以增大驱动电流。

3.按键选择本设计选择矩阵键盘作为输入设备。

根据计算器所需的功能,可以设置数字键、运算符键、功能键等按键。

四、软件设计1.指令集设计本设计根据计算器功能的需求,设计了一套适合STC89C52单片机的指令集。

包括加法指令、减法指令、乘法指令、除法指令等,以及相应的操作数寻址方式。

2.界面设计本设计通过8位共阳数码管显示器和矩阵键盘构建了计算器的界面。

通过编程实现数码管显示数字和结果,以及按键的检测和响应。

3.运算功能实现本设计通过编程实现了加法、减法、乘法、除法等基本运算功能。

通过数码管显示输入的数字和结果,实现了计算器的正常运算。

4.辅助功能实现本设计通过编程实现了清零、撤回、保存结果等辅助功能。

通过按下相应的功能键,可以实现清除当前输入、撤回上一步操作或保存当前结果等操作。

五、实验验证六、结论通过本次设计,成功实现了基于STC89C52单片机的四则运算计算器。

该计算器具有基本的加、减、乘、除运算功能,可以进行整数和小数的运算。

同时,该计算器还具备清零、撤回、保存结果等辅助功能。

基于AT89C52的多功能科学计算器

基于AT89C52的多功能科学计算器

基于AT89C52的多功能科学计算器
本系统以AT89C52为控制核心,加上4乘以4矩阵键盘和4个功能按键作为输入,采用了带背光的1602液晶进行数据的显示。

通过程序的处理,用简单的电路实现了丰富的功能。

 1作品功能
 作品采用浮点算法,实现了7位数范围内的数学运算,整数、小数和负数
皆可,并可以对正余弦函数,正切函数,开平方,反正余弦函数,反正切函数,对数函数,指数函数,平方和立方进行运算,如果有小数的话结果显示
到四位小数,真正实现了一个科学计算器应该具备的功能。

依托于1602液晶,实现了时间和日期的显示。

时间用单片机的定时器编写,每天的误差为
12S,时间和日期可以根据需要进行任意修改。

当日期变化之后,星期会跟着自动转换,星期的显示正确。

对时间和日期进行修改的时候设置不符合实际
的数字不能被写入到要修改的变量当中,光标会停在原地等待重新输入。


外还扩展了闹铃功能,和时间显示在同一排,用一对[ ]括住,里面显示的是闹铃的小时和分钟,通过按键任意设定。

密码功能也是建立在液晶的基础之
上写出来的功能。

如果操作者把作品切换到了密码状态,当输入正确的密码
才可以执行计算功能。

密码可以修改,修改后的密码存放在程序存储器当中,掉电以后会消失,变为初始密码。

密码修改以后下次提示输入密码,正确的
密码是修改后的。

 2硬件设计。

基于STC89C52单片机的计算器的设计

基于STC89C52单片机的计算器的设计

基于单片机的计算器的设计中文摘要近些年来,随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强、体积小、功耗低、价格便宜、工作可靠、使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,数据采集以及家用电器等各个领域。

计算器这一小小的程序机器实际上是从计算机中割裂出来的衍生品,但因其方便快捷的操作模式,已经被广泛应用于商业等日常生活中,极大的方便了人们对于数字的整合运算。

计算器一般由运算器、控制器、存储器、键盘、显示器、电源等设备组成。

键盘是计算器的输入部件,一般采用接触式或传感式。

显示器是计算器的输出部件,有发光二极管显示器或液晶显示器等。

除显示计算结果外,还常有溢出指示、错误指示等,部分计算器还带有时钟功能。

关键词:单片机;控制系统;计算器;多功能Calculator Design Based on Single-chipABSTRACTIn recent years, as computer penetration in the social field and large-scale development of integrated circuits, micro controller applications are continually deepening, because of its powerful function, small size, low power consumption, cheap, reliable, easy to use, etc. Therefore particularly suitable for systems with control of more and more widely used in automatic control, intelligent instruments, data acquisition, military products and home appliances fields.This little Calculator program was actually cut out from the computers of derivatives, but the derivatives for its quick and convenient operation mode, has been widely used in daily life, such as business, great convenience for the integration of the people digital computation.Calculator generally be constitute of logic, controller, storage, keyboard, display, power composition. The keyboard is calculator input parts, generally uses the contact or sensing type. Display is the calculator output components, have LED display or LCD etc. In addition to displaying calculation results, overflow indicator and error indicates can be shown, some calculator also with clock function.KEY WORD: single chip;control system;calculator;multifunctional目录1绪论 (1)1.1问题的提出 (1)1.2国内外研究现状 (1)1.3设计目标 (2)1.3.1设计目的 (2)1.3.2系统功能 (2)2系统方案选择 (3)2.1硬件部分 (3)2.1.1 单片机型号的选择 (3)2.1.2 按键的选择 (3)2.1.3 显示器的选择 (4)2.1.4 时钟芯片的选择 (4)2.1.5 电源的选择 (4)2.2软件部分 (4)2.3系统方案概述 (5)3系统组成 (6)3.1单片机STC89C52 (6)3.2液晶显示屏LCD1602 (9)3.3时钟芯片DS1302 (10)3.4锂二氧化锰电池CR2032 (10)4硬件电路设计 (11)4.1总体设计 (11)4.2硬件电路设计 (11)4.2.1单片机时钟电路的设计 (11)4.2.2单片机复位电路的设计 (12)4.2.3按键电路的设计 (13)4.2.4时钟芯片电路的设计 (14)4.2.5显示电路的设计 (15)4.2.6按键发声电路的设计 (16)5系统软件设计 (18)5.1 总体设计 (18)5.2 键盘扫描的程序设计 (19)5.3 显示模块的程序设计 (20)5.4 运算模块的程序设计 (20)5.5 时钟模块的程序设计 (22)6系统调试 (23)6.1软件调试 (23)6.1.1 KeiluVision2简介 (23)6.1.2调试过程 (23)6.2硬件调试 (24)6.2.1 Proteus简介 (24)6.2.2调试过程 (24)6.2.3硬件电路调试 (25)7结论 (27)参考文献 (28)致谢 (29)附录 (30)操作说明 (30)系统电路原理图 (31)核心代码 (32)1绪论1.1问题的提出说起计算器,值得我们骄傲的是,最早的计算工具诞生在中国,这种计算工具叫筹策,又被叫做算筹。

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

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

基于STC89C52单片机的简易计算器目录内容摘要 (2)关键词 (2)ABSTRACT (2)1绪论 (2)2系统设计 (4)2.1设计任务与要求 (4)2.2总体设计方案 (5)3系统硬件设计 (6)3.1控制器模块 (6)3.2按键模块 (7)3.3时钟日期模块 (9)3.4液晶显示屏显示模块 (12)3.5硬件元件清单 (14)4软件设计与仿真 (14)4.1主程序设计 (15)4.2仿真结果 (18)4.3系统调试 (19)5参考文献 (19)内容摘要:该计算器以STC89C52单片机为核心控制芯片,实现了简单的加、减、乘、除功能,采取的是键盘输入和液晶显示屏的输出结果显示。

主要硬件构成部分由五个:一个STC89C52单片机芯片,一个液晶显示屏(LCD),一个4*4矩阵键盘和一个时钟芯片(DS1302)一个蜂鸣器,可以实现8位的整数数值操作计算。

附加时钟显示的功能。

关键词:单片机STC89C52 液晶显示屏LCD 时钟芯片DS1302 Abstract:The calculator with STC89C52 single chip as the core control chip, the realization of a simple addition, subtraction, multiplication, in addition to function, is taken by the keyboard input and liquid crystal display outputThe desigh. is taken by the keyboard input and liquid crystal display output. The main hardware components from five: a STC89C52 chip, a liquid crystal display ( LCD ), a 4 x 4 matrix keyboard and a clock chip ( DS1302 ) a buzzer, can achieve a 8 bit integer numerical operation calculation. Additional clock display function.Keywords:The single chip computerSTC 89 C52 Liquid crystal display (LCD) LED the Clock DS1302 chip1.绪论:单片机是指一个集成在一块芯片上的完整计算机系统。

基于STC89C52的简易计算器设计

基于STC89C52的简易计算器设计

福建电力职业技术学院课程设计课程名称:《智能仪器》题目:基于STC89C52的简易计算器设计专业班次:姓名:学号:指导教师:学期:2011-2012学年第2学期日期:2012.2word格式-可编辑-感谢下载支持目录1.引言 01.1 设计意义 01.2 设计任务和主要内容 02. 硬件设计 (1)2.1 系统框图 (1)2.2 最小系统 (1)2.3 矩阵键盘 (2)2.4 LCD1602 (3)3. 软件设计 (4)3.1矩阵键盘扫描原理 (4)3.2 LCD1602的软件设计 (5)3.3 主程序设计 (7)3.4 源程序 (8)3.5 调试结果 (8)4. 设计小结 (8)参考文献 (9)附录 (9)1.引言随着社会的发展,人们生活水平的提高,单片机的应用越来越贴近生活了,人们常用单片机来实现一些简单的电子设计。

计算器在人们的日常生活中是不可或缺的电子产品之一,目前市场上的计算器基本可以满足我们的日常需求,但它还在发展之中,我们要继续研究出更加强大的计算器。

基于这样的理念,本设计采用单片机来设计简易计算器。

本设计是以STC89C52为单片机,LCD为显示器设计的简易计算器,所设计的计算器将完成两位数的加、减、乘、除等功能。

1.1 设计意义通过本次课程设计,进一步掌握单片机知识,知道AT89S52单片机的原理、编程和各种功能的应用,了解简易计算器的工作原理,初步掌握计算器的硬软件设计、编写、调试和仿真,充分提高动手能力和排除故障的能力,同时通过课程设计加深我们对单片机的认识和兴趣,发挥我们的创新能力和动手能力。

1.2 设计任务和主要内容本设计要制作的就是单片机于生活中最为常见的一种应用——简易计算器,以STC89C52单片机作为核心来进行的数字计算器模拟系统设计,可以完成计算器的键盘输入,进行加、减、乘、除两位数范围内的基本四则运算,并在LCD 上显示相应的结果。

设计电路采用AT89C51单片机为主要控制电路,显示采用LCD静态显示,软件方面使用C语言编程,并用PROTUES仿真。

基于STC89C52单片机的计算器

基于STC89C52单片机的计算器

基于STC89C52单片机的计算器一、引言计算器作为一种常见的电子设备,经常被人们用于日常的数学计算。

本文将介绍一种基于STC89C52单片机的计算器的设计与实现。

该计算器具有基本的四则运算功能,并且支持浮点数的运算。

二、硬件设计1.单片机选择本文选择STC89C52单片机作为计算器的核心处理器。

STC89C52是基于8051架构的单片机,具有强大的计算和控制能力,适合用于计算器的设计。

2.显示器设计本文选用16x2LCD液晶显示器作为计算器的显示器。

液晶显示器具有容量小、功耗低、反射型等优点,非常适合计算器的显示要求。

3.按键设计本文选用矩阵按键设计。

通过矩阵按键设计,可以设计出较多的按键功能,并且能够节省IO口的使用。

4.电源设计计算器使用直流电源供电,可以选择使用电池或者外部电源适配器供电。

三、软件设计计算器的软件设计主要包括界面设计和计算功能设计两个方面。

1.界面设计计算器的界面设计主要包括显示数字和调用函数。

a.显示数字通过将用户输入的数字显示到LCD液晶屏上,实现数字的显示功能。

液晶屏可以显示16个字符,可以一次性显示一个较长的数字。

b.调用函数通过监测用户按键的输入,调用相应的函数实现计算功能。

可以设置加、减、乘、除等函数,并通过按键的组合调用相应的函数。

2.计算功能设计计算器的计算功能设计主要包括四则运算和浮点数运算两个方面。

a.四则运算通过四个函数实现加、减、乘、除的功能。

在用户按下相应的运算符号键后,调用相应的函数对输入的数字进行相应的运算,并将结果显示在LCD液晶屏上。

b.浮点数运算在用户输入的数字或运算结果存在小数的情况下,可以设计相应的浮点数运算函数,通过运算可以得到带有小数点的结果,并将结果显示在LCD液晶屏上。

四、系统实现五、总结基于STC89C52单片机的计算器设计和实现包括硬件设计和软件设计两个方面。

通过合理的硬件设计和功能完善的软件设计,可以实现一款功能强大的计算器。

电子设计-基于STC89C52RC单片机的简易计算器设计.docx

电子设计-基于STC89C52RC单片机的简易计算器设计.docx

电子设计实验名称:基于STC89C52RC单片机的简易计算器设计姓名:学号:指导老师:一、可行性研究■-二、方案述.....2.1、功能介■■■..3 (4)、设可彳亍性分析:1.2.1经济可行性由于只是实验性质的编程,所以在设计和开发都不需要过多的经费,但是系 统投入运行以后,硕件维护和损耗所造成的耗费是必须的,但是数目也不会很大。

基本功能 .......... 扩展功能 ..........2.2、总体设计方案…… 总体设计思路•- 方案论证与比较系统组成 ........... 三、详细设计 .............1. 各个模块设计…… 输入模块: 运算模块: 显示模块: 阀件电设计 2.键盘扫描•….单片机控制…LCD 1602 显硬件连接121213 14 153.元件的介绍 ........ STC89C52单片机组成 复位和复位电路…•…LCD 1602 显示5 ■5 •6器•……4.PCB 设计以及结果显示五、总结 ...... ....... 附录主要程序代码 .............19 222425所以经过初步分析,经济上基本上是可行的1.2.2技术可行性在技术方面,因为都学习了C语言,硕件课程设计等课程,对于开发语言C语言也有一定的掌控能力,应该能够完成相应的任务。

1.2.3运行可行性该成果简单易操作,非常容易使用。

1.2.4法律可行性由于我们需要完成的功能相对简单,没有太多涉及到很专业方面的内容,更没有计划将系统利用到商业用途,所以不存在侵权或者版权纠纷方面的问题。

125结论该系统的软硬件都比较容易理解和实现,所以,具有实现一计算器的可行性。

二、设计方案简述2.1功能概述系统基本功能:(1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LCD显示数据和结果。

(2)采用键盘输入方式,键盘包括数字键(0〜9)、符号键(+、-、X、清除键(onV )和等号键(=),故只需要16个按键即口J,设计中采用集成的计算 键盘。

基于STC89C52的计算器设计与仿真

基于STC89C52的计算器设计与仿真

基于STC89C52的计算器设计与仿真宋慧超【摘要】Single chip microcomputer has the advantages of smallsize,strong control function,low power consumption,strong adaptability to environment,flexible and easy to use.It has been widely used in various fields.This paper presents a design scheme of high precision calculator based on Single chip microcomputer.Control system is STC89C52 microcontroller.Operation process and results are displayed in theLCD1602 LCD screen.The key module is composed of 4*4 keyboard which is used to simulate the 0-9 and add,subtract,multiply,divide ,reset button. Software program is written in C language and compiled by C51 Keil and verified by Proteus simulation.%单片机具有体积小、控制功能强、功耗低、环境适应能力强、扩展灵活和使用方便等优点,已广泛应用在生活的各个领域,该文提出一种基于单片机的高精度计算器设计方案,核心控制系统采用STC89C52单片机,利用LCD1602液晶显示屏显示运算过程与结果,设计4×4键盘构成按键模块,用来模拟0~9及加、减、乘、除、清零按键.软件程序利用单片机C语言编写,并在Keil C51开发环境下编译,硬件系统通过proteus工具软件设计并仿真.【期刊名称】《科技创新导报》【年(卷),期】2015(000)029【总页数】3页(P159-160,162)【关键词】单片机;4×4键盘;LCD1602【作者】宋慧超【作者单位】内蒙古民族大学物理与电子信息学院内蒙古通辽 028000【正文语种】中文【中图分类】TN43计算器是人们生活中最常见的工具之一,随着科技的迅猛发展,计算器的功能越来越强大,对精度的要求也越来越高。

基于AT89C52的计算器设计

基于AT89C52的计算器设计
缺点:显示不稳定,已产生闪烁。无法显示符号。
b.LCD1602液晶屏显示:
对输入数据,输出数据,运算命令。同时在液晶屏上显示。
优点:能显示符号且能同时显示输入数据,输出数据,运算命令。
缺点:对程序显示模块要求高。
B.输入部分
对单片机进行信号输入。
a.16个独立键盘:
能实现16键的计算器的输入功能。
优点:电路简单,设计容易。
2.LCD1602引脚及对应I/O口图
LCD很普通了,就不做过多的介绍,下面是引脚及对应端口。
1602液晶对比调节
图3
3.4*4矩阵键盘电路及对应I/O口图
图4
矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4×4个。这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。

图1
硬件电路设计
1.89c52(PDIP)引脚图
图2
*at89c52简介
AT89C52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。

基于STC89C52单片机的计算器

基于STC89C52单片机的计算器

4X4矩阵键盘实现的计算器一、功能实现基本的两个整数加、减、乘、除运算,采用4X4矩阵键盘输入数据,结果由LCD1602显示。

可以显示负数结果,并且还具有清除功能。

该软件基于普中科技的HC6800_EM3 V2.2平台,微处理器为STC89C52单片机。

二、硬件电路图硬件各个部分的电路图如下:1、STC89C52单片机电路图2、LCD1602显示电路图3、矩阵键盘电路图P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0012345678910(+)11(-)12(*)13(/)14(=)15(CLR)三、软件程序1、LCD1602驱动程序(1)LCD1602.c#include <reg52.h>#include <intrins.h>sbit LCD_RS = P2^6;sbit LCD_RW = P2^5;sbit LCD_EN = P2^7;#define delayNOPs(); {_nop_();_nop_();_nop_();_nop_();};// 延时函数,延时大约1ms乘以nvoid DelayNms(unsigned int n){unsigned char x;while(n--){for(x=0; x<250; x++){_nop_();_nop_();_nop_();_nop_();}}}/***************************************************************************/ /* */ /* 检查LCD忙状态 */ /* 返回值为1时,表示忙,等待。

返回值为0时,表示闲,可以写入指令与数据。

*/ /* 读状态:RS=L,RW=H,E=H,D0-D7=状态字 */ /* */ /***************************************************************************/bit Lcd1602_is_busy(void){bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;delayNOPs(); // 保证使能脉冲的宽度result = (bit)(P0&0x80);LCD_EN = 0;return(result);}/*******************************************************************//* *//* 写指令到LCD *//* RS=L,RW=L,E=高脉冲,D0-D7=指令码 *//* *//*******************************************************************/void Lcd_Write_Command(unsigned char cmd){while(Lcd1602_is_busy());LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;P0 = cmd;delayNOPs(); // 保证使能脉冲的宽度LCD_EN = 1;delayNOPs();LCD_EN = 0;}/*******************************************************************//* *//* 写显示数据到LCD *//* RS=H,RW=L,E=高脉冲,D0-D7=数据 *//* *//*******************************************************************/void Lcd_Write_Data(unsigned char dat){while(Lcd1602_is_busy());LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;delayNOPs();LCD_EN = 1;delayNOPs();LCD_EN = 0;}/*******************************************************************//* *//* LCD初始化设定 *//* *//*******************************************************************/void Init_Lcd1602(void){DelayNms(15);Lcd_Write_Command(0x38); // 设置成:16*2显示,5*7点阵,8位数据接口DelayNms(5);// Lcd_Write_Command(0x08); // 显示关闭// DelayNms(5);Lcd_Write_Command(0x0C); // 显示开,关光标DelayNms(5);Lcd_Write_Command(0x06); // 移动光标,输入方式从左到右DelayNms(5);Lcd_Write_Command(0x01); // 清除LCD的显示内容,数据指针清零,将光标撤回液晶显示屏的左上方DelayNms(5);}(2)LCD1602.hvoid Lcd_Write_Command(unsigned char cmd);void Lcd_Write_Data(unsigned char dat);void Init_Lcd1602(void);void DelayNms(unsigned int n);2、矩阵键盘驱动程序(1) 4X4KeyPad.c#include <STC89C5xRC.h>#include "LCD1602.h" // 要用到延时函数 void DelayNms(unsigned char n);#define key P1unsigned char val = 16; // 获取的键值#define KEY_NULL 0xFF // 后来加上的// 键盘扫描函数unsigned char key_scan(void){unsigned char state,KeyTemp;key = 0x0F;if(key != 0x0F) // 如果有按键按下{state = key; // 记录第一次按键状态DelayNms(10); // 延时去抖if(key == state) // 判断按键状态是否和第一次一致{key = 0x0F; // 测试列,该行可屏蔽掉switch(key){case (0x07): KeyTemp = 0; break;case (0x0B): KeyTemp = 1; break;case (0x0D): KeyTemp = 2; break;case (0x0E): KeyTemp = 3; break;}key = 0xF0; // 测试行switch(key){case (0x70): val = KeyTemp + 0; break;case (0xB0): val = KeyTemp + 4; break;case (0xD0): val = KeyTemp + 8; break;case (0xE0): val = KeyTemp + 12; break;}while(key != 0xF0); // 等待松开按键}elsereturn (KEY_NULL);}elsereturn (KEY_NULL);// else key = 0xFF; // 释放键盘总线}(2) 4X4KeyPad.hextern unsigned char key_scan(void);extern unsigned char val;#define KEY_NULL 0xFF3、计算器计算和显示程序(1)caculating and displaying.c#include <stdio.h> // sprintf语句用到#include "LCD1602.h"#include "4X4KeyPad.h"unsigned char code table1[] = {"0123456789+-*/=C"};bit number_key = 0; // 数字键bit add_key = 0; // 加法键 + bit sub_key = 0; // 减法键 -bit multiply_key = 0; // 乘法键 *bit division_key = 0; // 除法键 /bit equal_key = 0; // 等于键 =bit clear_key = 0; // 清除键double a=0,b=0,s=0; // a为计算的第一个数,b为第二个数,s为计算结果// 必须定义为浮点,否则不能够保证计算精度// 识别按键,置标记符void Key_Recognition(void){if(key_scan() != KEY_NULL) // 有按键按下时才置标志位和显示{if(val <= 9) number_key = 1;if(val == 10) add_key = 1;if(val == 11) sub_key = 1;if(val == 12) multiply_key = 1;if(val == 13) division_key = 1;if(val == 14) equal_key = 1;if(val == 15) clear_key = 1;Lcd_Write_Data(table1[val]); // 显示按键对应的字符}}// 计算被计算的两个数 Gets the number of two to be calculatedvoid Get_Parameters_for_calculation(void){if(equal_key != 1) // 没有按等号键才进入{if((add_key||sub_key||multiply_key||division_key) != 1) // 没有按下运算键(+-*/){if(number_key == 1) // 是数字键{a = a*10 + val; // a为运算的第一个数number_key = 0;}}else // 按下运算键(+-*/){if(number_key == 1){b = b*10 + val; // b为运算的第二个数number_key = 0;}}}}// 计算结果void Calculate_Result(void){if(equal_key == 1) // 只有按等号键才能计算{if(add_key == 1) // 加法s = a + b;if(sub_key == 1) // 减法s = a - b;if(multiply_key == 1) // 乘法s = a * b;if(division_key == 1) // 除法s = a / b;}}void Display_Result(void){unsigned char i = 0; // 显示字符的指针unsigned char result[16] = ""; // 待显示的字符计算结果if(equal_key == 1) // 只有按等于键才显示{equal_key = 0;sprintf(result,"%.4f",s); // 浮点数的默认有效位是小数点后6位,这里设置为4位// sprintf(&temp1[0],"%f",a);Lcd_Write_Command(0x80+0x40); // 结果在第二行显示while(result[i] != '\0'){Lcd_Write_Data(result[i]);i++;}}}// 清除显示void ClearScreen(void){if(clear_key == 1) // 只有按清除键才能清除{Lcd_Write_Command(0x01); // LCD清屏指令,把光标撤回到显示器的左上number_key = add_key = sub_key = multiply_key = division_key = equal_key = clear_key = 0;// 清除所有的状态标志s = 0;a = 0;b = 0;}}(2) caculating and displaying.hvoid Key_Recognition(void);void Get_Parameters_for_calculation(void);void Calculate_Result(void);void Display_Result(void);void ClearScreen(void);4、系统主程序#include "LCD1602.h"#include "caculating and displaying.h"void Start_Screen(void){unsigned char code table1[] = " WELCOME TO ";unsigned char code table2[] = "STC51 CALCULATOR" ;unsigned char index = 0; // 显示字符的指针Lcd_Write_Command(0x80);while(table1[index] != '\0'){Lcd_Write_Data(table1[index]);index++;}DelayNms(500);index = 0;Lcd_Write_Command(0x80+0x40);while(table2[index] != '\0'){Lcd_Write_Data(table2[index]);index++;}DelayNms(2000);Lcd_Write_Command(0x01); // 清屏}void main(void){Init_Lcd1602();Start_Screen();while(1){Key_Recognition();Get_Parameters_for_calculation();Calculate_Result();Display_Result();ClearScreen();}}。

基于STC89C52的简易计算器设计

基于STC89C52的简易计算器设计

福建电力职业技术学院课程设计课程名称:《智能仪器》题目:基于STC89C52的简易计算器设计专业班次:姓名:学号:指导教师:学期:2011-2012学年第2学期日期:2012.2目录目录1. 引言 (1)1.1本设计的意义 (1)1.2本设计任务和主要内容 (2)2. 硬件设计 (2)2.1系统框图 (3)2.2最小系统 (4)2.3矩阵键盘 (5)2.4 LCD1602硬件设计 (6)3.软件设计 (7)3.1矩阵键盘扫描原理 (8)3.2L C D1602引脚功能时序图 (9)3.3计算器流程图 (10)4设计小结 (12)参考文献 (14)附录:课程设计程序清单 (15)1.引言随着社会的发展,科学的进步,人们的生活水平在逐步地提高,尤其是微电子技术的发展犹如雨后春笋般的变化。

电子产品的更新速度快就不足惊奇了。

计算器在人们的日常中是比较常见的电子产品之一,如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器,使其更好地为各个行业服务,成了如今电子领域重要的研究课题。

现如今,人们的日常生活中已经离不开计算器了,社会的各个角落都有它的身影,比如商店、办公室、学校……因此设计一款简单实用的计算器会有很大的实际意义。

本设计旨在进一步掌握单片机理论知识,理解嵌入式单片机系统的硬软件设计,加强对实际应用系统设计的能力。

通过本设计的学习,使我掌握单片机程序设计和微机接口应用的基本方法,并能综合运用本科阶段所学软、硬件知识分析实际问题,提高解决毕业设计实际问题的能力,为单片机应用和开发打下良好的基础。

1.1 本设计的意义计算器在人们的日常中是比较常见的电子产品之一,如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器,使其更好地为各个行业服务,成了如今电子领域重要的研究课题。

现如今,人们的日常生活中已经离不开计算器了,社会的各个角落都有它的身影,比如商店、办公室、学校……因此设计一款简单实用的计算器会有很大的实际意义。

基于89C52的IC卡读写器的设计及应用

基于89C52的IC卡读写器的设计及应用

四川工业学院学报J ournal of Sic h uan University of Science an d Tec h nology文章编号:100025722(2004)增刊20116204收到日期:2004209229作者简介:陈林林(19742),男,山东省聊城市人,西华大学交通与汽车工程学院2002级硕士研究生,主要研究方向:发动机电喷控制系统。

基于89C52的IC 卡读/写器的设计及应用陈林林,孙仁云,蔡建余,吴本成(西华大学交通与汽车工程学院,四川成都 610039) 摘 要: 作者介绍IC 卡读/写器的一种设计方法,以AT ME L 公司生产的MCS 251系列单片机89C52为核心,从高可靠性的要求出发,设计了IC 卡读/写器。

作为嵌入式系统,文章分析了IC 卡读/写器在加油站收费系统及其它系统中的实际应用。

实践证明该电路结构简单,设计合理,实际使用效果好。

关键词: IC 卡读/写器;单片机;可靠性;加油站收费系统 中图分类号:TP36812文献标识码:A IC (integrated circuit card )卡在当今社会被广泛应用,除在金融系统外,在非金融系统,如在交通领域中的驾驶员执照卡、停车收费卡、公共交通设施的自动收费卡及公共交通工具的自动收费卡,在通信领域中的公用电话卡、移动电话中的SI M 卡等,另外在医疗保健、个人身份识别、预收费仪表、校园及消费娱乐领域中也得到了具体的应用。

随着时间的推移,IC 卡的应用将会越来越广泛。

它给人们的工作和生活带来极大的方便,相信在不远的将来,IC 卡会真正走进我们的工作和生活中。

在使用IC 进行信息交流的过程中离不开IC 卡读写器,IC 卡读/写器就是能将数据信息“写入”IC 卡或将IC 卡内部的数据信息“读入”或“擦除”的电子接口设备。

IC 卡读/写器的性能和可靠性直接影响读/写的能力、准确性和安全性。

1 功能要求本设计IC 卡读/写器是一种接触型的、基于普通存储卡24C01的读写器,作为PC 机的嵌入式外设,通过串行口实现信息交换。

基于AT89C52单片机的计算器设计说明

基于AT89C52单片机的计算器设计说明

电子设计大赛训练设计报告基于AT89C52 单片机的计算器设计指导老师:曾祥志.管立新.许粮作者:黄红平学校:赣南师范学院物理与电子信息工程完成时间2011年8月20日摘要计算器是微型电子计算机的一种特殊类型。

它与一般通用计算机的主要区别在于程序输入方式的不同。

计算器的程序一般都已经固定,只需按键输入数据和运算符号就会得出结果,很容易就能掌握。

而一般计算机的程序可以根据需要随时改动,或重新输入新的程序。

简易计算器主要用于加减乘除;科学计算器,又增添了初等函数运算。

随着微电子技术的不断发展,微处理芯片的集成程度越来越高,单片机已可以在一片芯片上同时集成cpu,存储器,定时器,计数器,并行和串行接口,看门狗,前置放大器,A|D 转换器,D|A 转换器等多种电路。

关键词:计算器、at89s52、液晶显示16021.简易计算器的设计方案1.1 硬件部分设计方案1. 单片机以AT89S52 来作为核心元器件2.按键部分采用4*4 行列式键盘,分别设定数字键和功能键。

3. 显示部分方案一:使用8 位LED 数码管来做显示。

LED 显示器是由发光二极管显示字段组成的显示器件,在单片机应用系统中通常使用的是七段LED,这种显示器有共阴极和共阳极两种,它具有成本低廉、配置灵活和单片机接口方便等特点。

方案二:使用液晶显示器来显示。

液晶是介于固态和液态间的有机化合物,将其加热会变成透明液态,冷却后变成结晶的混作固态。

在点击的作用下,产生冷热变化,从而影响它的透光性,来达到显示的目的。

LED 还具有以下几个优点:低压、微功耗、显示信息量大、长寿命、无辐射、无污染。

后选择的显示是液晶显示。

大致原理图如下。

(后改用AT89S52 代替AT89C51 )总的电路设计方案以单片机AT89S52 来作为核心元器件,外围采用4*4 行列式键盘作为输入,采用led1602 液晶显示来做输出。

这里重点介绍液晶输出地管脚,因为一开始本打算用数码管来做显示,后改为液晶,不是很熟悉。

基于STC89C52单片机的计算器

基于STC89C52单片机的计算器

基于STC89C52单片机的计算器随着科技的不断发展,单片机已经成为现代电子设备中的重要组成部分。

STC89C52单片机作为一种常见的单片机,因其高性价比和良好的性能而广泛应用于各种嵌入式系统中。

本文将介绍如何使用STC89C52单片机制作一个简单的计算器。

一、硬件设计1、电源电路:为单片机提供稳定的电源。

2、时钟电路:为单片机提供时钟信号,确保其正常运行。

3、复位电路:在单片机出现异常时,通过复位电路实现系统重启。

4、输入电路:用于接收用户输入的数字和运算符。

5、输出电路:用于显示计算结果。

二、软件设计1、初始化程序:对单片机的各个寄存器进行初始化。

2、显示程序:根据需要显示的内容,编写相应的显示程序。

3、输入程序:接收用户输入的数字和运算符,并将其存储在相应的变量中。

4、计算程序:根据用户输入的运算符,调用相应的函数进行计算,并将结果显示在输出电路中。

三、调试与测试1、硬件调试:检查电路板上的元器件是否连接正确,确保电源、输入和输出电路的正常工作。

2、软件调试:通过串口调试工具,对程序进行调试和修改,确保程序的正确性。

3、综合测试:在完成硬件和软件的调试后,进行综合测试,确保计算器的正常工作。

四、结论本文介绍了基于STC89C52单片机的计算器的硬件和软件设计。

通过使用单片机,可以实现简单的计算器功能,并且具有成本低、易于维护和升级等优点。

在制作过程中,需要注意硬件和软件的调试与测试,以确保系统的稳定性和可靠性。

stc89c52单片机技术资料标题:STC89C52单片机技术资料一、概述STC89C52单片机是一种广泛应用的微控制器,它由深圳宏晶科技有限公司生产。

这款单片机具有高性能、低功耗、高可靠性等特点,适用于各种嵌入式系统开发。

下面将详细介绍STC89C52单片机的技术特性、引脚配置、寄存器映射以及常用开发工具等。

二、STC89C52单片机特性1、工作频率:STC89C52单片机的时钟频率可达到35MHz,能够满足大多数应用场景的需求。

电子设计基于STC89C52RC单片机的简易计算器设计说明

电子设计基于STC89C52RC单片机的简易计算器设计说明

电子设计实验名称:基于STC89C52RC单片机的简易计算器设计姓名: __学号:指导老师:目录一、可行性研究 (3)二、设计方案简述 (4)2.1、功能介绍................................................................... .. (4)基本功能 (4)扩展功能 (4)2.2、总体设计方案............................................................................ (5)总体设计思路 (5)方案论证与比较 (6)系统组成 (7)三、详细设计 (12)1.各个模块设计 (12)输入模块:键盘扫描 (13)运算模块:单片机控制 (14)显示模块:LCD1602显示 (15)2.硬件电路设计 (16)硬件连接 (16)3.元件的介绍 (17)STC89C52单片机组成 (17)复位和复位电路 (18)LCD1602显示器 (19)4.PCB设计以及结果显示 (22)五、总结 (24)附录主要程序代码 (25)一、设可行性分析:1.2.1 经济可行性由于只是实验性质的编程,所以在设计和开发都不需要过多的经费,但是系统投入运行以后,硬件维护和损耗所造成的耗费是必须的,但是数目也不会很大。

所以经过初步分析,经济上基本上是可行的1.2.2技术可行性在技术方面,因为都学习了C语言,硬件课程设计等课程,对于开发语言c语言也有一定的掌控能力,应该能够完成相应的任务。

1.2.3 运行可行性该成果简单易操作,非常容易使用。

1.2.4 法律可行性由于我们需要完成的功能相对简单,没有太多涉及到很专业方面的容,更没有计划将系统利用到商业用途,所以不存在侵权或者纠纷方面的问题。

1.2.5结论该系统的软硬件都比较容易理解和实现,所以,具有实现一计算器的可行性。

二、设计方案简述2.1功能概述系统基本功能:(1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LCD 显示数据和结果。

最新基于89C52的计算器设计

最新基于89C52的计算器设计

目录一设计内容及要求1.1 设计任务 (1)1.2 性能指标…………………………………………………………………………………………………1.二设计方案三硬件系统设计3.1 硬件系统主要组成部分设计 (1)3.2 单片机最小系统电路设计 (2)3.3 串行通信电路设计 (3)3.4 键盘电路设计 (3)3.5 显示电路设计 (4)3.6 报警电路设计 (5)四软件系统设计4.1 简易计算器的软件模块 (5)4.2 主程序设计 (5)4.3 运算流程图设计 (6)4.4键盘模块系统设计 (7)五系统调试5.1 调试步骤 (7)5.2 性能分析 (7)六总结参考文献附录一原理图附录二线路板图附录三程序一、设计内容及要求1.1 设计任务设计一十进制加减法计算器,输入范围为(1—999)的整数,除加减法计算外,自行设计两个待扩展键。

1.2 性能指标1.、完成4*4键盘的设计,分别为0~9、+、-、=、清除键、2个待扩展键;2、显示方式为液晶(1602)显示;3、要求具备清零功能;二、设计方案1、单片机选择89C52,它是新一代增强型单片机指令代码完全兼容传统8051,速度快,双串口,加密性好,抗干扰能力强,使用寿命长,价格低廉,8kflash程序空间,运用方便;2、显示系统选用1602液晶并行的显示,是一种低压、微功耗的显示器件,用1602液晶可显示数字,1602有16个外接端口,硬件接线比较简单;3、键盘部分选用采用4(行)×4(列)矩阵式键盘, 通过键盘实现数值和功能键的输入。

本课题的键盘设计为0~9十个数字键,+、-、*、/、=、清零6个功能键;4、串行通信电路选用的芯片是STC232。

三、硬件系统设计3.1 硬件系统主要组成部分设计如图1所示硬件电路主要包括:1、单片机最小系统电路;2、串行通信电路;3、键盘接口电路;4、液晶显示电路;5、报警电路;6、通过单片机最小系统来控制其他的外围电路。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

福建电脑2012年第12期
基于89C52嵌入式计算器的研究与设计
程书伟,王冬星,崔金宝
(大庆师范学院黑龙江大庆163712)
【摘要】:以STC89C52单片机为核心,采用4×4矩阵键盘为输入模块,LCD1602液晶显示器为输出模块,采用PZ-ISP为烧写工具,研究与设计了一个嵌入式计算器。

该计算器可以嵌入到其它控制模块如温度监测模块中进行算术运算,并将操作步骤和结果显示在LCD1602上,增加了控制模块的预警功能,提高了系统运行效率,具有较好的应用前景。

【关键词】:89C52、计算器、嵌入式
0.引言
随着社会的快速发展,计算器成为我们现代社会必不可少的一种电子产品,如何使其更加高效的为控制领域服务,成为其研究的一个热点。

本文研究与设计的计算器加入了嵌入式概念,使其可以扩展到控制模块提高系统运行效率,增强了计算器的可使用性与扩展性。

1.系统整体设计
本文以STC89C52单片机为主控制器、以LCD1602为显示输出模块、4×4矩阵键盘为输入模块,研究与设计了一个嵌入式计算器,其整体设计如图1所示。

其中单片机的P0作为数据的输出端口输出数据到LCD1602液晶屏上,单片机的P2口作为其控制端口,用来控制LCD1602显示输出数据;单片机的P1口作为数据的输入端口,与按键相连,实现数据的输入[1]。

在系统设计过当中为了使硬件资源尽可能地被合理利用,系统模块按照以下原则进行设计:(1)尽量使用典型电路,使其与单片机最小系统容易搭接。

(2)设计完后尽量要留有相应的余地,以便于后期修改和二次开发。

(3)系统的各模块之间和软硬件间设计兼容性良好。

(4)器件选用具有一定的可靠性和抗干扰性,确保系统运行质量。

结合以上设计原则,系统软硬件的联合调试过程为首先对主函数进行初始化操作,然后依次对各个模块逐一进行软件调试,当每个模块调试都无错误后,再将模块依次被主函数调用中,最后完成整个软件的设计与调试。

2.系统硬件设计
在硬件设计过程中主要包含两个部分:第一部分指的是单片机中底层设计部分,一般包括对ROM、RAM的扩展,即存储器扩展;还有对8255A、8155以及其他功能器件的扩展也就是接口扩展。

第二部分指的是各种用户功能模块设计,即上层设计部分,根据单片机系统所需功能的要求,设置相应的转换器、矩阵键盘、显示器等外部设备。

本嵌入式计算器硬件设计主要包括矩阵键盘和显示电路的设计。

2.1键盘电路设计
键盘是最常用的输入设备,是人机联系的输入纽带。

对于单片机来说,一般有二种划分方法,按结构形式可分为非编码键盘和编码键盘。

按照键盘与单片机的连接方式可分为独立式键盘与矩阵式键盘[2]。

编码键盘采用硬件电路产生键码,每按下一个键,键盘能自动生成键盘代码,键数较多,并具有去抖动功能。

编码键盘的使用相对非编码键盘来说方便,但硬件比较复杂,我们日常计算机所使用的键盘,如PC机键盘都是编码键盘。

非编码键
图1系统设计原理图
基金项目:黑龙江省教育厅科学技术研究项目资助"基于物联网的油泵温度监控研究"(12513001)。

20
2012年第12期福建电脑
盘只有两个状态:开和关,其键盘的键码由设计软件确定,硬件简单,广泛应用于各种单片机应用系统[3],为节省硬件开销本设计采用非编码键盘。

受限于开发板的按键数,本设计采用矩阵键盘。

其思路是:先判断某一行是否有按键被按下,再判断是该列的哪个键按被按下。

然后通过单片机P1口,实现数据输入。

2.2键盘去抖
通常按键所用的开关为机械弹性开关,由于弹性作用,当机械触点断开、闭合时,会伴随一连串的抖动,一般为5~10ms。

为确保CPU对按键的一次闭合仅做一次处理,必须去除抖动。

常用的去抖方法有硬件和软件二种,本设计采用软件去抖,在检测出有按键闭合时,产生一个10ms的延时程序,让键按下的前沿抖动发生完毕后,再检测按键,如果为持闭合状态,确认按键真正被按下;当检测到按键释放后,再进行10ms延时,让键释放的后沿抖动发生完毕后,转入键值处理程序[4]。

2.3LCD1602电路设计。

本设计采用LCD1602作为显示输出模块。

其所占空间小,硬件电路简单明了,用它作显示输出模块使本嵌入式计算器容易嵌入到其它控制模块中。

其中LCD1602液晶模块内部的字符发生存储器(CGROM)存储160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,即看到字母“A”,这些常用字符方便了计算器的显示。

LCD1602液晶显示器接口电路如图2所示。

其中单片机的P0口接LCD1602显示屏的8位数据端口(DB0~DB7),单片机的P2.0引脚接LCD1602显示屏的数据选择端口RS,单片机的P2.1引脚接LCD1602显示屏读写选择端口R/W,单片机的P2.2引脚接LCD1602显示屏使能信号E端口[5]。

3.系统软件设计
本计算器的软件设计主要包括液晶显示输出模块、键盘输入扫描模块、运算程序模块和主函数模块。

其中主函数模块main函数的主体是一个循环,程序反复扫描按键的输入,如果有按键输入,则根据被按下的按键ID来执行相应的处理,并更新LCD显示。

例如当等号键被按下时,calculate函数被调用,用来计算表达式的值;当清零键被按下时,清除input和result中的值,并清空液晶显示。

液晶显示输出模块首先对显示模块进行初始化;然后控制光标的位置;然后再定义LCD1602液晶模块显示的各个控制端口;然后设置清屏、开显示、显示位置、关闭显示、归位等等首地址。

键盘输入扫描模块的设计方法是,先将列线设为低电平,如果所有行线端口都为高电平就表示没有一个按键按下,之后轮流扫描每个列线端口的值,反复执行到有一个行线为高电平为止。

然后根据键值将数据读入到单片机中。

4.结束语
本文89C52单片机为主控模块,研究与设计了一个以4×4矩阵键盘为输入模块,以LCD1602液晶显示器为输出模块的嵌入式计算器。

该计算器可以嵌入到其它控制模块中,增加系统的预警功能,增强了嵌入式计算器的可使用性与扩展性,提高了系统运行效率,具有较好的应用前景。

参考文献:
[1]李峡.基于单片机控制的简易计算器[J].电子产品世界, 2012,(9).
[2]李朝青.单片机原理及接口技术[M].北京:航空航天大学出版社,2009:229-235.
[3]/view/
de314f0a7cd184254b35352f.html.
[4]郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社,2009:79-94.
[5]李雪峰.基于51单片机控制的抽油烟机设计[J].微型机与应用,2012,(13).
图2LCD1602接口电路
21。

相关文档
最新文档