【本文有配套仿真图、程序源码、设计文档、原理图。 如有需要请通过公众号联系管理员获取】
有图有真相
基于51单片机的简易计算器设计
概括
本设计是一个使用51单片机设计的简单计算器。 本设计系统采用STC89C51RC作为微控制器。 P1口作为输入端,外接4*4键盘。 通过键盘扫描控制输入数字,并外接驱动电路。 系统采用LCD1602液晶作为显示器,软件程序全部用C语言编写,易于移植和升级。 报告详细介绍了整个系统的硬件结构、工作原理和软件程序设计。
[关键词] STC89C51RCLCD1602 液晶矩阵键盘 简单计算器
目录
前言
第一章 工作原理
1.1 设计目标
1.1.1基本功能
1.1.2 主要技术参数
第二章 硬件设计及原理
2.1 总体设计框图
2.2 硬件设计分析
2.2.1 电源设计
2.2.2 最小微控制器系统
2.2.3 显示系统
2.2.4 矩阵电路
第三章软件设计与分析
3.1 软件设计的组成部分
第 4 章 软件模拟
4.1 PROTEUS简介
4.2 仿真图
4.3 示意图
4.4 零部件清单
总结
致谢
参考
前言
近年来,随着科学技术的快速发展,微控制器领域不断走进社会的各个角落,也带动了传统的控制和检测日新月异。 在单片机实时运行和自动控制在系统中的应用中,现在都以单片机作为核心部件。 仅仅掌握单片机的知识是不够的。 还应根据其具体的硬件结构和软件组合根据具体应用对象的特点而定。 得到改善。 《单片机原理及应用》课程设计是电子类专业的基础课程。 是继《汇编语言编程》、《接口技术》等课程之后的一门实践课程。
第一章 工作原理
1.1 设计目标 1.1.1 基本功能
本设计以STC89C51RC芯片的电路为基础,外接输入器件和显示器件,实现计算器的硬件电路,并通过软件程序控制单片机实现加、减、乘、除。 对于不同类型的单片机,只需相应更改地址即可。 该软硬件系统具有良好的通用性和较高的实用价值,为广大单片机爱好者提供了很好的参考。
1.1.2 主要技术参数
要求计算器能够进行加、减、乘、除四种运算,如下:
1.加法:整数加法,
2.减法:整数减法,
3.乘法:整数乘法,
4. 除法:整数除法
5.具有清算功能
第二章 硬件设计及原理
以STC89C51RC单片机为核心,起到控制作用。 该系统包括LCD1602液晶显示电路、复位电路、时钟电路和按钮电路。 设计思路分为五个模块:复位电路、晶振电路模块、STC89C51RC、LCD1602液晶显示电路和按键电路。
2.1 总体设计框图
2.2 硬件设计分析 2.2.1 电源设计
系统电源采用5伏直流电。
2.2.2 最小微控制器系统
51单片机是目前所有兼容Intel 8031指令系统的单片机的统称。 该系列微控制器的始祖是Intel的8031微控制器。 后来随着技术的发展,成为目前广泛使用的8位单片机之一。 单片机是一种大规模集成电路,将CPU、RAM、ROM、定时器/计数器和多功能I/O口等计算机所需的基本功能部件集成在一块芯片上。 它也被称为MCU。 51系列微控制器包含以下组件:
8位CPU; 片上振荡器和时钟电路;
4KB ROM程序存储器;
128B RAM数据存储器;
用于寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;
32条可编程I/O线;
两个16位定时器/计数器;
一个可编程全双工串口;
5个中断源,两个优先级嵌套中断结构。
图2-2-1所示为STC89C51RC微控制器的基本结构。 其基本性能介绍如下:
STC89C51RC本身包含40个引脚、32个外部双向输入/输出(I/O)端口、2个外部和内部端口、3个16位可编程定时计数器、2个全双工串行通信端口,STC89C51RC可以按照常规方法进行编程,但不能在线编程。 它结合了通用微处理器和Flash存储器,特别是可重复擦除的Flash存储器,可以有效降低开发成本。
STC89C51RC的主要特点如下表所示:
兼容MCS-51指令系统
32 条可编程 I/O 线
4k字节可编程闪存
可编程 UARL 通道
三个 16 位可编程定时器/计数器中断
时钟频率0-24MHz
2个外部中断源,共8个中断源
256×8位内部RAM
2条读写中断线
可直接驱动LED
睡眠和唤醒功能的软件设置
低功耗空闲和掉电模式
表2-2-1STC89C51RC主要功能说明
STC89C51RC是一款40引脚双列直插式封装的8位通用微处理器。 它采用行业标准C51内核。 其内部功能和引脚布局与一般89c51相同。 主要用于收敛调整时的功能控制。 功能包括汇聚主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相应功能端子,用于当前格式的检测以及进入收敛调整状态的控制功能。
P0端口:P0端口是一组8位开漏双向I/O端口,是地址/数据总线复用端口。 作为输出口时,每一位可通过吸收电流驱动8个TTL逻辑门电路。 当向P0口写“1”时,可作为高阻输入端。 当访问外部数据存储器或程序存储器时,这组端口线分时共享地址(低8位)和数据总线复用,并在访问过程中激活内部上拉电阻。 Flash编程时,P0口接收指令字节,程序验证时,输出指令字节。 验证时,需要外接上拉电阻。
P1 端口:P1 是一个 8 位双向 I/O 端口,内部带有上拉电阻。 P1的输出缓冲级可以驱动(灌电流或输出电流)4个TTL逻辑门电路。 向端口写入“1”,并通过内部上拉电阻将端口拉至高电平。 此时可以作为输入口使用。 当用作输入端口时,由于内部有上拉电阻,当某个引脚被外部信号拉低时,会输出电流(IIL)。 与AT89C51不同的是,P1.0和P1.1还可以分别作为定时器/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。 在Flash编程和程序验证期间,P1接收低8位地址。
P2 端口:P2 是一个 8 位双向 I/O 端口,内部带有上拉电阻。 P2的输出缓冲级可以驱动(灌电流或输出电流)4个TTL逻辑门电路。 向P2端口写入“1”,并通过内部上拉电阻将端口拉至高电平。 此时可以作为输入口使用。 当用作输入口时,由于内部有上拉电阻,某个引脚会被外部信号上拉。 当为低电平时,将输出电流(IIL)。 当访问具有 16 位地址的外部程序存储器或外部数据存储器时(如执行 MOVX @DPTR 指令),端口 P2 发送高 8 位地址数据。 当访问8位地址的外部数据存储器时(如执行MOVX @RI指令),P2端口输出P2锁存器的内容。 在Flash编程或验证过程中,P2还接收高位地址和一些控制信号。
端口 P3:端口 P3 是一组 8 位双向 I/O 端口,内部有上拉电阻。 P3端口输出缓冲级可以驱动(灌电流或输出电流)4个TTL逻辑门电路。 当向P3端口写入“1”时,它们被内部上拉电阻拉高,可以用作输入端口。 此时,被外部拉低的P3口将使用上拉电阻输出电流(IIL)。 P3口除了作为通用I/O口线外,更重要的用途是它的第二个功能。 P3端口还接收一些用于Flash存储器编程和程序验证的控制信号。
RST:复位输入。 当振荡器工作时,RST引脚上的高电平持续两个机器周期以上将使单片机复位。
ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存使能)输出脉冲用于锁存地址的低8位字节。 正常情况下,ALE仍以时钟振荡频率的1/6输出固定脉冲信号,因此可以对外输出时钟或用于计时目的。 请注意,每当访问外部数据存储器时,都会跳过 AL 脉冲。 在Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 如有必要,可以通过设置特殊功能寄存器 (SFR) 区域中位置 8EH 中的 D0 位来禁用 ALE 操作。 当该位置位时,只有 MOVX 和 MOVC 指令可以激活 ALE。 此外,该引脚将被弱拉高。 当微控制器执行外部程序时,ALE禁用位应设置为无效。
PSEN:程序存储使能(PSEN)输出是外部程序存储器的读选通信号。 当STC89C51RC从外部程序存储器取指令(或数据)时,每个机器周期PSEN有效两次,即输出两个脉冲。 在此期间,当访问外部数据存储器时,PSEN信号将被跳过两次。
EA/VPP:允许外部访问。 为了使CPU只能访问外部程序存储器(地址0000H-FFFFH),EA端子必须保持低电平(接地)。 需要注意的是,如果加密位LB1被编程,则EA端子状态将在复位期间被内部锁存。 如果EA端为高电平(连接到Vcc端),则CPU执行内部程序存储器中的指令。 当对Flash存储器进行编程时,+12V编程允许电源Vpp加到该引脚上。 当然,这必须是器件使用12V编程电压Vpp。
XTAL1:振荡器反相放大器和内部时钟发生器的输入。
XTAL2:振荡器反相放大器的输出。
单片机的最小原理图如图2-2-2所示。
单片机最小系统说明:
时钟信号的产生:MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。 在芯片外部,XTAL1和XTAL2跨接晶振和微调电容,构成稳定的自激振荡器,这就是单片机的时钟振荡电路。
时钟电路产生的振荡脉冲经触发器二分频后成为单片机的时钟脉冲信号。
一般电容C2、C3取30pF左右,晶振振荡频率范围为1.2-12MHz。 如果晶振频率高,则系统的时钟频率也高,单片机运行速度快。
单片机复位使CPU和系统中的其他功能部件处于某种初始状态,并从该状态开始工作。 MCU复位条件:引脚9必须加高电平,持续两个机器周期(即24个振荡周期)。
2.2.3 显示系统
2.2.4 矩阵电路
按键是由一组按钮或触摸开关组成的阵列,是常用的输入设备。 键盘可分为两种类型:编码键盘和非编码键盘。
1、编码键盘通过硬件电路生成所按下按键的键码。 这种键盘需要简单的程序,但硬件电路复杂且昂贵,通常不被微控制器系统使用。
2.非编码键盘通常使用一些按行列矩阵排列的按键。 硬件逻辑和按键编码之间没有严格的对应关系,而是由所使用的程序决定。 非编码键盘的硬件接口简单,但占用CPU时间较多。 通常采用可编程键盘管理芯片来克服这一缺点。 本设计采用两种按键,一种是触摸式非编码键盘和触摸式非编码开关。
由于接线时有四个引脚,所以需要用万用表测量一下连接情况,然后连接两个引脚。 示意图如下。
要计算数据,首先要输入数据,并且必须确定按键输入的值是什么。 这需要扫描键盘来确定按下了哪个键。
第三章软件设计与分析
3.1 软件设计的组成部分
系统由延时子函数、LCD1602液晶写指令子函数、LCD1602液晶写数据子函数、LCD1602液晶初始化子函数、键盘扫描子函数、主要函数和数据定义组成。
【由于篇幅有限,这里省略了程序。 如有需要请联系管理员获取】【由于篇幅有限,此处省略该程序。 如有需要请联系管理员获取】【因篇幅有限,此处省略该程序。 如有需要请联系管理员获取】
第四章软件仿真 4.1 PROTEUS简介
Proteus ISIS是英国Labcenter公司开发的电路分析和物理仿真软件。 它运行在Windows操作系统上,可以对各种模拟器件和集成电路进行仿真和分析(SPICE)。 该软件的特点是:
(1)实现了单片机仿真与SPICE电路仿真的结合。 具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真等功能; 有各种虚拟仪器,例如示波器、逻辑分析仪、信号发生器等。
(2)支持主流单片机系统的仿真。 目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
(3)提供软件调试功能。 硬件仿真系统具有全速、单步、设置断点等调试功能。 同时可以观察各个变量、寄存器等的当前状态。 因此,软件仿真系统还必须具备这些功能; 它还支持第三方软件。 编译调试环境,如Keil C51 uVision2等软件。
(4)具有强大的原理图绘制功能。
可模拟51系列、AVR、PIC、ARM等常用主流单片机。 也可以直接根据原理图在虚拟样机上编程,然后配合显示输出,看看运行后的输入输出效果。 通过系统中配置的虚拟逻辑分析仪、示波器等,Proteus建立了完整的电子设计开发环境。
在PROTEUS中绘制原理图后,加载编译好的目标代码文件:*.HEX。 在PROTEUS原理图中可以看到模拟的物理运行状态和过程。 PROTEUS是单片机课堂教学的高级助手。
PROTEUS不仅可以可视化许多单片机实例的功能,还可以可视化许多单片机实例的运行过程。 前者可以在相当程度上获得物理演示实验的效果,而后者则是物理演示实验很难达到的效果。
其元件、连接线等与传统单片机实验硬件高度一致。 这在相当程度上替代了传统单片机实验教学的功能,如:元件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
课程设计和毕业设计是学生就业的重要实践环节。 由于PROTEUS提供了大量实验室无法比拟的元件库,提供了修改电路设计的灵活性,并且提供了实验室在数量和质量上无法比拟的虚拟仪器仪表,因此也为学生提供了实践训练。 一个精神和创造精神的平台。
4.2 仿真图
4.3 示意图
4.4 零部件清单
总结
经过近一个月的努力,我终于顺利完成了毕业设计。 一开始我们也不是很清楚,不知道从哪里开始。 但在老师的耐心指导和同学们对设计课题的认真研究下,我们去图书馆查资料,确定了基本设计方案,查找、调试、实现了芯片功能。 机器仿真等,经历了一次又一次的困难,却积累了很多宝贵的经验。 整个设计过程中遇到的问题主要包括以下三点。 一是基础知识掌握不牢,主要体现在对一些常用电路的形式和功能不清楚,对书本内容理解不够。 第二:一些常用应用软件的应用不足,体现在画电路图、系统仿真时对这些软件的操作不熟练,浪费了大量的时间。 第三:相关知识不够全面,缺乏系统设计经验。
这次设计进一步提高了我的学习态度,让我学会了实事求是和严谨的作风。 我必须严格要求自己。 我不仅要知道一点点,而且要力争说清楚。 我觉得急于求成是不好的。 如果忽略了这些必要的步骤而急于求成,不仅会浪费时间,还会适得其反。 我认为在采取行动之前清楚地了解要做什么很重要。 就目前而言,虽然我的动手能力有点差,但我想通过我的不懈努力,我在这方面一定会有所进步。 我坚信这一点。 因为别人能做到的,我也能做到。
这次毕业设计给我最大的体会就是进一步认识到理论联系实际的重要性。 一份耕耘,一份收获。 通过这段时间的设计,我明白了科学的思维方法和学习方法是多么重要。 只有这样,才能达到高效率,让我们的工作更加完美。 总而言之,这次毕业设计让我学到了很多平时在课堂上学不到的东西,增加了我的知识应用能力,增强了我的实际操作能力。 感谢老师为我们提供了这么好的机会,为我们以后步入社会打下了良好的基础。
我从这次毕业设计中学到了很多,以及如何面对困难。 不懂一半的知识,但有能力实事求是。 通过老师的帮助,我学到了很多在日常生活中没有注意到的东西。 感动事物、知识,无需深入理解,更美丽。 通过这段时间,我想更加清楚地认识自己。 也要更加注重自己各方面的培养能力,抓住机会。 非常感谢老师们的这次设计。
致谢
四年的大学生活即将结束,我的毕业设计也顺利完成。 首先,我向我的xxx导师,也向帮助过我的同学们表示最诚挚的感谢。
张老师在这次毕业设计中给了我很大的帮助。 首先,我一开始在选题上遇到了困难。 因为我选题的时候太粗心了,没有仔细分析,所以选的题目并不是我的爱好方向。 张老师告诉我,最重要的是找到正确的方向和正确的目标。 选择一个自己擅长、喜欢的方向,不仅可以激励我们积极完成设计,也可以让自己充满内容。 如果我有兴趣的话,这样制作出来的东西会更完美、更容易,所以我毅然改变了话题,选择了一个自己喜欢的方向。 其次,在毕业设计过程中,x老师不厌其烦地给我们讲解了毕业设计中的可能性。 无论我遇到什么样的问题,她总是耐心地给我们解释。 同时,她要求每周一见面一次,督促我们抓紧时间完成毕业设计。 每次我们见面,她都会让我详细解释一下上周做了什么以及下周要做什么。 如果有什么问题或者不合理的地方,她都会给我指出,给予我指导。 我深深感谢张老师认真负责的态度。 同时,我还要感谢xx同学,他解决了我在毕业设计中遇到的很多问题,特别是在我刚开始学习软件时,他给了我很多帮助。
谨向所有在毕业设计期间帮助过我的老师和同学表示最诚挚的谢意。
参考
[1] 李群芳,张世军,黄健。 单片机及接口技术。 北京:电子工业出版社,2008
[2] 李群芳. 单片机原理接口及应用。 北京:清华大学出版社,2005
[3] 张迎新. 单片机原理、应用及接口技术。 北京:国防工业出版社,1999
[4]高峰. 单片机应用系统设计与使用技术。 北京:机械工业出版社,2007
[5] 彭伟. 基于protues仿真的单片机C语音编程实例。 北京:电子工业出版社,2007
[7] 张冬林,李鑫,戴梅. 基于DHT11的低成本蚕室温湿度自动控制系统设计[J]. 现代农业科技,2010,(18):14-15。
[8]徐春和. 浅谈AT89S51[J]. 制造自动化,2010,(12):80-82。
[9]吴汉清. 常用典型单片机资料[J]. 广播,2007,(11):72-80。
[10] 叶建斌. 基于单片机嵌入式系统的GPS应用[J]. 电子质量,2008,(7):16-24。
[11] 刘保元,张玉红,蒋旭,段存利。 基于单片机的温湿度监测系统设计[J]. 国外电子测量技术,2009,(12):77-80,83。
[12] 王静. 通用仓库温湿度测控系统[D]. 中国海洋大学,2009。
[13] 陈汝泉. 实用微机与单片机控制技术[M]. 电子科技大学出版社. 1995.7 12.
[14] 张广军,黄俊钦. 温度传感器现场动态标定方法及实验研究[J]北京航空航天大学学报,1997年,第23卷,第3期,311-315。
[15]李建民. 单片机在温度控制系统中的应用[M]. 江汉大学学报,1996.6 210-215。
[16]。 薛凌、孙蔓、张智慧、夏莉莉、魏希文。 基于单片机AT89S51的温湿度控制器[J]. 2010, 37, (7): 66-69