




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
. ;. 目录目录 摘要摘要. 第一章第一章 绪论绪论. 1.1 课题简介. 1.2 设计目的. 1.3 简易计算器系统简介简易计算器系统简介. 第二章第二章 总体电路设计总体电路设计. 第三章第三章 主要模块介绍主要模块介绍. 3.1AT89C51AT89C51. 3.2LEDLED 数码管的结构及工作原理数码管的结构及工作原理. 3.33.3 矩阵按键矩阵按键. 3.43.4 蜂鸣器模块蜂鸣器模块. 第四章第四章 计算器系统设计计算器系统设计. 4.14.1 计算器硬件. 4.24.2 系统框图系统框图. 4.34.3 程序设计程序设计. 结语结语 . 参考文献. . ;. 摘 要 课程设计教学环节是为了学生能够更好地巩固和实践所学专业知识而设置的, 在本次课程设计中,我以MCS-51 系列单片微型计算机及其应用课程中所学知识 为基础,设计了简易计算器。本系统以 MCS-51 系列中的 AT89C51 单片机为核心,能 够实现六位数的四则运算。该系统通过检测矩阵键盘扫描,判断是否按键,经数据 转换把数值送入数码管显示。 本系统的设计说明重点介绍了如下几方面的内容: 1)基于单片机简易计算器的基本功能,同时对矩阵键盘及 LED 数码管显示原 理进行了简单的阐述; 2)介绍了系统的总体设计、给出了系统的整体流程框图,并对其进行了功能模 块划分及所采用的元器件进行了详细说明; 3)对系统各功能模块的软、硬件实现进行了设计说明。 关键词:关键词:MCS-51 单片机;计算器;加减乘除 . ;. 第一章第一章 绪论绪论 1.1 课题简介 单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等 领域中。在工业生产中。单片机微型计算机是微型计算机的一个重要分支,也是颇 具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为 微控制器。 本系统就是充分利用了 51 芯片的 I/O 引脚。系统统采用 MSC-51 系列单片机 AT89C51 为中心器件来设计计算器控制器。 1.2 设计目的 通过本次工程实践,运用MCS-51 系列单片微型计算机及其应用所学知识及 查阅相关资料,完成简易计算器的设计,达到理论知识与实践更好结合、提高综合 运用所学知识和设计能力的目的。 通过本次设计训练,可以使我们在基本思路和基本方法上对基于 MCS-51 单片机 的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。 1.3 简易计算器系统简介 本计算器是以 MCS-51 系列 AT89C51 单片机为核心构成的简易计算器系统。该系 统通过单片机控制,实现对 4*4 键盘扫描进行实时的按键检测,并把检测数据存储 下来。整个计算器系统的工作过程为:首先存储单元初始化,显示初始值和键盘扫 描,判断按键位置,查表得出按键值,单片机则对数据进行储存与相应处理转换, 之后送入 LED 数码管显示。整个系统可分为三个主要功能模块:功能模块一,实时 键盘扫描;功能模块二,数据转换为了数码管显示;功能模块三,LED 数码管显示。 . ;. 第二章第二章 总体电路设计总体电路设计 本次设计采用AT89C51单片机作为控制芯片,采用单片机上的按键来模仿输入信 号。通过键盘扫描将输入按键信号读入单片机,根据按键的号码进行不同的显示, 并通过蜂鸣器发出信号。显示模块则利用六位八段数码管,进行按键号码的显示。 本系统功能由硬件和软件两大部分协调完成,硬件部分主要完成按键输入的模拟、 蜂鸣器的驱动、按键号码的显示等功能;而软件主要完成对按键输入的扫描、中断 对数据初始化及数码显示管的显示控制等功能。 第三章第三章 主要模块主要模块介绍介绍 3.1 AT89C51AT89C51 简介简介 AT89C51 是一种带 4K 字节 FLASH 存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能 CMOS 8 位微处理器,俗称单片机。 AT89C51 是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除 只读存储器可以反复擦除 1000 次。该器件采用 ATMEL 高密度非易失存储器制造技术 制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪 烁存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器,AT89C51 是它 的一种精简版本。AT89C51 单片机为很多嵌入式控制系统提供了一种灵活性高且价 . ;. 廉的方案。 图1 AT89C51芯片内部引脚图 3.23.2 LEDLED 数码管的结构及工作原理数码管的结构及工作原理 LED 数码管(LED Segment Displays)是由多个发光二极管封装在一起组成 “8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。 LED 数码管常用段数一般为 7 段有的另加一个小数点,还有一种是类似于 3 位 “+1”型。位数有半位,1,2,3,4,5,6,8,10 位等等.,LED 数码管根据 LED 的接法不同分为共阴和共阳两类,了解 LED 的这些特性,对编程是很重要的, 因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图 . ;. 4.5 是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电 源极性不同而已。颜色有红,绿,蓝,黄等几种。LED 数码管广泛用于仪表,时钟, 车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。下面将介 绍常用 LED 数码管内部引脚图。 图 2 这是一个八段两位带小数点 10 引脚的 LED 数码管 每一笔划都是对应一个字母表示 DP 是小数点. 数码管分为共阳极的 LED 数码管、共阴极的 LED 数码管两种。下图例举的是共阳极 的 LED 数码管,共阳就是 8 段的显示字码共用一个电源的正。 LED 数码管原理图示意如图 3: 图 3 LED 数码管原理图 从上图可以看出,要是数码管显示数字,有两个条件:1、是要在 VT 端(3/8 . ;. 脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。这样才能显 示的。 共阳极 LED 数码管的内部结构原理图: 图 4 共阳极 LED 数码管的内部结构原理图 共阴极 LED 数码管的内部结构原理图: . ;. 图 5 共阴极 LED 数码管的内部结构原理图 表 1 显示数字对应的二进制电平信号 LED 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我 们要的数位,因此根据 LED 数码管的驱动方式的不同,可以分为静态式和动态式两 类。 . ;. 静态显示驱动: 静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的 I/O 口进行驱动,或者使用如 BCD 码二-十进位转换器进行驱动。静态驱动的优点是 编程简单,显示亮度高,缺点是占用 I/O 口多。 3.33.3 矩阵按键矩阵按键 键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入 数据或指令。键盘控制程序需完成的任务有:监测是否有键按下,有键按下时,在 无硬件去抖的动电路时,应用软件延时方法消除按键抖动影响;当有多个键同时按 下时,只处理一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。 矩阵按键扫描程序是一种节省 IO 口的方法,按键数目越多节省 IO 口就越可观, 思路:先判断某一列(行)是否有按键按下,再判断该行(列)是那一只键按下。 但是,在程序的写法上,采用了最简单的方法,使得程序效率最高。本程序中,如 果检测到某键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能 节省大量的 CPU 时间。 本键盘扫描程序的优点在于:不用专门的按键延时程序,提高了 CPU 效率,也 不用中断来扫描键盘,节省了硬件资源。另外,本键盘扫描程序,每次扫描占用 CPU 时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。 图 6 矩阵键盘电路图 . ;. 3.43.4 蜂鸣器模块蜂鸣器模块 单片机的 P0.7 经三极管驱动扬声器,当有按键输入时,单片机 P0.7 输出低电 平,与此引脚相连的 PNP 型三极管基电极也为低电平,三极管导通,压电蜂鸣器两 端获得+5V 电压而鸣叫;当 P0.7 输出高电平时,三极管截止,蜂鸣器停止发声。蜂 鸣器模块如图 3.9 所示: 图 7 蜂鸣器模块电路原理图 第四章第四章 计算器系统设计计算器系统设计 4.14.1 计算器硬件 AT89C51 单片机一片,4*4 键盘一个,6 位共阳极的八段数码管一个,连线和电 阻和开关若干。51 单片机的 P2 口作键盘口,其中 P2.4-P2.7 为键盘扫描输出线, P2.0-P2.3 为键盘扫描输入线。键盘由 4*4 共 16 个按键组成,10 个数字键(由 0-9 组成)5 个运算符号(加减乘除等于)组成,1 个清除键(作用相当于整体复位) 。 . ;. 6 个数码管用于显示当前数值的十万,万,千,百,十,个,P1 口接 6 个数码管的 八段,P0 口分别接 6 个数码管的公共端,P1 口输出数码管的字形码,P0 口输出数 码管的字位码。 4.24.2 系统框图: 1.主程序流程图 . ;. 图 8 主程序流程图 2.键盘扫描流程图 图 9 键盘扫描流程图 4.34.3 程序设计程序设计 . ;. #include#include #define#define ucharuchar unsignedunsigned charchar #define#define uintuint unsignedunsigned intint sbitsbit dula=P26;dula=P26; sbitsbit wela=P27;wela=P27; sbitsbit beep=P23;beep=P23; ucharuchar temp,key;temp,key; ucharuchar fun;fun; longlong intint num1,num2,res;num1,num2,res; ucharuchar aa,dis;aa,dis; ucharuchar codecode table=0 x00,0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 xtable=0 x00,0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x 6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71; ucharuchar codecode weixuan=0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe;weixuan=0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe; voidvoid delay(unsigneddelay(unsigned charchar i)i) ucharuchar j,k;j,k; for(j=i;j0;j-)for(j=i;j0;j-) for(k=125;k0;k-);for(k=125;k0;k-); voidvoid bee()bee() beep=0;beep=0; delay(255);delay(255); delay(255);delay(255); beep=1;beep=1; . ;. key_scan()key_scan() P3=0 xfe;P3=0 xfe; temp=P3;temp=P3; temp=temptemp=temp if(temp!=0 xf0)if(temp!=0 xf0) delay(10);delay(10); if(temp!=0 xf0)if(temp!=0 xf0) temp=P3;temp=P3; switch(temp)switch(temp) casecase 0 xee:0 xee: key=0;key=0; break;break; casecase 0 xde:0 xde: key=1;key=1; break;break; casecase 0 xbe:0 xbe: key=2;key=2; break;break; casecase 0 x7e:0 x7e: key=3;key=3; break;break; . ;. while(temp!=0 xf0)while(temp!=0 xf0) temp=P3;temp=P3; temp=temptemp=temp P3=0 xfd;P3=0 xfd; temp=P3;temp=P3; temp=temptemp=temp if(temp!=0 xf0)if(temp!=0 xf0) delay(10);delay(10); if(temp!=0 xf0)if(temp!=0 xf0) temp=P3;temp=P3; switch(temp)switch(temp) casecase 0 xed:0 xed: key=4;key=4; break;break; casecase 0 xdd:0 xdd: key=5;key=5; break;break; casecase 0 xbd:0 xbd: key=6;key=6; . ;. break;break; casecase 0 x7d:0 x7d: key=7;key=7; break;break; while(temp!=0 xf0)while(temp!=0 xf0) temp=P3;temp=P3; temp=temptemp=temp P3=0 xfb;P3=0 xfb; temp=P3;temp=P3; temp=temptemp=temp if(temp!=0 xf0)if(temp!=0 xf0) delay(10);delay(10); if(temp!=0 xf0)if(temp!=0 xf0) temp=P3;temp=P3; switch(temp)switch(temp) casecase 0 xeb:0 xeb: key=8;key=8; break;break; casecase 0 xdb:0 xdb: . ;. key=9;key=9; break;break; casecase 0 xbb:0 xbb: key=10;key=10; break;break; casecase 0 x7b:0 x7b: key=11;key=11; break;break; while(temp!=0 xf0)while(temp!=0 xf0) temp=P3;temp=P3; temp=temptemp=temp P3=0 xf7;P3=0 xf7; temp=P3;temp=P3; temp=temptemp=temp if(temp!=0 xf0)if(temp!=0 xf0) delay(10);delay(10); if(temp!=0 xf0)if(temp!=0 xf0) temp=P3;temp=P3; switch(temp)switch(temp) . ;. casecase 0 xe7:0 xe7: key=12;key=12; break;break; casecase 0 xd7:0 xd7: key=13;key=13; break;break; casecase 0 xb7:0 xb7: key=14;key=14; break;break; casecase 0 x77:0 x77: key=15;key=15; break;break; while(temp!=0 xf0)while(temp!=0 xf0) temp=P3;temp=P3; temp=temptemp=temp voidvoid Init()Init() num1=0;num1=0; num2=0;num2=0; . ;. wela=1;wela=1; P0=0 xdf;P0=0 xdf; wela=0;wela=0; dula=1;dula=1; P0=table1;P0=table1; dula=0;dula=0; key=16;key=16; aa=0;aa=0; dis=0;dis=0; res=0;res=0; voidvoid dis_play(longdis_play(long intint nm)nm) ucharuchar a1,a6;a1,a6; longlong intint shu;shu; shu=nm;shu=nm; if(shu=0)if(shu=0) wela=1;wela=1; P0=0 xdf;P0=0 xdf; wela=0;wela=0; dula=1;dula=1; P0=table1;P0=table1; . ;. dula=0;dula=0; elseelse for(a6=0;a6=10) switchswitch (key)(key) casecase 10:Init();break;10:Init();break; / CECE casecase 11:11: switchswitch (fun)(fun) casecase 0:res=num1+num2,dis=2;break;0:res=num1+num2,dis=2;break; casecase 1:res=num1-num2,dis=2;break;1:res=num1-num2,dis=2;break; casecase 2:res=num1*num2,dis=2;break;2:res=num1*num2,dis=2;break; casecase 3:res=num1/num2,dis=2;break;3:res=num1/num2,dis=2;break; ;break;break; / = = casecase 12:fun=0,aa=1,shanshuo();break;12:fun=0,aa=1,shanshuo();break; / + + casecase 13:fun=1,aa=1,shanshuo();break;13:fun=1,aa=1,shanshuo();break; / - - casecase 14:fun=2,aa=1,shanshuo();break;14:fun=2,aa=1,shanshuo();break; / * * casecase 15:fun=3,aa=1,shanshuo();break;15:fun=3,aa=1,shanshuo();break; / / / elseelse switchswitch (aa)(aa) casecase 0:0: num1=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年航空企业航空机务员安全生产知识考试试题及答案
- 高校代理合作合同模板(3篇)
- 高空作业施工合同模板(3篇)
- 高空施工合同注意事项(3篇)
- 2025后浪公务员面试题及答案
- 时尚街区店面股份转让及经营管理合同
- 演艺公司导演艺人培养合同
- 互联网广告代理服务协议
- 信科专业面试题及答案
- 水下电磁探测技术-洞察及研究
- 使用错误评估报告(可用性工程)模版
- 话题阅读(十四):旅游与交通-小学英语阅读理解专项训练
- 教师师德师风的培训
- 上海市中高职贯通教育信息技术课程标准
- 11.9消防宣传日关注消防安全主题班会课件
- 中国商飞在线测评题
- 高中英语新课程标准解读课件
- 七步洗手法操作评分表
- T-CECC 027-2024 生成式人工智能数据应用合规指南
- 全国中小学生学籍信息管理系统操作手册学校级
- 陈阅增普通生物学全部课件
评论
0/150
提交评论