您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 基于单片机的单键控制与显示设计
基于单片机的单键控制与显示设计课程设计任务书测试与光电工程学院班级110831班学号11083125姓名吴伟风指导老师签字课程设计题基于单片机的单键控制与显示设计一丶课程设计工作日自2014年1月3日至2014年1月8日二丶课程设计任务要求(包括课题来源、类型、目的和意义、基本要求、完成时间、主要参考资料等)1·目的及意义:(1)巩固和深化《单片机原理及应用》课程的理论知识,培养,分析、解决实际问题的能力。(2)掌握汇编语言编程的基本方法,能根据题目要求确定设计思路、编制并调试汇编语言程序,得出结果。2·主要内容:(1)问题描述:(2)内容要求:(3)选用单片机为控制核心,用一个按钮控制一只LED灯的点亮和熄灭。要求:启动时LED灯发光,又按键按下灯熄灭,上电后LED灯亮,按下开关键灯灭,再按下灯亮,以此类推。3·基本要求(1)分析题目,写出分析过程:;(2)系统功能描述、方案描述(3)系统硬件设计,包括所需设备,接线方式,以及资源分配。(4)软件设计、编制程序。(5)调试并列出最终程序清单并加以必要的注释4·主要参考资料:单片机基础及应用,赵巍,冯娜,马苏常,刘玉山等,清华大学出版社,2009年单片机基础,李广弟,朱月秀,冷祖祁,北京航空航天大学出版社,2007年导读:单键,就是每个按键占用一个单片机的管脚,这种接法的特点是电路和程序都很简单,缺点是占用单片机的管脚多、消耗硬件资源大。这种接法一般适合于6个或不多于6个按键。单键,就是每个按键占用一个单片机的管脚,这种接法的特点是电路和程序都很简单,缺点是占用单片机的管脚多、消耗硬件资源大。这种接法一般适合于6个或不多于6个按键。单键电路的电路图见图1,由图可以看出,每一个按键的一端都直接连有一个8255的PC端口的一个管脚作为输入管脚,并且这个端口管脚只连有一个按键,这样的接法就是单键接法。单键接法要求按键的一端接有一个上拉电阻,而按键的另一端直接接地,这样可以在按键没有合上的时候保持输入管脚始终是高电平。如果程序检测到这个管脚为高电平,就会认为该管脚的按键没有按下,而按键合上以后,输入管脚的电平就会变成低电平,这样当程序检测出输入管脚为低电平以后,就会认为这个按键被按下。图1单键电路按键,特别是机械按键按下后会有一定的抖动,这个抖动会持续很短的时间。这个抖动会引起程序的异常,因为程序很可能会认为在这么短的时间内这个按键被按下很多次,有很多资料特别提到了防抖电路。实践证明,这个电路完全可以忽略,使用程序完全可以代替这个电路。有些资料也是使用程序代替防抖电路,但是是用数十毫秒的延时电路,这样的程序毫无疑问会增加程序时间的开销,对程序快速反应不利。我们可以通过程序处理把按键变成所谓的微分按键,所谓微分,实际上是指我们只处理按键的变化,没有变化的按键信息我们是不处理的,由于微分按键只处理第一次变化的信息,因此短时间的按键抖动是不会产生误操作的。下面给出相应的按键程序并分析。在本程序中,所谓的单键输入实际上就是读出8255的PC口的信息。程序首先检查是不是有按键按下,如果没有,则将按键特征变量ktz置0,同时退出本函数,这样减少了无用程序的运行时间。如果有按键按下同时ktz等于0(表明是第一次按下),则转入按键处理部分。按键处理主要是定义按键编码,因为从输入口读入的按键值通常需要处理,以便过滤不必要的信息或干扰,同时将输入值规整为便于我们处理的键码。这里的键码就是1、2、3、4、5、6、7、8,这8个数字对应8个按键。单键输入函数的流程图如图2所示,对应程序如下:图2单键输入函数的流程图1题目:基于单片机的单键单灯亮灭控制系统设计2内容要求:选用单片机为控制核心,用一个按钮控制一只LED灯的点亮和熄灭。要求:启动时LED灯发光,又按键按下灯熄灭,上电后LED灯亮,按一下开关键灯灭,再按一下灯亮,再按一下灯灭,依此类推。3总体方案设计思路:通过一个按键来识别每种不同的功能,给每个不同的功能模块用不同的ID号标识,这样,每按下一次按键,ID值是不相同的,所以单片机就很容易识别不同功能了,L1的亮灭受开关K1的控制,给L1的亮灭定义不同的ID号,当L1点亮时,ID=0;当L1熄灭时,ID=1;分别给出不同的ID号就能够完成上面的任务了。4·原理设计图5·汇编程序:IDEQU30HK1BITP1.0D1BITP2.0ORG0000HCLRP1.7MOVID,#00HSTART:JBK1,REL;K1没闭合转LCALLDELAY10MS;K1闭合,延时消抖动JBK1,REL:再判断INCIDMOVA,IDCJNEA,#02,RELMOVID,#00HREL:JNBK1,$;等待开关弹起MOVA,IDCJNEA,#00H,IS0;判断相应IDCLRD1:ID=0,灯亮LCALLDELAY;延时SJMPSTARTIS0:CJNEA,#01H,START;SETBD1LCALLDELAYSJMPSTARTDELAY10MS:MOVR6,#20延时10MS子程序LOOP1:MOVR7,#248DJNZR7,$DJNZR6,LOOP1RETDELAY:MOVR5,#20延时20MS子程序LOOP2:LCALLDELAY10MSDJNZR5,LOOP2RETEND6课程设计心得体会在整个设计中我懂得了许多东西,了解了单片机的电器原理,掌握了单片机的调试的基本原理,特别是单片机的编程技术,对C语言编程和汇编语言编程有了深入的理解,熟悉了单片机开发仪的操作。对于本次课程设计对基于单片机的单键单灯亮/灭控制系统设计。在整个设计过程中,我翻阅了大量的有关单片机的资料。也培养了我独立工作的能力,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的过程中有些艰难,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,尤其是整个过程中渐渐的树立起了自己工作能力强的自信心,使我终身受益。南昌航空大学课程设计测试与光电工程学院班级110831班学号11083125姓名吴伟风指导老师签字教研室主任签字
本文标题:基于单片机的单键控制与显示设计
链接地址:https://www.777doc.com/doc-2573926 .html