单片机课程设计报告(简易计算器)

合集下载

单片机的简易计算器毕业设计

单片机的简易计算器毕业设计

单片机的简易计算器毕业设计简易计算器是一种基本、常见的电子设备,它能够对数字进行简单的加减乘除运算。

单片机作为一种小型、低功耗的微型计算机,非常适合用于设计和实现计算器的功能。

在本文中,我们将以单片机为基础,设计和实现一个简易计算器。

一、设计思路1.硬件设计:-使用单片机作为主控制器。

-接入键盘矩阵和显示器。

-使用LED灯作为指示灯,用于显示运算符和结果。

2.软件设计:-通过键盘输入数字和运算符。

-将输入的数字和运算符转换成相应的控制信号。

-进行运算,并将结果显示在屏幕上。

3.功能实现:-实现加法、减法、乘法和除法运算。

-提供清零、退格和等号等功能。

-支持小数和负数的输入和运算。

-提供错误提示功能,例如除数不能为零等。

二、具体实现1.硬件实现:-将键盘矩阵的行和列与单片机的IO口相连,通过扫描来检测按键的输入。

-将显示器与单片机的IO口相连,通过控制引脚来发送和接收数据。

-将LED灯与单片机的IO口相连,设置相应的引脚状态来显示不同的指示信号。

2.软件实现:-使用C语言编写程序,通过中断和轮询的方式,实现键盘输入的检测和数据的读取。

-将读取到的数据进行解析,并根据不同的按键进行相应的操作。

-根据输入的数字和运算符,进行相应的运算并输出结果。

3.功能实现:-加法、减法、乘法和除法运算可以通过相应的算法实现,例如加法可以通过循环和位运算来实现。

-清零功能可以将运算结果和输入的数字都清零,退格功能可以删除输入的最后一个数字或运算符。

-支持小数运算可以在运算过程中进行进位和进位操作,支持负数运算可以通过判断运算符来进行相应的处理。

-错误提示功能可以通过对输入的数据进行检查和判断来实现,例如判断除数是否为零。

三、总结通过上述的设计和实现,我们可以成功地设计和制作一个单片机的简易计算器。

通过这个计算器,用户可以进行简单的加减乘除运算,同时还具备清零、退格、小数和负数等功能。

这个计算器可以应用在日常生活中的计算场景,方便用户进行各种简单的运算操作。

单片机简易计算器设计

单片机简易计算器设计

单片机简易计算器设计一、引言:计算器是一种用于进行数学运算的工具,可以提供基本的算术运算功能。

单片机是一种集成电路,具有微处理器、存储器、计数器和输入/输出接口等功能,适合用于设计和实现计算器。

本篇文章将介绍如何设计和实现一款基于单片机的简易计算器。

二、设计目标:本文设计的简易计算器具有以下功能:1.能够进行四则运算,包括加法、减法、乘法和除法;2.具有输入和输出功能,可以输入运算表达式,并输出计算结果;3.采用简单直观的按键输入方式,便于用户操作。

三、设计原理:1.系统框图:```_______________输入/输接口I______________\/_______________单片机芯(CPU______________```2.硬件设计:使用单片机来处理计算表达式和输出计算结果。

输入/输出接口IC负责处理用户输入和显示输出。

单片机芯片是整个计算器系统的核心,负责执行算术运算的逻辑。

3.软件设计:(1)初始化:设置单片机芯片工作环境,包括引脚配置、定时器设置等。

(2)输入处理:使用按键输入方式获取用户输入的数值和运算符,按下等号键时开始计算。

(3)运算处理:根据输入的数值和运算符进行相应的运算操作,得出计算结果。

(4)输出显示:将计算结果输出到显示装置上。

四、实现步骤:1.硬件实现:根据设计原理中的系统框图,采购和连接合适的输入/输出接口IC以及单片机芯片。

2.软件编程:(1)初始化:根据单片机芯片的型号和文档,编写初始化程序,包括引脚配置、定时器设置等。

(2)输入处理:编写输入处理程序,包括按键输入方式、数值和运算符的提取等。

(3)运算处理:编写运算处理程序,根据输入的数值和运算符,实现相应的运算逻辑。

(4)输出显示:编写输出显示程序,将计算结果输出到显示装置上。

3.实验验证:将硬件和软件进行调试和验证,确保计算器可以正常工作并满足设计目标。

4.优化改进:根据实验结果,对计算器进行优化和改进,提升计算器的性能和用户体验。

