单片机技术应用项目化教程(C语言版)(第2版) 课件 任务4.1_第1页
单片机技术应用项目化教程(C语言版)(第2版) 课件 任务4.1_第2页
单片机技术应用项目化教程(C语言版)(第2版) 课件 任务4.1_第3页
单片机技术应用项目化教程(C语言版)(第2版) 课件 任务4.1_第4页
单片机技术应用项目化教程(C语言版)(第2版) 课件 任务4.1_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目4电子时钟控制系统任务4.1键码显示器明确任务

在工业生产和日常生活中,经常会用到按键对单片机系统进行相应的控制与管理,同时还有按键提示音。按键已经作为最基本的输入装置在单片机应用系统中广泛使用。那按键怎么才能被系统正确的识别,信息是怎么被确认的?按键声音又是怎么发出的?。工作任务:设计完成一个键码显示器系统,按下一个按键数码管显示其对应的编号,同时系统发出滴的一声。一、按键输入技术知识链接

独立式按键结构是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态。1.独立式按键

独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一个I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。多用于设置控制键、功能键。适用于键数少的场合。

按键输入采用低电平有效,上拉电阻保证了按键断开时I/O口线有确定的高电平。当I/O口线内部有上拉电阻,外电路可不接上拉电阻。2矩阵键盘

行列扫描法:列线输出,行线输入;列线逐列输出0,某行有按键;行线输入就为0;若无按,行线输入全部为1。键码=行号+列号抖动时间一般为5~10ms

3按键抖动

硬件消除抖动:在硬件上可采用在键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路

软件去抖动:采用软件去抖动的方法是在单片机检测到有键按下时执行一个10~20ms的延时程序后再次检查该键电平是否仍保持闭合状态.如保持闭合状态,则确认为有键按下,否则从头检测。这样就能消除键的抖动影响。二蜂鸣器原理及应用技术

压电式蜂鸣器:接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声

电磁式蜂鸣器:接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。

由于蜂鸣器的工作电流一般比较大,单片机的I/O口无法直接驱动,所以要利用放大电路来驱动,一般都包含:一个三极管、一个蜂鸣器、一个续流二极管和一个电源滤波电容。1.独立按键位定义对于独立按键一般采取位定义的形式进行声明,特别是按键具有一定功能含义时。二、编程技巧sbitkey1=P2^0; //定义按键管脚sbitkey2=P2^1;sbitkey3=P2^2;sbitkey4=P2^3;if(key1==0) {-----}

如果独立式按键为单一含义功能时,即对系统信息数据等的改变仅一次有效时,一般采用直接读取电平的方式进行判定。voidBeep() //蜂鸣器子函数{ unsignedchari;

BEEP=0;//开

for(i=0;i<100;i++); BEEP=1;//关

}2.蜂鸣器发声控制单片机系统执行速度很快,所以低电平有效使得蜂鸣器工作,应该进行适当延时。 temp=0x7F; //准备列扫描

for(i=0;i<4;i++) { P2=temp; //输出列扫描码

if((P2&0x0F)!=0x0F) //此列有键按下

{ Key_Value=(P2&0x0F)|(temp&0xF0); //键码=行码+列码

Beep(); //声音

returnKey_Value;// 返回键码

} temp>>=1; //准备下列扫描

temp+=0x80; }3.矩阵键盘的扫描

行列扫描法能够很好的诠释矩阵键盘的工作原理,这里采用逐列扫描法。三、硬件电路图四、软件设计与编程

(1)利用6个独立按键进行键码显示1-6,当有键按下时,同时蜂鸣器发出滴的声响。if(key1==0) {key=1; Beep();}//判断按键是否按下if(key2==0) {key=2; Beep();}if(key3==0) {key=3; Beep();}if(key4==0) {key=4;Beep();}if(key5==0) {key=5; Beep();}if(key6==0) {key=6; Beep();}P1=SMG[key];//键码显示(2)显示4*4矩阵键盘的键码值。键码值用十六进制表示,0-9,A-F。掌握矩阵键盘扫描方法处理技巧。key=keyscan();//调用键盘扫描,switch(key){ case0x7E:P1=SMG[0];break;//0按下相应的键显示相对应的码值

case0x7D:P1=SMG[1];break;//1-------------- case0xE7:P1=SMG[15];break;//f}unsignedcharkeyscan(void)//键盘扫描函数{unsignedchari,temp,Key_Value=0;P2=0x0F; //列线输出全为0if((P2&0x0F)!=0x0F)//是否有按键按下

{ delay(10); //延时10ms去抖

if((P2&0x0F)!=0x0F) //确认按键是否按下

{ temp=0x7F; //准备列扫描

for(i=0;i<4;i++) { P2=temp; //输出列扫描码

if((P2&0x0F)!=0x0F) //此列有键按下

{ Key_Value=(P2&0x0F)|(temp&0xF0);//键码=行码+列码

Beep(); //声音

returnKey_Value;// 返回键码

} temp>>=1; //准备下列扫描

temp+=0x80; } }}returnKey_Value;//返回键码

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论