4位数加法器课程设计 2.doc_第1页
4位数加法器课程设计 2.doc_第2页
4位数加法器课程设计 2.doc_第3页
4位数加法器课程设计 2.doc_第4页
4位数加法器课程设计 2.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第 15 页黄河科技学院课程设计(论文) 一、设计任务和要求1.1、任务描述: 1、系统通过44的矩阵键盘输入数字及运算符; 2、可以进行4位十进制数以内的加法运算,如果计算结果超过4位十进制数,则屏幕显示E; 3、可以进行加法以外的计算(乘、除、减); 4、创新功能。 1.2、任务要求: 1、理解任务书要求,明确分工,查找相关资料,制定系统方案; 2、论证系统设计方案,运用Proteus等软件绘制电路原理图; 3、根据硬件电路,确定算法,设计程序框图,编写程序代码; 4、误差分析与改进,完成设计报告。 二、方案论证 2.1、适用矩阵键盘控制作为输入电路,电路和软件稍微复杂,但是相比用独立按键,可节省I/O口,其原理图如2.1所示:图2.1 矩阵键盘控制电路 2.2、采用LED数码管显示,数码管图如图2.2.1所示:图2.2.1 LED数码管三、电路基本单元电路设计 本电路的总体的工作框图如下所示:LED数码管显示矩阵键盘控制电路AT89C51主控制电路 下图则是加法器电路的原理图: 3.1、主控模块该设计的核心控制电路是 AT89C52单片机。AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。其引脚图以及工作原理如下:AT89C51芯片模型3.1.1、主要功能特性(1) 4K字节可编程闪烁存储器。 (2) 32个双向I/O口;1288位内部RAM 。(3) 2个16位可编程定时/计数器中断,时钟频率0-24MHz。 (4) 可编程串行通道。 (5) 5个中断源。 (6) 2个读写中断口线。 (7) 低功耗的闲置和掉电模式。(8) 片内振荡器和时钟电路。3.1.2、AT89C51的引脚介绍 89C51单片机多采用40只引脚的双列直插封装(DIP)方式,下面分 别简单介绍。 (1)电源引脚 电源引脚接入单片机的工作电源。 Vcc(40引脚):+5V电源。 GND(20引脚):接地。 (2)时钟引脚 XTAL1(19引脚):片内振荡器反相放大器和时钟发生器电路的输入端。 XTAL2(20引脚):片内振荡器反相放大器的输出端。 电源接入方式 (3)复位RST(9引脚) 在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。 (4)/Vpp(31引脚) 为外部程序存储器访问允许控制端。当它为高电平时,单片机读片内程序存储器,在PC值超过0FFFH后将自动转向外部程序存储器。当它为低电平时,只限定在外部程序存储器,地址为0000HFFFFH。Vpp为该引脚的第二功能,为编程电压输入端。 (5)ALE/(30引脚) ALE为低八位地址锁存允许信号。在系统扩展时,ALE的负跳沿江P0口发出的第八位地址锁存在外接的地址锁存器,然后再作为数据端口。为该引脚的第二功能,在对片外存储器编程时,此引脚为编程脉冲输入端。 (6)(29引脚) 片外程序存储器的读选通信号。在单片机读片外程序存储器时,此引脚输出脉冲的负跳沿作为读片外程序存储器的选通信号。 (7) pin39-pin32为P0.0-P0.7输入输出脚,称为P0口。P0是一个8位漏极开路型双向I/O口。内部不带上拉电阻,当外接上拉电阻时,P0口能以吸收电流的方式驱动八个LSTTL负载电路。通常在使用时外接上拉电阻,用来驱动多个数码管。 在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,不需要外接上拉电阻。 (8)Pin1-Pin8为P1.0-P1.7输入输出脚,称为P1口,是一个带内部上拉电阻的8位双向I/0口。P1口能驱动4个LSTTL负载。 (9)Pin21-Pin28为P2.0-P2.7输入输出脚,称为P2口。 P2口是一个带内部上拉电阻的8位双向I/O口,P2口能驱动4个LSTTL负载。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收高8位地址和控制信息。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。 (10)Pin10-Pin17为P3.0-P3.7输入输出脚,称为P3口。 P3口是一个带内部上拉电阻的8位双向I/O口,P2口能驱动4个LSTTL负载,这8个引脚还用于专门的第二功能。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接控制信息。3.2、显示模块该电路的显示模块采用共阴极数码管显示。共阴极数码管的位选采用低电平,而段选采用高电平控制。LED数码管十六位进数的字形码如表3.2.1所示,而显示模块控制电路如3.2.2所示:字型共阳极代码共阴极代码字型共阳极代码共阴极代码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3B0H4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF8EH71H7F8H07H灭FFH00H880H7FH表3.2.1 LED数码管十六位进数的字形码图3.2.2 显示模块控制电路 3.3、操作模块该操作模块的实际操作如下图所示:0514236=7CX98/*-+ 图3.3.1 矩阵键盘实际操作图四、程序设计 本作品实现的功能全部是由C语言程序编写实现。通过程序的编写使简单的器件实现丰富的功能。如下所示是主程序流程图显示程序程序初始化开始按键扫描程序结束 主程序流程图五、系统调试及结果 本设计应用Proteus6及KEIL51软件,首先根据自己设计的电路图用Proteus6软件画出电路模型,关于这个软件的使用通过查一些资料和自己的摸索学习;然后我们用KEIL51软件对所编写的程序进行编译、链接,如果没有错误和警告便 可生成程序的hex文件,将此文件加到电路图上使软硬件结合运行。下图为运行 状况图,为首先输入10+990,再加上9999,最后每个数码管上为E,因为为了满足实验要求,当结果超过了9999后显示E.刚开始为0输入10再加上990得到了1000最后显示E六、设计个人总结经过一周的努力终于设计成功,LED数码管的显示结果与理想所保持的一样。在这一周的设计中,完成这个简易的计算器,虽然精度不高,但是对于一般的计算,是绰绰有余。起初,电路的设计对我们这些人来说,是一大障碍,通过查找资料,发现一个简易的计算器,似乎没有那么难,只要有心,定能成功。后来数码管的显示一直困扰着我,但随着慢慢地了解它,在相关资料帮助之下,终于明白如何用C语言写程序去控制数码管的显示。加之以前学过一些计算机方面的C语言,那并不是针对单片机C语言的,虽有相似之处,但差之甚大,如今已经了逐步地了解,相信若坚持下去,定能学好这一门课程。通过此次设计课程,使我受益匪浅。终于更深刻地体会到实践是唯一的真理。 致 谢 通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为自己的东西。这个设计过程中,我们通过查阅资料请教老师同学,完成了简易计算器的设计,使之成为一个更加适用,功能完备的属于自己的一个系统。设计结果能够符合题意,成功完成了此次设计要求,我们不只在乎这一结果,更加在乎的,是这个过程。这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作,在此,请允许我再次感谢我的老师和同学! 参考文献【1】 何立民,单片机系统设计【M】.北京:北京航天大学出版社,1993.【2】 楼然笛,单片机开发【M】.北京:人民邮电出版社,1994.【3】 付家才,单片机控制工程实践技术【M】.北京:化学工业出版社 ,2004.3.【4】 李光才,单片机课程设计实力指导【M】.北京:北京航空航天大学出版社 ,2004.【5】 朱定华,单片机原理机接口技术实验【M】.北京:北方交通大学出版社,2002.11.【6】 杨居义,单片机课程设计指导【M】.北京:清华大学出版社,2009.9.【7】 吴金戎,8051单片机实践与应用 北京:清华大学出版社,2003.8【8】 夏路易,单片机技术基础教程与实践 电子工业出版社2008.1【9】 张毅刚,单片机原理及应用 高等教育出版社 2012.11【10】 蒋辉平,基于Proteus的单片机系统设计与仿真实例 机械工业出版社 2007.7【11】 皮大能,单片机课程设计指导书 北京理工大学出版社2012.7 附 录程序:通过用单片机MCU与矩阵及数码管的相互连接构成一个简易的数计算器-可以进行加减乘除#include #define uchar unsigned charlong First,End; /定义全局变量/此表为 LED 的字模, 共阴数码管 0-9 - unsigned char code Disp_Tab = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /段码控制/此表为8个数码管位选控制, 共阴数码管 1-8个 - unsigned char code dispbit6=0xfe,0xfd,0xfb,0xf7,0xef,0xdf; /位选控制 查表的方法控制void delay(int n) /*延时程序*/int i,j; for(i=0;in;i+) for(j=0;j=y) z=x-y; else z=y-x; z=z+100000; /*最高位用1表示负数*/ return(z); long mul(long x,long y) /*乘法程序*/ long z; z=x*y; return(z); long div(long x,long y) /*除法程序*/ long z; z=x/y; return(z); uchar kbscan(void) /*键盘扫描程序*/ uchar sccode; P0=0xf0; if(P0&0xf0)!=0xf0) /发全0行扫描码,列线输入 delay(222); /延时去抖 if(P0&0xf0)!=0xf0) sccode=0xfe; /逐行扫描初值 while(sccode&0x10)!=0) P0=sccode; /输出行扫描码 if(P0&0xf0)!=0xf0) return(P0); /如果检测到有键按下,返回键值 else sccode=(sccode=0;i-) P2=dispbiti; /位选输出 P1=Disp_Tabnumi; /数据输出 delay(2); /此延时必不可少? void main(void) /*主程序*/ int k,n; uchar f,g,key,gn1,i; n=0; f=0; /P1=0; /初始时指示灯灭 while(1) /不断查询是否有按键动作 key=kbscan(); /获取返回键值 if(key!=0) switch(key) /译码,将对应按键返回值转换为相应数值 case 0xee: k=0;break;/0 case 0xde: k=1;break;/1 case 0xbe: k=2;break;/2 case 0x7e: k=3;break;/3 case 0xed: k=4;break;/4 case 0xdd: k=5;break;/5 case 0xbd: k=6;break;/6 case 0x7d: k=7;break;/7 case 0xeb: k=8;break;/8 case 0xdb: k=9;break;/9 case 0xbb: k=10;First=0;End=0;f=0;break;/清除 case 0x7b: k=11;break;/等于 case 0xe7: k=12;f=1;break;/加 case 0xd7: k=13;f=2;break;/减 case 0xb7: k=14;f=3;break;/乘 case 0x77: k=15;f=4;break;/除 /P1=1; delay(280); /有按键时,指示灯的显示时间 /P1=0; /按键指示灭 if(k1) /输入为多位数时,将它转化为10进制的多位数 First=First*10+k; else /如果没有功能键按下 n+; gn1=1; /定义标志,当下一次为功能键时,停止数据输入 if(n=1) First=k; else if(n1) First=First*10+k; End=First; /将第一个数保存 else if(k11) /为功能键时(+-*/) if(gn1=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论