单片机计算器的课程设计

合集下载

51单片机计算器课程设计

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简易计算器

单片机课程设计——基于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单片机简易计算器课程设计报告
基于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 家族中的一员,内置仿真程序,完全取代传统的硬件仿真器和编程器。

单片机课程设计-计算器

单片机课程设计-计算器

未来发展方向
智能化:引入人工 智能技术,实现语 音识别、图像识别 等功能
便携化:设计更小、 更轻、更薄的计算 器,方便携带和使 用
网络化:实现计算 器与互联网的连接 ,实现远程控制和 数据传输
环保化:采用环保 材料和节能设计, 降低能耗和污染
感谢您的观看
汇报人:
计算器模式:支持科学计算器模式和普 通计算器模式
错误提示:当
体积小:单片机计算器体积小,便于携带和使用 功耗低:单片机计算器功耗低,可以长时间使用 功能强大:单片机计算器功能强大,可以进行各种复杂的计算 可编程:单片机计算器可编程,可以根据需要进行功能扩展和修改
显示模块
液晶显示屏:用 于显示计算结果 和操作提示
驱动电路:控制 液晶显示屏的显 示效果
接口电路:连接 液晶显示屏与单 片机
背光控制:调节 液晶显示屏的亮 度和对比度
输入模块
键盘输入:通过键盘输入数字 和运算符号
液晶显示:显示输入结果和操 作提示
电源模块:提供稳定的电源供 应
复位模块:用于系统复位和初 始化
弦等
算法设计:采 用模块化设计, 每个功能模块 对应一个算法
算法实现:使 用C语言编写算 法,实现计算
器功能
测试与调试:编 写测试程序,对 算法进行测试和 调试,确保算法 正确性和稳定性
中断服务程序
功能:处理突发事件,如按键、定时器等 结构:包括中断请求、中断响应、中断处理、中断返回等步骤 特点:速度快、实时性强、效率高 应用:广泛应用于各种单片机系统中,如计算器、遥控器等
存储模块
存储容量:根据计算器功能 需求选择合适的存储容量
存储芯片:用于存储计算器 程序和数据
存储方式:采用静态存储或 动态存储方式

单片机课程设计——计算器

单片机课程设计——计算器

单片机综合课程设计——计算器一、实验目的1、学习使用单片机内部的I/O功能。

2、熟悉I/O与键盘矩阵和数码管的连接。

3、熟练掌握单片机I/O的编程。

二、实验分工三、功能实现1、采用键盘按键输入,数码管显示的模式。

2、实现计算器两位数以内的基本“+,-,*,/”运算功能。

3、扩展实现了计算器的乘方、阶乘、开平方根功能。

4、实现了计算器的退格功能,可以在运算过程中更改操作数,不影响运算继续进行。

5、数码管操作数显示两位以内,结果显示在四位数以内。

6、键盘各功能键分布如下:1 2 3 + or x a4 5 6 - or n!7 8 9 * orbackspace reset = /由于时间紧张,未来得及实现功能键的复用,只能将扩展功能与基本功能分开,用两个程序实现。

7、具体操作:开始运行程序后,数码管无显示,等待键盘输入。

通过定时中断,定时扫描按键。

有按键按下时,判断为1~9数字键,则显示在数码管上。

按下运算功能键屏幕清零,等待下一个操作数输入。

按下“=”号后,得出计算结果,结果显示于数码管上。

在操作数输入过程中,按下backspace,则数码管显示去掉最后一位数字,继续输入,不影响运算的进行。

按下“reset”,则回到初始状态,数码管显示和运算结果被清除,等待输入新的表达式。

四、实验原理1、通过MSP430 端口控制TM1638 芯片实现读取键盘状态(输入)和控制LED 数码管显示(输出)的功能。

2、键盘:键盘中A-F 分别对应KS1-KS6。

一旦有按键按下,TM1638 中相关的寄存器的值就会改变。

*注意:键盘用坐标形式表示,空白位表示本开发板暂未用到TM1638 最多可以读4个字节,不允许多读。

读数据字节只能按顺序从BYTE1-BYTE4 读取,不可跨字节读。

组合键只能是同一个KS,不同的K 引脚才能做组合键;同一个K 与不同的KS 引脚不可以做成组合键使用。

3、数码管:上图给出一个共阴数码管的连接示意图,如果让该数码管显示“0”,那你需要在GRID1 为低电平的时候让SEG1,SEG2,SEG3,SEG4,SEG5,SEG6 为高电平,SEG7 为低电平,即在00H 地址单元里面写数据3FH 就可以让数码管显示“0”。

