任务4.1 键码显示器(课件)-《单片机技术与应用》同步教学(电子工业版)

2024-07-11
| 18页
| 37人阅读
| 2人下载
普通

内容正文:

项目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.独立按键位定义 对于独立按键一般采取位定义的形式进行声明,特别是按键具有一定功能含义时。 二、编程技巧 sbit key1=P2^0; //定义按键管脚 sbit key2=P2^1; sbit key3=P2^2; sbit key4=P2^3; if(key1= =0) { ----- } 如果独立式按键为单一含义功能时,即对系统信息数据等的改变仅一次有效时,一般采用直接读取电平的方式进行判定。 void Beep( ) //蜂鸣器子函数 { unsigned char i; 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(); // 声音 return Key_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) { case 0x7E:P1=SMG[0]; break;//0 按下相应的键显示相对应的码值 case 0x7D:P1=SMG[1]; break;//1 ------- ------- case 0xE7:P1=SMG[15];break;//f } unsigned char keyscan(void) //键盘扫描函数 {unsigned char i,temp,Key_Value=0; P2=0x0F; //列线输出全为0 if((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(); // 声音 return Key_Value; // 返回键码 } temp>>=1; // 准备下列扫描 temp+=0x80; } } } return Key_Value; //返回键码 } 任务实施 1.学生分组,制定方案。 2.查阅资料,设计电路原理图,列出元件清单。 3.准备元件及工具,搭接电路。 4.注意安全。 评价总结 1.学生根据自己实施情况填写任务实施评价单。 2.组间互评,提出问题,解决问题。 3.回收元件及工具,清洁实施现场,6S标准。 4.知识整理总结。 $$

资源预览图

任务4.1 键码显示器(课件)-《单片机技术与应用》同步教学(电子工业版)
1
任务4.1 键码显示器(课件)-《单片机技术与应用》同步教学(电子工业版)
2
任务4.1 键码显示器(课件)-《单片机技术与应用》同步教学(电子工业版)
3
任务4.1 键码显示器(课件)-《单片机技术与应用》同步教学(电子工业版)
4
任务4.1 键码显示器(课件)-《单片机技术与应用》同步教学(电子工业版)
5
任务4.1 键码显示器(课件)-《单片机技术与应用》同步教学(电子工业版)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。