您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > 数码管动态显示012345
12/21/202012:46:52PM12/21/202012/21/2020120FtpDown第1页2020-12-2111课程设计报告书课程名称:单片机原理及应用技术课题名称:数码管动态显示012345专业:班级:学号:姓名:成绩:2010年6月25日设计任务书一、设计任务12/21/202012:46:52PM12/21/202012/21/2020220FtpDown第2页2020-12-2122数码管显示在当今社会用处很广泛!随着微控技术的日益完善和发展,单片机的应用在不断走向深入。它的应用比定导致传统的控制技术从根本上发生变革。也就是说单片机应用的出现是对传统控制技术的革命。因此了解单片机知识,掌握单片机的应用技术具有重大的意义。本文主要从计算机的应用上来实现数码管动态显示,是复杂程序的基本操作。二、设计方案及工作原理数码管是怎样来显示1,2,3,4呢?数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。我们分别把他命名为A,B,C,D,E,F,G,H。搞懂了这个原理,我们如果要显示一个数字2,那么A,B,G,E,D这5个段的发光管亮就可以了。也就是把B,E,H(小数点)不亮,其余全亮。根据硬件的接法我们编出以下程序。当然在此之前,还必须指定哪一个数码管亮,这里我们就指定最后一个P2.7。LOOP:CLRP2.7;选中最后的数码管12/21/202012:46:52PM12/21/202012/21/2020320FtpDown第3页2020-12-2133SETBP0.7;B段不亮SETBP0.5;小数点不亮SETBP0.1;C段不亮CLRP0.2;其他都亮CLRP0.3CLRP0.4CLRP0.6CLRP0.0JMPLOOP;跳转到开始重新进行END把这个程序编译后写入单片机,可以看到数码管的最后一位显示了一个数字2。目录第一章、系统设计要求和解决方案~~~~~~~~~~~~~~~~~~~~~512/21/202012:46:52PM12/21/202012/21/2020420FtpDown第4页2020-12-2144第二章、硬件实现~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~7第三章、软件实现~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~11第四章、实现的功能~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~14第五章、心得体会~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~16附录一、参考文献~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~18附录二、硬件原理图~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~19附录三、程序流程图~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1912/21/202012:46:52PM12/21/202012/21/2020-5-20FtpDown第-5-页2020-12-21-5--5-第一章系统设计要求和解决方案显示1个2字就要10多行程序,太麻烦了。显示数字2则是C,F,H(小数点)不亮,同时由于接法为共阳接法,那么为0(低电平)是亮为1(高电平)是灭。从高往低排列,(p0.7_p0.0)写成二进制为01111110,把他转化为16进制则为A2H。我们可以根据硬件的接线把数码管显示数字编制成一个表格,以后直接调用就行了。有了这个表格上面显示一个2的程序则可简化为:LOOP:CLRP2.7;选中左边的数码管MOVP0,#0A2H;送数字2的代码到P0口JMPLOOP;跳转到开始重新进行END原理图中把所有数码管的6个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。CPU向字12/21/202012:46:52PM12/21/202012/21/2020-6-20FtpDown第-6-页2020-12-21-6--6-段输出口送出字形码时,所有显示器接收到相同的字形码,由6个PNP的三极管,来控制这8位哪一位工作,例如上面的例子中我们选中的是P2.5.就是最后的一位亮了.同样的如果要第一位亮,只需要把程序CLRP2.5改为CLRP2.0即可。在这里就有了一个矛盾,所有数码管的8个笔划段a-h同名端连在一起,那么在一个屏幕上如何显示0,1,2,3,4,5这样不同的数字呢?的确,在这样的接法中,同一个瞬间所有的数码管显示都是相同的,不能显示不同的数字。在单片机里,首先显示一个数,然后关掉.然后显示第二个数,又关掉,那么将看到连续的数字显示,轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。例如数码管显示012345这么6个数,在单片机中实际的工作流程如下:先打开P2.0,送0,然后关掉P2.0,打开P2.1送1,再关掉P2.1,打开P2.2送2,依次向下,由于速度足够快,那么我们将连续的看到012345这8个数。第二章硬件实现1.单片机的特点12/21/202012:46:52PM12/21/202012/21/2020-7-20FtpDown第-7-页2020-12-21-7--7-(1).控制功能强。(2).抗干扰性强,可靠性高,工作温度范围宽。(3).开发周期短,性价比高,易于产品化。2.单片机的应用领域(1).智能化仪表。(2).实时工业控制。(3).机电一体化产品。(4).智能接口。(5).办公自动化。(6).商业营销。(7).家用电器。核心器件:单片机系统采用atmel公司的AT89S51芯片,晶振选用12MHz,电源电压采用5V。信号输出:有串行输出并行输出,共阳极数码管在输入为1是不亮,在输入为0时才亮利用这一原理可以很简单的编出程序;(1)打开Keil程序,执行菜单命令“Project,然后,“NewProject”创建“trafficlight”项目,并选择单片机型号为AT89C51。(2)执行菜单命令“File”,然后,“New”创建文件,输入汇编源程序,保存为“trafficlight.asm”在“Project”栏的File项目管理窗口中右击文件组,选择“AddFilestoGroup‘SourceGroup1’”,将源程序“trafficlight.asm”添加到项目中。(3)执行菜单命令“Project,然后,“OptionsforTarget‘Target1’”,在弹出的对话框中选择”Output”选项卡,选中“Create12/21/202012:46:52PM12/21/202012/21/2020-8-20FtpDown第-8-页2020-12-21-8--8-HEXFile”。在“Debug”选项卡中,选中“Use:ProteusVSMSimulator”。(4)执行菜单命令“Project”,然后,“BuildTarget”,编译源程序。如果编译成功,则在”OutputWindow”窗口中显示没有错误,并创建了“trafficlight.hex”文件。(5)在已绘制好原理图的ProteusISIS菜单栏中,执行菜单命令“Debug”,然后,“UseRemoteDebugMonitor”将该项选中,使”Debug”选中“Start/StopDebugSession”,或直接单击图标。(6)在Keil代码编辑窗口中设置相应断点,断点的设置方法:在需在设置断点语名的空白处双击鼠标左键,可设置断点;再次双击,可取消该断点。(7)设置好断点后,在Keil中按F5键运行程序。程序如下:ORG0000HAJMPMAINORG0080HMAIN:CLRP2.0;选中第一个数码管MOVP0,#0C0H;显示0LCALLDELAY;调用延时MOVP0,#0FFH;关显示SETBP2.012/21/202012:46:52PM12/21/202012/21/2020-9-20FtpDown第-9-页2020-12-21-9--9-CLRP2.1;选中第二个数码管MOVP0,#0F9H;显示1LCALLDELAYMOVP0,#0FFHSETBP2.1CLRP2.2;选中第三个数码管MOVP0,#0A4H;显示2LCALLDELAYMOVP0,#0FFHSETBP2.2CLRP2.3;选中第四个数码管MOVP0,#0B0H;显示3LCALLDELAYMOVP0,#0FFHSETBP2.3CLRP2.4;选中第五个数码管MOVP0,#99H;显示4LCALLDELAYMOVP0,#0FFHSETBP2.4CLRP2.5;选中第六个数码管MOVP0,#92H;显示5LCALLDELAYSETBP2.5MOVP0,#0FFHAJMPMAINDELAY:MOVR7,#20D1:MOVR6,#100D2:DJNZR6,D2DJNZR7,D1RET12/21/202012:46:52PM12/21/202012/21/2020-10-20FtpDown第-10-页2020-12-21-10--10-ENDc语言参考程序:#includereg51.h//头文件#defineucharunsignedchar//宏定义,为方便编程#defineuintunsignedint#defineDIGIP0//宏定义,将P1口定义为数码管#defineSELECTP2//宏定义,将P2定义为数码管选择口uchardigivalue[]={0x28,0x7e,0x0a2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};//显示的数字数组,依次为0,1,..,9ucharselect[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voiddelay()//延迟函数,决定数码管跳变的间隔时间{ucharii=200;//若发现数码管闪烁,调节这里即可while(ii--);}charcodeSST516[3]_at_0x003b;//仿真器插入代码main()//主函数{uchari=0;12/21/202012:46:52PM12/21/202012/21/2020-11-20FtpDown第-11-页2020-12-21-11--11-while(1){for(i=0;i8;i++)//8个数码管轮流显示{SELECT=select[i];//选择第i个数码管DIGI=digivalue[i];//显示idelay();}}}第三章软件实现在MCS-51系列单片机中,有2个系列:子51系列和52子系列。每个系列有若干种型号。51系列有8051、8751、8031、87C51、和80C31。我们以MCS-51系列单片机的典型型号80C51为例来介绍其结构和功能。MCS-51的内部结构框图如下:12/21/202012:46:52PM12/21/202012/21/2020-12-20FtpDown第-12-页2020-12-21-12--12-分析上图,并按其功能部件划分可以看出,MCS-51系列单片机是由8大部分组成的。这8大部分是:1.一个8位中央处理器CPU(有成为微处理器)CPU的内部结构是有运算器和控制器组成,是单片机的核心部件。其中包括算术逻辑运算单元、ALU、累加器ACC、程序状态字寄存器PSW、堆栈指针SP、寄存器SP、寄存器B、程序计数器(指令指针)PC、指令寄存器IR、暂存器等部件。2.128个字节的片内数据存储器RAM片内数据存储器用于存放数据、运算结果。3.4KB的片内程序存储器ROM或EPROM用于存放程序、原始数据和表格。现在的改进产品里一般都换成了Flash存储器。12/21/202012:46:52PM12/21/202012/21/2020-13-20FtpDown第-13-页2020-12-21-13--13-
本文标题:数码管动态显示012345
链接地址:https://www.777doc.com/doc-7310218 .html