欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    数码管的动态显示设计与研究.doc

    • 资源ID:10766031       资源大小:213.50KB        全文页数:11页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数码管的动态显示设计与研究.doc

    单片机课程设计报告电气与信息工程学院指导 老师: 张 橙班 级: 自动化072姓名: 廖岩学号: 07401100221日期: 2013年1月6日数码管的动态显示设计与研究一:概述动态显示主要就是利用人眼的视觉感来设计的,一般来说如果显示的频率过慢,则会有断断续续的显示;如果显示的频率加快,则人眼就分辨不出这种视觉残余!随着现代科学技术的不断地进步,人们已经走入了信息的高速时代。科学的力量日益强大,技术的更新的速度也更加加快了。计算机走进了千家万户,其中,单片机是一种应用十分广泛的单心片微型计算机,在我国的普及应用已有若干年,上至航天飞机,下至电动玩具,都能见到它的身影。单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。 而本次单片机数码管动态显示设计中采用AT89C52。 AT89C52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。vcc(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。 PDIP封装的AT89C52引脚图。二:硬件设计 设计要求P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,P1.7接一个开关,同时P2端端口接入右数码管显示器右端,P3端端口接入数码管显示器左端。当开关接高电平时,显示“521039113142”字样;当开关接低电平时,显示“HELLO,LOVE”字样。 元器的选取 1:AT89C52:单片机;2:RES:电阻;3:CRYSTAL:晶振;4:CAP、CAP-ELEC:电容、电解容; 5:RESPACK-8:1k*8排阻;6:7SEG-MPX6-CC:7段式6位共阴极数码管;7:BUTTON:按钮。 数码管动态显示原理图 LED数码管显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,每个发光二极管称为一字段。因而它的控制原理和发光二极管的控制原理是相同的。根据各管的接线形式,可分成共阴极型和共阳极型。发光二极管的阳极连在一起,为一个公共端,这种显示器称为共阳极显示器。发光二极管的阴极连在一起,为一个公共端,这种显示器称为共阴极显示器。给LED 数码管的七个发光二极管加不同的电平,二极管显示不同亮暗的组合就可以形成不同的字形,这种组合称之为字形码。 程序设计内容 (1) 动态扫描方法:动态扫描采用各数码管循环轮流显示的方法,本例中,先让左边第一位数码管显示数字“5”,延时一定时间后,第二位显示“2”,以此类推,到第五位显示“2”后,又从“5”开始循环显示。由于循环显示频率较高时,利用人眼的暂留特性,我们看到这12个数码管仿佛在同时显示,而看不出闪烁显示现象。这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。需要注意一点,由于电路的特性,在点亮每一位数码管之前,一定要对整个数码管清屏(场消隐),即让所有位选信号都处于不被选中状态。 (2)对于显示的字形码数据我们采用查表方法来完成,同样位选码也可以用查表的方法。请注意,由于一些一般资料中给出的字形码都没有包含“H”和“L”,的字形码,这时就需要我们可以自行推导出来。通过课本上数码管的介绍,我们可以得出“HELLO LOVE”:0x76,0x79,0x38,0x38,0x3f,0x00(HELL0的字形码);0x00,0x00,0x38,0x3f,0x3e,0x79(LOVE的字形码)。三:软件设计1:程序<c语言源程序>(1) 首先选定的蓝本-数码管的动态显示的相关程序,如C语言源程序:#include <REG52.H>unsigned char code table1=0x06,0x5b,0x4f,0x66,0x6d;/1-5的字形码unsigned char code table2=0x76,0x79,0x38,0x38,0x3f;/HELLO的字形码unsigned char code table3=0xfe,0xfd,0xfb,0xf7,0xef;/位选码unsigned char i,a;sbit button=P17;/位定义,不能直接用P17void main(void)while(1)for(i=0;i<5;i+)P2=0xff;/清屏信号,必须使用if(button=1)P0=table1i;/对1-5的字形码查表else P0=table2i;/对HELLO的字形码查表P2=table3i;/对位选信号查表for(a=248;a>0;a-);/字形显示延时,可调节通过认真的分析需求,要想在数码管上显示“521039113142”以及“HELLO LOVE”的字样,就必须在main程序中增加2个量分别为:如下:Unsigned char code table1=0x6d,0x5b,0x06,0x3f,0x4f,0x6f;/“521039的字形码.”unsigned char code table4=0x06,0x06,0x4f,0x06,0x66,0x5b;/“113142的字形码.”unsigned char code table2=0x76,0x79,0x38,0x38,0x3f,0x00;/“Hell0的字形码.”unsigned char code table5=0x00,0x00,0x38,0x3f,0x3e,0x79;/“LOVE的字形码。” 同时要改变一下循环变量for(i=0;i<6,i+)以便使得程序在单片机的执行中能够同时作用于数码管的显示,更为重要的是为了使新增的两个变量更好的参加于循环。如:for(i=0;i<6,i+)。 与此同时更为重要的是在for循环内部增加一个P3的字型码查表 ,以便能够在新增加的一个数码管中显示。如:if( button = 1 )P0=table1i;/“521039对的字形码查表。”P3 = table4i;/“113142对的字型码查表。”P2=table3i;/“位选码。”最后才是对字符的显示“输出;else P0=table2i; /“对HELLO LOVE中的的字形码查表。” P3= table5i;/“对HELLO LOVE中的的字形码查表。” P2=table3i;/“对位选信号查表。” 最后可以结合上述分析需求得到完整的数码管动态显示程序:#include <REG52.H>Unsigned char code table1=0x6d,0x5b,0x06,0x3f,0x4f,0x6f;/“521039的字形码.”unsigned char code table4=0x06,0x06,0x4f,0x06,0x66,0x5b;/“113142的字形码.”unsigned char code table2=0x76,0x79,0x38,0x38,0x3f,0x00;/“Hell0的字形码.”unsigned char code table5=0x00,0x00,0x38,0x3f,0x3e,0x79;/“LOVE的字形码。”unsigned char code table3=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/“位选码。”unsigned char i,a;sbit button=P17;/“位定义,不能直接用P17。”void main(void)while(1)for(i=0;i<6;i+)P2=0xff;/“清屏信号,必须使用”。if( button = 1 )P0=table1i;/“521039对的字形码查表。”P3 = table4i;/“113142对的字型码查表。”P2=table3i;/“位选码。”else P0=table2i; /“对HELLO LOVE中的的字形码查表。” P3= table5i;/“对HELLO LOVE中的的字形码查表。” P2=table3i;/“对位选信号查表。”for(a=248;a>0;a-);/“字形显示延时,可调节。”数码管动态显示整体流程图 开始 YK1按键识别成功否?置显示“HELL0LOVE”字型码首地址12个数码管显示完否?延时2ms并指向下一个偏移量查表并送出显示置显示“521039113142”字型码首地址首地址置字型码偏移量和位选代码 N YnN调试及仿真的具体操作1:对Keil的应用操作 第一步: 双击Keil的桌面快捷方式,启动Keil集成开发开发软件。软件启动后的界面。 第二步: 新建文本编辑窗。点击工具栏上的新建文件快捷按键,即可在项目窗口的右侧打开一个新的文本编辑窗。第三步:输入源程序。在新的文本编辑窗中输入源程序,可以输入C语言程序,也可以输入汇编语言程序。第四步:保存源程序。保存文件时必须加上文件的扩展名,如果你使用汇编语言编程,那么保存时文件的扩展名为“.asm”,如果是C语言程序,文件的扩展名使用“*.C ”(注:注:第3步和第4步之间的顺序可以互换,即可以先输入源程序后保存,也可以先保存后输入源程序。)第五步:新建立Keil工程。点击 "工程" "新建工程" 命令,将出现保存对话框。第六步:选择CPU型号。如图8所示,为工程选择CPU型号,本新建工程选择了ATMEL公司的AT89C52单片机。第七步:加入源程序到工程中。在选择好CPU型号后,点击"确定"按钮返回主界面,此时可见到工程管理窗中出现“Target 1”,点击“Target 1”前面的“”号展开下一层的“Source Group 1”文件夹,此时的新工程是空的,“Source Group 1”文件夹中什么文件都没有,必须把刚才输入的源程序加入到工程当中。如图9所示,右击工程管理窗中的“Source Group 1”,出现下拉菜单,点击“增加文件到组Source Group 1”命令,将出现添加文件对话框。第八步:工程目标Target 1属性设置。如下图14所示,在工程项目管理窗中的"Target 1"文件夹上右击,出现下拉菜单,点击“目标Target 1属性”命令,就进入目标属性设置界面 第九步:源程序的编译与目标文件的获得。由此生成了.hex 的文件才能够在ISIS的软件的制图中运行的。2:对Proteus仿真软件的应用。启动Proteus仿真软件,在原有的制图进行修改,如图:构建完成之后,在AT89C52元件上双击鼠标左键打开Edit component 对话框。设置Program File为“动态显示.hex”,Clock Frequency为12MHZ。单击OK按钮关闭对话框。单击仿真运行开始按钮,在没有用鼠标按下“BUTTON”键时,显示如图:而按下“BUTTON”键时,则会出现:“HELLO L0VE”字样 通过对原有的数码管动态显示研究,以及对原有的硬件和软件的改进和重新的设计、执行,才使得新的设计方案得以成功的实施和实现。四:设计总结或设计体会 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。 单片机作为我们的主要专业课之一,虽然在大三开学初我对这门课并没有什么兴趣,觉得那些程序枯燥乏味,但在这次课程设计后我发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。没想到这项看起来不需要多少技术的工作却是非常需要耐心和精力在两个星期后的今天我已明白课程设计对我来说的意义,它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结,虽然我们这次花去的时间比别人多,但我相信我们得到的也会更多! 在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。 其次,在这次课程设计中,我们运用到了以前所学的专业课知识,虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。 本系统是以单片机AT89C52芯片为核心部件,实现了能通过AT89C52芯片控制数码管LED实现一些基本的功能。刚开始时,自己通过各种途径,尽可能多的了解有关于数码管LED这方面的知识,为后面的设计打下基础,后面的进展也很顺利,不过在仿真阶段,由于硬件电路设计的粗心,给自己带来了不小的麻烦,不过问题最终还是在老师和同学的帮助下得到了解决。通过这次课程设计,使我得到了一次用所学知识来实际解决问题的锻炼,也让自己感觉到大学所学的知识有一部分是很有实用价值的,同时我对单片机的基本知识以及常用的keil C语言设计程序得到了进一步的巩固。通过这次课程设计,让我对单片机这门课有了进一步的认识。这次课设是对这门课程的一个总结,对单片机知识的应用。在张老师那里我学得到很多知识,编程能力也提高了不少,感谢张老师的培育。

    注意事项

    本文(数码管的动态显示设计与研究.doc)为本站会员(啊飒飒)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开