电子系统课程设计-基于STC51单片机的计算器汇.doc

电子系统课程设计-基于STC51单片机的计算器汇.doc

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

电子系统课程设计 设计题目: 基于STC51单片机的计算器 学院:信息科学与技术学院 专业:电子信息科学与技术 指导老师:小组成员: 日期:2011年11月 一、确定计算器完成的功能 整数加减乘除法。 小数的除法。 矩阵键盘输入指令。 每按一次键蜂鸣器发声一次。 计算结果显示。 二、系统方案设计与论证 使用单片机STC51完成计算器的加减乘除法运算,并且显示结果。 1.各模块方案设计 1.1 单片机的选择 要求单片机完成简单的整数加减乘除法、处理4*4矩阵键盘的输入数据、控制显示器件显示输入的数据与运算的结果、控制蜂鸣器的发音。 根据单片机完成的功能对单片机的处理速度要求不高,且考虑到经济效益,决定使用STC51单片机。 1.2单片机最小系统 1.2.1 晶振选择24MHZ,使STC51单片机速度跟快,并且价格和12MHZ差不多。 1.2.2 为了防止单片机程序进入死循环而出不来,增加一个复位键。 1.3 显示器件的选择 方案一、使用12864作为显示设备,但是考虑到计算器只要求显示数字,使用12864太浪费,且价格比较贵,不予选用。 方案二、使用1602作为显示设备。相比12864这个器件比较便宜,且能显示数字和一些字符,能完成要求功能。 方案三、使用数码管作为显示设备。数码管能显示数字和一些特殊字符,而且计算器要求的显示器件能显示数字和一些特殊字符。所以数码管能完成我们的要求显示要求,并且数码管是最便宜的。 综上所述我们选择性价比最高的数码管作为显示器件。 1.4 输入设备的选择 计算器要求输入的数据有(0,1,2,3,4,5,6,7,8,9,*,/,+,-,=,clear)))复位电路: 由电容串联电阻构成,由图并结合电容电压不能突变的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.三极管主要是做驱动用的。因为单片机的IO口驱动能力不够让蜂鸣器发出声音,所以我们通过三极管放大驱动电流,从而可以让蜂鸣器发出声音,你要是输出高电平,三极管导通,集电极电流通过蜂鸣器让蜂鸣器发出声音,当输出低电平时,三极管截止,没有电流流过蜂鸣器,所以就不会发出声音位8段共极数码管每一位都是将8个发光二极管(下面简称LED)的极接在一块,就有个极,接上个IO口,这个就是位选,相应IO口输出电平算是选通该位。相同字段LED的极连在一起,也有八根线,接上8个IO口,这就是段选,相应IO口输出电平算是选通该段。 一般情况下个位选只有一个选通,8个段选如果是数字2,那么选通的那一位数码管就会显示2,其它位数码管都是黑的。延迟一段再熄灭它,再选通另一位显示在那一位该显示的数字,延迟一段再熄灭,如此循环,人眼有暂留效应,只要足够快人眼看起来就是几个数字稳定地显示在位数码管上。在中按键数量较多时,为了减少I/O口的占用,通常将按键排列成形式,如图所示。 在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。行列扫描法原理:第一步, 使行线为编程的输入线,列线是输出线,拉低所有的列线, 判断行线的变化,如果有按键按下,按键按下的对应行线被拉低,否则 所有的行线都为高电平。第二步, 在第一步判断有键按下后, 延时 10ms 消除机械抖动,再次读取行值,如果此行线还处于低电平状态则进入下 一步,否则返回第一步重新判断。开始扫描按键位置,采用逐 行扫描,每间隔 1ms 的时间,分别拉低第一列,第二列,第三列,第四 列,无论拉低哪一列其他三列都为高电平,读取行值找到按键的位置, 分别把行值和列值储存在寄存器里。第四步,从寄存器中找到行值和列 值并把其合并,得到按键值,对此按键值进行编码,按照从第一行第一 个一直到第四行第四个逐行进行编码,编码值从“0

文档评论(0)

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

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

1亿VIP精品文档

相关文档