基于AT89C51单片机的并入串出乘法口诀的设计与仿真

news2025/4/22 10:03:58

点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/87779146?spm=1001.2014.3001.5503
在这里插入图片描述

源码获取

并入串出乘法口诀的设计与仿真系统设计
目录

第一章 概述 3
1.1课题研究及意义 3
1.2课题设计内容 4
第二章系统设计 5
2.1LCD显示模块 5
2.2运算模块 7
第三章 步进电机控制系统硬件部分 8
3.1 硬件设计说明 8
3.2时钟电路 8
3.3复位电路 9
3.4键盘电路 10
第四章 步进电机控制系统软件部分 11
4.1 软件设计说明 11
4.2主函数 12
4.3LCD显示函数 14
4.4算术函数流程图 14
第五章 系统调试 16
5.1建立程序 16
5.2使用proteus仿真电路如图所示 18
5.3 proteus与keil联调 19
六 总结 22
参考文献 24

          第一章  概述

1.1课题研究及意义
当今社会,应用单片机的产品已经渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的足迹。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等,这些都离不开单片机。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的工程师和科学家。科技越发达,智能化的东西就越多。学习单片机是社会发展的必然需求,也是电子爱好者和工程师的必修课。
早期的大部分电子仪器和设备,不是成本太高就是电路复杂,工程师要维护它要花很多精力和时间,想要更改它的功能更加困难。而单片机强大的功能应付这些将会使您得心应手,当然前提是您必需要去了解和学习它。
 从事单片机技术的研发工程师都属于高职位、高薪水岗位。据调查,截止2006年,我国的单片机从业人员250万人。随着社会的发展,单片机的从业人员将更为抢手。据不完全统计,到2010年,我国单片机设计从业人员将达400万人之多。培养单片机应用人才,特别是具有最新现代单片机技术和实践经验的工程师具有着重要的现实意义。
  如果说单片机和我们用的电脑的在本质上没有什么区别,你一定感到惊讶(一个芯片)。这并不奇怪。而事实就是这样理解的:单片机是一个简单却又是完整的计算机系统,麻雀虽小,五脏俱全,它被集成到一个芯片上。它内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可。但用它来做一些控制电器一类不是太复杂的工作足够了。我们现在用的全自动滚筒洗衣机,排烟罩VCD等等的家电里面都可以看到它的身影。它主要是作为控制部分的核心部件。
可以说单片机系统改变的大家的生活,使得我们的生活变得丰富多彩。计算器我相信大家都用过,它给大家带来了计算的方便和计算的快捷。是人们的日常生活中是比较常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算器。
本文基于对单片机AT89C51的理解和运用,结合MM74C922做一个并入串出乘法口诀的设计与仿真系统,实现乘法基本功能。采用LCD显示结果数据,熟悉掌握C语言进行软件编译,最后学习protues和keil软件对设计出的计算器进行仿真校对。这次的设计不能对小数进行计算,对于计算的范围也有规定。不能超出正134217728和负134217728.
1.2课题设计内容
本课程设计的主要任务是并入串出乘法口诀的设计与仿真系统
设计,即根据不同的按键要求,计算出正确的结果。并入串出乘法口诀的设计与仿真系统,对硬件电路与软件程序分别进行调试,并进行软硬件联调,要求状得调试成功的实物。

第二章 系统设计
2.1LCD显示模块
LED显示发光二极管是单片机应用系统中一个长用的设备输出,在系统里的主要功能就是显示输出数据和状态。LED最大的特点比较便宜,寿命长,对电压要求不高,可以实现多路等。这次毕业设计我选择的是LM044L。它采用标准14脚接口,其中:包括8根数据线(D0-D7),三根控制线(rs,rw,e)电源地,电源以及液晶驱动电压引脚(VSS,VDD,VEE),如图所示:
在这里插入图片描述

LM044L线路图
我们采用8 段数码管,其中位于显示器右下角的LED 作小数点用。LED 显示器有两种不同的形式:共阴极和共阳极。本次设计采用共阴极接法
在这里插入图片描述

8段数码显示管 LED共阴极接法
LED显示器由七段发光二极管组成,排列成8字形状,因此也称为七段LED显示器。简易计算器用到的数字0~9的共阴极字形代码如下表:
显示字 g f E d c b a 段码
0 0 1 1 1 1 1 1 3fh
1 0 0 0 0 1 1 0 06h
2 1 0 1 1 0 1 1 5bh
3 1 0 0 1 1 1 1 4fh
4 1 1 0 0 1 1 0 66h

