单片机课程设计十进制加法计算器设计(编辑修改稿)内容摘要:

单片机课程设计报告 12 图六 三位数码管的显示电路 软件设计 在十进制加法计算器的软件规划要求下, 简易计算器的程序主要包括以下功能模块:( 1) 主模块,为系统的初始化。 ( 2) 显示与读键模块,分为判键程序段、运算操作子程序、显示子程序等部分; 计 (一) 系统模块图 单片机课程设计报告 13 单片机晶 振 电 路复 位 电 路矩 阵 按 键 电 路L E D 显 示 电 路运 算 法 则 指 示 灯 图七 系统模块图 此系统包括晶振电路、复位电路、 LED显示电路、矩阵按键电路运算法则指示灯以及单片机。 其中通过输入键盘模块将数字 0~9和运算符号“ +”、“ ”、“ *”、“ /”输入单片机进行运算;运算模块分别根据输入的运算符进行加减乘除运算;显示模块将运算后的数值通过动态扫描使之在数码管上输出。 (二) 系统总流程图 主程序主要是用来进行初始化的,调用其他子程序,清空各个 标志位,清空缓存区,读取键码,判断功能,在 LED上作出回应,主程序流程图如图六所示。 ( 1) 数字送显示缓冲程序设计 简易计算器所显示的数值最大位三位。 要显示数值,先判断数值大小和位数,如果是超过三位或大于 255,将不显示数字。 可重新输入数字,再次计算。 (2) 运算程序的设计 单片机课程设计报告 14 首先初始化参数,送 LED三位显示 “0”,其它位不显示。 然后扫描键盘看是否有键输入,若有,读取键码。 判断键码是数字键、清零键还是功能键,是数值键则送 LED显示并保存数值,是清零键则做清零处理,是功能键则又判断是 “=”还是运算键,若是 “=”则计算最后结果并送 LED显示,若是运算键则保存相对运算程序的首地址。 显示与按键设计 (一) LED显示程序设计 LED显示器由七段发光二极管组成,排列成 8字形状,因此也称为七段 LED显示器。 为了显示数字或符号,要为 LED显示器提供代码,即字形代码。 七段发光二极管,再加上一个小数点位,共计 8段,因此提供的字形代码的长度正好是一个字节。 简易计算器用到的数字 0~9的共阳极字形代码如下表: 显示字型 g f e d c b a 段码 0 0 1 1 1 1 1 1 0c0h 1 0 0 0 0 1 1 0 0f9h 2 1 0 1 1 0 1 1 0a4h 3 1 0 0 1 1 1 1 0b0h 4 1 1 0 0 1 1 0 99h 5 1 1 0 1 1 0 1 92h 6 1 1 1 1 1 0 1 82h 7 0 0 0 0 1 1 1 0f8h 8 1 1 1 1 1 1 1 80h 9 1 1 0 1 1 1 1 90h 表一 共阳极数码管段码对照表 (二 ) 读键子程序设计 单片机课程设计报告 15 为了实现键盘的数据输入功能和命令处理功能,每个键都 有其处理子程序,为此每个键都对应一个码 ——键码。 为了得到被按键的键码,现使用行扫描法识别按键。 其程序框图如图八: 读键程序使用的是反转法读键,不管键盘矩阵的规模大小,均进行两次读键。 第一次所有列线均输出低电平,从所有读入键盘信息(行信息);第二次所有行线均输出低电平,从所有行线读入键盘信息(列信息)。 将两次读键信息进行组合就可以得到按键的特征编码,然后通过查表得到按键的顺序编码。 将各特征编码按希望的顺序排成一张表,然后用当前读得的特征码来查表。 当表中有该特征码时,它的位置就是对应的顺序编码;当表中没有该特征 码时,说明这是一个没有定义的键码,与没有按键( 0FFH)同等看待。 (三 ) 流程图 单片机课程设计报告 16 图八 计算键值子程序流程图 (四) 源程序 RESULT EQU 60H RESULT1 EQU 61H FUNCTIONKEY EQU 62H ORG 00H START: MOV R3,0 MOV FUNCTIONKEY,0 MOV 32H,00H MOV 33H,00H MOV 34H,00H MLOOP: CALL DISP。 调显示子程序 WAIT: CALL TESTKEY。 判断有无按键 JZ WAIT CALL GETKEY。 读键 单片机课程设计报告 17 INC R3。 按键个数 CJNE A,0,NEXT1。 判断是否数字键 LJMP E1。 转数字键处理 NEXT1: CJNE A,1,NEXT2 LJMP E1 NEXT2: CJNE A,2,NEXT3 LJMP E1 NEXT3: CJNE A,3,NEXT4 LJMP E1 NEXT4: CJNE A,4,NEXT5 LJMP E1 NEXT5: CJNE A,5,NEXT6 LJMP E1 NEXT6: CJNE A,6,NEXT7 LJMP E1 NEXT7: CJNE A,7,NEXT8 LJMP E1 NEXT8: CJNE A,8,NEXT9 LJMP E1 NEXT9: CJNE A,9,NEXT10 LJMP E1 NEXT10: CJNE A,10,NEXT11。 判断是否功能键 LJMP E2。 转功能键处理 NEXT11: CJNE A,11,NEXT12 LJMP E2 NEXT12: CJNE A,12, NEXT13 LJMP E2 NEXT13: CJNE A,13,NEXT14 LJMP E2 NEXT14: CJNE A,14,NEXT15 LJMP E2 NEXT15: LJMP E3。 判断是否清除键 E1: CJNE R3,1,N1。 判断第几次按键 LJMP E11。 为第一个数字 N1: CJNE R3,2,N2 LJMP E12。 为第二个数字 N2: CJNE R3,3,N3 LJMP E13。 为第三个数字 N3: LJMP E3。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。