ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:154.93KB ,
资源ID:14602584      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-14602584.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机简易计算器.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

单片机简易计算器.docx

1、单片机简易计算器单片机应用于简易计算器的仿真实验班级学号:1411050123姓名: 何盟 目 录一课程设计的目的和要求 21.课程设计的目的 22.课程设计要求 2二总体设计 21.基本工作原理 22.系统组成单元 2三硬件设计键盘输入部分 3四软件设计 4五操作说明 9六参考文献 9一课程设计的目的和要求1.课程设计的目的首先,综合运用单片机原理与接口技术课程中所学到的理论知识来独立完成此次设计课题,培养我们查阅手册和文献资料的良好习惯,以及培养我们独立分析和解决实际问题的能力。其次,在学习了理论知识的基础上进一步熟悉常用电子器件的类型和特征,并掌握合理选用的原则。再次,就是学会电子电路的

2、安装与调试技能,以及与同组的组员的团结合作的精神。2.课程设计要求利用89c51作为主控器组成一个四则运算的计算器。二总体设计1.基本工作原理本设计利用AT89C51单片机来控制液晶显示器和矩阵式键盘,实现了简易的计算器功能。通过键盘输入需要计算的计算式子,该式子会显示在液晶的第一行,当键入等于号后,计算结果会显示在液晶的第二行。本设计中液晶选用1602字符型液晶显示器,显示参与运算的数字以及最终的运算结果,键盘采用4*4矩阵式键盘。本计算器是以80C51单片机为核心构成的简易计算器系统。该系统通过单片机控制,实现对4*4键盘扫描进行实时的按键检测,并把检测数据和计算结果存储下来,显示在LCD

3、液晶显示器上,并可实现清零。2.系统组成单元中央处理单元CPU选用AT89C51对整个系统进行控制:它将数据输出到显示屏,实现键入、输出的显示;根据键盘输入调用相应键处理子程序,实现数据的计算;单片机的管脚如下所述:AT89C51的管脚分布如下: VCC:供电电压。 GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可

4、接收输出4个TTL门电流。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。电源电路部分在各种电子设备中,直流稳压电源

5、是必不可少的组成部分,它是电子设备唯一能量来源,它的设计思路是根据我们以前学过的模电电子技术,要想得到我们所要的+6V输出电压,就需将交流220V的电压经过变压器、整流电路、滤波电路和稳压电路四个部分。LCD输出显示部分1602采用标准的16脚接口,其管脚功能介绍如下:1:VSS为电源地2:VDD接5V电源正极 3:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。4:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。5:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 6:E(或EN)端为使能(enable)端。 714:D0

6、D7为8位双向数据端。 1516:空脚或背灯电源。15脚背光正极,16脚背光负极。三硬件设计键盘输入部分矩阵式键盘由行线和列线组成,按键位于行和列的交叉点上,很明显,在所需按键数量较多时能节省很多的I/O口。如图所示为简易计算器的电路原理图。 简易计算器电路原理图系统选用的主要元器件有:单片机(AT89C51),LCD显示器(1602),按钮开关(SW-PB),排阻(9管脚,1k),电阻、电容、晶振、发光二极管等若干。四软件设计该计算器系统的软件设计分为以下几个模块:(1)主程序模块,(2)键盘扫描及识别子程序, (3)显示子程序,(4)计算程序。主程序流程图如下:总程序框图如下:总程序如下:

7、can() / 键盘扫描程序P3=0xfe; if(P3!=0xfe)delay(20); 延迟20ms if(P3!=0xfe) temp=P3&0xf0; switch(temp) case 0xe0:num=0;break; case 0xd0:num=1;break; case 0xb0:num=2;break; case 0x70:num=3;break; while(P3!=0xfe); if(num=0|num=1|num=2)/如果按下的是7,8或9 if(j!=0) write_com(0x01);j=0; if(flag=0)/没有按过符号键 a=a*10+tablenum