5 1 1 0 1 1 0 1 6dh
6 1 1 1 1 1 0 1 7dh
7 0 0 0 0 1 1 1 07h
8 1 1 1 1 1 1 1 7fh
9 1 1 0 1 1 1 1 6fh

2.2运算模块
MCS-51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等计算机所需要的基本功能部件。如果按功能划分单片机,由以下功能部件组成,即微处理器(CPU),数据存储器(RAM),程序存储器(ROM/EPROM),并行I/O口,串行口,定时器/计数器,中断系统及特殊功能寄存器(SFR)。单片机是 必须靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,所以使得单片机的功能很强大很实用。尤其是特殊的一些功能,通过使用单片机编写的程序可以实现高智能、高效率以及高可靠性还有高安全性,这次采用单片机作为计算器的主要功能部件是正确的,它可以很快的实现运算功能。
运算模块包括键盘和显示屏组成。单片机通过按键来实现输入数据和操作方式的控制,在运算过程中,对所设的数据进行乘法运算时,要先确定选运算符*,则要判断结果是否会溢出,溢出则显示错误提示,没有溢出则显示运算结果,若是/,则要判断除数是否为零,为零时显示错误提示,不为零显示运算结果。

第三章 步进电机控制系统硬件部分
3.1 硬件设计说明

这次论文设计所用到的硬件有单片机AT89C51,芯片MM74C922,LM044L数码显示管,4×4的键盘,如图所示:
在这里插入图片描述

硬件说明图
3.2时钟电路
在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。根据硬件电路的不同,单片机的时钟连接方式可分为内部时钟方式和外部时钟方式。我们采用内部时钟方式。在内部方式时钟电路中,必须在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路, C1和C2取 30pF左右,晶振的频率取值范围1.2MHz~12MHz。根据实际情况,本设计采用12MHz作为系统的外部晶振,电容值取30pF。
3.3复位电路
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。无论是单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。所以,必须弄清楚MCS-51单片机复位的条件、复位电路和复位后的状态。
单片机复位的条件是:必须使RST/Vpd或RST引脚(9脚)加上持续两个机器周期(即24个振荡周期)的高电平。例如,若时钟频率为12MHz,每机器周期为1us,则只需2us以上时间的高电平。在RST引脚出现高电平后的第二个周期执行复位。单片机常见的复位电路有上电复位电路和按键复位电路。为了方便系统的硬件初始化,我们采用按键复位电路。
按键复位电路除具有上电复位功能外,若要复位,只需要按下S9键,在RST端产生一个复位高电平,如图所示。
在这里插入图片描述

时钟电路和复位电路连接图
3.4键盘电路
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,在矩阵式键盘电路中,行连接线占用4条I/O口线,列连接线占用4条I/O口线,共连接16个按键。行线连接的接口为输入口,用于输入按键的行位置信息,列线连接的接口为输出口,用于输出扫描电平。为了进一步节省单片机I/O口资源,我们在设计中使用了MM74C922芯片MM74C922的数据输出口与单片机的P2口相连,MM74C922的DA引脚经过一个非门连接到单片机的/INT0脚,当MM74C922检测到键盘输入时,DA产生高电平,与之相连的/INT0检测到低电平,给单片机一个中断,单片机从P2口的低四位读入键盘上按下的键的值。Mm74C922各引脚功能上章节以作介绍,这里不在做解释。

第四章步进电机控制系统软件部分

4.1 软件设计说明
在这次软件板块设计中,因为c语言具有灵活多变而且我对c语言相对比较熟悉故这次使用的是c语言对其编程。整个程序包括:
1.主函数还有相关的各类定义(宏定义,管脚定义)
2.计算运算模块函数(包括错误处理函数,溢出函数)
3.键值扫描函数
4.LCD显示函数

计算器的主要部分就如图表示,这次设计的主芯片是AT89C51。当输入模块有信号输入时会传送到显示模块中并在LCD灯上进行显示,同时传入单片机中,单片机识别并计算后输出在显示板块里。这样就成功完成了计算。
4.2主函数
利用微机控制台首先完成并行控制接口和液晶显示模块的初始化设置,液晶显示模块可以输出0界面。完成模块的初始化后,用并行控制模块扫描自定义的距阵键盘模块,根据扫描的结果通过并行控制接口将数据送到微机控制台,微机控制台将接收到的数据送到液晶显示模块进行实时显示。在数据传输显示的过程,应通过程序控制实时处理信息,显示包括输入数据,差错控制信息,运算结果的显示。实时处理自定义的控制键功能,并完成控制功能。具体操作流程见下图。

