基于51单片机的蜂鸣计算器设计

一、课程设计内容及要求

蜂鸣计算器设计:
利用普中科技HC6800-ES V2.0单片机开发板设计一款带蜂鸣器的电子计算器。主要使用开发板上的数码管、LED点阵、矩阵键盘、蜂鸣器等模块功能。开发板配有光盘,里面有各个模块的使用说明和程序范例可供参考。
在这里插入图片描述
设计要求:

  1. 每位同学单独完成
  2. 上电开机或者复位键按下之后,2个4位数码管自动显示本人学号的后8位。
  3. 定义矩阵键盘的S1-S9代表数字按键1-9,键盘S10代表数字按键0,键盘S11-S16分别代表按键+、-、×、÷、=、C,其中C按键为计算器清零按键,按下C键计算器开始新的计算。
  4. 计算器计算过程中,用LED点阵显示+、-、×、÷运算符号,用8位数码管显示键入的数字和运算的结果。键入时依次显示并自动移位,例如18+9=27,先键入1,显示1,再键入8,1自动左移一位显示18,键入+,LED点阵显示+,键入9,数码管之前显示的18消失并重新显示为9,键入=,数码管显示运算结果27。
  5. 为这16个矩阵键盘的按键分配不同的蜂鸣器频率,使得按下不同的按键蜂鸣器响声不同,便于识别按键。
  6. 按键应具有一定的消除抖动功能。
  7. 所有单片机程序代码都用C语言编写,并烧写到单片机中上电自动运行。

二、系统的设计思想及框图

(一)框图

(二)系统的设计思想

本系统由数码管模块,点阵模块,按键模块和蜂鸣器模块组成;各模块相互约束,最后实现整个系统。

  1. 数码管模块
    数码管采用中断扫描刷新的方式,当使用数码管时,使能相关中断,当不使用数码管时,为防止数码管干扰其他模块,失能相关中断;为满足不同的数码管显示要求,本系统的数码管显示函数分由三种。
    ①数码管显示无符号长整形数字:只显示有效位,其他位不显示,比如00000031,只显示31,高位的000000不显示。
    ②数码管显示学号:因我的学号后八位为03166052;第一位是0,为了显示第一位的0编写相关函数。
    ③数码管显示小数:在做除法运算时,当结果不为整数时,就需求显示小数,本系统显示小数精确到小数点后两位;采用的方式是,将小数部分与整数部分分开,小数显示在低两位,整数显示在高六位。
  2. LED点阵模块
    使用74HC595串行控制点阵的行,行在{0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE}中取值;用位操作控制点阵的列;使用取字模软件获取列的真值表,从而显示出不同的运算符;行与列都定时刷新,从而实现点阵的动态显示。
  3. 按键模块
    当按下不同的按键时,执行与该按键相关的功能。按键部分分为两个模块,分别是按键驱动模块和按键动作模块。
    ①按键驱动模块:目的在于获得所按下按键的键码,本模块使用中断按键扫描和按键驱动实现;按键扫描对每一个按键进行四次扫描之后再确定按键是否按下,然后再获得按键的地址,实现了按键的消抖,需要注意的是,按键扫描需要一直执行,而数码管扫描只在数码管工作时执行,所以两者不能放在同一个中断里面,这就是使用两个中断的原因;按键驱动就是使用所获得的按键的地址获得相应的键码,为按键动作模块提供参数。
    ②按键动作模块:为了方便使用,本系统的按键未按题目要求分配,S1S3对应于数字13;S5S7对应于46;S9S11对应于79;S14对应于数字0;S4,S8,S12,S16分别对应+ - * ;S13,S15分别对应于清零与回车;本模块根据所获得的键码,来执行不同的操作。
  4. 蜂鸣器模块
    根据所获得的键码的键值,赋予蜂鸣器延迟时间,从而发出不同的声音。

三、软件设计

(一)程序框图

(二)代码

完整源代码见资源:https://download.csdn.net/download/weixin_44410704/19830189

四、运行结果及有关运行说明

(一)运行结果

本蜂鸣计算器完成了题目要求的基本功能,并在基本功能之上实现了连加,连减,连乘,连除,组合运算的功能;同时,在进行除法运算时,可实现小数运算并通过数码管显示至小数点后两位;本系统也足够健壮,面对不符合规范的输入也有一定的应变能力;运行结果符合预期。

(二)运行结果图

仅包含初始化状态。

  • 5
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 40
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jasmine-Lily

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值