单片机计算器的课程设计报告

单片机计算器的课程设计报告

目录一、设计任务和性能指标 (1)1.1设计任务 (2)1.2性能指标 (2)二、设计方案 (2)3345566772020202021 参考文献 (21)附录1、系统硬件电路图 (22)附录2、硬件实物图 (23)附录3、器件清单 (24)一、设计任务和性能指标1.1设计任务自制一个单片机最小系统,包括复位电路,采用外部小键盘输入数据,能够实现加法、乘法及一个科学计算,计算结果显示在四位一体的数码管上;要求用Protel 画出系统的电路原理图要求以最少组件,实现系统设计所要求键盘电路采用44矩阵键盘电路;显示模块采用4枚共阳极数码管和74ls273锁存芯片构成等器件构成;整个单片机的接口电路:P0用于显示输出;P1用于键扫描输入;P2用于数码管位选控制;P3用于键盘扩展部分运算符输入;三.系统硬件设计3.1单片机最小系统单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路;主控芯片选取STC89C52RC芯片,因其具有良好的性能及稳定性,价格便宜应用方便;晶振选取11.0592MHz,晶振旁电容选取20pF;采用按键复位电路,电阻分别选取100Ω和10K,电容选取10μF;以下为单片机最小系统硬件电路图;单片机最小系统硬件电路3.2键盘接口电路计算器所需按键有:数字键:’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’0’功能键:’+’, ’-‘ , ’’, ’/ ’ , ’ = ’, ’ C 清零’扩展键:“log”,“ln”,“x^2”“小数点”,“开方”共计25个按键,采用44矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的8个公共端分别接P1.0~P1.7,这样扫描P1口就可以完成对矩阵键盘的扫描,通过对16个按键进行编码,从而得到键盘的口地址,对比P1口德扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘的功能;以下为键盘接口电路的硬件电路图键盘接口电路实物图:扩展键接口电路:3.3数码管显示电路采用8位数码管对计算数据和结果的显示实验时只用到了4位,这里选取共阴数码管,利用74LS244N对数码管进行驱动,为了节省I/O资源,采取动态显示的方法来显示计算数据及结果;P0口输出显示值,P2.0~P2.7实际操作用到P2.0-P2.3用来作为位选端,控制哪几位数码管进行显示;以下为数码显示电路的硬件电路图74LS244N接口电路:3.4按键监视电路按键监视电路就是在按键时,发出声音提醒,以确保输入数字有效;这里就采用5V蜂鸣器作为示音设备实际操作用发光二极管代替;用p3.7口输出信号;以下为报警电路硬件电路图按键监视电路图系统整体硬件电路图见附录一四、系统软件设计4.1键盘扫描子程序设计要进行数据的计算就必须先进行数据的输入,也就必须确定按键输入的数值是什么,这就需要对键盘进行扫描,从而确定究竟是哪个键按下;以下为键盘扫描子程序的程序清单;uchar Keyscanvoid{uchar i,j, temp, Buffer4 = {0xef, 0xdf, 0xbf, 0x7f};forj=0; j<4; j++{P1 = Bufferj;/以下三个_nop_;作用为让P1 口的状态稳定/delay;temp = 0x01;fori=0; i<4; i++{ifP1 & temp{return i+j4;}temp <<= 1;}}}4.2移位程序及结果计算代码设计输入数据要存储在一四位数组内,而我们键入的值是数据的高位,后键入的值是低位,这样我们就需要在输入低位数值时将高位数值从数组的低位移向数组的高位,这就是编写移位子程序的目的;对于结果计算子程序,包含加、减、乘、除四种运算;以加法运算为例,各种运算各有其标志位来代表计算类型,当加法标志位add=1是,就将输入的两个数据按照加法进行计算;首先将数组内的数按照对应的位关系,将其转化为一个十进制数,这样我们就得到了加速和被加数这样俩个十进制数,从而我们就可以简单的将两个数进行相加,结果就是我们所求的数值;但这个数值不能直接显示到数码管上,我们还要对其进行处理,使其变为对应进位的四个数存入数组内,以便显示;既通过对结果数值分别除以1000、100、10和对10取余,得到我们想要的四个数,送显示子程序显示;其}延时程序:void Delay_1msuint i//1ms延时{uchar x,j;forj=0;j<i;j++forx=0;x<=148;x++;}void delay{int i,j;fori=0; i<=10; i++forj=0; j<=2; j++;}4.4主程序设计,; sbit cl=P3^1;//求lnsbit cl0=P3^2;//开方sbit cl1=P3^3;//求logsbit cl2=P3^4;//求e的x次幂uchar flo10={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xef,0xef};uchar zz8={0x77,0x3f,0x77,0x77,0x79};uchar Disbuf8={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchar yy8={0x3f,0,0};float a=0,b=0,c;uchar L=1;uchar cal_a=0,dcounter=0;void mainvoid{uchar singlp_a=1,n=1;uchar key=18;uchar all_m=0,ent_a=0,att=1;signed long s,r;TMOD=0x01;TH0=65536-2000/256;TL0=65536-2000%256;EA=1;cal_a=15;//开方key=15;}ifcl1==0{Speak_a;cal_a=16;//求以十为底对数key=15;}ifcl2==0{Speak_a;cal_a=17;//求e的x次幂key=15;}ifcl3==0{att=0;xx0=xx0+0x80;}}ifall_m==0{ifent_a==0{uchar i;ent_a=1;fori=0;i<=7;i++{xxi=0;}}else{}ifatt==1{uchar i;a=a10+key;fori=7;i>0;i--{xxi=xxi-1;}}else{ifatt==1{uchar i;b=b10+key;fori=7;i>0;i--{xxi=xxi-1;}xx0=vie_akey;key=18;}else{uchar i;double m;fori=7;i>0;i--{{xxi=xxui;}all_m=1;key=18;att=1;n=1;}ifkey==14{uchar i;key=18;ent_a=0;fori=0;i<=7;i++{xxi=yyi;}a=0;b=0;xx0=0x3f;}ifc>=0.0001{r=c;s=10000c-r;n=0;xxn=vie_as%10;ifs%10=0{}ifc>=0.001{r=c;s=1000c-r;xxn=vie_as%10;ifn==0&&s%10==0{}else{}ifc>=1{s=c;xxn=flos%10;n++;ifc>=10{s=c/10;xxn=vie_as%10;ifc>=100{s=c/100;ifn>=8{uchar i;fori=0;i<=7;i++{xxi=xxi+1;}n++;}ifc>=10000{s=c/10000;ifn>=8{uchar i;fori=0;i<=7;i++{xxi=xxi+1;}xxn-1=vie_as%10;}else{xxn=vie_as%10;n++;}ifc>=100000{xxi=xxi+1;}xxn-1=vie_as%10;}else{xxn=vie_as%10;n++;}ifc>=10000000{s=c/10000000;ifn>=8{uchar i;fori=0;i<=7;i++{xxi=xxi+1;}else{xxn=0xbf;}}}}}}}}void result_avoid{switchcal_a{case 0:c=a;break;case 10:c=a+b;break;case 11:ifa<b{}}void Delay_1msuint i//1ms延时{uchar x,j;forj=0;j<i;j++forx=0;x<=148;x++;}void delay{int i,j;fori=0; i<=10; i++forj=0; j<=2; j++;}TH0=65536-2000/256;TL0=65536-2000%256;P2=Disbufdcounter;len=dcounter;P0=xxlen;dcounter+=1;ifdcounter==8{dcounter=0;}void Speak_avoid{uchar i;fori=0;i<=20;i++{spp=1;delay;delay;spp=0;delay;,;,加法运算:四位加法运算,和值不超过9999,若超过上限,则显示错误提示ERROR;减法运算:四位减法运算,若结果为负,对其取绝对值;乘法运算:积不超过9999的乘法运算,若超出上限,显示错误提示Error;除法运算:整数除法,既计算结果为整数,若除数为零,则显示错误提示Error;通过对实际性能的分析,可以得到本次设计满足设计的要求;六、心得体会通过本次课程设计我真正的自己完成了对给定要求系统的硬件设计、电路设计、电路板设计、软件设计以及对成品的调试过程;从整个过程中学习到了很多方面的知识,了解到以往学习中自己知识在某方面的不足之处,是对以往学习科目的一种贯穿和承接,从而能更好的认识和学习,也对将来从事工作大有裨益;本次实验过程中,我切实体验到了,认真对待每一个细小零件的重要性;对于实验室提供的零件要具有检错能力;我做的是计算器,实验中换取了4个键盘,最后才得到正确的结果显示;此外从本次试验中我学会到了,焊接电路布局的重要性,以及在布线时,对线路的长度要有一定的冗余,以提供纠错方便;还有最重要的一点是,要学会使用万用表对电路进行检测,查出问题;从本次课设中我也看到了自身的很多不足之处,对知识的掌握不够扎实,有一知半解的现象;有时做事不够稳定,过于毛躁,不能平心静气的去分析所遇到的问题和错误;这在以后的工作和生活中是不可取的,通过对自身问题的认识与改正相附录1 系统硬件电路图附录2 硬件实物图附录3、器件清单。

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

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

