一、课程设计内容及要求

蜂鸣计算器设计:
利用普中科技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

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

(一)运行结果

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

(二)运行结果图

仅包含初始化状态。

基于51单片机的蜂鸣计算器设计相关推荐

  1. 【006】基于51单片机的简易电子计算器Proteus仿真设计

    一.压缩包资料内容(私信获取) (1).基于51单片机的简易电子计算器proteus仿真设计一份: (2).基于51单片机的简易电子计算器proteus仿真设计keli源代码一份: (3).基于51单 ...

  2. 基于51单片机的简易电子计算器——有温度显示和万年历等额外功能

    基于51单片机的简易电子计算器--有温度显示和万年历等额外功能 设计实际所实现的功能 模式一可显示日期.时钟.温度,模式二可进行计算器的计算,且显示日期温度模式和计算器模式可随意切换,模式三可以滚动显 ...

  3. 单片机检测电机频率c语言,基于51单片机的电动机测速表的设计.doc

    基于51单片机的电动机测速表的设计 基于51单片机的电动机测速表设计 摘 要 本文介绍了采用光电传感器实施电机转速测量的方法.基本原理,完成了一种基于AT89C51单片机平台的电动机测速表的软硬件设计 ...

  4. 单片机遥控车c语言程序,基于51单片机的无线遥控小车设计[附发射接收程序]

    /***************************************************************/ /*[基于51单片机的无线遥控小车设计] 作者王*茹 */ /*** ...

  5. 基于51单片机的电子万年历的设计-源代码

    电子万年历的设计目录 电子万年历的设计 电子万年历的系统整体设计框图 所需要的元件 DS18B20模块 DS18B20的特点 DS18B20内部结构 DS18B20管脚排列 DS1302模块 SPI时 ...

  6. 基于51单片机的三角波信号发生器设计

    基于51单片机的三角波信号发生器设计 一.任务要求: 设计内容 选择51单片机,晶振采用12MHz. 设计一个能产生50HZ至100HZ的三角波信号.通过0832/A芯片完成数模转换. 频率值由LED ...

  7. 基于51单片机的自动浇花系统设计/基于51单片机的智能抽奖系统控制设计/基于51单片机的数字时钟与日历显示控制设计 毕业设计

    1147基于51单片机的自动浇花系统设计 设计思路:通湿度传感器实时监测湿度,通过LCD显示出实时的湿度采集值,可以通过按键设定目标界限,当达到这个界限值时,浇花系统的电机装置运行. 电路包含:LCD ...

  8. 基于51单片机的酒精浓度检测仪设计

    本设计仅供参考 基于51单片机的酒精浓度检测仪设计(proteus仿真+程序+原理图+报告) 原理图:Altium Designer 仿真:proteus 8.9 程序编译器:keil 4/keil ...

  9. 单片机应用系统设计技术——基于51单片机篮球计时计分器的设计

    基于51单片机篮球计时计分器的设计 一.实验目的 二.实验内容 三.实验步骤 四.C代码如下 五.实验结果

最新文章

  1. PyCharm导入numpy包遇到的问题
  2. This is A PostXing Test
  3. jdbc封装工具类代码_JDBC的使用-JDBC(3)
  4. IDC预测2014年9个趋势
  5. 凉凉夜色为我思念成河
  6. 报名参加第103期设计论坛公益免费设计活动
  7. OpenCV学习笔记(三)——Mat,图像的新容器
  8. Redis底部的几种存储结构(sds、dict、ziplist、intset、skiplist)
  9. 堪称神器的命令行工具系列——curl
  10. Palo Alto Networks下一代安全平台五大创新功能:云安全为重中之重
  11. python3怎么使用pyrex_python pyrex windows 编译C可执行文件
  12. centos mysql server_Centos 7 下载安装 mysql server 5.6 (亲测可用)
  13. ObjectiveC基础-ivar
  14. 面经_黑盒测试与白盒测试
  15. 生成无限制的微信小程序码
  16. 桌面上的计算机图标是一个,电脑桌面上计算机图标不见如何找回
  17. 怎么找到当地供应商_微商怎么找一手货源供货商(微商新手必看教程)
  18. 以太坊五周年:从涅槃中苏醒
  19. MATLAB小技巧整理-那些你必须得知道的matlab技巧
  20. LDA的python实现之模型参数训练

热门文章

  1. 【JZOJ4920】【NOIP2017提高组模拟12.10】降雷皇
  2. CentOS图形界面下如何安装Eclipse和使用maven
  3. 读《大道至简》第四章有感
  4. php使用hset报错,redis中set和hset的区别和使用场景
  5. 广度优先搜索(BFS)——马的遍历(洛谷 P1443)
  6. C语言课后习题(64)
  7. Linux运维新主机挂载硬盘,linux运维:Linux下添加新硬盘+分区及挂载详细步骤图解...
  8. oracle11g异机备份,tsm oracle11g rac环境异机恢复报错(或者搭建dg)
  9. 另辟蹊径第二弹,时间规律里的秘密
  10. Oracle 19c RAC打补丁过程避坑指南