点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/87779146?spm=1001.2014.3001.5503
基于AT89C51单片机的并入串出乘法口诀的设计与仿真-LMLPHP

源码获取

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

第一章 概述 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),如图所示:
基于AT89C51单片机的并入串出乘法口诀的设计与仿真-LMLPHP

LM044L线路图
我们采用8 段数码管,其中位于显示器右下角的LED 作小数点用。LED 显示器有两种不同的形式:共阴极和共阳极。本次设计采用共阴极接法
基于AT89C51单片机的并入串出乘法口诀的设计与仿真-LMLPHP

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的键盘,如图所示:
基于AT89C51单片机的并入串出乘法口诀的设计与仿真-LMLPHP

硬件说明图
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端产生一个复位高电平,如图所示。
基于AT89C51单片机的并入串出乘法口诀的设计与仿真-LMLPHP

时钟电路和复位电路连接图
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图中单片机。

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

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

六 总结

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

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

05-13 17:43