基于51单片机简易计算器课程设计报告引言:计算器是现代社会中常见的电子设备之一,它能够帮助人们进行各种数学运算,提高计算效率。

本文将介绍基于51单片机的简易计算器的设计过程及实现方法。

一、设计目标本次设计的目标是实现一个简易计算器,能够进行基本的加减乘除运算,并能够显示计算结果。

通过该设计,旨在加深学生对51单片机的理解,培养其实际操作能力。

二、硬件设计1. 电源模块:采用稳压电源模块,提供稳定的电压给单片机及其他电路模块。

2. 单片机模块:采用51单片机,作为计算器的核心控制模块,负责接收按键输入、进行运算和显示结果。

3. 按键模块:设计合适的按键电路,用于输入数字和操作符。

4. 显示模块:采用数码管或液晶显示屏,显示计算结果。

5. 连接线:将各个模块连接起来,确保信号的传输畅通。

三、软件设计1. 初始化:设置单片机的工作模式、端口方向和初始状态。

2. 按键扫描:通过轮询的方式检测按键是否被按下,若有按键按下则进行相应的处理。

3. 输入处理:根据按键的顺序和操作符的位置进行输入的处理,将输入的数字和操作符分别存储在相应的变量中。

4. 运算处理:根据输入的操作符进行相应的运算,得出计算结果。

