网站大量收购闲置独家精品文档,联系QQ:2885784924

单片机简易计算器课件.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机简易计算器课件

单片机应用 班级学号:1411050123 姓名: 何盟 目 录 一.课程设计的目的和要求 2 1.课程设计的目的 2 2.课程设计要求 2 二.总体设计 2 1.基本工作原理 2 2.系统组成单元 2 三.硬件设计键盘输入部分 3 四.软件设计 4 五.操作说明 9 六.参考文献 9 一.课程设计的目的和要求 1.课程设计的目的 首先,综合运用单片机原理与接口技术课程中所学到的理论知识来独立完成此次设计课题,培养我们查阅手册和文献资料的良好习惯,以及培养我们独立分析和解决实际问题的能力。其次,在学习了理论知识的基础上进一步熟悉常用电子器件的类型和特征,并掌握合理选用的原则。再次,就是学会电子电路的安装与调试技能,以及与同组的组员的团结合作的精神。 本设计利用单片机来控制液晶显示器和矩阵式键盘,实现了简易的计算器功能。通过键盘输入需要计算的计算式子,该式子会显示在液晶的第一行,当键入等于号后,计算结果会显示在液晶的第二行。本设计中液晶选用字符型液晶显示器,显示参与运算的数字以及最终的运算结果键盘采用4*4矩阵式键盘。 80C51单片机为核心构成的简易计算器系统。该系统通过单片机控制,实现对4*4键盘扫描进行实时的按键检测,并把检测数据和计算结果存储下来,显示在LCD液晶显示器 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个TTL门电流。  RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。   ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。  /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。   XTAL2:来自反向振荡器的输出。 1602采用标准的16脚接口,其管脚功能介绍如下:   1:VSS为电源地   2:VDD接5V电源正极 3:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。   4:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。   5:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。  6:E(或EN)端为使能(enable)端。  7~14:D0~D7为8位双向数据端。  15~16:空脚或背灯电源。15脚背光正极,16脚背光负极。矩阵式键盘由行线和列线组成,按键位于行和列的交叉点上,很明显,在所需按键数量较多时能节省很多的I/O口。 如图所示为简易计算器的电路原理图。 简易计算器电路原理图) 总程序框图如下: 总程序如下: can() // 键盘扫描程序 {P3=0xfe; if(P3!=0xfe) {delay(20); 延迟20msif(P3!=0xfe) ?? { temp=P30xf0; ??? 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+table[num]; ??? } ??? else//如果按过符号键 ??? { b=b*10+table[num]; ??? } ?? }else//如果按下的是/ ?? { flag=1; fuhao=4;//4表示除号已按 ?? } ?? i=table1[num]; write_date(0x30+i); } P3=0xfd;if(P3!=0xfd) {delay(5); if(P3!=0xfd) ?? {temp=P30xf0;switch(temp) ?

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档