哈尔滨远东理工学院学士学位论文 非编码键盘的接口电路由设计者根据需要自行决定,按键信息通过接口软件来获取. 本设计需要的是16个按键,故选择用非编码键盘,为了减少所占用的端口,由P1口采用4*4矩阵式键盘外接.
图3.3 4*4矩阵式键盘结构
3.2.4 矩阵式键盘设定
按照预定的设定方案,本次设计的计算器将通过按键输入数字和运算符,利用单片机不断扫描键盘.
其中数字键0~9 共十个,接下来依次是加号键(+).减号键(-).乘号键(*).除号键(/).等于号(=).清除键.操作设备是四行四列共16键的简单键盘.第一行从左至右分别为F(清除键).E(等号键).D(除号键).C(乘号键),第二行从左至右分别为B(减号键).A(加号键).9.8,第三行分别为7.6.5.4,第四行从左至右分别为3.2.1.0,―清除键‖表示程序初始化,为下次输入准备.
3.2.5 复位.时钟电路设计
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空.当使用内部振荡电路时,XTAL1.XTAL2引脚外接石英晶体和微调电容,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz.
MCS-51单片机内部的振荡电路是一个高增益反相放大器,引线 XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器.
任何单片机在工作之前都要进行复位,以便CPU以及其他功能部件都处于一个确定的初始化状态,并从这个状态开始工作,也就是程序开始执行之前,单片机做好准备工作.如何进行复位呢?只用在单片机的RST引脚上保持两个机器周期(24个时钟周期)的高电平即可对单片机实现复位操作,且复位操作不会对内部RAM有所影响.
3.3 本章小结
本章详细介绍了MCS-51单片机计算器设计的硬件元件选择以及各类主要硬件的功能结构.对单片机计算器的组成和工作原理进行了分析.更为后面的
-8-
哈尔滨远东理工学院学士学位论文 难点软件设计部分做好了充分的准备. 综合来看,一个单片机计算器的组成并不复杂,但是如何将所有部件连接在一起并正常工作,这是在设计过程要一直不断思考的问题.
图3-4 晶振连接的内部.外部方式图
图3.5 常用复位电路图
-9-
哈尔滨远东理工学院学士学位论文 第4章 MCS-51单片机计算器软件设计
4.1 软件设定
4.1.1 程序规划
该计算器的程序主要包括以下功能模块: ①主模块,为系统的初始化.
②显示与读键模块,分为显示子程序,判键程序段.运算操作子程序部分;
图4.1 软件设计流程图
主程序主要是用来进行初始化的,调用其他子程序,清空各个标志位,清空缓存区,读取键码,判断功能,在LED上作出回应.[10]
4.1.2 程序设定
①数字送显示程序设计
简易计算器所显示的数值最大位为四位.要显示数值,先判断数值大小和位数,如果是输入超过四位或大于9999,将不显示数字.需重新输入数字,再次计算.该程序输入同时输入四个定点数,设定运算符号有:A为加,B为减,C为乘,D为除,E等于,输出计算结果.数据输入采用规范化输入,即输入〈=3个数才算完成一个运算数的输入,两个运算数之间输入运算符A.B.C或者D,输入完成按E显示计算结果. ②运算程序的设计
-10-
哈尔滨远东理工学院学士学位论文 首先初始化参数,送LED低位显示―0‖,高位不显示.然后扫描键盘看是否有键输入,若有,读取键码.判断键码是数字键.清零键还是功能键,是数值键则送LED显示并保存数值,是清零键则做清零处理,是功能键则又判断是―=‖还是运算键,若是―=‖则计算最后结果并送LED显示,若是运算键则保存相对运算程序的首地址.F为清零重启,任何时候按下F将重新开始.[11]
4.1.3 数码管显示程序设计
本设计的,显示程序是这样设计的,因为考虑到显示程序的通用性,在接通电源后不进行输入时显示为0,输入时显示输入的数字或运算结果,而且要使8个数码管同时显示不同的数字,选用动态显示应是最佳的.
开始 对数码管进行初始化,从按键程序和运算程序中接收数据,通过显示程序处理 数码管显示 否 判断显示是否完毕 是 返回 图4.1 显示扫描程序流程图
数码管用到的数字0~9的共阴极字形代码如表4.3:
LED用于显示十进制数字,要将0~9的数字用7段显示,必须将数字转换为LED对应七段码的信息,比如,要显示“0”,就是让a.b.c.d.e和f段发光,显示―1‖,让b和c段发光,如表所示.然后根据LED是共阴极还是共阳极接法确定LED各输入端应接逻辑1还是逻辑0,本设计选用的是共阴接法,要显示―0‖ 时,a.b.c.d.e和f段就要输入逻辑1,即其段码为3F, 将待显示内容―翻译‖为LED段码的过程,可以由软件查表方法实现译码.[12]
4.1.4 键盘程序设计
确定矩阵式键盘上何键被按下,用―行扫描法‖. 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法.
-11-
哈尔滨远东理工学院学士学位论文 开始 扫描第一是否有键按下 判断键值 N 扫描第二行 数字键放入显示缓冲运算符修改标志区 是否有键按下 调用显示程序显示数位 进行运算 字 运算结果放入显示缓冲区 N 扫描第三行 是否有键按下 N 扫描第四行 是否有键按下 N 图4.2 按键扫描程序流程图
判断键盘中有无键按下:将全部行线置低电平,然后检测列线的状态.只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交的4个按键之中.若所有列线均为高电平,则键盘中无键按下.
-12-
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库王海龙——基于MSC-51单片机计算器(4)在线全文阅读。
相关推荐: