单片机计算器的课程设计
51单片机计算器课程设计

51单片机计算器课程设计一、课程目标知识目标:1. 让学生掌握51单片机的基本原理及其在计算器中的应用。
2. 使学生理解并掌握计算器程序设计的步骤和要点,包括键盘输入、显示输出、数据处理等。
3. 帮助学生了解并掌握基本的数字逻辑运算,如加、减、乘、除等。
技能目标:1. 培养学生运用51单片机进行计算器硬件设计和程序编写的能力。
2. 培养学生运用Keil等开发工具进行51单片机程序开发的能力。
3. 培养学生通过查阅资料、团队协作解决实际问题的能力。
情感态度价值观目标:1. 激发学生对电子技术和编程的兴趣,培养其主动学习的态度。
2. 培养学生的创新意识和动手能力,使其具备解决问题的信心。
3. 培养学生良好的团队协作精神和沟通能力,提高其综合素质。
课程性质:本课程为实践性较强的课程,注重培养学生的动手能力和实际问题解决能力。
学生特点:学生具备一定的电子技术基础和编程能力,对51单片机有一定了解。
教学要求:结合学生特点,注重理论与实践相结合,以项目为导向,引导学生主动探索、实践和解决问题。
通过课程学习,使学生达到预定的知识目标和技能目标,并培养其情感态度价值观。
在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 51单片机原理回顾:涉及51单片机的内部结构、工作原理、寄存器等基础知识。
相关教材章节:第一章《51单片机概述》2. 计算器功能设计:介绍计算器的基本功能,如数字输入、运算符选择、结果显示等。
相关教材章节:第二章《51单片机I/O口应用》3. 硬件电路设计:讲解计算器硬件电路的搭建,包括键盘电路、显示电路等。
相关教材章节:第三章《51单片机硬件设计基础》4. 程序设计:分析计算器程序设计的流程,包括程序框架、各功能模块的实现等。
相关教材章节:第四章《51单片机C语言编程》5. 软件开发工具使用:介绍Keil开发环境的使用方法,编译、下载程序到51单片机。
单片机课程设计——基于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系列的单片机进行的数字计算器系统设计,能够完成计算器的键盘输入,进行加、减、乘、除6位带符号数字的简单四那么运算,并在LED上相应的显示结果。
设计进程在硬件与软件方面进行同步设计。
硬件方面从功能考虑,第一选择MCS51单片机,输入采纳4×6矩阵键盘。
显示采纳6位8段共阴极LED静态显示。
软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。
编程语言方面从程序整体设计和高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四那么运算算法专门是乘法和除法运算的实现,最终选用WAVE6000集成调试软件,采纳C语言编程。
关键词:MCS51单片机计算器LED静态显示矩阵键盘目录第一章引言 (1)第二章大体原理 (2)2.1 键盘扫描原理简述 (2)2.2 LED显示器原理 (3)2.3 LED 6位数字显示器和4ⅹ6 键盘电路 (4)第三章硬件设计 (6)第四章软件程序设计 (7)4.1 主程序流程图 (7)4.2 原始程序 (8)4.3 改良后的程序 (13)第五章总结 (19)第六章参考文献 (20)第一章引言简易计算器的原理与设计是单片机课程设计课题中的一个。
在完成理论学习和必要的实验后,咱们把握了单片机的大体原理和编程和各类大体功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。
单片机课程设计既要让学生巩固讲义学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的明白得,数字计算器原理与硬软件的课程设计主若是通过学生独立设计方案并自己动手用运算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的熟悉,充分发挥学生的个人创新能力,并提高学生对单片机的爱好,同时学习查阅资料、参考资料的方式。
第二章大体原理2.1 键盘扫描原理简述扫描方式:采纳列扫描法识别按键。
单片机课程设计计算器

