电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx

上传人:b****2 文档编号:1140974 上传时间:2023-04-30 格式:DOCX 页数:40 大小:1.07MB
下载 相关 举报
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第1页
第1页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第2页
第2页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第3页
第3页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第4页
第4页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第5页
第5页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第6页
第6页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第7页
第7页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第8页
第8页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第9页
第9页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第10页
第10页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第11页
第11页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第12页
第12页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第13页
第13页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第14页
第14页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第15页
第15页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第16页
第16页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第17页
第17页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第18页
第18页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第19页
第19页 / 共40页
电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx

《电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx》由会员分享,可在线阅读,更多相关《电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx(40页珍藏版)》请在冰点文库上搜索。

电子设计基于STC89C52RC单片机的简易计算器设计说明Word文档格式.docx

由于只是实验性质的编程,所以在设计和开发都不需要过多的经费,但是系统投入运行以后,硬件维护和损耗所造成的耗费是必须的,但是数目也不会很大。

所以经过初步分析,经济上基本上是可行的

1.2.2技术可行性

在技术方面,因为都学习了C语言,硬件课程设计等课程,对于开发语言c语言也有一定的掌控能力,应该能够完成相应的任务。

1.2.3运行可行性

该成果简单易操作,非常容易使用。

1.2.4法律可行性

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

1.2.5结论

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

二、设计方案简述

2.1功能概述

系统基本功能:

