ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:206.74KB ,
资源ID:25223658      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25223658.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于msc51单片机实现的四位4乘4矩阵键盘计算器的C语言程序和PROTUES电路和仿真课程设计报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于msc51单片机实现的四位4乘4矩阵键盘计算器的C语言程序和PROTUES电路和仿真课程设计报告.docx

1、基于msc51单片机实现的四位4乘4矩阵键盘计算器的C语言程序和PROTUES电路和仿真课程设计报告单片机原理及接口技术课程设计报告设计题目: 计算器设计 信息与电气工程学院二零一三年七月计算器设计单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机。是一种特殊器件,需经过专门学习方能掌握应用,应用中要设计专用的硬件和软件。近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分

2、之间的相互耦合因素等。其中系统的抗干扰性能是系统可靠性的重要指标。数学是科技进步的重要工具,数据的运算也随着科技的进步越发变得繁琐复杂,计算器的出现可以大大解放人在设计计算过程中的工作量,使计算的精度、速度得到改善,通过msc51单片机,矩阵键盘和LED数码管可以实现简单的四位数的四则运算和显示,并当运算结果超出范围时予以报错。注:这一部分主要描述题目的背景和意义,对设计所采取的主要方法做一下简要描述。字数不要太多,300-500字。另注:本文要当做模板使用,不要随意更改字体、字号、行间距等,学会使用格式刷。文中给出的各项内容都要在大家的报告中体现,可采用填空的方式使用本模板。1. 设计任务结

3、合实际情况,基于AT89C51单片机设计一个计算器。该系统应满足的功能要求为:(1) 实现简单的四位十进制数字的四则运算;(2) 按键输入数字,运算法则;(3) LED数码管移位显示每次输入的数据和运算结果;(4) 当运算结果超出范围时实现报错。 主要硬件设备:AT89C51单片机、LED数码管、矩阵键盘。注:这一部分需要写明系统功能需求,用到的主要硬件(参考实验箱的说明书)。2. 整体方案设计计算器以AT89C51单片机作为整个系统的控制核心,应用其强大的I/O功能和计算速度,构成整个计算器。通过矩阵键盘输入运算数据和符号,送入单片机进行数据处理。经单片机运算后判断是否超出要求的运算范围,控

4、制LED数码管的输出原理图如图2-1所示。图2-1 基于单片机的变频调速恒压供水系统原理图本系统硬件主要由矩阵键盘、I/O输入输出、显示系统等几部分组成。各模块的主要功能如下:(1)矩阵键盘将十六进制编码的数字传入单片机。(2) 单片机扫描键盘信号并接收,对输入的键盘信号进行处理(3) LED以动态扫描的方式移位显示每次输入的数据和最后的运算结果。系统的整体设计方案设计图如图2-2所示。图2-2 系统的整体方案设计图注:文中出现的所有框图、流程图都要用VISIO画,不允许从文档中裁剪然后粘贴。要注意图的格式,图中的文字大小不要大于正文,图题用五号宋体,居中。3. 系统硬件电路设计3.1 时钟电

5、路本设计采用外部时钟方式,使用外部振荡器产生脉冲信号,采用12MHz的石英晶体振荡器,结构如图3-1。图3-1 时钟电路和复位电路3.2 复位电路 本设计采用按键手动电平复位电路,通过RST端经电阻与电源Vcc接通而实现,结构如图3-1。 3.3 数码管显示电路本设计所用数码管显示电路采用4位红色共阴极数码管接上拉电阻实现,其结构如图3-2。图3-2数码管显示电路 3.4 键盘输入电路本设计采用4*4矩阵键盘实现数据和运算法则的输入。按键设置在行、列线的交点上,行列线分别连接的按键开关的两端,并通过上来电阻街道+5V上。无按键按下时,行、列线均处于高电平,当有按键按下是,相对应的行和列电平为低

6、电平。此特点也用于单片机I/O口对矩阵键盘的扫描。矩阵键盘和单片机的连接如图3-2所示。图3-2 矩阵键盘与单片机的连接图注:以上各部分按照电路功能模块化介绍器件选型、器件特性、电路设计思路、电路功能等,要注意与第2小节中的整体方案设计图相对应。文中出现的电路原理图同样不能从资料中裁剪,可从自己设计的Proteus图中拷贝。4. 系统程序设计4.1 主程序流程图单片机控制I/O口循环扫描键盘状态,当检测到有按键按下时,将按键信号输入单片机,处理并输出显示,若无按键按下,则保持前一个数据的显示状态。系统主程序流程图如图4-1所示。图4-1 主程序流程图4.2 键盘扫描子程序流程图先检测是否有按键

7、按下,当有按键按下时,逐行检测每一行的列状态,将准确的键盘信号输入单片机。键盘扫描流程图如图4-2所示。图4-2 键盘扫描流程图4.3 按键处理输出显示子程序流程图输出的子程序包括运算数的输出和结果输出,当有数字键按下,之前的数字左移一位,最新按下的数字显示在第一位,当有符号键按下,屏幕清零,当有等号键按下,判断运算结果是否符合要求,若符合要求,输出结果,不符合要求,输出报错提示。输出显示子程序流程图如图4-3所示。图4-3按键处理显示输出子程序流程图5. 系统调试这一部分分为Proteus软件仿真调试和硬件调试两部分,分别给出调试过程、调试时应注意的问题,分析遇到的问题及问题的解决方法,Pr

8、oteus调试可截屏运行结果图形并加以分析。5.1 Proteus软件仿真调试5.2 硬件调试6. 程序清单#include #include #include #include #include unsigned char key_scan(); void delay10ms(); unsigned char key_free(); void display(); void display1(unsigned int number1); void display2(unsigned int number2); void display3(unsigned int number3); void

