8051单片机的简易计算器设计.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
目录 前言 一、总体设计 二、硬件设计 三、软件设计 四、调试说明 五、使用说明 结论 参考文献 附录 I、系统电路图 II、程序清单 一、设计要求 1.设计4*4的键盘,其中10个数字键0~9,其余6个为"+" "-" "*""/" "="和"C" 2.设计2位LED接口电路 3.实现1位数的简单运算 二、硬件系统设计 1、LED接口电路 简易计算器需要2位8段码LED显示电路。用8031单片机经8255A扩展2位8段码LED显示 器,用8255A的A口作为段码(字形代码)数据口,PB0和PB1作为位控制端口。在位控制 口加集电极开路的反相高压驱动器74LS06以提供驱动LED显示器所需的足够大的电流,然 后接至各数码显示器的共阴极端。同理,在段码数据口集电极开路的正相高压驱动器74 LS07提供足够大的电流,然后接到数码显示器的各段。逻辑电路结构如下: 2、键盘接口电路 简易计算器需要4*4的行列式键盘。用8031单片机经8255A扩展4*4行列式键盘,8255 A的B口和C口用于扩展键盘接口,B口高4位作为输出口,C口低4位作为输入口。逻辑电路 结构如下: 3、计算器逻辑电路图 将LED接口电路和键盘接口电路结合到一起就是简易计算器的逻辑电路图,如下: 三、软件设计 1、LED显示程序设计 LED显示器由七段发光二极管组成,排列成8字形状,因此也成为七段LED显示器,器 排列形状如下图所示: 为了显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再 加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器 用到的数字0~9的共阴极字形代码如下表: 0~9七段数码管共阴级字形代码 显示字型 "g "f "e "d "c "b "a "段码 " "0 "0 "1 "1 "1 "1 "1 "1 "3fh " "1 "0 "0 "0 "0 "1 "1 "0 "06h " "2 "1 "0 "1 "1 "0 "1 "1 "5bh " "3 "1 "0 "0 "1 "1 "1 "1 "4fh " "4 "1 "1 "0 "0 "1 "1 "0 "66h " "5 "1 "1 "0 "1 "1 "0 "1 "6dh " "6 "1 "1 "1 "1 "1 "0 "1 "7dh " "7 "0 "0 "0 "0 "1 "1 "1 "07h " "8 "1 "1 "1 "1 "1 "1 "1 "7fh " "9 "1 "1 "0 "1 "1 "1 "1 "6fh " "2位LED显示的程序框图如下: 2、读键输入程序设计 为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键 都对应一个码——键码。为了得到被按键的键码,现使用行扫描法识别按键。其程序框图 如下: 3、主程序设计 (1)数值送显示缓冲程序设计 简易计算器所显示的数值最大位两位。要显示数值,先判断数值正负,如果是负值, 则符号位显示"- ",然后将数值除以10,余数送显最最低位,判断商是否为0,若为0则返回,若不为0, 则将商除以10,将余数送显高位。程序框图如下: (2)运算主程序设计 首先初始化参数,送LED低位显示"0",高位不显示。然后扫描键盘看是否有键输入,若 有,读取键码。判断键码是数字键、清零键还是功能键("+""-""*""/""=" ),是数值键则送LED显示并保存数值,是清零键则做清零处理,是功能键则又判断是" ="还是运算键,若是"="则计算最后结果并送LED显示,若是运算键则保存相对运算程序 的首地址。运算主程序框图如下所示: 4、简易计算器源程序 OUTBIT equ 07FFDh ; 位控制口 OUTSEG equ 07FFCh ; 段控制口 IN equ 07FFEh ; 键盘读入口 data1 equ 70h data2 equ 71h dizhi1 equ 72h dizhi2 equ 73h LEDBuf equ 60h ; 显示缓冲 ljmp Start LEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h Delay: ; 延时子程序 mov r7, #0 DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop ret DisplayLED: mov r0, #LEDBuf mov r1, #2 ; 共2个八段管 mov r2, #00000010b ; 从左边开始显示 Loop: mov dptr, #OUTBIT mov a, #0 movx @dptr, a ; 关所有八段管 m
剩余14页未读,继续阅读
- 粉丝: 168
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助