单片机课程设计 计算器一、课程目标知识目标:1. 学生能理解单片机的基本原理和功能,掌握计算器的设计流程。
2. 学生能运用所学知识,设计并实现一个具有基本运算功能的单片机计算器。
3. 学生了解并掌握单片机编程的基本语法和逻辑结构。
技能目标:1. 学生掌握使用单片机开发工具进行程序编写、调试和下载的方法。
2. 学生具备分析问题、设计算法和解决问题的能力,能运用单片机技术解决实际计算问题。
3. 学生能够通过小组合作,进行项目设计和实践,提高团队协作能力。
情感态度价值观目标:1. 学生培养对单片机技术及电子工程的兴趣,激发创新意识和探索精神。
2. 学生通过动手实践,体验成功解决问题的喜悦,增强自信心和自主学习能力。
3. 学生在学习过程中,树立正确的价值观,认识到科技发展对社会进步的重要性。
课程性质:本课程为实践性较强的课程,要求学生在理论学习的基础上,动手实践,完成单片机计算器的设计与制作。
学生特点:学生处于高年级阶段,已具备一定的电子技术基础和编程能力,具备独立思考和解决问题的能力。
教学要求:结合学生特点,注重理论与实践相结合,引导学生通过小组合作,完成课程任务,达到课程目标。
同时,关注学生的个性差异,提供个性化的辅导和支持。
在教学过程中,注重培养学生的创新能力、实践能力和团队协作能力,为后续学习打下坚实基础。
二、教学内容根据课程目标,教学内容分为以下三个部分:1. 理论知识学习:- 单片机原理与结构:讲解单片机的组成、工作原理及性能特点,对应教材第1章。
- 编程语言基础:介绍单片机编程的基本语法、逻辑结构和编程规范,对应教材第2章。
2. 实践技能培养:- 硬件设计与连接:学习如何选用合适的元器件,设计计算器硬件电路,对应教材第3章。
- 软件编程与调试:掌握单片机程序编写、调试和下载的方法,对应教材第4章。
3. 项目实践:- 计算器设计与实现:结合所学知识,分组进行计算器项目设计,包括硬件选型、电路设计、程序编写和调试等,对应教材第5章。
单片机计算器课程毕业设计

