单片机课程设计-电子计算器设计.doc_第1页
单片机课程设计-电子计算器设计.doc_第2页
单片机课程设计-电子计算器设计.doc_第3页
单片机课程设计-电子计算器设计.doc_第4页
单片机课程设计-电子计算器设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

2010级单片机课程设计 单片机课程设计报告书课题名称电子计算器设计姓 名学 号院、系、部电气工程系专 业电气工程及其自动化指导教师2013年7月10日电子计算器设计一、设计目的1、了解简易计算器设计的工作原理。2、进一步熟悉led显示电路和键盘扫描电路的工作原理和编程方法。3、掌握延时计算的基本方法。二、设计要求1、设计一个带加法和减法功能的计算器。2、从键盘读入参加运算的数据,计算出结果,并显示到数码管上。3、要求做出实物。三、硬件电路根据功能和指标要求,本系统选用89c52 单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。具体设计考虑如下:1、由于要设计的是简单的计算器,可以进行加减运算,对数字的大小范围要求不高,故我们采用可以进行四位数字的运算,选用8 个led 数码管显示数据和结果。2、另外键盘包括数字键(09)、符号键(+、-)、清除键和等号键,故只需要16 个按键即可。系统框图如图3-1所示。 图3-1 系统框图3.1单片机最小系统介绍3.1.1 stc89c52介绍89c52共有四个八位的并行双向口,即有32根输入输出口线。各口的每一位均由锁存器、输出驱动器和输入缓冲器组成。 vcc(40引脚):电源电压vss(20引脚):接地 图3-2stc89c52引脚图p0端口(p0.0p0.7,3932引脚):p0口是一个漏极开路的8位双向i/o口。作为输出端口,每个引脚能驱动8个ttl负载,对端口p0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,p0口也可以提供低8位地址和8位数据的复用总线。p0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。p1端口(p1.0p1.7,18引脚):p1口是一个带内部上拉电阻的8位双向i/o口。p1的输出缓冲器可驱动4个ttl输入。p1口特点是输出锁存器,输出时没有条件。输入缓冲,输入时有条件,即需要先将该口设为输入状态,先输出1。 p3口为准双向口。可以字节访问,也可以位访问。p3.0-rxd,串行输入口。p3.1-txd,串行输出口。p3.2-int0,外部中断0的请求。p3.3-int1,外部中断1的请求。p3.4-t0,定时器/计数器0外部计数脉冲。p3.5-t1,定时器/计数器,1外部计数脉冲。p3.6-wr,外部数据存储器写选通。p3.7-rd,外部数据存储器读选通。rst(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。ale(30引脚):地址锁存控制信号(ale)是访问外部程序存储器时,锁存低8位地址的输出脉冲。xtal1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。xtal2(18引脚):振荡器反相放大器的输入端。stc89c52引脚图如图3-2所示。3.1.2 晶振电路晶振结合单片机内部的电路,产生单片机所必须的时钟频率,为单片机指令的执行提供了基础。晶振的提供的时钟频率越高,单片机的运行速度也就越快。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定、精确的单频振荡。晶振电路如图3-3所示。 图3-3晶振电路3.1.3复位电路单片机在启动时或者在“死机”情况下需要复位,以使cpu及系统各部件处于确定的初始状态,并从初态开始工作。当系统处于正常工作状态时,且振荡器稳定后,如果rst引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则cpu就可以响应并将系统复位。我们设计的是手动的按钮复位方式,手动按钮复位需要人为在复位输入端rst上加入高电平,当按下复位按钮时,系统就恢复到最初的状态。复位电路如图3-8所示。 图3-8复位电路3.2按键电路我们引入了矩阵键盘的应用,采用四条i/o 线作为行线,四条i/o 线作为列线组成键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为44个。这种行列式键盘结构能有效地提高单片机系统中i/o 口的利用率。矩阵键盘的工作原理:计算器的键盘布局如图3-3所示,一般有16 个键组成,在单片机中正好可以用一个p3口实现16 个按键功能。 图3-4矩阵键盘布局图 由图3-4矩阵键盘内部电路图可以知道,当无按键闭合时,p30-p33与p34-p37 之间开路。当有键闭合时,与闭合键相连的两条i/o 口线之间短路。判断有无按键按下的方法是:第一步,置列线p30-p33为输入状态,从行线p34-p37输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线p30-p33读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。 图3-5矩阵键盘内部电路图3.3 led显示电路3.3.1 74hc573 (1) 内部结构(2) 引脚13态输出使能输入 2-9数据输入12-193态锁存输出 11锁存使能输入10接地 20电源电压(3) 内部原理 图3-6 内部原理图(4) 真值表dn le oe on h h l h l h l l x l l qo x x h z 这个就是真值表,表示这个芯片在输入和其它的情况下的输出情况。3.3.2 输出电路(1) 背景数码管也称led数码管,晶美、光电、不同行业人士对数码管的称呼不一样,其实都是同样的产品。按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(com)的数码管,共阳数码管在应用时应将公共极com接到+5v,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(com)的数码管,共阴数码管在应用时应将公共极com接到地线gnd上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮led数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管根据led的接法不同分为共阴和共阳两类,了解led的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。下图是共阴极数码管的内部电路和led数码管内部引脚图片 led数码管引脚定义 10引脚的led数码管(2) 动态原理数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极com增加位选通控制电路,位选通由各自独立的i/o线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通com端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。这就是动态驱动。每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的i/o端口,而且功耗更低本设计采用的是共阴极接法。led显示电路如图3-7所示。 图3-7led显示电路3.4系统电路原理图图3-9系统电路原理图3.5所需元件器件数量开关16电容4晶振1数码管(10k)1单片机芯片174hc573芯片2电感10k1电源(5v)2四、软件设计主程序主要是用来进行初始化的,调用其他子程序,清空各个标志位,清空缓存区,读取键码,判断功能,在led上作出回应,主程序流程图如图所示。五、 主程序/*程序名称:简易计算器简要说明:运算结果不大于8位的正整数加、减、乘、除运算各键功能:09号按键 10号按键:删除前一个按键号 11号按键:等于号按键 1215号按键:加、减、乘、除按键 p3.2:清零按键编 写:邢志杰时 间:2015年07月10日最后修改时间:2015年07月14日*/#include #define uchar unsigned char#define uint unsigned intsbit p30=p30;/段码锁存sbit p31=p31;/位码锁存sbit p32=p32;/清零按键uchar code disp=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0xc6,0xa1,0x86,0x8e,0x00; /共阴极数码管显示段码uchar disp110=16,16,16,16,16,16,16,16,16,16,disp210=16,16,16,16,16,16,16,16,16,16;/用于存放先后按下的两个数据,结果也存放于disp1中long int vai=0,vai1=0,vai2=0;/分别存放运算结果,及先后按下的数据int i,j=1,k=1;/计数uchar temp,keyno=16,num; /temp读p1口使用,keyno按键号16表示全灭,存放+、-、*、/void keyscan(); / 键盘扫描得键号void delay(uchar x); /延时子函数void display(void); /显示函数void trans() ; /交换两个数组内容void count(); /计算结果函数void rest();/清零子函数/*按键扫描子函数:*/void keyscan()p1=0xfe;temp=p1;if(temp!=0xfe) switch(temp) case 0xee: keyno=0;break; case 0xde: keyno=1;break; case 0xbe: keyno=2;break; case 0x7e: keyno=3;break; p1=0xfd;temp=p1;if(temp!=0xfd) switch(temp) case 0xed: keyno=4;break; case 0xdd: keyno=5;break; case 0xbd: keyno=6;break; case 0x7d: keyno=7;break; p1=0xfb;temp=p1;if(temp!=0xfb) switch(temp) case 0xeb: keyno=8;break; case 0xdb: keyno=9;break; case 0xbb: keyno=10; /删除前一个按键(keyno=10;可不写) if(j!=1) j-; disp1j=16; break; case 0x7b: keyno=11;count();break; /“=”按键(keyno=11;可不写) p1=0xf7;temp=p1;if(temp!=0xf7) switch(temp) case 0xe7: num=12;trans();break; /“+”按键 case 0xd7: num=13;trans();break;/“-”按键 case 0xb7: num=14;trans();break;/“*”按键 case 0x77: num=15;trans();break; /按键 if(keyno=0&keyno=9)/09表示数字键 if(j9)/最大长度8位 disp1j+=keyno;keyno=16;/等待按键松开 p1=0x0f;temp=p1;while(temp!=0x0f) p1=0x0f;temp=p1;display();/显示/*延时函数:延时约x*(1+2*120+2)个机械周期,当晶振为12mhz,x=5延时约1ms*/void delay(uchar x) uchar y; while(x-) for(y=0;y=1;delay(5); /延时1msp2=0xff; /消除鬼影,使用锁存器573的锁存功能时必须添加/*将数组disp1的内容传送到数组disp2中*/void trans() for(j=1;j9;j+) disp2j=disp1j; disp1j=16; j=1; /*计算结果函数:count()*/void count(void) /将按键数转换成十进制数字如按下:1、2、3转成123 for(j=1;j9;j+) if(disp1j!=16) vai2=10*vai2+disp1j;disp1j=16; for(j=1;j9;j+) if(disp2j!=16) vai1=10*vai1+disp2j; disp2j=16; switch (num) /判断 case 12:vai=vai1+vai2; break; /“+”按键 case 13:vai=vai1-vai2; break; /“-”按键 case 14:vai=vai1*vai2; break; /“*”按键 case 15:vai=vai1/vai2; break; /按键 for(j=1;j0;j-) /调整显示顺序 disp1k=disp2j; k+; j=i; /显示位数送回 if(j=1)/

温馨提示

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

评论

0/150

提交评论