5. 结果显示:将计算结果通过数码管或液晶显示屏进行显示。

6. 清零处理:在计算结果显示完毕后,对相关的变量进行清零处理,以便进行下一次的计算。

四、功能实现1. 加法运算:通过按下"+"按键,输入第一个数字,再按下"="按键,输入第二个数字,最后按下"="按键,计算并显示结果。

2. 减法运算:通过按下"-"按键,输入第一个数字,再按下"="按键,输入第二个数字,最后按下"="按键,计算并显示结果。

3. 乘法运算:通过按下"*"按键,输入第一个数字,再按下"="按键,输入第二个数字,最后按下"="按键,计算并显示结果。

51单片机计算器课程设计

51单片机计算器课程设计

51单片机计算器课程设计1. 前言51单片机凭借其简单易用、功能强大、可靠性高等诸多特点,成为了广大电子爱好者及相关从业人员的首选芯片类型。

在本次课程设计中,我们将利用51单片机的优势,设计一个简单的计算器。

通过该计算器的实现,旨在提高学生对51单片机的掌握程度,并且让他们能够更加深入地理解单片机的中断、定时器、按键等重要功能模块的理解。

2. 计算器设计需求分析在现实生活中,计算器的实现方案有很多,例如典型的哈工大计算器,其实现原理基于双栈式逆波兰表达式求值等。

而在51单片机的实现方案中,为了简化设计难度,我们采用了两次按键计算器。

即用户需要通过按数字键,来输入计算器要计算的操作数,在输入完所有的操作数后,再按下其他的计算符键,计算器通过读取已经输入的操作数,并根据按下的计算符键,来执行计算器指定的计算操作。

3. 设计思路在上面的需求分析中,我们设计了一个基于两次按键进行计算的计算器。

如果直接采用传统数字键和计算符键按下即时执行的计算器交互方式,由于涉及到用户输入顺序的问题,将会使程序开发难度大大增加。

因此,我们可以利用中断机制,在用户按下数字键和计算符键时,分别将其存储到数组中。

等到用户完成所有操作数的输入后,再由程序根据存储在数组中的操作数,按照计算符键的指令,进行计算操作。

4. 硬件设计计算器硬件设计采用与按键通用的IO口输入输出方式。

在本例中,我们设置计算器的数字键和计算符键均为IO口输入。

鉴于本次设计旨在简化流程,我们将设计与单片机外接数码管连接的部分留给读者自行研究。

在本次课程设计中,我们将不涉及数字键和计算符键信号的去抖动处理。

5. 软件设计通过对计算器设计的需求分析、设计思路以及硬件设计的分析后,我们来设计计算器的软件部分。

5.1 端口初始化根据本次课程设计的需求,我们采用两个IO口输入来实现计算器的数字键和计算符键,因此需要对IO口进行初始化。