9、 display4(unsigned int number4); void display_result(); void delay(unsigned int time); void key_deal(); void display_error(); void caculate(); void put_offleds(); unsigned char numbertable=0x3F,0x06,0x5B,0x4F,0x66,0x6d,0x7D,0x07,0x7f,0x6f;/1至9的共阴显示段码 unsigned char errortable=0x86;/报错时使用的段码 unsigned

10、char weitable=0xfe,0xfd,0xfb,0xf7; /共阴数码管位选 unsigned int temp,temp1,temp2,number1,number2,number3,number4,a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4,way,k,k1,waytest,result_test; unsigned int Result;result1,result2,result3,result4,E_test; unsigned char key; void main() while(1) key_scan(); key_free(); key_

11、deal(); /新的显示函数 void display() display1(number1); delay(6); display2(number2); delay(6); display3(number3); delay(6); display4(number4); delay(6); void display1(unsigned int number1) P2= weitable3; P1=numbertablenumber1; void display2(unsigned int number2) P2= weitable2; P1=numbertablenumber2; void

12、display3(unsigned int number3) P2= weitable1; P1=numbertablenumber3; void display4(unsigned int number4) P2= weitable0; P1=numbertablenumber4; /结果显示程序 void display_result() display1(result1); delay(6); display2(result2); delay(6); display3(result3); delay(6); display4(result4); delay(6); /定义延时程序 voi

13、d delay(unsigned int time) unsigned int i,j; for(i=time;i0;i-) for(j=112;j0;j-); ; /按键扫描子程序 unsigned char key_scan() P0=0x0f; /对所有行置高电平,列全为低电平 /P0=0xff; temp1=P0; if(temp1!=0x0f) /如果有按键按下 /put_offleds(); /delay(3); temp1=P0; /延时消抖 if(temp1!=0x0f) P0=0xf0; /翻转扫描列状态 /P0=0xff; temp2=P0; if(temp1=0x0e)

14、/若第一行有按键按下 k=0; /键盘按下动作标记 switch(temp2) case 0xe0: /第一列有人按下 key=7;break; case 0xd0: /第二列有人按下 key=8;break; case 0xb0: /若第三列有人按下 key=9;break; case 0x70: /若第四列有人按下 key=/;break; else if (temp1=0x0d) /若第二行有按键按下 k=0; /键盘按下动作标记 switch(temp2) case 0xe0: /第一列有人按下 key=4;break; case 0xd0: /第二列有人按下 key=5;break;

15、 case 0xb0: /若第三列有人按下 key=6;break; case 0x70: /若第四列有人按下 key=*;break; else if(temp1=0x0b) /若第三行有按键按下 k=0; /键盘按下动作标记 switch(temp2) case 0xe0: /第一列有人按下 key=1;break; case 0xd0: /第二列有人按下 key=2;break; case 0xb0: /若第三列有人按下 key=3;break; case 0x70: /若第四列有人按下 key=-;break; else if (temp1=0x07) /若第4行有按键按下 k=0;

16、/键盘按下动作标记 switch(temp2) case 0xe0: /第一列有人按下 key=.;break; case 0xd0: /第二列有人按下 key=0;break; case 0xb0: /若第三列有人按下 key=;break; case 0x70: /若第四列有人按下 key=+;break; k+=1; return key; /延时程序 void delay10ms() unsigned char i,j; for(i=0;i25;i+) for(j=0;j9) /报错标记 Result=0x79; break; case -: /减法运算 Result=Number1-

17、Number2; if(Number1Number2) Result=0x79; /报错标记 break; /考虑溢出设计 case *: /乘法运算 Result=Number1*Number2; if(a4*b4!=0|a3*b3!=0) /报错标记 Result=0x79; break; case /: /除法运算 Result=Number1/Number2; if(Number1Number2) Result=0x79; /报错标记 break; default: Result=Number1; break; result4=Result/1000; result3=Result%1

18、000/100; result2=Result%100/10; result1=Result%10; /定义关闭数码管函数 void put_offleds() P1=0x00; P2=0xff; 注:以上程序清单的格式不能更改,采用Courier New字体,5号大小,背景色不能缺,注意排列整齐、注释等。7.小结本部分对整个设计过程进行总结说明,对取得的成果进行简单评价,对存在的问题给出以后的展望或解决办法。其他格式说明以下主要对文中出现的图、表以及公式格式给出相关示例,请大家按照如下格式编排。对图的格式要进行设置,首先设置其版式为“嵌入型”,然后将图和图下面的图号及图题居中排列,如图2-1

19、所示。图2-1 水罐液位控制结构图XXXX。XXX如表2-1所示。表2-1 XXX材料名称化学成分()力学性能CMnCr其他抗拉强度b/N/mm2屈服强度s/N/mm2弹性模量E/N/mm2伸长率/布氏硬度/HBS对于文中出现的所有公式,要求必须用公式编辑器进行编辑,并在后面作相应的标号,具体格式如下例所示,右对齐,公式本体依靠在公式号和公式本体之间加入空格实现居中。 (2-1) (2-2)报告内容编号说明:1. 节标题(小三黑体,段前段后6磅间距,顶格)1.1 条标题(小四黑体,段前6磅间距,顶格)(1) 一级子项标题(小四号宋体,首行缩进2字,行间距与正文相同,1.25倍行距,英文括号,编号与后面文字之间空一格,可加粗突出显示,也可不加粗)(2) 哈尔滨工业大学本科课程设计报告模板1) 二级子项标题(小四号宋体,首行缩进2字,英文半括号,编号与后面文字之间空一格,不加粗)2) 三级子项标题(编号形式有区别,别的同二级子项标题)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1