任务3.3 独立按键的实现
- 格式:doc
- 大小:445.70 KB
- 文档页数:10
《制作具有动态效果的按钮》作业设计方案(第一课时)一、作业目标通过本次作业,学生将掌握如何使用信息技术课程所学的知识,制作具有动态效果的按钮。
这不仅是对课堂所学知识的复习和巩固,也是对学生动手实践能力的锻炼。
二、作业内容1. 任务一:制作按钮基本形状学生需根据教师提供的素材,使用图形处理工具,绘制一个基本的按钮形状,如圆形、方形等。
要求颜色鲜艳、线条清晰。
2. 任务二:添加动态效果在基本按钮的基础上,学生需为按钮添加动态效果,如移动、放大、缩小等。
可以使用软件提供的预设动画效果,也可以自行设计。
3. 任务三:调整按钮属性学生需调整按钮的属性,如大小、位置、颜色等,使按钮更加美观、易于识别。
4. 任务四:测试与保存学生需对制作好的按钮进行测试,确保其功能正常。
完成后,学生需将按钮保存为图片文件,以便后续使用。
三、作业要求1. 独立完成:学生需独立完成所有任务,不得抄袭或参考他人作品。
2. 创新性:鼓励学生尝试不同的动态效果和属性调整,展示自己的创意。
3. 美观性:要求学生在保证功能的基础上,注重按钮的美观性,使其易于识别。
4. 文件格式:保存时需确保文件格式为常见的图片格式,以便于后续使用。
四、作业评价1. 完成情况:学生提交作业后,教师将根据任务完成情况进行评分。
2. 创新性:对具有创新性的作品给予额外加分,以鼓励学生的创新精神。
3. 美观性:对制作精美、视觉效果良好的作品给予高度评价。
五、作业反馈1. 学生:学生需在完成作业后,对自己的作品进行自评,总结优点和不足,以便进一步提高。
2. 教师:教师将对学生的作品进行评价,并提供反馈和建议,以帮助学生更好地掌握信息技术知识。
通过本次作业,学生将进一步巩固课堂所学知识,提高动手实践能力,为后续学习打下坚实的基础。
在完成这个作业的过程中,学生需要熟练使用图形处理工具,如Photoshop、GIMP等,同时需要具备一定的创意和审美能力。
教师可以通过作业评价和学生反馈,及时了解学生的学习情况,提供针对性的指导,帮助学生更好地掌握信息技术知识。
独立按键工作原理
独立按键是指在键盘或其他输入设备上单独存在的按键,与其他按键没有物理连接。
独立按键的工作原理可以分为以下几个步骤:
1. 电路设计:独立按键通常由一个机械开关和一个电路组成。
机械开关是按键的实体部分,当按下按键时,机械开关会闭合。
而电路则通过控制机械开关的开闭来识别按键的状态。
2. 连接到主控制器:独立按键的电路会与主控制器相连。
主控制器可以是键盘控制器或其他的输入设备控制器。
按下独立按键时,机械开关的闭合会使电路与主控制器建立连接。
3. 识别按键状态:主控制器会通过扫描或轮询的方式不断地检测连接到它的电路中的独立按键状态。
当检测到某个按键被按下时,主控制器会相应地记录下按键的信息。
4. 发送输入信号:主控制器会将按键的信息转换为对应的输入信号,然后将该信号发送给计算机或其他接收设备。
接收设备会根据接收到的信号来执行相应的操作,例如输入字符、执行功能等。
总的来说,独立按键通过机械开关和电路的配合工作,利用主控制器来识别按键状态并发送输入信号。
这样,用户在按下独立按键时,就能够通过电子设备实现相应的操作。
单片机独立按键电路组成和工作原理下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!1. 简介单片机独立按键电路是指由单片机控制按键输入的电路。
独立按键输入课程设计一、课程目标知识目标:1. 学生能理解独立按键输入的基本概念,掌握其在电路中的应用原理。
2. 学生能够识别并描述不同类型的独立按键,了解其功能和使用方法。
3. 学生能够运用所学知识,设计并搭建简单的独立按键输入电路。
技能目标:1. 学生能够运用独立按键输入电路,实现与微控制器等电子设备的交互。
2. 学生培养观察、分析和解决问题的能力,能够调试并解决独立按键输入电路中可能出现的问题。
3. 学生通过小组合作,提高团队协作能力和沟通能力。
情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发创新意识和探索精神。
2. 学生在学习过程中,培养严谨、认真的学习态度,养成良好的学习习惯。
3. 学生通过学习独立按键输入电路,认识到科技与社会生活的密切关系,增强社会责任感。
本课程针对初中电子技术课程,结合学生年龄特点和认知水平,以实用性和趣味性为导向,注重培养学生的实践操作能力和团队协作能力。
课程目标明确,可衡量,有助于学生和教师在教学过程中进行有效的评估和指导。
二、教学内容本章节教学内容主要包括以下几部分:1. 独立按键的基本概念与原理- 按键的分类及特点- 独立按键的电路符号及工作原理- 独立按键在不同电路中的应用2. 独立按键输入电路设计- 设计原理及步骤- 电路元件的选择与连接- 搭建简单的独立按键输入电路3. 独立按键与微控制器交互- 微控制器的基本概念- 独立按键与微控制器的连接方法- 编写程序实现按键控制功能4. 电路调试与故障排查- 常见故障现象及原因分析- 调试方法与技巧- 故障排查及解决实例5. 实践操作与团队协作- 小组合作设计并搭建独立按键输入电路- 交流与分享电路设计经验- 评价与反思实践操作过程教学内容根据课程目标和学生的认知水平进行科学组织和安排,参照教材相关章节,确保教学内容的系统性和连贯性。
在教学过程中,教师需关注学生的实际操作能力培养,鼓励学生积极参与讨论和协作,提高教学效果。
/********************************************************************* 文件名:独立按键.c* 描述: 该程序实现独立按键的判断,按了相应的独立按键后,会在数码管上显示最先被按下的值,只有按复位按键或者重新开电才消失。
* 创建人:2013年2月7日* 版本号:1.0* 杜邦线接法:独立按键接法:P3.2接J8的1端。
P3.3接J8的2端。
P3.4接J8的3端。
P3.5接J8的4端。
用8针排线把P0口和J12的1-8连接(P0.0接J12的1端)。
P2.0对应J13的8端。
***********************************************************************/#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit KEY1 = P3^2;sbit KEY2 = P3^3;sbit KEY3 = P3^4;sbit KEY4 = P3^5;//数码管的段码编码uchar table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/********************************************************************* 名称: Delay_1ms()* 功能: 延时子程序,延时时间为1ms * x* 输入: x (延时一毫秒的个数)* 输出: 无***********************************************************************/void Delay_1ms(uint i){uint x,j;for(j=0;j<i;j++)for(x=0;x<=148;x++);}/********************************************************************* 名称: Delay()* 功能: 实现按键功能,并在LED上显示* 输入: 无* 输出: 无***********************************************************************/ uchar KEY(void){if(KEY1==0 || KEY2==0 || KEY3==0 || KEY4==0){Delay_1ms(20); //20毫秒软件防抖if(KEY1 == 0){while(1){if(KEY1 == 1){Delay_1ms(20);;if(KEY1 == 1){break;}}}return 1;}else if(KEY2 == 0){while(1){if(KEY2 == 1){Delay_1ms(20);if(KEY2 == 1){break;}}}return 2;}else if(KEY3 == 0){while(1){if(KEY3 == 1){Delay_1ms(20);if(KEY3 == 1){break;}}}return 3;}else if(KEY4 == 0){while(1){if(KEY4 == 1){Delay_1ms(20);if(KEY4 == 1){break;}}}return 4;}}return 0;}/********************************************************************* 名称: Main()* 功能: 实现按键控制LED的显示* 输入: 无* 输出: 无***********************************************************************/ void Main(void){uchar temp;while(1){temp = KEY(); //判断是否有按键按下if(temp != 0){break; //如果按下,那么退出循环}}P0 = table[temp]; //显示是哪个按键按下了P2 = 0xfe;while(1); //程序停止}。
单片机独立按键原理
单片机独立按键原理是指通过单片机来实现按键的检测和响应。
在电路设计中,通常使用按钮或开关来触发事件或控制设备。
在单片机中,按键可以被视为一种开关,当按下按键时,单片机将会检测到按键并进行相应的操作。
单片机独立按键的实现需要考虑多个因素,包括按键的类型、连接方式和电路设计。
其中最重要的因素是按键的类型,通常有机械按键和触摸按键两种类型。
对于机械按键来说,其连接方式一般为两端连接,即将按键的两端连接到电源和接地,以便单片机可以检测到按键的状态。
在电路设计中,需要使用一个电阻器将按键的一端连接到单片机的输入端口,从而限制电流的流动并保护电路。
对于触摸按键来说,其连接方式相对简单,一般只需要将按键连接到单片机的输入端口即可。
触摸按键的原理是通过传感器感知人体电容来检测按键状态,因此其电路设计需要考虑到人体电容的变化和干扰。
在完成按键的连接和电路设计后,需要对单片机进行编程以实现按键检测和响应。
按键的检测可以通过轮询或中断的方式实现,在检测到按键状态变化时,单片机将执行相应的操作。
总之,单片机独立按键的实现需要考虑多个因素,包括按键类型、连接方式和电路设计,以及相应的编程实现。
通过合理的设计和编程,可以实现稳定可靠的按键检测和响应。
独立按键原理图
在独立按键的原理图中,通常会包含以下几个关键部分:
1. 按键开关:独立按键的核心部件,通常由两个金属片组成,当按下按键时,这两个金属片会接触,从而导通电路;当释放按键时,金属片会分离,断开电路。
2. 连接线路:用于连接按键开关和其他电子元件的导线。
这些导线通常是细小的金属线,通过连接线路,按键可以与其他电子元件进行信号传输。
3. 电源:独立按键通常需要受到电源的供电以正常工作。
电源可以是直流电源、交流电源或电池等,具体取决于使用场景和需要。
4. 信号输入/输出:按键通常用于输入或输出信号。
输入信号指从按键输入到电子设备中的信号,输出信号指从电子设备输出到按键的信号。
5. 过滤电路:为了减少按键使用过程中的干扰,独立按键通常会加入过滤电路,用于滤除不必要的电磁波干扰或静电干扰。
6. 接地线:独立按键通常需要接地,以确保电路的稳定性和减少漏电等问题。
接地线与电源线及信号线相连,形成一个完整的电路系统。
通过以上部分的组合和连接,按下独立按键时,按键开关会接
通相应的信号,并将其输入到电子设备中,从而实现相应的操作。
同时,过滤电路和接地线的作用可以保证按键的稳定性和减少干扰。
这样,独立按键就能够在各种电子设备中发挥作用,如电脑键盘、遥控器、手机等。
任务七:独立式按键控制实验此任务为4个独立按键,一旦按键被按下,则显示相应的数字,同时蜂鸣器滴一声。
(1)电路图主程序流程图(3)程序ORG 00HLJMP MAINORG 30HMAIN: MOV P2,#0FFH ;初始化MOV P0,#0FFHMOV P1,#0FFHLOOP: MOV A,P1 ;输入P1口的状态,CPL A ;取反,无建按下,P1.4~1.7为“0”ANL A,#0F0H ;屏蔽无用的低四位JZ LOOP ;A为“0”转移LCALL DELAY; 延时10MSMOV A,P1 ;再判断CPL AANL A,#0F0HJZ LOOPJB ACC.4,KEY1 ;这一位为“1”转移JB ACC.5,KEY2JB ACC.6,KEY3JB ACC.7,KEY4LJMP LOOPKEY1: MOV P0,#0F9HMOV P2,#0F0HLCALL BEEP;调用蜂鸣器子程序LJMP LOOPKEY2: MOV P0,#0A4H;显示“2”,此为段码值MOV P2,#0F0H ;控制哪一位显示LCALL BEEPLJMP LOOP;返回,继续检测按键KEY3: MOV P0,#0B0HMOV P2,#0F0HLCALL BEEPLJMP LOOPKEY4: MOV P0,#099HMOV P2,#0F0HLCALL BEEPLJMP LOOPDELAY:MOV R7,#40;延时10MS子程序D1:MOV R6,#123NOPD2:DJNZ R6, D2DJNZ R7,D1RET BEEP:MOV R5,#200;蜂鸣器滴一声子程序BEEP1:CLR P2.7 ;P3.7引脚不断输出LCALL DEL ;方波,使蜂鸣器发SETB P2.7 ;出声音,改变其输LCALL DEL ;出频率,可调整蜂DJNZ R5, BEEP1 ;鸣器音调RETDEL:MOV R4,#225;供蜂鸣器使用延时DJNZ R4,$RETEND。
任务3.3 独立按键3.3.1 任务介绍在数字钟中有四个独立按键,功能分别是调整、加、减、确定,用以调整系统的时间。
在单片机系统中,键盘是基本和常用的接口,它是构成人机对话通话的一种常用方式,实现向单片机系统输入数据、传送命令等功能,是人工干预、设置和控制系统运行的主要手段。
本节的任务要求:利用开发板上的四个按键,配合任务3.2数码管显示程序,实现数字钟的调时,为了简化程序,用3个LED的亮灭来代替对应数码管的闪烁(数码管的闪烁在这里有些难)。
正常走时,3个LED都不点亮,当按下“调整”键时,“小时”对应的LED点亮,再次按下“调整”键,则“分”对应的LED点亮,然后再按下“调整”键,则“秒”对应的LED点亮,依次循环,直到按下“确定”键,三个LED返回到不点亮的状态。
当按下“调整”键后,按下“加”或者“键”按键,则对应的数码管的显示值每次加1或者减1。
3.3.2 知识准备1、轻触按键的认识键盘分为编程键盘和非编程键盘。
键盘上闭合键的识别由专用的硬件编码器来实现的为编程键盘,如计算机键盘;闭合键的识别由软件来实现的为非编程键盘,轻触按键属于非编程键盘。
轻触按键具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统中。
图3.3.1所示的是市面常见的轻触按键,从封装来区分,有贴片的,也有直插的;从引脚的数量来区分,有2个引脚的,也有4个引脚的。
开发板上使用的按键时4引脚直插按键,尺寸为6×6×5,如图3.3.2所示。
图3.3.3 各种形状的按键图3.3.2 开发板使用的按键2、按键的硬件电路和识别方法图3.3.3是轻触按键的内部结构图,按键的4个引脚两两连通(可以用万用表测量),不连通的引脚,当按键被按下时,在金属弹片和反作用弹簧的作用下也会连通,当按键释放后,弹簧不起作用,引脚不连通。
图3.3.3 轻触按键内部结构图3.3.4 轻触按键的接口电路图3.3.4是轻触按键的单片机接口电路,按键一端接地,另外一端接I/O口,同时通过上拉电阻接电源(上拉电阻大小5K~10K)。
简单分析一下按键检测的原理:当按键没有按下的时候,单片机I/O通过上拉电阻R接到VCC,我们在程序中读取该I/O的电平的时候,其值为1(高电平); 当按键按下的时候,该I/O被短接到GND,在程序中读取该I/O的电平的时候,其值为0(低电平) 。
这样,按键的按下与否,就和与该按键相连的I/O的电平的变化相对应起来。
结论:我们在程序中通过检测到该I/O口电平的变化与否,即可以知道按键是否被按下,从而做出相应的响应。
3、检测按键按下按键的检测原理看起来比较简单,我们按照上述的原理先试着写一段任务中的程序看看运行效果怎么样。
程序实现的内容为:百位数内的计数器,,按键每按下一次,计数器加1,将计数器的值显示在开发板的两位数码管上。
程序如下:#incldue<reg52.h>#define uchar unsigned char#define uint unsigned intsbit KeyInput=P1^0; //按键接口//段码uchar code Seg7Code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar code Seg7Posit[]={0xfe,0xfd}; //位码uchar DispBuffer[2]; //缓冲区//void DelayMs(uint xms ) ms级延时函数,省略//void Seg7Display() 2位数码管显示函数,省略void main(void){uchar DispCnt=0; //按键加1计数器while(1){Seg7Display(); //动态扫描if(KeyInput==0) //检测到按键按下{DispBuffer[0]=DispCnt/10;DispBuffer[1]=DispCnt%10; //计数值的个位和十位的分解if(++DispCnt>=100) //每按一次,计数器加1,超过99,归0DispCnt=0;}}}程序编译好后烧录到单片机中,看一下运行效果。
上电后,数码管显示“00”,按一下按键,数码管向上加数,但是每按一下,向上加好几个数,如果按键不弹起,会连续加1,程序中没有实现我们想要的按一下加1的效果。
我们回到刚才编写的程序中,在大循环while(1)中,不停的监测按键是否按下,如果按下则加1,逻辑是正确的。
按键按下到按键释放大约需要0.2秒到0.5秒,而程序扫描的速度非常快,按键每按下一次,程序中已经扫描多次了,所以才会出现上述的现象。
怎样才能实现按键每按一次加1的效果呢?4、等待按键释放我们在之前按键检测程序上结尾加这样一条语句:While(!key_value); 编译后烧录到单片机中,就可以实现按一次按键加1的效果了。
if(KeyInput==0) //检测到按键按下{DispBuffer[0]=DispCnt/10;DispBuffer[1]=DispCnt%10;if(++DispCnt>=100) //每按一次,计数器加1,超过99,归零DispCnt=0;While(!KeyInput); //如果按键没有弹起,程序指针就会停在这里, } //直到按键释放While(!key_value); 这个语句是怎么消除了按一下加多个数的问题呢?程序中初次检测到了按键按下,则执行数值分解语句和加1语句,最后执行While(!key_value);按键按下后,key_value的值为0,取反后,为1,则while语句的条件为真,程序指针会停在这里,不停的检测按键是否释放,按键释放后,key_value的值变为1,取反后变为0,条件为假,程序指针向下执行。
这样实现了按下一次加1的效果了。
如果不停的按下按键,我们会发现,大多数按下的时候会加1,但有的时候还是会出现按一下加几个数的现象,这又是什么原因造成的呢?5、按键消抖动按键的开关为机械弹性触点开关,它是利用机械点接触和分离实现电路的通断。
由于机械点的弹性作用,加上人们按键时的力度、方向的不同以,按键开关从按下到接触稳定要经过数毫秒的弹跳抖动,即在按下的几十毫秒里会连续产生多个脉冲。
释放按键时,电路也不会一下断开,同样会产生抖动。
这两次抖动的时间分别为10-20ms左右,而按键的稳定闭合通常大于0.3-0.5秒。
因此,为了确保MCU对一次按键动作只确认一次,按键闭合时,必须要进行消抖处理。
否则由于MCU执行的速度较快,会将抖动的多个脉冲误认为为多次的按键。
图3.3.5是按键按下抖动示意图。
图3.3.5 按键按下抖动示意图按键的消抖动既可以采用硬件方法,也可以采用软件的方法。
使用硬件消抖的方式,需要在按键连接的硬件设计上增加硬件消抖电路,如RS触发器或者RC积分电路等。
采用硬件消抖方式增加了系统的成本,而利用软件方式消抖则是比较经济的做法,但增加了软件设计的复杂性。
软件方式消抖的基本原理是在软件中对按键进行两次确认,既在第一次检测到按键按下后,间隔10ms左右再次检测该按键是否按下,只有两次都检测到按键按下时才最终确认有键按下,从而跳过了按键的抖动,消除了抖动的影响。
程序如下:if(KeyInput==0) //检测到按键按下{DelayMs(10); //延时消抖if(KeyInput==0) //再次检测按键是否按下{DispBuffer[0]=DispCnt/10;DispBuffer[1]=DispCnt%10;if(++DispCnt>=100) //每按一次,计数器加1,超过DispCnt=0;while(!KeyInput); //等待按键释放}}}检测按键按下,10ms消抖,等待按键弹起,称之为按键检测三部曲,但本节教程的程序仅能作为功能演示用,在实际项目中有很大的弊端,第4单元任务1给出了按键高效扫描方法。
3.3.2 任务实施本节的任务实现程序如下:include<reg52.h>#define uchar unsigned char#define uint unsigned int//按键接口sbit KeyInput1=P2^0; //“调整”键sbit KeyInput2=P2^1; //“增减”键sbit KeyInput3=P2^2; //“减少”键sbit KeyInput4=P2^3; //“确定”键//状态灯sbit LedHour=P3^0;sbit LedMinute=P3^1;sbit LedSecond=P3^2;//段码uchar code Seg7Code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar code Seg7Posit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//位码uchar DispBuffer[6]; //缓冲区//ms级延时函数void DelayMs(uint xms){uint i,j;for(i=0;i<xms;i++)for(j=0;j<122;j++);}//6位数码管显示子函数,在第二位和第四位上显示小数点void Seg7Display(){uchar i;for(i=0;i<6;i++){P1=0xff; //消隐P0=Seg_7[DispBuffer[i]]; //送段码if((i==1)||(i==3)) P0&=~0x80; //在第二位和第四位数码管上加小数点P1=Posit[i]; //送位选DelayMs(1); //延时}}//主函数void main(void){uchar Cnt; //时间计数器uchar Hour=9; //“小时”初值uchar Minute=23; //“分”初值uchar Second=37; //“秒”初值uchar KeyValue=0; //按键值uchar AdjustNum=0; //按下“调整”按键时对应的调整值LedHour=LedMinute=LedSecond=1; //三个状态灯初始时都不点亮while(1){KeyValue=GetKeyValue(); //检测按键是否按下,并返回键值if(KeyValue==0x01) //按下确定键,进入到调整界面{if(++AdjustNum>=4) //AdjustNum的取值为1、2、3AdjustNum=1; //分别对应"小时"、"分"、"秒"if(AdjustNum==1) //点亮"小时"对应的LED{LedHour=0;LedMinute=LedSecond=1;}if(AdjustNum==2) //点亮"分"对应的LED {LedMinute=0;LedHour=LedSecond=1;}if(AdjustNum==3) //点亮"秒"对应的LED {LedSecond=0;LedHour=LedMinute=1;}}if(KeyValue==0x02) //按下“增加”按键{if(AdjustNum==1) //小时加1{if(++Hour>=24)Hour=0;}if(AdjustNum==2){ //分加1if(++Minute>=60)Minute=0;}if(AdjustNum==3) //秒加1{if(++Second>=60)Second=0;}}if(KeyValue==0x04) //返回正常界面{AdjustNum=0; //状态灯熄灭,把AdjustNum赋值为0 LedHour=LedMinute=LedSecond=0;}TimeToBuff(Hour,Second,Minute); //把待显示的值送入缓冲区Seg7Display(); //动态扫描,1ms×6=6msif(++Cnt>=166) //Cnt计数83次×12=996ms{Cnt=0;if(++Second>=60) //1秒计数60次,为1分钟{Second=0;if(++Minute>=60) //1分钟计数60次,为1小时{Minute=0;if(++Hour>=24) //24小时后清零Hour=0;}}}}}程序解释如下:(1)程序中加粗的是有关于本节按键程序的,其余部分是上一节中的内容,在这里我们只解释和按键相关的程序。