```void PortInit(){P1=0xff;/数字键P1.0—P1.7设定为输出P1=0xff;/计算符键P2.0—P2.7设定为输出}```5.2 按键检测监测按键是否按下需要使用到中断机制,在本次课程设计中采用P1口的0~7位和P3口的0~3位硬件中断。

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

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

基于51单片机简易计算器课程设计报告(一)基于51单片机简易计算器课程设计报告1. 介绍在本次课程设计中,我设计了一个基于51单片机的简易计算器。

本报告将会详细介绍该计算器的设计思路、功能实现以及课程设计中遇到的问题与解决方法。

2. 设计思路功能需求•支持基本的加、减、乘、除运算•具备数字输入与显示功能•具备清零和等于功能•具备连续计算功能硬件设计本计算器的硬件设计主要包括51单片机、LCD显示模块以及按键输入模块。

其中,51单片机负责控制计算器的逻辑,LCD显示模块用于显示计算结果和用户输入,按键输入模块用于接收用户的输入。

软件设计计算器的软件设计主要分为以下几个部分: - 初始化:初始化51单片机、LCD模块以及按键模块。

- 按键扫描:通过扫描按键模块,获取用户的输入。

- 数字输入与显示:根据用户输入,将数字显示在LCD上。

- 运算逻辑:根据用户输入的运算符和数字,执行相应的计算操作,并将结果显示在LCD上。

3. 功能实现初始化在初始化阶段,我们需要初始化51单片机的GPIO口、LCD模块以及按键模块。

具体的初始化代码如下:// 初始化51单片机的GPIO口// 初始化LCD模块// 初始化按键模块按键扫描为了获取用户的输入,我们需要通过按键模块进行扫描。

具体的按键扫描代码如下:// 扫描按键模块// 如果检测到按键按下,则进行相应的处理数字输入与显示当用户按下数字键时,我们将获取到的数字输入缓存起来,并将其显示在LCD上。

具体的数字输入与显示代码如下:// 获取按键输入的数字// 将数字添加到输入缓存// 将输入缓存显示在LCD上运算逻辑当用户按下运算符键时,我们需要根据输入的数字和运算符执行相应的计算操作,并将结果显示在LCD上。

具体的运算逻辑代码如下:// 获取运算符输入// 根据运算符和输入的数字执行相应的计算操作// 将计算结果显示在LCD上清零和等于功能为了提升用户体验,我们还可以添加清零和等于功能。

PIC单片机课程设计-计算器

PIC单片机课程设计-计算器
PIC单片机与存储模块的通信协议:SPI、I2C、UART等
PIC单片机与存储模块的数据传输速度:取决于通信协议的选择和硬件设计
PART FIVE
C语言:广泛应用于PIC单片机的编程,具有强大的功能
汇编语言:适用于对硬件操作要求较高的场合,但编写难度较大
BASIC语言:简单易学,适用于初学者
嵌入式C++:结合了C语言的高效性和C++的面向对象特性,适用于复杂良好,满足设计要求
优化评估标准:制定更合理的评估标准,如响应时间、准确性等
优化测试方法:采用更科学的测试方法,如黑盒测试、白盒测试等
优化软件:优化代码结构,减少冗余代码,提高代码执行效率
优化系统:优化系统配置,提高系统稳定性和可靠性
优化算法:采用更高效的算法,如快速傅里叶变换、快速排序等
PART SIX
测试方法:采用模拟实际使用环境的方法进行测试
测试指标:计算速度、准确性、稳定性、功耗等
测试环境:实验室环境,温度、湿度、光照等条件符合要求
测试工具:示波器、逻辑分析仪、万用表等
测试结果分析:对测试数据进行统计和分析,评估PIC单片机计算器的性能和稳定性
05
测试报告:编写测试报告,详细记录测试过程、结果和分析结论
06
测试方法:使用标准测试程序和测试工具进行测试
03
测试环境:确保测试环境稳定,避免干扰因素影响测试结果
04
测试目的:验证PIC单片机计算器的性能和稳定性
01
测试项目:计算速度、准确性、功耗、抗干扰能力等
02
测试项目:计算速度、准确性、稳定性等
测试方法:使用标准测试程序进行测试
测试结果:计算速度、准确性、稳定性等各项指标均达到预期要求

单片机简易计算器课程设计

单片机简易计算器课程设计

单片机简易计算器课程设计一、课程目标知识目标:1. 学生能理解单片机的基本结构及其工作原理,掌握简易计算器的硬件组成。

