电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

蜂鸣数字计算器(一类借鉴)

17页
  • 卖家[上传人]:8**
  • 文档编号:179404140
  • 上传时间:2021-04-10
  • 文档格式:DOC
  • 文档大小:161KB
  • / 17 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、一、课程设计内容及要求1、蜂鸣计算器设计利用普中科技HC6800-ES V2.0单片机开发板设计一款带蜂鸣器的电子计算器。主要使用开发板上的数码管、LED点阵、矩阵键盘、蜂鸣器等模块功能。开发板配有光盘,里面有各个模块的使用说明和程序范例可供参考。2、设计要求1) 上电开机或者复位键按下之后,数码管自动显示个人学号的后8位。2) 定义矩阵键盘的S1-S9代表数字按键1-9,键盘S10代表数字按键0,键盘S11-S16分别代表按键+、-、=、C,其中C按键为计算器清零按键,按下C键计算器开始新的计算。3) 计算器计算过程中,用LED点阵显示+、-、运算符号,用8位数码管显示键入的数字和运算的结果。键入时依次显示并自动移位,例如18+9=27,先键入1,显示1,再键入8,1自动左移一位显示18,键入+,LED点阵显示+,键入9,数码管之前显示的18消失并重新显示为9,键入=,数码管显示运算结果27。4) 为这16个矩阵键盘的按键分配不同的蜂鸣器频率,使得按下不同的按键蜂鸣器响声不同,便于识别按键。5) 按键应具有一定的消除抖动功能。6) 所有单片机程序代码都用C语言编写,并烧写到单片机中上

      2、电自动运行。2、 设计思想蜂鸣器计算器设计包括矩阵键盘模块、数码管及矩阵LED动态显示模块、输入逻辑计算显示模块和蜂鸣器响应模块这四大模块。具体实施方法如下:1、 矩阵键盘模块,四乘四的矩阵键盘,设计按键扫描函数,在定时中断中调用,调用定时器中断,中断间隔时间设置为1ms,选择P2IO口,P2.0到P2.3做输出KeyOut,P2.4做P2.7做输入KeyIn,每次在按键扫描中断中,每次让矩阵按键的一个 KeyOut 输出低电平,其它三个输出高电平,判断当前所有 KeyIn 的状态,然后再让下一个 KeyOut 输出低电平,其它三个输出高电平,再次判断所有 KeyIn,通过四次扫描,确定按下的键,再通过快速的中断不停的循环进行判断,就可以最终确定哪个按键按下了。 同时在按键模块,还需要消抖使按键稳定。通常我们采用延迟再次检测的方式消抖,但是太过消耗单片机的CUP。所以为了避免通过延时消抖占用单片机执行时间,将其转化成了一种按键状态判定而非按键过程判定,只对当前按键的连续 16ms 的 4 次状态进行判断,全为0就断定对于的键按下了,全为1就断定为没有按下。2、数码管及矩阵LED动态显示

      3、模块,通过每毫秒进行动态扫描进行显示,由于数码管和矩阵LED动态显示模块都需要通过P1.3和P1.4进行选择来控制,所以在写刷新数据和符号的时候需要先在函数开始调好对应的控制位。而所需要的显示的数字和符号保存在数组中,以便需要的时候直接调用。3、输入逻辑计算显示模块,在编写程序的时候,对于这个简易计算器,以正整数的连续加减乘除为基本编程目的。在第一次输入为0-9这十个按键的时候,此时设置了标记符号flag=0,直接保存到数据保存数组addflag中,若继续输入数字就把addflag乘以10再加上新输入的数字;若扫描到加减乘除这四个符号的时候,先把标记符号flag置为1,再把算数符号保存到符号标记sign中,把需要LED矩阵显示的全局符号变量tx设置为对应的数字,继续扫描到数字的时候就会把数据保存到add1(flag=1)中;如果接下来输入为等于号,就判断sign数值然后对add0和add1做对应的计算;如果输入还是计算符号,就先计算把计算结果保存到add0中,再清零add1,再继续扫描。4、蜂鸣器响应模块,由于开发板上面的蜂鸣器是无源蜂鸣器,所以需要通过输出pwm脉冲来驱动蜂鸣器,同时

      4、由于脉冲频率不同对于蜂鸣器发声也不一样,所以通过一个需要传入频率参数的函数。通过该频率参数,来设置中断定时器T1,控制蜂鸣器驱动端口输出高低电平,然后在按键处理函数处判断对应需要的频率送给蜂鸣器响应函数。3、 程序流程图 1、整体流程图2、算数逻辑流程四、详细程序 1、总程序Calculator.c#include #include #include #include void main() Init();ShowNumber(135043);/显示学号while (1) KeyDriver(); /调用按键驱动函数 /* T0中断服务函数,用于数码管显示扫描与按键扫描 */void InterruptTimer0() interrupt 1 TH0 = 0xFC; /重新加载初值 TL0 = 0x67; LedScan(); /调用数码管显示扫描函数 KeyScan(); /调用按键扫描函数ShowPhoto(tx);/调用点阵显示函数/* T1中断服务函数,用于蜂鸣器 */ void InterruptTimer1() interrupt 3 TH1 = T1RH; /重新加载重载

      5、值 TL1 = T1RL; BUZZ = BUZZ; /反转蜂鸣器控制电平2、宏定义头文件sys.c#ifndef _sys_h_#define _sys_h_#include sys.h#define uint unsigned int#define uchar unsigned charsbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;sbit KEY_IN_1 = P24;sbit KEY_IN_2 = P25;sbit KEY_IN_3 = P26;sbit KEY_IN_4 = P27;sbit KEY_OUT_1 = P23;sbit KEY_OUT_2 = P22;sbit KEY_OUT_3 = P21;sbit KEY_OUT_4 = P20;sbit BUZZ = P16; /蜂鸣器控制引脚unsigned char T1RH = 0; /T0重载值的高字节unsigned char T1RL = 0; /T0重载值的低字节unsigned cha

      6、r tx = 0; /矩阵led显示unsigned char code LedChar = /数码管显示字符转换表 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E;unsigned char LedBuff6 = /数码管显示缓冲区 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF;unsigned char code KeyCodeMap44 = /矩阵按键编号到标准键盘键码的映射表 0x31, 0x32, 0x33, 0x26 , /数字键1、数字键2、数字键3、加键 0x34, 0x35, 0x36, 0x25 , /数字键4、数字键5、数字键6、乘键 0x37, 0x38, 0x39, 0x28 , /数字键7、数字键8、数字键9、减键 0x30, 0x1B, 0x0D, 0x27 /数字键0、ESC键、等号键、 除键;unsigned char KeySta44 = /全部矩阵按键的当前状态 1, 1, 1, 1,

      7、 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1;unsigned char code image68 = /符号的字模表 0xFF,0xBD,0x5A,0xFF,0xFF,0xBD,0xDB,0xE7,/笑脸 0xE7,0xE7,0xE7,0x00,0x00,0xE7,0xE7,0xE7,/加号 0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF, /减号 0x3C,0x18,0x81,0xC3,0xC3,0x81,0x18,0x3C, /乘号 0xE7,0xE7,0xFF,0x00,0x00,0xFF,0xE7,0xE7, /除号0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF /等号;void Init();void ShowNumber(unsigned long num);void KeyAction(unsigned char keycode);void KeyDriver();void KeyScan();void LedScan();void OpenBuzz(unsigned int fr

      8、equ);void StopBuzz();void Delay();void Buzz(unsigned int frequ);void ShowPhoto(unsigned int a);#endif3、函数头文件fun.c#ifndef _fun_h_#define _fun_h_#include fun.hvoid Init()EA = 1; /使能总中断 TMOD = 0x11; /设置T0为模式1 TH0 = 0xFC; /为T0赋初值0xFC67,定时1ms TL0 = 0x67; ET0 = 1; /使能T0中断TR0 = 1; /启动T0 /* 将一个无符号长整型的数字显示到数码管上,num-待显示数字 */void ShowNumber(unsigned long num) signed char i; unsigned char buf6; for (i=0; i=1; i-) /从最高位起,遇到0转换为空格,遇到非0则退出循环 if (bufi = 0) LedBuffi = 0xFF; else break; for ( ; i=0; i-) /剩余低位都如实转换为数码管显示字符 LedBuffi = LedCharbufi; /* 按键动作函数,根据键码执行相应的操作,keycode-按键键码 */void KeyAction(unsigned char keycod

      《蜂鸣数字计算器(一类借鉴)》由会员8**分享,可在线阅读,更多相关《蜂鸣数字计算器(一类借鉴)》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.