PB做计算器用七段数字显示

七月十四211 2015-07-19 01:48:35
学习中老师布置的任务,要求做个计算器。显示的是要求七段数字式风格的。给了我们0到9和.号的图片,告诉了我们要封装可视化用户对象。 刚学习一周,完全不知道上面的显示该怎么做,完全没思路。求帮助
...全文
476 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pb8 2015-07-26
  • 打赏
  • 举报
回复
按楼上版主讲的方法就可以了,很简单的
WorldMobile 2015-07-21
  • 打赏
  • 举报
回复
引用 2 楼 qq_16218191 的回复:
应该是没什么难度,毕竟是给学习一周的作业。只是 对上面的黑色编辑框缺乏思路? 用单行编辑器,如何用图片显示字符串,并且图片从右向左插入呢? 纯新手,谢帮助。
写一个数字显示的函数,根据数字,显示对应的图片,比如1234.56,显示成相应的图片,你可以转换成字符串,然后逐位截取,显示指定的图片,或者一开始就把图片的位置固定,比如最多显示20位,然后根据截取的字符串显示换成指定的图片
七月十四211 2015-07-20
  • 打赏
  • 举报
回复
应该是没什么难度,毕竟是给学习一周的作业。只是 对上面的黑色编辑框缺乏思路? 用单行编辑器,如何用图片显示字符串,并且图片从右向左插入呢? 纯新手,谢帮助。
WorldMobile 2015-07-20
  • 打赏
  • 举报
回复
做个基于picturebutton的可视化用户对象,所有的按钮从这个用户对象继承 上面的黑色编辑框用个单行编辑器就行,没看出哪个地方难
一、设计要求 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 ; 关所有八段管 mov a, @r0 mov dptr, #OUTSEG movx @dptr, a mov dptr, #OUTBIT mov a, r2
目录 前言 一、总体设计 二、硬件设计 三、软件设计 四、调试说明 五、使用说明 结论 参考文献 附录 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
引言 说起计算器,值得我们骄傲的是,最早的计算工具诞生在中国。中国古代最早采用的 一种计算工具叫筹策,又被叫算筹。这种算筹多用竹子制成,也有用木头,兽骨充当 材料的。约二百七十枚一束,放在布袋里可随身携带。直到今天仍在使用的珠算盘,是 中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同 。17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的"纳皮尔算 筹",英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能加减乘除、乘方、 开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计 算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工 具。 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技 术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部 件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善 。 本任务是个简易的两位数的四则运算,程序都是根据教材内和网络中的程序参考编写 而成,在功能上还并不完善,限制也较多。本任务重在设计构思与团队合作,使得我们 用专业知识、专业技能分析和解决问题全面系统的锻炼。 随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将更强 。在单片机家族中,80C51系列是其中的佼佼者,加之Intel公司将其MCS –51系列中的80C51内核使用权以专利互换或出售形式转让给全世界许多著名IC制造厂商 ,如Philips、 NEC、Atmel、AMD、华邦等,这些公司都在保持与80C51单片机兼容的基础上改善了80C5 1的许多特性。这样,80C51就变成有众多制造厂商支持的、发展出上百品种的大家族, 现统称为80C51系列。80C51单片机已成为单片机发展的主流。专家认为,虽然世界上的 MCU品种繁多,功能各异,开发装置也互不兼容,但是客观发展表明,80C51可能最终形 成事实上的标准MCU芯片。 事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和 机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑 以及鼠标等电脑配件中都配有1- 2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片 机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远 超过PC机和其他计算的总和,甚至比人类的数量还要多。 单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作 用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价 钱也是低的,一般不超过10元即可......用它来一些控制电器一类不是很复杂的工作 足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的 身影!......它主要是作为控制部分的核心部件。 设计方案及原理 1.首先赋予显示缓冲初始值'00 00',并把数据存储单元清零。 2.主程序调用键盘扫描子程序,判断键值,是数字第一次直接赋予23H单元,如是第二次 输入数字,则把第一次值乘十后与第二次值相加,结果存储到23H单元,并R4计数2次, 表示已输入两位,扫描键值时就不在赋值和显示。等待运算符号的按下,按下等于号就 直接与零计算并显示,如加减乘除就R5加一 并把R4清零,表示可以输入下一操作数,与第一次相同,并等待等于键按下。清零键则 不管在任何情况下都清零,相当与软复位。 3.在扫描完键盘后,调用数据显示转换子程序,并选择,由于本任务是两位四则运算, 只有乘法中结果会超出FFH的范围,在此就是选择处理方式,超出范围则跳过数据显示转 换子程序,未超出则调用数据显示转换子程序,两种选择都是要把值转换为七段码。 4.调用数码管动态显示子程序,显示数值,重新循环。 硬件系统设计 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行列式键盘,8255A的 B口和C口用于扩展键盘接口,B口高4位作为输出口,C口低4位作为输入口。逻辑电路结 构如下: 3、计算器逻辑电路图 将LED接口电路和键盘接口

1,072

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