(1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LCD显示数据和结果。

(2)采用键盘输入方式,键盘包括数字键(0~9)、符号键(+、-、×

、÷

)、清除键(on\c)和等号键(=),故只需要16个按键即可,设计中采用集成的计算键盘。

(3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。

(4)错误提示:

当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:

当输入的数值或计算得到的结果大于计算器的表示围时,计算器会在LCD上提示overflow;

当除数为0时,计算器会在LCD上提示error。

扩展功能:

加上括号的混合运算

2.2总体设计思路

本设计主要采用以下基本模块来实现:

控制器模块,输入模块,输出模块和电源模块。

通过对控制器进行编程。

使其对输入模块的信号进行处理计算,然后通过输出模块反馈给使用者以计算结果。

STC89C52单片机

4*4键盘

LCD显示

晶振电路

复位电路

线路原理框图

方案论证与比较

控制部分的设计方案论证与选择

根据设计要求,控制器主要用于红外信号的接收和辨认、控制步进电机的动作,控制显示步进电机的转速等。

对于控制器的选择有以下三种方案。

方案一:

采用计算器专用芯片实现。

用计算器专用芯片进行设计并编程实现。

这种设计方案计算效率高、速度快、而且成本也相对较低,是厂家做计算器的最佳方案。

但是本人对计算器专用芯片掌握的不够,还不足以实现设计计算器,所以这个方案不可去。

方案二:

采用FPGA(现场可编程门阵列)作为系统的控制器。

FPGA将所有器件集成到一块芯片上,体积小,节省空间,提高了稳定性;

直接面向用户,具有极大的灵活性和通用性,使用方便,硬件测试和实现快捷,开发效率高,工作可靠性好。

可以实现各种复杂的逻辑功能,规模大,密度高,采用并行的输入输出方式,系统处理速度高,适合作为大规模实时系统的控制核心。

由FPGA部编程实现计算器功能,本设计对数据处理速度的要求不是很高,FPGA的高速处理的优势得不到充分的体现,由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物电路板布线复杂,加重了电路设计和实际焊接的工作。

并且FPGA的价格相对较高,性价比太低。

方案三、用单片机实现。

由于单片机集成了运算器电路、控制电路、存储器、中断系统、定时器/计数器以及输入/输出口电路等,所以用单片机设计控制电路省去了很多分立元器件。

由于单片机是可编程芯片,并且它可以运用C语言编写,对于一些复杂的计算功能,可以调用C语言库函数。

使编写程序变得非常简单。

所以该课题用单片机实现,不仅功能易于实现,而且精确度高,稳定性好,抗干扰能力强。

并且由于其成本低、体积小、技术成熟和功耗小等优点,且技术比较成熟。

性价比也相当高。

更重要的是本人经过几年的学习,对单片机已有深刻的理解,并且可以灵活运用。

综上所述,并通过各个方面综合比较为达到最佳效果。

我们采用方案三利用单片机控制器。

显示电路的设计方案论证与选择

数码管显示方案。

数码管显示使用两个四位一体动态数码管显示方案,此设计电路如图所示。

采用动态数码管显示,具有程序简单,对外界环境要求低,易于维护,同时其精度比较高,精确可靠,操作简单。

显示直观的特点。

但只能显示数字和一些代码,不能显示汉字及一些常用的符号,且硬件设计比较复杂。

方案二;

LCD1602显示器

所谓1602是指显示的容为16*2,即可以显示两行,每行16个字符。

目前字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于大部分的字符型液晶。

字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,引脚定义如下表所示:

HD44780置了DDRAM、CGROM和CGRAM。

DDRAM就是显示数据RAM,用来寄存待显示的字符代码。

共80个字节,其地址和屏幕的对应关系如下表:

HD44780的指令集

1.清屏指令

功能:

<

1>

清除液晶显示器,即将DDRAM的容全部填入"

空白"

的ASCII码20H;

2>

光标归位,即将光标撤回液晶显示屏的左上方;

3>

将地址计数器(AC)的值设为0。

2.光标归位指令

把光标撤回到显示器的左上方;

把地址计数器(AC)的值设置为0;

保持DDRAM的容不变

3.进入模式设置指令

设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。

参数设定的情况如下所示:

位名 

设置

I/D 

0=写入新数据后光标左移 

1=写入新数据后光标右移

0=写入新数据后显示屏不移动

1=写入新数据后显示屏整体右移1个字

4.显示开关控制指令

控制显示器开/关、光标显示/关闭以及光标是否闪烁。

参数设定的情况如下:

0=显示功能关 

1=显示功能开

0=无光标 

1=有光标

0=光标闪烁 

1=光标不闪烁

5.设定显示屏或光标移动方向指令

使光标移位或使整个显示屏幕移位。

S/C 

R/L 

设定情况

光标左移1格,且AC值减1

光标右移1格,且AC值加1

显示器上字符全部左移一格,但光标不动

显示器上字符全部右移一格,但光标不动

6.功能设定指令

设定数据总线位数、显示的行数及字型。

DL 

0=数据总线为4位

1=数据总线为8位

0=显示1行

1=显示2行

0=5×

7点阵/每字符 

1=5×

10点阵/每字符

7.设定CGRAM地址指令

设定下一个要存入数据的CGRAM的地址。

8.设定DDRAM地址指令

(注意这里我们送地址的时候应该是0x80+Address,这也是前面说到写地址命令的时候要加上0x80的原因)

9.读取忙信号或AC地址指令

读取忙碌信号BF的容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;

当BF=0时,液晶显示器可以接收单片机送来的数据或指令;

读取地址计数器(AC)的容。

10.数据写入DDRAM或CGRAM指令一览

将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;

将使用者自己设计的图形存入CGRAM。

11.从CGRAM或DDRAM读出数据的指令一览

读取DDRAM或CGRAM中的容。

基本操作时序:

读状态 

输入:

RS=L,RW=H,E=H 

输出:

DB0~DB7=状态字

写指令 

RS=L,RW=L,E=下降沿脉冲,DB0~DB7=指令码

输出:

读数据 

RS=H,RW=H,E=H 

DB0~DB7=数据

写数据 

RS=H,RW=L,E=下降沿脉冲,DB0~DB7=数据

无2.2.2.3、键盘设计方案与选择

独立键盘。

独立键盘为一端接地,另一端接I/O口,并且要接上拉电阻。

这种键盘的硬件都很容易实现,但每一个按键就要用一个I/O口,适合本次设计。

方案二:

通过PS2协义,用键盘同单片机相接,从而实现单片机与键盘通信。

其电路如图所示。

现在PC机广泛采用的PS/2接口为miniDIN6引脚的连接器。

1—数据线(DATA);

—未用;

3—电源地(GND);

4—电源(+5V);

5—时钟(CLK);

6—未用。

由此图可知,使用键盘硬件结构比较简单,但键盘的体积太大,所以此系统不采用此方案。

方案三:

自制编码键盘。

编码键盘的电路如图所示,这种键盘有编程简单,占用资源少,但其硬件比较复杂,要用很多的二极管,不是很理想。

方案四:

4*4矩阵式键盘。

其电路图如图所示,这种键盘的硬件简单,使用的I/O口也不多,而且这种键盘的编程方法已很成熟。

本次设计也可以采用这种矩阵式键盘。

其电路图如图

主体设计部分:

(1)、系统模块图:

(2)、算术运算程序流程图:

(3)、系统总流程图:

(4)、硬件设计:

(一)、总体硬件设计:

本设计选用AT89C51单片机为主控单元;

显示部分:

采用LCD静态显示;

按键部分:

采用4*4键盘;

用MM74C922为4*4键盘扫描IC,读取输入的键值。

总体设计效果如下图:

(二)、单片机接口电路说明:

1、手动上电复位电路:

当VCC上电时,C充电,在10K电阻上出现电压,使得单片机复位;

几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。

工作期间,按下S,C放电。

S松手,C又充电,在10K电阻上出现电压,使得单片机复位。

几个毫秒后,单片机进入工作状态。

2、部时钟模式电路:

当单片机工作于部时钟模式的时候,只需在XTAL1和XTAL2引脚连接一个晶体振荡器或者瓷振荡器,并接两个电容后接地即可,在使用时对于电容的选择有一定的要求:

当外接晶体振荡器的时候,电容值一般选择C1=C2=30+10pF或30-10pF;

当外接瓷振荡器的时候,电容值一般选择C1=C2=40+10pF或40-10pF;

3、STC89C52介绍:

STC89C52是一种低功耗、高性能CMOS8位微控制器,

具有8K在系统可编程Flash存储器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

具有以下标准功能:

8k字节Flash,

512字节RAM,

32位I/O口线,

看门狗电路,

置4KBEEPROM,

MAX810复位电路,

三个16位定时器/计数器,

一个6向量2级中断结构,

全双工串行口。

另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

最高运作频率35Mhz,6T/12T可选。

  

和atmel的对比STC89C52RC单片机:

8K字节程序存储空间;

 

512字节数据存储空间;

带4K字节EEPROM存储空间;

可直接使用串口下载;

AT89S52单片机:

256字节数据存储空间;

没有带EEPROM存储空间;

4、LCD1602介绍:

 1602采用标准的16脚接口,其中:

第1脚:

VSS为电源地 

第2脚:

VDD接5V电源正极

第3脚:

V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

第4脚:

RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

第5脚:

RW为读写信号线,高电平

(1)时进行读操作,低电平(0)时进行写操作。

第6脚:

E(或EN)端为使能(enable)端。

  第7~14脚:

D0~D7为8位双向数据端。

第15~16脚:

空脚或背灯电源。

15脚背光正极,16脚背光负极

602LCD的特性

n+5V电压,对比度可调  n含复位电路  n提供各种控制命令,如:

清屏、字符闪烁、光标闪烁、显示移位等多种功能  n有80字节显示数据存储器DDRAM  n建有192个5X7点阵的字型的字符发生器CGROM  n8个可由用户自定义的5X7的字符发生器CGRAM读的时候,先读左边那列,再读上面那行,如:

感叹号!

的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)

1602通过D0~D7的8位数据端传输数据和指令。

  显示模式设置:

(初始化)  00110000[0x38]设置16×

2显示,5×

7点阵,8位数据接口;

  显示开关及光标设置:

(初始化)  00001DCBD显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)  000001NSN=1(读或写一个字符后地址指针加1&

光标加1),  N=0(读或写一个字符后地址指针减1&

光标减1),  S=1且N=1(当写一个字符后,整屏显示左移)  s=0当写一个字符后,整屏显示不移动  数据指针设置:

  数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)  其他设置:

  01H(显示清屏,数据指针=0,所有显示=0);