单片机课程设计——基于C51简易计算器

单片机课程设计——基于C51简易计算器

单片机双字节十六进制减法实验设计摘要本设计是基于51系列的单片机进行的双字节十六进制减法设计,可以完成计算器的键盘输入,进行加、减、3位无符号数字的简单运算,并在LED上相应的显示结果。

设计过程在硬件与软件方面进行同步设计。

硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用5个键盘。

显示采用3位7段共阴极LED动态显示。

软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。

编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus 仿真。

引言十六进制减法计算器的原理与设计是单片机课程设计课题中的一个。

在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。

单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。

关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减目录摘要 (01)引言 (01)一、设计任务和要求.............................1、1 设计要求1、2 性能指标1、3 设计方案的确定二、单片机简要原理.............................2、1 AT89C51的介绍2、2 单片机最小系统2、3 七段共阴极数码管三、硬件设计...................................3、1 键盘电路的设计3、2 显示电路的设计四、软件设计...................................4、1 系统设计4、2 显示电路的设计五、调试与仿真.................................5、1 Keil C51单片机软件开发系统5、2 proteus的操作六、心得体会....................................参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................一、设计任务和要求1.1 设计要求本次课程设计,我选择的课题是单片机十进制加法计算器软硬件设计,设计任务为:设计一键盘显示装置,键盘上除需定义16个十六进制数字键外还要相应的功能键,其它键不定义无响应。

基于51单片机的简易计算器设计

基于51单片机的简易计算器设计

基于51单片机的简易计算器设计基于51单片机的简易计算器设计一、引言随着微电子技术和嵌入式技术的发展,越来越多的智能化设备被应用于日常生活中。

其中,基于51单片机的简易计算器设计具有广泛的应用价值。

本文将介绍如何使用51单片机设计一个简易计算器,实现加减乘除的基本运算功能。

二、设计方案1.硬件组成:本设计采用51单片机作为主控芯片,与键盘、显示器等外围设备相连。

键盘用于输入数字和运算符,显示器则用于显示运算结果。

2.软件设计:软件部分包括主程序和子程序。

主程序负责初始化硬件、读取键盘输入和显示运算结果。

子程序包括加减乘除的运算子程序,可根据输入的运算符和操作数进行相应的运算。

3.算法实现:在加减乘除的运算子程序中,采用基本的数学运算方法实现。

对于加法,直接将两个操作数相加;对于减法,将两个操作数相减;对于乘法,采用循环相乘的方法;对于除法,采用循环相除的方法。

三、实验结果在实验中,我们成功地使用51单片机设计了一个简易计算器,实现了加减乘除的基本运算功能。

在测试过程中,我们输入了不同的数字和运算符,得到了正确的运算结果。

同时,我们也测试了计算器的稳定性,发现其在连续运算时表现良好,没有出现明显的误差或故障。

四、结论基于51单片机的简易计算器设计具有简单易行、实用性强等优点。

通过实验测试,我们验证了其可行性和稳定性。

此外,该设计还可以根据需要进行扩展和优化,例如增加更多的运算功能、优化算法等。

未来,我们可以进一步研究如何提高计算器的运算速度和精度,以及如何将其应用于更多的实际应用场景中。

五、改进意见与展望1.增加更多的运算功能:例如实现括号、开方、指数等高级运算,满足更复杂的数学计算需求。

2.优化算法:针对现有的加减乘除运算算法进行优化,提高运算速度和精度。

例如采用更高效的除法算法,减少运算时间。

3.增加存储功能:在计算器中加入存储单元,使得用户可以在多个步骤之间进行数据传递和保存。

4.增强人机交互界面:优化显示器的显示效果,增加用户输入的便捷性,提高用户体验。

单片机课程设计报告——简易电子计算器