8、; else/如果按过符号键 b=b*10+tablenum; else/如果按下的是/ flag=1; fuhao=4;/4表示除号已按 i=table1num; write_date(0x30+i);P3=0xfd;if(P3!=0xfd)delay(5); if(P3!=0xfd) temp=P3&0xf0;switch(temp) case 0xe0:num=4;break;case 0xd0:num=5;break;case 0xb0:num=6;break;case 0x70:num=7; break; while(P3!=0xfd); if(num=4|num=5|num=6&n

9、um!=7)/如果按下的是4,5或6 if(j!=0) write_com(0x01); j=0; if(flag=0)/没有按过符号键 a=a*10+tablenum; else/如果按过符号键 b=b*10+tablenum; else/如果按下的是/ flag=1;fuhao=3;/3表示乘号已按 i=table1num;write_date(0x30+i);P3=0xfb;if(P3!=0xfb)delay(5); if(P3!=0xfb) temp=P3&0xf0;switch(temp) case 0xe0:num=8;break;case 0xd0:num=9; break;ca

10、se 0xb0:num=10; break;case 0x70:num=11;break; while(P3!=0xfb); if(num=8|num=9|num=10)/如果按下的是1,2或3 if(j!=0) write_com(0x01);j=0; if(flag=0)/没有按过符号键 a=a*10+tablenum; else/如果按过符号键 b=b*10+tablenum; else if(num=11)/如果按下的是- flag=1;fuhao=2;/2表示减号已按 i=table1num;write_date(0x30+i);P3=0xf7;if(P3!=0xf7)delay(5

11、); if(P3!=0xf7) temp=P3&0xf0; switch(temp) case 0xe0:num=12;break;case 0xd0:num=13; break;case 0xb0:num=14;break;case 0x70:num=15;break; while(P3!=0xf7); switch(num) case 12:write_com(0x01);a=0;b=0;flag=0;fuhao=0;/按下的是清零 break;case 13: /按下的是0 if(flag=0)/没有按过符号键 a=a*10;write_date(0x30); P1=0; else if

12、(flag=1)/如果按过符号键 b=b*10; write_date(0x30); break; case 14:j=1; if(fuhao=1)write_com(0x80+0x4f);/按下等于键,光标前进至第二行最后一个显示处 write_com(0x04); /设置从后住前写数据,每写完一个数据,光标后退一格 c=a+b; while(c!=0) write_date(0x30+c%10); c=c/10; write_date(0x3d); /再写= a=0;b=0;flag=0;fuhao=0; else if(fuhao=2)write_com(0x80+0x4f);/光标前进

13、至第二行最后一个显示处 write_com(0x04); /设置从后住前写数据,每写完一个数据,光标后退一格(这个照理说顺序不对,可显示和上段一样) if(a-b0) c=a-b;else c=b-a; while(c!=0) write_date(0x30+c%10);c=c/10; if(a-b0) write_date(0x2d); write_date(0x3d); /再写= a=0;b=0;flag=0;fuhao=0; else if(fuhao=3)write_com(0x80+0x4f); write_com(0x04); c=a*b; while(c!=0) write_da

14、te(0x30+c%10);c=c/10; write_date(0x3d); a=0;b=0;flag=0;fuhao=0; else if(fuhao=4)write_com(0x80+0x4f); write_com(0x04); i=0; c=(long)(float)a/b)*1000); while(c!=0) write_date(0x30+c%10); c=c/10; i+; if(i=3) write_date(0x2e); if(a/b=0) write_date(0x30); write_date(0x3d); a=0;b=0;flag=0;fuhao=0; break; case 15:write_date(0x30+table1num);flag=1;fuhao=1;break; main()init();while(1)keyscan();五操作说明 用Keil C51对程序进行编译,当出现下图所示情况时,说明编译成功,然后将程序直接下进proteus设计图中的单片机内进行仿真,设计完成。 六参考文献 【1】 张毅刚.单片机原理及应用.高等教育出版社 【2】 张毅刚.MCS-51单片机应用设计.哈张尔滨工业大学出版社 【3】 王毅.单片机器件应用手册.人民邮电出版社

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2