4.3LCD显示函数
LED显示器由七段发光二极管组成,排列成8字形状,因此也称为七段LED显示器。简易计算器用到的数字0~9的共阴极字形代码如下表
显示字 g f e d c b a 段码
0 0 1 1 1 1 1 1 3fh
1 0 0 0 0 1 1 0 06h
2 1 0 1 1 0 1 1 5bh
3 1 0 0 1 1 1 1 4fh
4 1 1 0 0 1 1 0 66h
5 1 1 0 1 1 0 1 6dh
6 1 1 1 1 1 0 1 7dh
7 0 0 0 0 1 1 1 07h
8 1 1 1 1 1 1 1 7fh
9 1 1 0 1 1 1 1 6fh
LCD显示代码图
在设计lcd显示的时候,应为要设计到lcd写数据还有lcd的清屏。在设计是比较复杂的,我先对他们进行定义,最后在lcd显示函数中把他们嵌到一起,这样就比较方便的,也是c语言的优点。
4.4算术函数流程图
首先初始化参数,送LED低位显示“0”,高位不显示。然后扫描键盘看是否有键输入,若有,读取键码。判断键码是数字键、清零键还是功能键,是数值键则送LED显示并保存数值,是清零键则做清零处理,是功能键则又判断是“=”还是运算键,若是“=”则计算最后结果并送LED显示,若是运算键则保存相对运算程序的首地址。
为了计算方便,我把超限部分的函数和错误函数一起调用在了一起详见附录(算数运算函数),如图所示。

第五章 系统调试
5.1建立程序
打开keil软件,选择菜单[文件新建文件]出现一个文件名为text1的源程序窗口,输入程序

在编译过程中,点击rebuild all target files,如果有错可以在信息窗口中显示出来,双击错误信息,可以在源程序中定位所在行。纠正错误后,再次编译直到没有错误。在编译之前,软件会自动将项目和程序存盘。在编译没有错误后,就可调试程序了。

5.2使用proteus仿真电路如图所示

5.3 proteus与keil联调
双击proteus图中单片机。

在这里插入图片描述

将keil软件中所编程序载入。单击运行按钮,结果如图

六 总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
回顾起此次单片机课程设计,我仍感概颇多,的确,从选题到定稿,从理论到实践,在接近四星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好…通过这次课程设计之后,一定把以前所学过的知识重新温故。

参考文献
1、何丽民,《单片机初级教程》,北京航空航天大学出版社;
2、沙占友,王彦朋,孟志永,《单片机外围电路设计》,电子工业出版社;
3、谢宜仁,《单片机实用技术问答》,人民邮电出版社;
4、张迎新 《单片机初级教程——单片机基础》,北京航空航天大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/520543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FE_Vue学习笔记 路由基本使用