单片机课程设计报告——简易电子计算器
2
1、设计要求
通过软件编程,利用 AT89S51 单片机实现设计简易的计算器功能,即可实现 简单加减乘除。实现计算器的键盘输入,进行加、减、乘、除基本四则运算,并 在显示设备上显示相应的结果。要求撰写课程设计报告,并在设计报告中列写系 统方案,画出系统框图;然后分析工作原理、画出硬件电路原理图;同时画出程 序框图,给出程序清单;之后,写出系统调试分析结果。并在最后写出对于本次 课程设计的心得体会。
二、课程设计成果要求(包括课程设计说明书、图纸、图表、软硬件等要求) 1,课程设计报告; 2,系统方案,画出系统框图; 3,分析工作原理、画出硬件电路原理图; 4,画出程序框图,给出程序清单; 5,写出系统调试分析结果 三、课程设计工作进度计划 星期一:设计硬件电路,焊接电路板; 星期二:编写程序,调试并编译生成.hex 文件; 星期三:烧录程序,结合硬件调试程序; 星期四:演示结果,撰写课程设计报告; 星期五:修改报告,打印并答辩。 四、主要参考资料 1.《单片机原理及应用》张毅刚主编,高教出版社,2012.11 2. C51 单片机有关教材和文献资料
指导教师(签名): 2013 年 12 月 20 日
系主任(签名): 2013 年 12 月 20 日
1
目录
1、设计要求.................................................................................................................. 1 2、简易计算器系统设计.............................................................................................. 1 3、简易计算器系统硬件设计...................................................................................... 1

51单片机简易计算器设计报告

51单片机简易计算器设计报告

51单片机简易计算器设计报告
本文将介绍51单片机简易计算器的设计报告。

该计算器通过
16位的LCD显示屏实现了基本计算功能,包括加、减、乘、除、取反、开方等。

1. 硬件设计
该计算器的核心部件是STC89C52单片机。

STC89C52是一种
高性能、低功耗的8位单片机,拥有8KB的Flash程序存储器和128字节的内部RAM,可提供多种功能和通讯接口。

通过
I/O口与LCD模块通讯,实现输出功能。

该计算器使用16位的LCD显示屏,显示范围为-99.99~99.99,共有6个数字位。

显示屏使用了ST7920控制器,可通过串行、并行等多种方式控制。

2. 软件设计
该计算器的软件设计主要包括三部分:键盘扫描,计算功能和LCD显示。

键盘扫描:该计算器采用4x5矩阵键盘,通过程序对键盘进行扫描,实现对不同按键的检测。

计算功能:该计算器可以实现基本的四则运算、取反、开方等功能。

对于四则运算,通过栈来实现计算,将运算符压入栈中,然后将操作数从栈中取出进行计算。

LCD显示:该计算器使用16位的LCD显示屏,通过程序控制数据和命令的传输,将计算结果显示在LCD屏幕上。

3. 总结
通过对51单片机简易计算器的设计报告,可以看出该计算器实现了基本的计算功能,通过硬件设计和软件设计相结合,将计算器的功能实现得十分完整。

该计算器的设计初步掌握了51单片机的应用,有助于后续项目的开展。

单片机实践简易计算器实验报告

单片机实践简易计算器实验报告

单片机实践简易计算器实验报告本次实验的目的是通过单片机实现一个简易计算器,实现加减乘除四则运算。

在实验过程中,我们使用了STC89C52单片机,通过编写程序实现计算器的功能。

实验步骤:1. 确定硬件电路连接我们需要确定硬件电路连接。

本次实验使用的是STC89C52单片机,需要将其与LCD1602液晶屏、4x4矩阵键盘、蜂鸣器等硬件连接。

具体连接方式如下:STC89C52单片机:P0口:连接LCD1602液晶屏的数据线D0-D7P1口:连接LCD1602液晶屏的控制线RS、RW、EP2口:连接4x4矩阵键盘的行线R1-R4P3口:连接4x4矩阵键盘的列线C1-C4P4口:连接蜂鸣器2. 编写程序接下来,我们需要编写程序实现计算器的功能。

程序主要分为以下几个部分:(1)LCD1602液晶屏初始化(2)4x4矩阵键盘扫描(3)计算器功能实现(4)LCD1602液晶屏显示结果3. 调试程序编写完程序后,我们需要进行调试。

在调试过程中,我们需要注意以下几点:(1)检查硬件连接是否正确(2)检查程序是否有语法错误(3)检查程序是否能够正常运行4. 实验结果经过调试,我们成功实现了一个简易计算器。

在使用过程中,用户可以通过4x4矩阵键盘输入数字和运算符,计算器会自动进行计算,并在LCD1602液晶屏上显示结果。

同时,计算器还具有清零、退格等功能,方便用户进行操作。

总结:通过本次实验,我们学习了单片机的基本原理和编程方法,掌握了如何使用单片机实现一个简易计算器。

同时,我们还学习了如何进行硬件电路连接和程序调试,提高了我们的实践能力和动手能力。

基于51单片机简易计算器课程设计报告

基于51单片机简易计算器课程设计报告

