首页 单片机设计报告

单片机设计报告

举报
开通vip

单片机设计报告****大学 计算机科学与技术学院 课程设计报告 20##— 20##学年第    学期 课程名称:单片机原理与应用实例仿真 设计题目:  多功能计算器的设计  学生姓名:                  学    号:                      专业班级:                     指导教师:                      2011年    1月    28日 1概述 1.1计算器设计意义 随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技...

单片机设计报告
****大学 计算机科学与技术学院 课程设计 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 20##— 20##学年第    学期 课程名称:单片机原理与应用实例仿真 设计题目:  多功能计算器的设计  学生姓名:                  学    号:                      专业班级:                     指导教师:                      2011年    1月    28日 1概述 1.1计算器设计意义 随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。电子产品的更新速度快就不足惊奇了。 近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。其中系统的抗干扰性能是系统可靠性的重要指标 计算器在人们的日常中是比较的常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机来设计的八位计算器。该设计系统是以AT89C51为单片机, P1口作为输入端,外接4X4的键盘,通过键盘扫描来对输入数的控制,并外接驱动电路,用来保证LED的工作正常。计算器将完成的功能有加,减,乘,除等功能。 1.2设计方法 本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个四乘四的键盘,一个排阻做P0口的上拉电阻(接线图在附录2),它可以实现结果低于65535的加、减、乘、除运算。 电路采用动态显示,由八位共阳极数码管通过P0口,P2口与单片机分别相连,且数码管A,B,C,D,E,F,G分别依次与单片机的P0口相连,P0口做为字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7相连,P2口做为数码管的位控制端,动态显示是每次数码管只显示一位,由于人的视觉停留是0.05到0.2秒之间,当数码管依次点亮各个位时,使循环的频率高于人的视觉停留时间,人们就会认为数码管是同时点亮的,就可以达到动态显示的效果。 输入键盘采用4*4键盘。采用软件识别键值并执行相应的操作,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。这样循环执行。 1.3计算器基本实现功能 1. 计算器可显示8位数字,开机运行时,只有数码管最低位显示为“0”,其余位全部不显示; 2. 设计4×4键盘,分别表示0~9、+、-、×、/ 、=和清零键CL,输入的数字从设计的键盘输入; 3.第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三次按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音,并且输入的第九个数不接收,仍然显示原来的八位数; 4.可以对计算结果小于256的两个无符号数进行加法运算,并显示计算结果。对于×、/、和—的运算为提高部分; 2 系统总体 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 及硬件设计 2.1  C51单片机的管脚与特点 在一块芯片上集成了CPU,存储器RAM,ROM以及输入与输出接口电路,这种芯片习惯上被称为单片微型计算机,简称单片机。MCS-51单片机是INTEL公司在1980年推出的高档8位单片机。它的典型产品有:8051,8031,8751,80C51,80C31,87C51。 " 图1 AT89C51管脚示意图 AT89C51单片机由CPU,振荡器与时序电路, 4个8位的I/O端口(P0,P1,P2,P3),串行口等组成。 P0口有三个功能: 1、外部扩展存储器时,当做数据总线(如图中的D0~D7为数据总线接口) 2、外部扩展存储器时,当作地址总线(如图中的A0~A7为地址总线接口) 3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。 P1口只做I/O口使用:其内部有上拉电阻。 P2口有两个功能: 1、扩展外部存储器时,当作地址总线使用 2、做一般I/O口使用,其内部有上拉电阻; P3口有两个功能: 除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由寄存器来设置, ALE 地址锁存控制信号 PSEN 外部程序存储器读选通信号 EA/VPP 访问和序存储器控制信号 RST 复位信号XTAL1和XTAL2 外接晶振引脚VCC:电源+5V输入VSS:GND接地。 2.2 矩阵式键盘的结构与工作原理 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键。 键盘程序流程图 : 图2键盘流程图 确定矩阵式键盘上何键被按下,用“行扫描法”。 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法.判断键盘中有无键按下: 将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交*的4个按键之中。若所有列线均为高电平,则键盘中无键按下。判断闭合键所在的位置: 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交*处的按键就是闭合的按键。把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个位,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。 图3. 4×4键盘示意图 2.3 LED显示原理 LED 点阵显示器亦称LED 矩阵板,具有亮度高、发光均匀、可靠性好、接线简单、拼装方便等优点,能构成各种尺寸的大屏幕显示器。因此,它被广泛应用于大型LED 智能显示屏、智能仪器仪表和机电一体化设备的显示单元中,取得了较好的效果。由于它经济、小型的显示系统,同时要求使用方便灵活,方便地组成了由多块大屏幕LED 显示器构成的显示系统,该系统可广泛用于商场、车站、码头及其它公共场合。LED 显示屏由 ED 点阵显示器(常见型号为P2158A) 构成。它是以发光二极管为像素,按照行与列的顺序排列而成的显示器件,采用逐行(或逐列) 扫描方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息 此设计中LED数码管的显示为动态显示。各数码管在显示过程中轮流得到送显信号,与各数码管接口的I/O口线是共用的。动态显示优点是用元器件少,占I/O线少。但缺点是 有闪烁,必须扫描,花费CPU时间,编程复杂。LED多数情况用于显示十进制数字,要将0~9的数字用7段显示,必须将数字转换为LED对应七段码的信息,比如,要显示“0”,就是让a、b、c、d、e和f段发光,显示“1”,让b和c段发光,等等如表所示。然后根据LED是共阴极还是共阳极接法确定LED各输入端应接逻辑1还是逻辑0,我选用的是共阴接法,要显示“0” 时,a、b、c、d、e和f段就要输入逻辑1,即其段码为3F, 将待显示内容“ 翻译 阿房宫赋翻译下载德汉翻译pdf阿房宫赋翻译下载阿房宫赋翻译下载翻译理论.doc ”为LED段码的过程,可以由软件查表方法实现译码。 2.4晶体振荡电路 MCS--51单片机内部的振荡电路是一个高增益反相放大器,引线 XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。 这里,我们选用51单片机12MHZ的内部振荡方式,电路如下:电容器C1,C2起稳定振荡频率,快速起振的作用,C1和C2可在20-100PF之间取,这里取30P,接线时要使晶体振荡器X1尽可能接近单片机。 图4. 晶体振荡电路 3 软件设计 3.1 Protues仿真电路图设计 在Protues仿真中我用P1的八个管角接键盘的行和列,通过与键盘扫描程序的结合来实现其功能。P0口通过8个上拉电阻接数码管的位选信号,P2口接数码管的片选信号。P3口接一喇叭,当数码管显示8位数之后通过程序使其置位发出声音。 3.2 软件主要程序设计 键盘扫描程序 char scankey() { P1=0xff;  P1_4=0; temp=P1; temp=temp & 0x0f; if (temp!=0x0f) { delay(20); temp=P1; temp=temp & 0x0f; if (temp!=0x0f) { temp=P1; temp=temp & 0x0f; switch(temp) { case 0x0e: return(15); break; case 0x0d: return(14); break; case 0x0b: return(13); break; case 0x07: return(12); break; } /***************************************************************/ temp=P1; temp=temp & 0x0f; while(temp!=0x0f) { temp=P1; temp=temp & 0x0f; } } } 此程序为键盘扫描中第一次扫描所用的程序,这段程序的主要过程为:初始化时,将P1.4置为低电平,通过与0x0f相与来判断所按下的键,此次为扫描位于P1.4那一行的键,若相与结果为0x0e时说明P1.0所检测出的为低电平,闭合的键应为P1.4行与P1.0列的交叉处的键。若相与结果为0x0d则P1.1所检测为低电平,闭合的键应为P1.4行与P1.1列的交叉处的键。若相与结果为0x0b则P1.2所检测为低电平,闭合的键应为P1.4行与P1.2列的交叉处的键。若相与结果为0x07则P1.3所检测为低电平,闭合的键应为P1.4行与P1.3列的交叉处的键。要把16个键盘全部扫描完需要进行4次这样的逐行扫描,所用方法相同程序类似分别另P1.5,P1.6,P1.7为低电平执行相同操作,具体程序如源程序所示。 显示程序 /*码制转换:计算结果转换为显示码*/ void cchange(uint cnum) { uchar i,j,k; uchar n; uchar dbuffer[8]={0}; for(i=0;i<8;i++) { n=cnum%10; cnum=cnum/10; dbuffer[i]=n; } for(j=0;j<8;j++) { if(dbuffer[7-j]!=0) { for(k=0;k<=7-j;k++) { dd[k]=dbuffer[k]; } break; } } } /*显示数字*/ void disnum(uchar unum) { display(0xfe,disdata[2]); if(counter<8) { change(dd,counter); if(dflag==0) { indata=indata*10+unum; dd[0]=indata%10; } if(dflag==1) { nextdata=nextdata*10+unum; dd[0]=nextdata%10; } } else {counter=8; alarmflag=1;} counter++; } 此程序为显示程序的一部分,其同源程序代码中的数据定义部分,显示驱动程序和码制转换程序一起来实现数据在数码管中的显示。如当第一次输入为1,第二次输入为2时,则将1在数码管中向前移一位即第二位显示管上,将2放到第一位显示管上,在通过码制转换使其转换为12来执行运算,如果继续输入数字则它们将逐个的向前移动,直到输入8为后,报警提示已不能显示更多数字。 简单运算程序              void operator(uchar opch) { if(dflag==0) dflag=1; else dflag=0; cbuffer(); op=opch; } /*等号处理程序*/ void equal() { cbuffer(); switch(op) { case 1: if(dflag==0) { nextdata=nextdata+indata; sum=nextdata; indata=nextdata; } if(dflag==1) { indata=indata+nextdata; sum=indata; nextdata=indata; } lsum=lsum+sum; break; 此设计能实现简单运算,此程序实现加法运算,则根据程序首先通过第一次键盘扫描确定出所按下的键对应的输出数据,然后通过显示程序经数码管显示出来,接着进行键盘扫描若确定出按下的键所对应的字符还为数据则把第一次显示的数字在数码管上左移一个管子,然后把第二次扫描的数据放入右边第一个管子中,继续扫描直到确定出按下的键为“+”则保存前面所扫描的数据到缓冲区,然后接着扫描键盘直到确定出加数,最后当扫描出所按下的键为“=”时,则保存数据到缓冲区,根据程序计算出其相加结果。并通过程序及原理图显示出来。通过这个程序还可实现连加功能。整个源程序还可以实现加,减,乘,除四个基本运算,具体的减,乘,除运算程序在源程序中有详细显示。当检测出所闭和的为这些按键时,通过程序将执行相似过程最后通过数码管显示出结果。 主程序 void main() { t=0; EA=1; ET0=1; TMOD=1; TH0=(65536-5000) / 256; TL0=(65536-5000) % 256; TR0=1; sum=0; lsum=0; display(0xfe,disdata[0]); while(1) { t=scankey(); alarm(); if(t!=16) { judgekey(); } } } 段程序为整个源程序的主程序,包括初始化程序,开机显示0,一个循环程序,各个子程序都围绕着这个主程序来实现其功能。 4 Proteus软件仿真 4.1 Proteus软件简介 Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。。Proteus 产品系列也包含了我们革命性的VSM 技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232 终端等动态外设模型来对设计进行交互仿真。 Proteus软件提供了可仿真数字和模拟、交流和直流等数千种元器件达30多个元件库。虚拟仪器仪表的数量、类型和质量,是衡量仿真软件实验室是否合格的一个关键因素。在Proteus软件中,理论上同一种仪器可以在一个电路中随意的调用。 除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似但功能更多。 这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。Proteus提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。 4.2 Proteus软件虚拟实验的构建 单片机的课程设计中,内容一般包括了四方面,即单片机系统资源;硬件电路的设计、组装、调试;应用软件的编制、调试;总调,即应用软件的链接调试,程序固化,软、硬件结合的应用系统。任何一种单片机均提供了一定的系统资源。对于51系列单片机来讲,其所提供的资源是以寄存器和存储器的方式体现出来的。对于寄存器内容的查看,可以采用多种可以模拟仿真51单片机的软件来实现。对于Keil软件来讲,C51编译器可以实现对51系列单片机所有资源的操作。 4.2.1硬件电路的设计、组装、调试 硬件电路的设计包含两部分内容:一是系统扩展,即单片机自身的功能单元如ROM、RAM、I/O口、定时器/计数器等容量不能满足应用系统的需要时,必须在片外进行扩展,选择适当的芯片,设计相应的电路;二是系统配置,即按照系统的要求配置外围设备,如键盘、显示器、等,要设计合适的接口电路。 很多常用的硬件电路的设计可在Proteus软件中实现,通过Proteus软件的使用,不但可以实现教材上的大部分实验。而且可以学到硬件电路设计的方法。 4.2.2应用软件的编制、调试 使用编译软件工具时,项目开发流程和其它软件开发项目的流程极其相似。 (1)、创建一个项目,从器件库中选择目标器件,配置工具设置。 (2)、用C语言创建源程序。 (3)、用项目管理器生成应用。 (4)、修改源程序中的错误。 (5)、测试,连接应用。 4.2.3总调 总调,即应用软件的链接调试,程序固化,软、硬件结合的应用系统。软硬件联合仿真系统由一个硬件执行环境和一个软件执行环境组成,通常软件环境和硬件环境都有自己的除错和控制界面,它们整合调试可以实现系统的总调。本系统的软件系统较大,全部采用C语言编写,除语法与逻辑差错外,当确认程序没问题时,直接下载到单片机仿真调试。采取自下到上的方法,单独调好每一个模块,最后完成一个完整的系统调试,使单片机能够正常的安装预定的程序运行。 4.3运行效果图 被加数 加数 和值 开机显零 显示8个数 其他简单的算术运算同样可以运行出结果。其具体仿真情况可以从Proteus仿真软件中看到。 5 课程设计体会 时光如水,生命如花。可是我的心情依然久久不能平静,我回顾着三年来的辛苦努力,胸中百感交集,感慨万分。在这一周中,我学到了很多,对单片机电子这门课的认识也进一步加深了。从一个刚入门的学习者,渐渐的爱上了这门技术,虽然说对于单片机技术方面的知识还有很多要学习和提高,但是在这一周中我还是感受到这门课程的魅力所在。同时我也想到了明年的毕业,我考虑着未来自己的发展方向,我也在想作为一个人所应该具备的素质。 经过一周的努力,顺利的完成了单片机课设。这是一个磨练意志的过程。从课题的选择开始,计算器的设计、硬件和软件系统的设计、到最后的Proteus软件仿真完成,这其中经历了很多困难,但是更重要的是在这个过程中我得到了很大的锻炼。一方面通过C51单片机等一些器件的设计让我学习和掌握了单片机技术的基础知识和技术要点,也使以前学的很多知识都得到了运用;另一方面在用Proteus软件画电路图时,然后再转换成一维的WORD中进行编辑,这个过程中让我掌握了计算机辅助的设计技术。当然,这是一个需要不断的尝试,不断的校核,不断的修改,最后完成一个合理的设计的过程。需要的是细心和耐心。在很大程度上培养了我拼搏的工作精神。使我受益匪浅,更加明确了自己专业的方向。 这一周的时间是短暂的,但这我想我们学到的应该不仅仅是专业技术等表面上的东西,更深一层的是对人生的感悟,对未来的想法,年轻人的桀骜不驯在此时已经不在有意义,取而代之的是理性的思维。我们应该具备什么样的能力,我们适合什么样的人生,我们应该在怎样的岗位上实现自己的人生价值,我们又应该怎么做才能对得起父母,对得起自己,对得起朋友,对得起辛勤培育我们的老师。总之,无论我们选择怎样的人生,我们都要争取做好摆在我们面前的每一件事情! 感谢在这次课程设计过程中给予我帮助和指导的各位老师,特别是李泉溪老师,感谢您孜孜不倦的为我们授业解惑,帮助我们解决一个又一个难题,无私的为我们提供一页又一页的资料;感谢与我一道进行设计的各位同学,是你们陪我走过了这一段难忘的旅程,在我最困难的时候给了我莫大的鼓励,在这里真诚的表示感谢。 通过本次课设,我不仅学到了关于单片机技术方面的许多专业知识,同时也让我感觉到团队合作的重要性。其实如何有效和快速的找到资料也是课设给我的启发,利用好图书馆和网络,是资源的到最好的利用。与他人交流思想是取得成功的关键,在交流中,不仅强化了自己原有的知识体系,也扩展了自己的思维。课设是一个通过思考、发问、自己解惑并动手、提高的过程。我会在以后的学习中不断学习,积累经验,完善自己。 此次课程设计的结束,又是一个新开始,希望我们大家在以后的学习之中充分展现自我,努力学习新的知识,当然最重要的还是牢固掌握本专业所学习的知识。让我们坚信自己的理想,人生的道路四通八达,但我们不渝的方向只有一个,那就是前进,永不言弃,永不退缩! 我相信,用心一定能赢得精彩! 参考文献 [1] 潘新民.微型计算机控制技术 [M] .北京:人民邮电出版社,1999. [2] 彭介华.电子技术课程设计指导[M] .北京:高等教育出版社,2000. [3] 张毅刚、曲春波编著。MCS-51单片机应用设计。哈尔滨工业大学出版社,1994. [4] 李广弟等编著. 单片机基础.修订本. 北京: 北京航空航天大学出版社, 2001. [5] 张凯,马忠梅编著.MCS-51单片机综合系统及设计开发.科学出版社,1996.      
本文档为【单片机设计报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_083599
暂无简介~
格式:doc
大小:51KB
软件:Word
页数:24
分类:互联网
上传时间:2019-05-24
浏览量:10