1 路由的简介- router 路由【route】就是一组key-value的对应关系。 多个路由,需要经过路由器【router】的管理。 SPA (single page web application)应用 - 单页面web应用【一个index.html】 1)单页Web应用(single page web a…

Linux快照太有趣了!

1.首先介绍一下什么是Linux快照 VMware 的菜单栏中有虚拟机快照这个选项,形象来说快照就相当于一个备份文件,记录的是虚拟机运行到某一节点时的状态,在虚拟机的使用过程中如果发生了意外,比如系统崩溃或系统异常,此时…

python字典(一)——defaultdict的学习

一、前言 本页主要用来记录python字典的一些知识 二、Python中的defaultdict的详解 2.1defaultdict返回的默认值 defaultdict顾名思义默认字典,这个字典属于普通字典的一个子集,是对普通字典的改进 dcit的使用: 当访问字典里面不存在的key时会…

leetcode:相对名次(详解)

前言:内容包括-题目,代码实现,大致思路,代码解读 目录 题目: 代码实现: 大致思路: 代码解读: part 1:开辟返回数组 part 2:score数组的每个元素及其下标…

视觉大模型DINOv2:自我监督学习的新领域

如果你对自监督学习感兴趣,可能听说过Facebook人工智能的DINO(无标签知识蒸馏)。我们在以前的文章中也介绍过它。DINOv2不仅是一个新版本而且带来了新的改进,并为判别性自监督学习设定了更高的标准。当然公司的名字也从Facebook变为了Meta。 本文将介绍…

成功打破 GPT-4 上限,新版 Claude 横空出世!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 前 OpenAI 团队成员在离职后,创办了 Anthropic 公司。今年 3 月份的时候,该公司推出一款名为 Claude 的应用,试图与 ChatGPT 一争高下。 一个多月过去了…

分享Python采集77个css3代码,总有一款适合您

分享Python采集77个css3代码,总有一款适合您 Python采集的77个css3代码下载链接:https://pan.baidu.com/s/13EiUDXOAZvvKmF2KGrivzA?pwdubb2 提取码:ubb2 两款漂亮的bootstrap分页样式 纯CSS3用户卡片设计效果 4种炫酷CSS3 loading预加…

第六十章 Unity 发布Web平台

WebGL 是一种用于在 Web 浏览器中渲染图形的 API,基于 OpenGL ES 图形库的功能。WebGL 1.0 大致与 OpenGL ES 2.0 功能相匹配,而 WebGL 2.0 大致与 OpenGL ES 3.0 功能相匹配。WebGL 构建选项允许 Unity 将内容发布为 JavaScript 程序,而这些…

FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」(1)

大家好,我是晓星航。今天为大家带来的是面向对象编程相关的讲解!😀 文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Ngi…

ARM 处理器模式(二)

文章目录 ARM 处理器模式工作模式模式切换内核寄存器各个模式对应的内核寄存器 ARM 处理器模式 ARMv7-a 处理器共有 9 种工作模式 工作模式 User:用户模式,非特权模式,大部分程序运行的时候就处于此模式FIQ:快速中断模式&#x…

算法修炼之练气篇——练气二十二层

博主:命运之光 专栏:算法修炼之练气篇 前言:每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的…

Vue列表展示计数器【第二篇】

&#x1f331; 1、vue列表展示案例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>vueDemo02列表展示</title> </head> <body> <div id"xy"><!--原始展示方式…

2023最新CleanMyMac中文版系统清理优化工具

CleanMyMac中文版功能非常的强大&#xff0c;操作简单&#xff0c;使用起来高效快捷&#xff0c;软件自身拥有一个安全数据&#xff0c;且拥有一定的规格&#xff0c;CleanMyMac中文版能够确定软件能够正确选择和清理Mac垃圾文件&#xff0c;更加安全&#xff0c;可靠。一键快速…

thinkPhP6.0安装教程图解--PHP框架安装

ThinkPhP 6.0 安装 1.环境检查 首先&#xff0c;thinkphp6.0&#xff0c;要求php的环境是7.2.5及以上的&#xff0c;所以先检查自己的php环境是否符合要求。 在cmd命令窗口中输入php -v 或者没有配置环境变量的话&#xff0c;可以在php编辑器中输出php_info()或则PHP_VERSIO…

记录一次异常:feign异常--NoSuchBeanDefinitionException: No qualifying bean of type

1、完整报错 2023-06-29 16:17:28.127 WARN 3732 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyExcep…

JetCache 使用简单案例到源码解析读这一篇就够

背景 github.com/alibaba/jet… 一、使用方法&#xff1a; 1. 创建项目— 此处使用springboot项目 2. 引入starter <dependency> <groupId>com.alicp.jetcache</groupId> <artifactId>jetcache-starter-redis</artifactId><version>2…

Servlet3.0 新特性全解

Servlet3.0新特性全解 tomcat 7以上的版本都支持Servlet 3.0 Servlet 3.0 新增特性 注解支持&#xff1b;Servlet、Filter、Listener无需在web.xml中进行配置&#xff0c;可以通过对应注解进行配置&#xff1b;支持Web模块&#xff1b;Servlet异步处理&#xff1b;文件上传AP…

DEV SIT UAT PET SIM PRD PROD常见环境英文缩写含义

一、英文缩写 英文中文 DEV development开发 SIT System Integrate Test系统整合测试&#xff08;内测&#xff09; UAT User Acceptance Test用户验收测试 PET Performance Evaluation Test性能评估测试&#xff08;压测&#xff09; SIM simulation仿真 PRD/PROD produ…

我们花一个月调研了小红书种草的新机会和增长策略

分析师&#xff1a;Jane、彬超 编辑&#xff1a;yolo 出品&#xff1a;增长黑盒研究组 *本报告为增长黑盒独立研究系列&#xff0c; 与第三方不存在任何利益关系 随着618的临近&#xff0c;小红书再次成为了品牌重要的“营销战场”。面临着经济环境的不确定性&#xff0c;想必各…

数据结构_串

目录 1. 串的定义和实现 1.1 串的定义 1.2 串的存储结构 1.2.1 定长顺序存储表示 1.2.2 堆分配存储表示 1.2.3 块链存储表示 1.3 串的基本操作 2. 串的模式匹配 2.1 简单的模式匹配算法 2.2 串的模式匹配算法——KMP算法 2.2.1 字符串的前缀、后缀和部分匹配值 2.2…