基于51单片机简易计算器课程设计报告
基于51单片机简易计算器课程设计报告
1. 研究背景
•计算器是人们日常生活和工作中常用的工具之一。

•通过设计简易计算器,可以加深学生对51单片机的理解和应用。

2. 目标和需求
•设计一个基于51单片机的简易计算器,能够进行基本的四则运算和开方运算。

•要求计算器能够显示输入和计算结果。

•要求计算器具备简单的界面和操作。

3. 设计方案
•使用51单片机作为计算器的控制核心。

•通过键盘输入数字和运算符,并显示在液晶屏上。

•根据输入的运算符,进行相应的计算,并将结果显示在液晶屏上。

4. 硬件设计
•使用51单片机作为主控芯片。

•连接液晶屏模块,用于显示输入和计算结果。

•连接键盘模块,用于输入数字和运算符。

5. 软件设计
•使用C语言进行编程。

•设计主程序,包括初始化、输入处理和计算输出等功能。

•设计函数,实现基本的四则运算和开方运算。

6. 实验结果
•成功设计并实现了基于51单片机的简易计算器。

•可以正常进行基本的四则运算和开方运算。

•输入和计算结果能够准确显示在液晶屏上。

7. 总结与展望
•通过设计这个简易计算器,学生对51单片机的理解和应用能力有了提高。

•下一步可以考虑增加更多的功能,如科学计算和数据存储等。

以上是本次基于51单片机简易计算器课程设计的报告。

通过这个实验,学生对51单片机的应用能力得到了提升,进一步增强了对计算器的理解。

在未来的课程设计中,可以进一步拓展功能,提升计算器的实用性和功能性。

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

单片机实训报告———简易计算器姓名***学号***专业***学校***指导教师 ***实训时间2014.06.23-2014.06.29目录中文摘要............................................................1 关键词.............................................................1 1 实训任务.........................................................1 1.1 主要功能设计................................................11.2 任务目的....................................................12 整体设计方案.....................................................1 2.1 方案论证....................................................12.2 系统框图....................................................23 控制软件设计....................................................2 3.1 程序时序总图...............................................2 3.2 液晶显示软件设计............................................3 3.3 键盘输入软件设计...........................................53.4 计算函数设置...............................................74 软件调试........................................................8 个人小结...........................................................8参考文献...........................................................9附录...............................................................9摘要:计算器是人们的日常生活中是最常见的电子产品之一,它应用极广、发展迅猛,并且不断出现着拥有更加强大功能的计算器。

为了解和研究计算器,本次实训设计制作了一个简易计算器,能够在五位的计算围进行“+”、“-”、“*”、“/”的基本运算,能进行负数的精确结果显示。

该计算器以AT89C51单片机芯片作为核心。

采用LCD1602工业字符液晶进行显示。

完成的计算器经过检验能够完整的实现预设功能,各种细节完善,具有很高的使用价值。

关键词:单片机;简易计算器;AT89C51;LCD16021实训任务1.1 主要功能设计以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602工业字符型液晶显示屏构成,部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。

1.2 任务目的通过本次实训提高我们的单片机硬件设计、软件编程能力,自主学习到更多的单片机应用知识。

2 整体设计方案2.1 方案论证计算器电路包括三个部分:显示电路、4*4键扫描电路、单片机微控制电路。

具体如下:(1)LCD显示电路LCD1602作为一个成熟的产品,使用简单,模式固定,便于移植到各种类型的程序,但是初学者往往要注意结合LCD本身的时序图来完善初始化程序。

又以其微功耗、体积小、显示容丰富、超薄轻巧的诸多优点,故采用LCD.(2)4*4键盘扫描电路对键盘上的某一行送低电平,其他行为高电平,然后读取列值。

若列值中有一位是低,则表明该行与低电平对应列的键被按下;否则,扫描下一行。

根据读到的值组合就可以查表 1 得到的键码,因为编程的方式,本次实训采用逐行扫描来读取键值,方便程序编写。

(3)单片机微控制电路:微控制电路就是以AT89C51为核心的控制核心,主要注意晶振电路的接法和复位电路的接法。

2.2 系统框图系统框图3 控制软件设计:实训中采用C语言对单片机进行编程,采用的是自下而上的设计方式,先设计出每一个模块(子程序),然后再慢慢扩大,最后组成程序。

3.1 程序总时序图3.2 液晶显示软件设计(1)显示流程开始液晶初始化调用显示字序液晶显示结束(2)1602液晶显示时序图,通过时序图,所有编程问题都可以得以解决。

