基于STC89C52RC单片机的简易计算器设计Word下载.docx
- 文档编号:17960509
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:32
- 大小:935.77KB
基于STC89C52RC单片机的简易计算器设计Word下载.docx
《基于STC89C52RC单片机的简易计算器设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于STC89C52RC单片机的简易计算器设计Word下载.docx(32页珍藏版)》请在冰豆网上搜索。
由于只是实验性质的编程,因此在设计和开发都不需要过量的经费,可是系统投入运行以后,硬件保护和损耗所造成的花费是必需的,可是数量也可不能专门大。
因此通过初步分析,经济上大体上是可行的
技术可行性
在技术方面,因为都学习了C语言,硬件课程设计等课程,关于开发语言c语言也有必然的掌控能力,应该能够完成相应的任务。
运行可行性
该功效简单易操作,超级容易利用。
法律可行性
由于咱们需要完成的功能相对简单,没有太多涉及到很专业方面的内容,更没有打算将系统利用到商业用途,因此不存在侵权或版权纠纷方面的问题。
结论
该系统的软硬件都比较容易明白得和实现,因此,具有实现一计算器的可行性。
二、设计方案简述
功能概述
系统大体功能:
(1)由于设计的计算器要进行四那么运算,为了取得较好的显示成效,经综合分析后,最后采纳LCD显示数据和结果。
(2)采纳键盘输入方式,键盘包括数字键(0~9)、符号键(+、-、×
、÷
)、清除键(on\c)和等号键(=),故只需要16个按键即可,设计中采纳集成的计算键盘。
(3)在执行进程中,开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。
(4)错误提示:
当计算器执行进程中有错误时,会在LCD上显示相应的提示,如:
当输入的数值或计算取得的结果大于计算器的表示范围时,计算器会在LCD上提示overflow;
当除数为0时,计算器会在LCD上提示error。
扩展功能:
加上括号的混合运算
整体设计思路
本设计要紧采纳以下大体模块来实现:
操纵器模块,输入模块,输出模块和电源模块。
通过对操纵器进行编程。
使其对输入模块的信号进行处置计算,然后通过输出模块反馈给利用者以计算结果。
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=写入新数据后光标右移
S
0=写入新数据后显示屏不移动
1=写入新数据后显示屏整体右移1个字4.显示开关控制指令
操纵显示器开/关、光标显示/关闭和光标是不是闪烁。
参数设定的情形如下:
D
0=显示功能关
1=显示功能开
C
0=无光标
1=有光标
B
0=光标闪烁
1=光标不闪烁5.设定显示屏或光标移动方向指令
使光标移位或使整个显示屏幕移位。
S/C
R/L
设定情况0
0
光标左移1格,且AC值减1
0
1
光标右移1格,且AC值加1
1
显示器上字符全部左移一格,但光标不动1
显示器上字符全部右移一格,但光标不动6.功能设定指令
设定数据总线位数、显示的行数及字型。
DL
0=数据总线为4位
1=数据总线为8位
N
0=显示1行
1=显示2行
F
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=数据
无、键盘设计方案与选择
独立键盘。
独立键盘为一端接地,另一端接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,读取输入的键值。
整体设计成效如以下图:
(二)、单片机接口电路说明:
一、手动上电复位电路:
当VCC上电时,C充电,在10K电阻上显现电压,使得单片机复位;
几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。
工作期间,按下S,C放电。
S松手,C又充电,在10K电阻上显现电压,使得单片机复位。
几个毫秒后,单片机进入工作状态。
二、内部时钟模式电路:
当单片机工作于内部时钟模式的时候,只需在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设计:
一、实验现象、数据记录
数码显示及运算
最多九位显示及运算
当超出时溢出显示
五、总结
在实验中碰到了如此那样的问题,软件的编辑中使得c语言的应用加倍熟练;
在硬件的实现中又显现了软件和硬件不统一的问题,本实验我做了两次,第一次的时候STC89C52单片机的P2口的~~别离对应连接到LCD1602的D7~~D0口,这就使得在写程序的时候需要把所有读写的数据和地址都按位取反,改写程序比较复杂,最终调试失败,又改变了硬件电路。
最终成功;
本次设计不管在软件,或是在硬件方面都让我收成颇丰,让我所学的知识得以应用到实践,通过这次创新性实验,也令我看到了很多的不足,在实验中的一些程序不能够及时编辑正确,需要很长时刻的设计。
硬件中我对单片机实验板上的很多硬件不是很清楚,使得在下载程序后,又进行了很长时刻的调整。
六、要紧程序代码
#include<
>
#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;
0x0f;
temp=~(temp|0xf0);
if(temp==1)key+=12;
elseif(temp==2)key+=8;
elseif(temp==4)key+=4;
elseif(temp==8)key+=0;
if(key<
16)
dis_buff=key;
returndis_buff;
ucharKeyDown(vo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STC89C52RC 单片机 简易 计算器 设计