基于单片机设计的计算器硬件Word格式.docx
《基于单片机设计的计算器硬件Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机设计的计算器硬件Word格式.docx(40页珍藏版)》请在冰豆网上搜索。
基于这一系统的单片机系统直到现在还在广泛使用。
随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。
90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。
随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。
目前,高端的32位单片机主频已经超过300MHz
性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。
当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。
1.3实验设计要求
根据设计要求,设计一个计算器,预计所能达到功能如下
(1)该计算器能进行六位数的运算,即运算结果可从0到999999;
(2)能进行加减乘除4种运算,精确到小数点后三位;
(3)能对错误进行提示,比如被除数等于0,乘法运算结果大于999999等;
(4)含有清除单个最低位数据和全部输入数据的功能;
(5)能够实现加减乘除四则混合运算,能够实现连续计算,并能判断运算优先级;
(6)进行正负数运算;
1.4总体设计思路
设计主要采用以下基本模块来实现,控制器模块,输入模块,输出模块和电源模块。
通过对控制器进行编程,使其对输入模块的信号进行处理计算,然后通过输出模块反馈给使用者以计算结果。
该系统的结构框图如下图所示
图1-1系统组成方框图
第二章设计方案论证与选择
2.1控制部分的设计方案论证与选择
方案一采用单片机AT89S52芯片
AT89S52是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S52具有如下特点:
40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
方案二采用单片机AT89C52芯片
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
综上所述,AT89C51不支持ISP,只能采用昂贵的编程器来下程序.AT89S52支持ISP,可采用并口,用下载线,即可下程序,因此用AT89S52作为控制器,不仅功能易于实现,并且有其成本低、技术成熟和功耗小等优点,因此我们采用方案一。
2.2显示电路的设计方案论证与选择
方案一采用LCD1602型液晶显示
(一)基本特性
a、显示特性
·
单5V电源电压,低功耗、长寿命、高可靠性
内置192种字符(160个5
7点阵和32个5
10点阵字符)
显示方式:
SIN、半透、正显
驱动方式:
1/16DUTY,1/5BIAS
视角方向:
6点
背光方式:
底部LED
通讯方式:
4位或8位并口可选
标准的接口特性:
适配MC51和M6800系列MPU的操作时序。
b、物理特性如表2-1所示
表2-1物理特性
外形尺寸
80*36*14
单位
可视范围
64.6(w)
16.0(H)
mm
显示容量
16字符二行
点尺寸
0.55
0.75
点间距
0.08
(二)接口定义
表2-2接口定义
管脚号
符号
功能
1
VSS
电源地
2
VDD
电源电压(+5V)
3
V0
LCD驱动电压(可调)
4
RS
寄存器选择输入端,输入MPU选择模块内部寄存器类型信号RS=0当MPU进行写模块操作,指向指令寄存器
当MPU进行读操作,指向地址计数器;
RS=1,无论MPU是读操作还是写操作,均指向数据寄存器
5
R/W
读写控制输入端,输入MPU选择读/写操作信号:
R/W=0读操作;
R/W=1写操作
6
E
使能信号输入端,入MPU选择读/写操作使能信号;
读操作时,高电平有效;
写操作时,下降沿有效
7
DB0
数据输入/输出口,MPU与模块之间的数据传送通道
4位通讯
方式时,
不使用
DB0~7
8
DB1
9
DB2
10
DB3
11
DB4
12
DB5
13
DB6
14
DB7
15
A
背光灯正极
16
K
背光灯负极
LCD1602液晶有16个引脚,它能显示32个字符,且硬件电路设计简单,显示美观。
LCD1602与单片机的接口电路如图2-1所示
图2-1LCD1602与单片机接口电路
方案二采用汉字图形点阵液晶显示器RT12864M显示方案
RT12864M汉字图形点阵液晶显示模块,可显示汉字及图形。
供电电源为3.3V~+5V(内置升压电路,无需负压),能采用并行和串行两种通信方式。
并有光标显示、画面移位、自定义字符、睡眠模式等功能。
其与单片机的接口电路如图2-2所示
图2-212864与单片机的接口电路
综上所叙,LCD1602液晶的设计简单,且能满足设计要求,故我们选择LCD1602液晶作为显示部分。
2.3单片机电源部分的设计方案论证与选择
方案一用固定式三端稳压器7805
三端稳压集成电路7805只有三条引脚输出,分别是输入端、接地端和输出端。
它的样子象是普通的三极管。
用7805组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。
常见78系列的输入输出压差为7V,所以正常范围内12V是7805的输入电压上限。
当电压再高时,虽然也可以继续稳压,但输出电流能力将受到很大影响。
因此这里使用9V电池作为电源。
如图2-3,7805系列稳压器输出固定的正电压5V,输入端接电容C1可以进一步滤除纹波,输出端接电容C2能改变负载的瞬态影响,使电路稳定工作C1、C2最好采用漏电流小的钽电容。
如果采用电解电容,电容要比图中数值增加10倍。
图2-3固定式三端稳压器
方案二用7805加一些外围器件
虽然7805三端集成稳压管内部有过流、过热和安全区的保护电路,但其输出仍有可能发生过压的危险。
因此本电路加了过压保护电路,电路如图2-4所示,该电路由稳压管VD3、电阻R3和晶闸管VS组成。
图2-4可扩流过压保护5V稳压电源
综上所述,方案一电路简单,而且已符合本次设计的要求,第二种方案所用元件较多,性价比不高,所以选择方案一。
2.4键盘设计方案论证与选择
方案一通过PS2协义,用键盘同单片机相接,从而实现单片机与键盘通信
现在PC机广泛采用的PS/2接口为miniDIN6引脚的连接器。
其引脚图为1—数据线(DATA);
2—未用;
3—电源地(GND);
4—电源(+5V);
5—时钟(CLK);
6—未用。
其电路如图2-5所示
图2-5键盘与单片机接口图
由1-7图可知,使用键盘硬件结构比较简单,但键盘的体积太大。
方案二独立键盘
独立键盘为一端接地,另一端接I/O口,并且要接上拉电阻。
这种键盘的硬件都很容易实现,但每一个按键就要用一个I/O口,非常的浪费单片机的I/O口资源。
方案三自制编码键盘
如图2-6是15个按键的编码键盘所示,这种键盘有编程简单,占用资源少,但其硬件比较复杂,要用很多的二极管,不是很理想。
图2-6自制15个按键的编码键盘电路图
方案四4*5矩阵式键盘
其矩阵式键盘电路图如图2-7所示
图2-74*5矩阵式键盘电路图
综上所述,矩阵式键盘的硬件简单,使用的I/O口也不多,而且这种键盘的编程方法已很成熟。
所以本次键盘部分采用这种矩阵式键盘。
2.5单片机复位电路的设计方案论证与选择
复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误是系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。
RST引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期)以上,若使用频率为11.0592MHz的晶振,则复位信号持续时间应超过4
s才能完成复位操作。
方案一自动上电复位电路
通过外部复位电路的RC电路充放电来实现的。
方案二手动按键复位电路
按键电平复位是通过使复位端经电阻与VCC电源接通而实现的。
为了保证复位信号
持续时间超过4
s,从而实现复位功能,故选择电容为10
F,R2的电阻为10k。
其复位电路如下图2-8
图2-8复位电路
综上所述,自动复位需去电再通电才能复位,而手动复位电路可以随时复位,尤其是程序跑飞时,只需按下键就可以复位。
因此选择手动按键复位电路作为单片机复位电路。
2.6系统组成
经过方案最终论证与比较,最终确定的系统组成框图如图2-9所示。
其中单片机作为主控设备对采集输入信号后并进行处理,最后通过输出设备输出给使用者。
该系统的结构框图如图2-9所示
图2-9
第三章重要器件的知识介绍
3.1单片机的知识介绍
ATMEL公司生产的AT89S52型单片机是方便程序下载程序且好用,而且能够满足本设计的要求。
3.1.1单片机功能特性
(1)与MCS-51单片机产品兼容
(2)8K字节在系统可编程Flash存储器
(3)1000次擦写周期
(4)全静态操作:
0Hz~33MHz
(5)三级加密程序存储器
(6)32个可编程I/O口线
(7)三个16位定时器/计数器八个中断源
(8)全双工UART串行通道
(9)低功耗空闲和掉电模式
(10)掉电后中断可唤醒
(11)看门狗定时器
(12)双数据指针
3.1.2单片机各引脚功能说明
AT89S52的功能引脚如图3-1所示
图3-1AT89S52的引脚图
VCC:
供电电压。
GND:
接地。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89S52的一些特殊功能口,如表3-1所示
表3-1AT89S52的一些特殊功能口
管脚
备选功能
P3.0RXD
(串行输入口)
P3.1TXD
(串行输出口)
P3.2/INT0
(外部中断0)
P3.3/INT1
(外部中断1)
P3.4T0
(记时器0外部输入)
P3.5T1
(记时器1外部输入)
P3.6/WR
(外部数据存储器写选通)
P3.7/RD
(外部数据存储器读选通)
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令时才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次
有效。
但在访问外部数据存储器时,这两次信号将不出现。
/VPP:
当
保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,
将内部锁定为RESET;
端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
3.1.3单片机时钟电路
时钟电路产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路在唯一的时钟信号控制下严格地按时序进行工作。
在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。
此时钟电路采用11.0592MHz的石英晶体,时钟电路如下图3-2
图3-2时钟电路
3.1.4LED提示电路
这个LED提示电路是用一个LED接单片机的一个引脚,在其引脚发出一个高电平导通。
有三个功能:
系统初始化时会闪烁、归零时会闪烁、shift功能键会闪烁。
与单片机连接的电路原理图如图3-3所示
图3-3LED提示电路
3.21602液晶显示资料
控制器内部带有80*8位(80字节)的RAM缓冲区,对应关系如图3-4所示
图3-4RAM地址映射图
设置数据指针如表3-2
表3-2数据指针
显示开/关及光标设置如表3-3
表3-3显示及光标设置
指令码
设置16*2显示,5*7点阵,8为数据接口
D
C
B
D=1开显示;
C=1显示光标;
B=1光标闪烁
D=0关显示;
C=0不显示光标;
B=0不光标闪烁
N
S
N=1当读或写一个字符后地址指针加一,切光标加一
N=0当读或写一个字符后地址指针减一,切光标减一
S=1当读或写一个字符整屏显示左移(N=1)或右移(N=0)
S=0当写一个字符,整屏不移动
其它设置如表3-4
表3-4其它设置
01H
数据指针清零所有显示清零
02H
数据指针清零
10H
光标左移数据指针加1
14H
光标右移数据指针减1
18H
屏幕左移光标跟着左移数据指针不变
1CH
屏幕右移光标跟着左移数据指针不变
第四章计算器的软件编程
4.1主函数
根据任务书的要求,让主程序一直保持在一个大循环中(一直保持键盘扫描),对相应的键值进行判断且处理,再接着键盘扫描。
具体如程序流程图4-1
图4-1程序流程图
4.24*5键盘扫描程序
根据硬件的介绍,键盘是直接接到I/O口上的,这个键盘需要一个软件的消抖,可对键值按下时产生的脉冲进行相应的延时,键盘扫描程序在附录。
其驱动程序流程图4-2如下所示
图