(3)由时序图可以写出液晶的初始化函数、功能设置函数、清屏函数、写指令函数、写数据函数。

void delay1() //采用软件实现延时,5个机器周期{_nop_();_nop_();_nop_();}void int1() //LCD初始化{lcd_w_cmd(0x3c);lcd_w_cmd(0x0c);lcd_w_cmd(0x01);lcd_w_cmd(0x06);lcd_w_cmd(0x80);}unsigned char lcd_r_start() //读状态字{unsigned char s;RW=1;delay1();RS=0;delay1();E=1;delay1();s=P1;delay1();E=0;delay1();RW=0;delay1();return(s);}void lcd_w_cmd(unsigned char ) //写命令字{unsigned char g;do{g=lcd_r_start();g=g&0x80;delay(2);}while(g!=0);RW=0;delay1();RS=0;delay1();E=1;delay1();P1=;delay1();E=0;delay1();RW=1;delay(255);}void lcd_w_dat (unsigned char dat) //写数据{unsigned char g;do{g=lcd_r_start();g=g&0x80;delay(2);}while(g!=0);RW=0;delay1();RS=1;delay1();E=1;delay1();P1=dat;delay1();E=0;delay1();RW=1;delay(255);}3.3 键盘输入软件设计(1)键盘输入程序运行时序图(2)键盘扫描程序unsigned char scan_key(){unsigned char i,temp,m,n,k;bit find=0;P0=0xff;k=0x01;for(i=0;i<4;i++){P2=~k;temp=~P0;temp=temp&0x0f;k<<=1;if(temp!=0x00){m=i;find=1;switch(temp){case 0x01:n=0;break;case 0x02:n=1;break;case 0x04:n=2;break;case 0x08:n=3;break;default:break;}}}if(find==0) return 0xff;else return(n*4+m);}3.4 计算函数设置因为只有16个健,所以计算上只设计了加减乘除的功能,下面是几个计算的程序unsigned int jian() //减法函数{if(a>=b){q=0;return(a-b);}if(a<b){q=1;return(b-a);}if(a2[i]<10&&m==0) /第一个数{a=a*10+a2[i];}if(a2[i]!=14&&a2[i]>9) //四则运算的判断{m=1; w=a2[i];}if(a2[i]<10&&m==1) //第二个数{b=b*10+a2[i];}if(a2[i]==13||o==1) //清零{o=0;lcd_w_cmd(0x01);lcd_w_cmd(0x80);a=0;b=0;wan=0;qian=0;bai=0;shi=0;ge=0;m=0;sum=0;}if(a2[i]==14) //等号{l++;p=jian(); //调用减法函数switch(w){case 10:sum=a/b;break; //除法case 11:sum=a*b;break; //乘法case 12:sum=p;if(q==1)lcd_w_dat('-');break; //减法case 15:sum=a+b;break; //加法default:break;}wan=sum/10000; //万位qian=(sum-wan*10000)/1000; //千位bai=(sum-wan*10000-qian*1000)/100; //百位shi=(sum-wan*10000-qian*1000-bai*100)/10; //十位ge=sum%10; //个位if(wan!=0) //万位显示{lcd_w_dat(a1[wan]);lcd_w_dat(a1[qian]);lcd_w_dat(a1[bai]);lcd_w_dat(a1[shi]);lcd_w_dat(a1[ge]);}if(wan==0&&qian!=0) //千位显示{lcd_w_dat(a1[qian]);lcd_w_dat(a1[bai]);lcd_w_dat(a1[shi]);lcd_w_dat(a1[ge]);}if(wan==0&&qian==0&&bai!=0) //百位显示{lcd_w_dat(a1[bai]);lcd_w_dat(a1[shi]);lcd_w_dat(a1[ge]);}if(wan==0&&qian==0&&bai==0&&shi!=0) //十位显示{lcd_w_dat(a1[shi]);lcd_w_dat(a1[ge]);}if(wan==0&&qian==0&&bai==0&&shi==0) //个位显示{lcd_w_dat(a1[ge]);}if(l%2!=0) //换行{lcd_w_cmd(0xc0);}if(l%2==0) //换屏{lcd_w_cmd(0x80);o=1;}a=0;b=0;wan=0;qian=0;bai=0;shi=0;ge=0;m=0;sum=0; //运算完一次全部清零}4 软件调试:(1)编程前先画了流程图,这样思路清晰,能按部就班的完成。

相关文档
最新文档