单片机课程设计一、课程设计的目的通过本课程设计使学生进一步巩固单片机原理与技术的基本概念、基本理论,分析问题的基本方法;增强学生的软件编程实现能力和解决实际问题的能力,使学生能有效地将理论和实际紧密结合,拓展学生在工程实践方面的专业知识和相关技能。
二、总体设计根据功能和指标要求,本系统选用MCS-51系列单片机为主控机。
通过扩展必要的外围接口电路,实现对计算器的设计。
具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD 显示数据和结果。
(2)另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可,设计中采用集成的计算键盘。
(3)执行过程:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。
(4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD上出现错误显示“”。
系统模块图:三、硬件设计(一)、总体硬件设计本设计选用AT89C51单片机为主控单元。
显示部分:采用LCD 静态显示。
总体设计效果如下图:(二)、键盘接口电路计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。
矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为4×4个。
这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。
基于51单片机简易计算器课程设计报告

基于51单片机简易计算器课程设计报告
基于51单片机简易计算器课程设计报告
1. 研究背景
•计算器是人们日常生活和工作中常用的工具之一。
•通过设计简易计算器,可以加深学生对51单片机的理解和应用。
2. 目标和需求
•设计一个基于51单片机的简易计算器,能够进行基本的四则运算和开方运算。
•要求计算器能够显示输入和计算结果。
•要求计算器具备简单的界面和操作。
3. 设计方案
•使用51单片机作为计算器的控制核心。
•通过键盘输入数字和运算符,并显示在液晶屏上。
•根据输入的运算符,进行相应的计算,并将结果显示在液晶屏上。
4. 硬件设计
•使用51单片机作为主控芯片。
•连接液晶屏模块,用于显示输入和计算结果。
•连接键盘模块,用于输入数字和运算符。
5. 软件设计
•使用C语言进行编程。
•设计主程序,包括初始化、输入处理和计算输出等功能。
•设计函数,实现基本的四则运算和开方运算。
6. 实验结果
•成功设计并实现了基于51单片机的简易计算器。
•可以正常进行基本的四则运算和开方运算。
•输入和计算结果能够准确显示在液晶屏上。
7. 总结与展望
•通过设计这个简易计算器,学生对51单片机的理解和应用能力有了提高。
•下一步可以考虑增加更多的功能,如科学计算和数据存储等。
以上是本次基于51单片机简易计算器课程设计的报告。
通过这个实验,学生对51单片机的应用能力得到了提升,进一步增强了对计算器的理解。
在未来的课程设计中,可以进一步拓展功能,提升计算器的实用性和功能性。
单片机计算器课程设计

测试结果:计算 器功能正常,运 算结果准确无误
内存优化:增加内存容量, 提高数据存储和处理能力
处理器选择:选择更高性能 的处理器,提高计算速度
接口优化:优化接口设计, 提高数据传输速度和稳定性
电源优化:优化电源管理, 提高电源效率和稳定性
优化算法:提高计 算速度,降低功耗
优化界面:简化操 作流程,提高用户 体验
入或关机等
驱动程序功能:控制显示器显示内容 驱动程序结构:包括初始化、显示、刷新等模块 驱动程序实现:使用C语言编写,调用硬件接口 驱动程序优化:提高显示速度,降低功耗
输入驱动程序:用于接收和处理用户输入的程序 输入设备:键盘、鼠标等 输入处理:将用户输入转换为计算机可以理解的格式 输入验证:检查用户输入是否符合预期格式和范围 输入反馈:向用户显示输入结果或错误信息 输入驱动程序设计原则:简单、易用、高效、安全
优化算法:提高计算速度, 减少计算误差
改进硬件:提高硬件性能, 减少硬件故障
优化界面:提高用户友好度, 减少用户操作错误
单片机计算器设计过程 遇到的问题和解决方案 设计成果和性能评估 未来改进方向和展望
单片机计算器将更加便携化, 体积更小,重量更轻
单片机计算器将更加智能化, 实现语音识别、图像识别等功 能
1990年代,ARM公司推出ARM架构,成为现代 智能手机、平板电脑等设备的核心处理器
2000年代,RISC-V架构出现,成为开源硬件运 动的重要组成部分
2010年代,物联网技术的兴起,单片机在智能 家居、工业自动化等领域得到广泛应用
工业控制:用于自动化生产线、机器人等 智能家居:用于智能家电、智能门锁等 医疗设备:用于医疗仪器、医疗机器人等 汽车电子:用于汽车电子系统、自动驾驶等 消费电子:用于手机、平板电脑等 航空航天:用于航天器、无人机等
单片机 课设 简易计算器设计(减、除)

第1章.设计原理本次课程设计我用8255完成了对开关和二极发光管的控制来实现简单计算器的运算。
首先是用开关来输入数据,然后使开关发光管的相应地亮灭。
8255接法:D0接系统的D0口;CS接系统的P27;WR接系统的WR;RD接系统的RD; A口接LED;A0A1口接系统的A0,A1;C口接开关。
设计分两大部分:减法程序和除法程序。
每一部分首先输入数据,然后由控制口控制相应的二极管发光并且延时显示一段时间,然后在数据显示时间内输入第二个数据,然后由系统控制显示,显示完毕后显示计算结果,依然延时显示一段时间。
在每次的计算之前都由系统控制将第一个数据保存,以便计算。
由此,我的程序实现了简单的减、法运算。
第2章.设计方案2.1硬件部分设计方案硬件系统是指构成微机系统的实际装置,通常是由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。
单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种拓展接口电路、外部设备等才能构成一个单片机应用系统。
2.1.1 单片机部分PC机一台,TD-NMC+实验教学系统一台。
2.1.2 输入部分采用开关控制输入,电路配置灵活,软件结构简单。
2.1.3 显示部分在单片机应用系统中,使用的显示器主要有LED(发光二极管显示器)、LCD 液晶显示亲以及CRT接口。
本实验采用8个发光二极管亮灭来表示数字。
2.2软件部分设计方案软件部分的设计思路时将整个程序划分为开关输入部分、显示部分、运算程序部分。
运算程序部分包括减、除2个子程序。
软件流程大致如下:开始,然后是进行开关输入数据,b口控制输入,然后a,b口相关,即把开关和LED二极数码发光管相关,使开关控制二极管。
接下来使输入数据延时显示一段时间,然后输入下一个数据,先保存第一个输入数据后进行算术运算。
然后延时显示结果。
程序流程图如下:开始输入被减/除数延时显示被减/除数输入减/除数延时显示减/除数保存被减/除数计算结果延时显示结果图1.1第3章系统元器件简介3.1 SST89E554RC 简介SST89E554RC 具有在系统可编程(ISP)和在应用可编程(IAP)技术,该器件是 SST 公司推出的 8 位微控制器 FlashFlex51 家族中的一员,内置仿真程序,完全取代传统的硬件仿真器和编程器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
xx[i]=xx[i-1];
}
xx[0]=vie_a[key];
m=key;
for(i=1;i<=n;i++)
{
m=m/10;
}
b=m+b;
n++;
key=28;
}
}
}
if(key>=10&&key<=13)
{
uchar i;
cal_a=key;
for(i=0;i<=7;i++)
{
xx[i]=xxu[i];
all_m=0;
key=28;
for(i=0;i<=7;i++)
{
xx[i]=0;
}
result_a();//调用求计算结果
if(L==1)
{
if(c==0)
{
xx[0]=0x3f;
}
if(c>=0.0001)
{
r=c;
s=10000*(c-r);
if(cl==0)
{
Speak_a();
cal_a=14;//求以㏑x
key=15;
}
if(cl0==0)
{
Speak_a();
cal_a=15;//开方
key=15;
}
if(cl1==0)
{
Speak_a();
cal_a=16;//求以十为底对数
key=15;
}
if(cl2==0)
{
Speak_a();
以下为移位子程序和结果计算子程序的程序清单。
这部分嵌入到了主函数中。
调用输入数据函数:
4.3显示子程序设计
从始至终无论是输入的计算数据,还是计算后的结果值。都存储在同一数组dat[ ]中,这样我们只要在显示时一直调用dat[ ]中的值,就能正确的显示数据。
以下为显示子程序的程序清单。
void diaplay(void) interrupt 1
}
all_m=1;
key=18;
att=1;
n=1;
}
if(key==14)
{
uchar i;
key=18;
ent_a=0;
for(i=0;i<=7;i++)
{
xx[i]=yy[i];
}
a=0;
b=0;
c=0;
all_m=0;
L=1;
att=1;
n=1;
cal_a=0;
}
if(key==15)
{
uchar i;
3.5按键监视电路…………………………………………………5
附录3、器件清单 …………………………………………………… 24
计算器设计
一、设计任务和性能指标
1.1设计任务
自制一个单片机最小系统,包括复位电路,采用外部小键盘输入数据,能够实现加法、乘法及一个科学计算,计算结果显示在四位一体的数码管上。
要求用Protel画出系统的电路原理图(要求以最少组件,实现系统设计所要求的功能),印刷电路板(要求布局合理,线路清晰),绘出程序流程图,并给出程序清单(要求思路清晰,尽量简洁,主程序和子程序分开,使程序有较强的可读性)。
输入数据要存储在一四位数组内,而我们键入的值是数据的高位,后键入的值是低位,这样我们就需要在输入低位数值时将高位数值从数组的低位移向数组的高位,这就是编写移位子程序的目的。
对于结果计算子程序,包含加、减、乘、除四种运算。以加法运算为例,各种运算各有其标志位来代表计算类型,当加法标志位add=1是,就将输入的两个数据按照加法进行计算。
uchar yy[8]={0x3f,0,0};
float a=0,b=0,c;
uchar L=1;
uchar cal_a=0,dcounter=0;
void main(void)
{
uchar singlp_a=1,n=1;
uchar key=18;
uchar all_m=0,ent_a=0,att=1;
{
uchar len;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
P2=Disbuf[dcounter];
len=dcounter;
P0=xx[len];
dcounter+=1;
if(dcounter==8)
{
dcounter=0;
}
}
延时程序:
void Delay_1ms(uint i)//1ms延时
单片机最小系统硬件电路
3.2键盘接口电路
计算器所需按键有:
数字键:’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’0’
功能键:’+’,’-‘,’*’,’/’,’=’,’C(清零)’
扩展键:“log”,“ln”,“x^2”“小数点”,“开方”
共计25个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的8个公共端分别接P1.0~P1.7,这样扫描P1口就可以完成对矩阵键盘的扫描,通过对16个按键进行编码,从而得到键盘的口地址,对比P1口德扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘的功能。
void diaplay(void);
void Delay_1ms(uint i);
uchar vie_a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar exchg_a[16]={7,8,9,13,4,5,6,12,1,2,3,11,14,0,15,10};
P3=0x7f;
if(P1==0x0f&&P3==0x7f)
{
singlp_a=1;
}
if(key<=9&&key>=0)
{
if(all_m==0)
{
if(ent_a==0)
{
ar i;
ent_a=1;
for(i=0;i<=7;i++)
{
xx[i]=0;
}
}
else
{}
if(att==1)
{
uchar i;
{
m=m/10;
}
a=m+a;
n++;
key=28;
}
}
else
{
if(att==1)
{
uchar i;
b=b*10+key;
for(i=7;i>0;i--)
{
xx[i]=xx[i-1];
}
xx[0]=vie_a[key];
key=18;
}
else
{
uchar i;
double m;
for(i=7;i>0;i--)
单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。
主控芯片选取STC89C52RC芯片,因其具有良好的性能及稳定性,价格便宜应用方便。
晶振选取11.0592MHz,晶振旁电容选取20pF。
采用按键复位电路,电阻分别选取100Ω和10K,电容选取10μF。
以下为单片机最小系统硬件电路图。
for(j=0; j<4; j++)
{
P1 = Buffer[j];
/*以下三个_nop_();作用为让P1口的状态稳定*/
delay();
temp = 0x01;
for(i=0; i<4; i++)
{
if(!(P1 & temp))
{
return (i+j*4);
}
temp <<= 1;
}
}
}
4.2移位程序及结果计算代码设计
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
void delay()
{
int i,j;
for(i=0; i<=10; i++)
for(j=0; j<=2; j++)
;
}
4.4主程序设计
主程序既把以上各子程序串连成一个整体,使整个程序循环运行。而在以上程序中也已经加入了个程序之间的连接点,首先进入程序后就立即进入显示子程序,而显示子程序内又调用键盘扫描子程序,若有键按下,则会跳转到移位子程序和结果计算子程序进行相应的处理。通过计算或移位后,数组内的值发生改变,显示的值也会同时发生改变。之后再进行键盘扫描,如此反复运行,就构成了程序的整体。
要进行数据的计算就必须先进行数据的输入,也就必须确定按键输入的数值是什么,这就需要对键盘进行扫描,从而确定究竟是哪个键按下。
以下为键盘扫描子程序的程序清单。
uchar Keyscan(void)
{
uchar i,j, temp, Buffer[4] = {0xef, 0xdf, 0xbf, 0x7f};
以下为键盘接口电路的硬件电路图
键盘接口电路
实物图:
扩展键接口电路:
3.3数码管显示电路
采用8位数码管对计算数据和结果的显示(实验时只用到了4位),这里选取共阴数码管,利用74LS244N对数码管进行驱动,为了节省I/O资源,采取动态显示的方法来显示计算数据及结果。
P0口输出显示值,
P2.0~P2.7(实际操作用到P2.0-P2.3)用来作为位选端,控制哪几位数码管进行显示。