02H(显示回车,数据指针=0)。

(三)、键盘接口电路:

计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。

矩阵键盘采用四条I/O线作为行线,四条I/O线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。

这样键盘上按键的个数就为4×

4个。

这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。

矩阵键盘的工作原理:

计算器的键盘布局如图1所示:

一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。

图1矩阵键盘布局图

矩阵键盘部电路图如图2所示:

(四)、LCD显示模块:

本设计采用LCD液晶显示器来显示输出数据。

通过D0-D7引脚向LCD写指令字或写数据以使LCD实现不同的功能或显示相应数据。

图5LCD模块

(五)运算模块(单片机控制):

MCS-51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。

如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。

单片机是靠程序运行的,并且可以修改。

通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!

因此我们采用单片机作为计算器的主要功能部件,可以很快地实现运算功能。

PCB设计:

1、实验现象、数据记录

数码显示及运算

最多九位显示及运算

当超出时溢出显示

五、总结

在实验中遇到了这样那样的问题,软件的编辑中使得c语言的应用更加熟练;

在硬件的实现中又出现了软件和硬件不统一的问题,本实验我做了两次,第一次的时候STC89C52单片机的P2口的P2.0~~P2.7分别对应连接到LCD1602的D7~~D0口,这就使得在写程序的时候需要把所有读写的数据以及地址都按位取反,改写程序比较复杂,最终调试失败,又改变了硬件电路。

最终成功;

本次设计不管在软件,或是在硬件方面都让我受益匪浅,让我所学的知识得以应用到实践,经过这次创新性实验,也令我看到了很多的不足,在实验中的一些程序不能够及时编辑正确,需要很长时间的设计。

硬件中我对单片机实验板上的很多硬件不是很清楚,使得在下载程序后,又进行了很长时间的调整。

六、主要程序代码

Key.C

#include<

reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

#defineKEYDATAP1

ucharkey;

uchardis_buff;

voidDelay1(uintx)

{

uinti,j;

for(i=0;

i<

x;

i++)

for(j=0;

j<

112;

j++);

}

ucharKeyScan(void)

{uchartemp=0;

key=0;

KEYDATA=0xf0;

Delay1

(1);

temp=KEYDATA;

temp=temp&

0xf0;

temp=~((temp>

>

4)|0xf0);

if(temp==1)key=0;

elseif(temp==2)key=1;

elseif(temp==4)key=2;

elseif(temp==8)key=3;

elsekey=16;

KEYDATA=0x0f;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2