版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 单片机原理及应用实习报告课程设计学生姓名所在专业电气工程及其自动化专业所在班级任课老师学 号成 绩 评 语 目录1、内容提要(摘要)32、正文3(1)课题的意义、本人所做的工作、系统的主要功能及工作流程3(2)硬件电路原理描述4(3)软件设计流程及描述5(4)系统测试7(5)结论73、心得体会84、附录9(1)系统总硬件电路原理图9(2)系统源程序代码9一、内容提要(摘要)本次单片机课程设计我选择做一个小型简易计算器,该设计需要满足的内容是:设计一个44的键盘,完成简单的四则运算,可以实现连续运算,有条件还可以考虑复杂的数序运算。本次设计会用到proteus进行电路图的仿真,用到keil软件
2、进行程序的编写和编译。指导老师召开实习动员会,会议上同学们需要上交具体实现方案,验证方案的合理性。实习环节由学生自行完成,最后统一时间验收和答辩。2、 正文(1) 课题的意义、本人所做的工作、系统的主要功能及工作流程 课题意义:计算器是人们生活中最常见且最简易的电子产品之一,不同的计算器有不同的动能。一般的计算器可以实现四则运算以及其他数学运算,为了研究和了解计算器的工作原理,本次设计我选择做一个简易计算器。在做这个设计的背景下可以将单片机的理论知识运用于实践中。本人所做的工作:本人主要做了两方面的工作,一是计算器的电路图仿真搭建,二是实现计算器功能的程序编写。电路图仿真是用proteus来完
3、成的,在这个过程中调动了51芯片、按键、数码管来完成电路图的搭建。实现计算器的代码是我在同学的指导下逐渐完成的,这个过程中也在网络山查找了很多资料来完善程序。系统的主要功能:该简易计算机系统可以实现简单的四则运算,同时可以在不清屏的条件下继续运算。 工作流程:首先是分析该课题要求的功能如何实现,然后开始着手写各部分的代码。完成了程序的编写之后进行编译和调试,程序大致没问题后生成hex文件,接着开始电路图的搭建。电路图的搭建好后就载入hex文件试运行,运行后发现问题继续调试程序和调整电路,直到完成要求为止。(2) 硬件电路原理描述 该电路主要由AT89C51芯片、由16个按键组成的4*4键盘、数
4、码管和外部晶振组成。其中最主要的部分是AT89C51芯片,它起到控制和运算的作用。外部晶振充当该系统的时钟电路,它的主要作用是向芯片提供基准频率,它就像个标尺一样,如果系统的工作频率不稳定的话会造成其他设备工作频率的不稳定。数码管是一个显示四位的数码管,在使用之前要对它的数模进行定义。数码管右下角的管脚控制显示的位数,当第一个管脚高电平的时候,表示可以显示4位数;当第二个管脚高电平的时候,表示可以显示3位数,以此类推,总共可以显示的范围是4位。由16个按键组成的4*4键盘的工作原理是采用了线反转法,线反转法的具体原理是:将行线作为输出线,列线作为输入线。将输出线全部置0,此时列线中呈现低电平的
5、就是按键所在的x列,如果全部不为0的话就说明没有按键按下。然后再将列线作为输出线,行线作为输入线,置输出线全部为0,此时行线中呈现低电平的就是按键所在的y行。由此可以确定按键的位置(x,y)。由该仿真电路我们可以看到数码管的接通显示引脚接在芯片的P2口上,这是将P2口作为了输出口来使用,而P1口连接了矩阵键盘,作为输入口来使用。而P3口的高四位用来控制数码管显示的位数。(3) 软件设计流程及描述在开始编写程序之前,先将所需要的KEIL软件下载安装好,然后才开始写程序。写程序的时候,我先确定主函数的主体内容,将要实现的功能先囊括在里面,然后在逐一在主函数之外编写子函数,在遇到不能实现的功能是请求
6、同学的帮助或者上网查找资料。在开始编写主程序之前,我先考虑到了键值获取的程序。在这个系统中我运用了线反转法来获取键位,然后定义一个数组来确定键位所代表的数字或符号是什么。简易计算机的显示是主要的问题,其次是它的计算功能。所以在编写主函数的时候要确定运算符号是否按下了,第一位用于运算的数是否也按下了,第二位数是否按下了,等于号是否按下了,这个判断就需要通过一个获取键位的子函数来获取信息了。因为数码管只有四位,所以还要考虑运算是否会超出显示范围,当超出了显示范围后通过程序设定屏幕显示FFFF的字样。当第一位数、运算符号、第二位数和等于号都被按下之后,就开始调用子函数来进行运算。在加减乘除运算中,最
7、复杂的是除法,因为除法的结果可能是带小数位的,也可能是不带小数位的。所以在编写这部分的主函数和子函数的时候要注意到这一点。整数除法运算和显示我编写在一个名为dis( )的子函数中,而商带有小数的除法运算和显示我编写在了一个名为div( )的子函数中。在这两个子函数中又分别讨论了商是不同位数的情况,例如在小数除法运算和显示中分别就千位带小数、百位带小数、十位带小数、个位带小数进行讨论。(4) 系统测试经过测试,发现该简易计算机的系统可以完成简单的四则运算,由于屏幕显示无法进行连续运算,但是可以在前一次计算的结果在再进行四则运算。当完成一次计算之后按下清除键C,会发现屏幕清屏了,但是再次运算的时候
8、按下第一个运算的数字不显示,按下运算符号也不显示,按下第二个数显示了,最后按等于号结果是可以正确地显示出来的。这里说明了一个问题,在做键位清零的时候还不够完善,以至于进行第二次运算的时候无法显示参与运算的数字和符号。当第一位数超过了4位数时,屏幕会自动归0,第二位数也是这样的。当计算结果超过了4位数时,屏幕会显示FFFF。由于该数码管的显示,很多运算符号都不能够正常的表示出来,在这里说明一下。当按下“+”号的时候,会显示“H”;当按下“-”号的时候,会显示“-”;当按下“*”号的时候,会显示“.”;当按下“/”号的时候,会显示“三”。另外负数的负号也是用“.”来表示。(5)结论 经过长时间的程
9、序编写和电路图搭建,然后在不断地进行系统调试后,终于算是完成了一个小型简易的计算机。该计算机虽然可以进行四则运算,但是在一些细节问题上还需改进,例如二次运算的显示问题以及如何进行连续运算的问题。总的来说这一次课程设计是比较成功的,虽然从功能实现上还未能达到预期目标,但是它已经能实现基本功能,而且程序是自己经过各种方法敲出来的,感觉挺有成就感的。三、心得体会为期一周的单片机课程设计终于结束了,在一周的实习过程中心情的变化可以说像是过山车一样起伏。这次设计我选择的课题是“小型计算器”,一开始我自己觉得这个题目是比较简单的,毕竟只需要实现四则运算就可以了。但是在真正做起来的时候发现,其实没有那么简单
10、。这个设计最难的地方在于程序编写,幸好最终我还是在同学的帮助和网络的帮助下写了出来。 在开始做这个题目的时候可以说是一头雾水,硬件电路这一部分只想到了所需要的元件,没想到如何连接起来,所以就更别谈写程序这一部分了。因为平时学的比较多的是单片机的理论知识,所以自己在实践这一方面还是比较少。即使多难的问题也是能够解决的,于是我开始在网上查阅相关的资料,然后再问问同学 ,经过长时间的努力之后最终还是将电路图和程序给做出来了。程序出来之后就是载入电路图进行运行,一开始数码管什么也没显示,同学告诉我是数码管的管脚接错了。果然,我重新接了之后数码管就正常工作了。然后在系统调试的过程中我发现只能够进行一次运
11、算,无法进行连续运算。之后有惊讶地发现可以将第一次运算的结果用于第二次运算中,这也算是连续运算吧。然后还有一个问题至今也还没有解决,就是计算器的数值清零问题。在完成一次计算之后按下清零键后,屏幕确实清零了,但是再进行计算却不能显示,而最后运算结果却出得来,这个问题我后面继续完善。在完成单片机课程设计后,我发现我无论是在理论层面还是实践层面还有很多不足的地方。通过这一次实践,我感觉自己的动手能力得到了提高,同时也巩固了单片机的理论知识。四、附录(1) 系统总硬件电路原理图(2)系统源程序代码#include #include#define uchar unsigned char#define u
12、int unsigned intuchar y, x, temp, fu=0;uint a=50, flag=0, key, dyh, bru, cru, i, fuhao=0;/fuhao为数的正负符号,flag是运算符号/bru表示b是否输入有效,cru表示c是否输入有效long c=0, d=0, b=0;uint code bitT=0x10, 0x20, 0x40, 0x80;/显示在第几位uint code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x8e;/数模void delay(uint x)/延时
13、程序uchar t;while(x-)for(t=120;t0;t-); uint keyscan()/线反转法检测键位uint cod;P1=0xf0;/低4位为列,列为0进行扫描y=P1;P1=0x0f ;/高4位为行,行为0进行扫描x=P1;temp=y|x;while(P1!=0x0f); if(temp=0x77)cod=0;if(temp=0x7e)cod=1;if(temp=0x7d)cod=2;if(temp=0x7b)cod=3;if(temp=0xbe)cod=4;if(temp=0xbd)cod=5;if(temp=0xbb)cod=6;if(temp=0xde)cod=
14、7;if(temp=0xdd)cod=8; if(temp=0xdb)cod=9;if(temp=0xb7)cod=10;/加if(temp=0xd7)cod=11;/减if(temp=0xe7)cod=12;/乘if(temp=0xeb)cod=13;/除if(temp=0xee)cod=14;/Cif(temp=0xed)cod=15;/=return(cod);void caculate(uint o) /显示运算符号if(o=10) /加P2=(0x76);P3=0x80;/数码管显示第一位if(o=11) /减P2=(0x40);/低电平触发,需取反P3=0x80;if(o=12)
15、/乘P2=(0x80);P3=0x80;if(o=13) /除P2=(0x49);P3=0x80;void dis(uint n) /整数除法运算显示if (n/10000) for(i=0;i4;i+) if (fu=0)/正数 P2=DSY_CODE10; P3=bitT3-i; n=n/10; delay(4) ; P3=0x00; else if(n/1000) /商是四位数的除法运算 for (i=0;i4;i+) if (fu=1)/负数 P2=(DSY_CODEn%10&0x7f) ;/显示一个点 if (fu=0)/正数 P2=DSY_CODEn%10;/输出最后一位数 P3=
16、bitT3-i;/显示最后一位数 n=n/10; delay(4) ; P3=0x00; else if(n/100) /三位数 for (i=0;i3;i+) if(fu=1) P2=(DSY_CODEn%10&0x7f); if (fu=0) P2=DSY_CODEn%10; P3=bitT3-i; n=n/10; delay(4); P3=0x00; else if(n/10) /两位数 for (i=0;i2;i+) if (fu=1) P2=(DSY_CODEn%10&0x7f) ; if (fu=0) P2=DSY_CODEn%10; P3=bitT3-i; n=n/10; del
17、ay(4); P3=0x00; else if (n%10) /个位数 if(fu=1)P2=(DSY_CODEn&0x7f) ;if (fu=0)P2=DSY_CODEn;P3=0x80; /从个位开始显示delay (4) ;void div(void) /小数除法运算显示d=b/c;if (d/1000) /千位带小数 for(i=0;i4;i+) P2=DSY_CODE10; P3=bitT3-i; delay(4); P3=0x00; else if(d/100) /百位带小数 d=10*b/c; for(i=0;i4;i+) if(i=1) P2=(DSY_CODEd%10&0x7
18、f);/小数点亮起来 if(i!=1) P2=DSY_CODEd%10; P3=bitT3-i; d=d/10; delay(4); P3=0x00; else if(d/10) /十位带小数 d=100*b/c;for(i=0;i4;i+) if(i=2)P2=(DSY_CODEd%10&0x7f);if(i!=2)P2=DSY_CODEd%10;P3=bitT3-i;d=d/10;delay(4) ;P3=0x00;else if(d%10) /个位带小数d=1000*b/c;for (i=0;i4;i+)if(i=3)P2=(DSY_CODEd%10&0x7f) ;if(i!=3)P2=DSY_CODEd%10;P3=bitT3-i;d=d/10;de
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《如何进行绘画创作》表格版教案-2026-2027学年冀美版(新教材)小学美术四年级上册
- 渣油热加工工竞赛模拟考核试卷含答案
- 缝纫工工作流程竞赛考核试卷含答案
- 制浆废液回收工岗位操作管理考核试卷含答案
- 2025年执业医师-临床执业医师历年题库含答案解析(5套题)
- 2025年职业健康培训考核考试练习题及答案解析
- 2025年中国人寿保险集团招聘面试技巧及模拟题集
- 2025年中级审计师考试《理论与实务》真题及答案
- 2025年重庆市事业单位人员招聘考试笔试试题(含答案)
- 2025年注册安全工程师考试真题(含答案)
- 高中地理必修二的教学反思
- 社会组织廉政工作制度
- QBQB5172023冷镦钢盘条规范
- (正式版)DB22∕T 2797.1-2017 《玄武岩纤维复合筋及玄武岩纤维混凝土设计与施工规范 第1部分:玄武岩纤维复合筋》
- 数学直觉与推理能力培育-洞察与解读
- 高速公路收费站文明服务培训课件
- 2025手术室专业护理质量敏感指标的专家共识课件
- 港口码头消防安全课件
- 2026年水利工程质量检测员网上继续教育考试题库200道含完整答案【历年真题】
- 人工智能导论 课件 第2章 人工智能基础认知
- 国防科技项目申请书模板及写作指南
评论
0/150
提交评论