2. 学生能掌握C语言编程的基本语法,运用其编写简易计算器的程序代码。

3. 学生能了解简易计算器的工作流程,理解其功能模块的设计与实现。

技能目标:1. 学生能够运用所学知识,设计并搭建简易计算器的硬件电路。

2. 学生能够运用C语言编写简易计算器的程序,实现加、减、乘、除等基本运算功能。

3. 学生能够对计算器程序进行调试和优化,解决实际问题。

情感态度价值观目标:1. 学生通过课程学习,培养对单片机及编程的兴趣,激发探究精神。

2. 学生在团队协作中学会沟通、分享,培养合作意识,增强团队精神。

3. 学生能够认识到所学知识在生活中的应用,体会科技改变生活的意义。

课程性质:本课程为实践性较强的课程,要求学生动手操作,结合理论知识进行实际应用。

学生特点:学生已具备一定的电子基础和编程知识,对单片机有一定了解,但实践能力有待提高。

教学要求:注重理论与实践相结合,引导学生主动参与,培养其动手能力和解决问题的能力。

通过课程学习,使学生能够将所学知识运用到实际项目中,提高其综合素质。

二、教学内容1. 硬件知识:- 单片机基本结构:介绍51单片机的内部结构、工作原理及其引脚功能。

- 硬件电路设计:讲解简易计算器的硬件组成,包括按键、显示屏、电源等模块。

2. 软件编程:- C语言基础:复习C语言基本语法,包括变量、数据类型、运算符、控制结构等。

- 编程实践:根据简易计算器的功能需求,编写程序代码,实现基本运算功能。

3. 系统设计与实现:- 系统设计:分析简易计算器的功能模块,设计程序流程图。

- 系统实现:指导学生搭建硬件电路,编写程序代码,实现简易计算器的功能。

4. 调试与优化:- 调试方法:教授程序调试方法,培养学生解决问题的能力。

- 优化策略:讨论程序优化策略,提高计算器性能。

教学内容安排与进度:1. 第1周:单片机基本结构及硬件电路设计。

单片机原理课程设计-OLED电子计算器-图文

单片机原理课程设计-OLED电子计算器-图文

单片机原理课程设计-OLED电子计算器-图文一、设计目的本单片机原理课程设计旨在使用单片机和OLED显示屏设计一款简易电子计算器。

通过该设计,可以巩固和应用所学的单片机原理和电子计算器相关知识,提升学生对单片机的应用能力和创新能力。

二、设计原理该电子计算器设计的主要原理如下:1.输入处理:用户通过按键输入数字和运算符,并通过按下“=”键来结束输入。

2.运算处理:计算器根据用户输入的数字和运算符进行运算,并在OLED显示屏上显示计算结果。

3.结果显示:计算结果通过OLED显示屏进行显示。

三、设计步骤1.硬件设计:(1)主控芯片选择:选择合适的单片机作为主控芯片,例如用AT89S52(2)按键输入:设计按键输入电路,通过按键输入数字和运算符。

可以通过矩阵键盘或者独立按键来实现。

(3)OLED显示屏:连接OLED显示屏的VCC、GND、SCL和SDA引脚到单片机相应的引脚上。

2.软件设计:(1)初始化:对单片机进行初始化,包括设置按键输入引脚为输入模式,设置OLED显示屏相关引脚为输出模式,以及初始化OLED显示屏。

(2)输入处理:通过轮询按键输入的方式,获取用户输入的数字和运算符,并进行相应的处理。

(3)运算处理:根据用户输入的数字和运算符进行相应的运算处理,并得到计算结果。

(4)结果显示:将计算得到的结果通过OLED显示屏进行显示。

3.调试测试:(1)硬件连接测试:通过万用表等工具检查硬件电路连接是否正确。

(2)功能测试:测试按键输入的功能是否正常,以及计算结果是否正确显示。

四、设计要点1.按键编码:根据不同的按键,对其进行编码,便于在程序中识别。

2.输入处理:对用户输入的数字和运算符进行处理,保证输入正确并能够进行相应的运算。

3.运算处理:根据用户输入的数字和运算符进行相应的运算处理,并得到正确的结果。

4.结果显示:将计算得到的结果通过OLED显示屏进行显示,保证显示结果正确。

五、设计思考1.按键布局:合理布局按键,便于用户输入数字和运算符。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)用来作为位选端,控制哪几位数码管进行显示。
相关文档
最新文档