1、实验四按键与键盘接口的应用实验四按键与键盘接口的应用实验目的1. 了解AVR I/O口输入工作方式及应用。2. 了解按键消抖与键盘扫描的原理与实现。3. 熟悉基于状态机设计的软件设计方法和矩阵键盘的应用设计实现。4. 提高相对复杂程序的编程能力。 基本实验内容:1 改写教课书P221页的例7.1。不采用外部中断方式,而是采用软件定时扫描按键的方式实现原系统的功能。2 设计一个简单系统,有2个按键和8个LED数码管作为显示。两个按键分别代表输入字符“a”和“b”,且具备类似PC机键盘的连发功能:如按下“a”键不放,第1秒内输入1个“a”,以后每隔0.2秒输入一个“a”。输入的“a”在8个LED数
2、码管上由右向左移动。3 参考教材例9.3(P292),设计一个加法计算器。其中10个作为数字“0,1,2.9”的数字输入,其他两个为功能键,一个是加号键“+”,一个是等号键“=”。等号键连续被按下两次,将LED数码管内容清为0。初始状态显示0。选作实验内容在例9.3的基础上,改进实现一个电话拨号系统:1) 实验板上的矩阵键盘共包含有12个按键,其中10个作为数字“0,1,2.9”的数字输入,其他两个为功能键,一个是总清除键“#”,一个是修改键“*”。修改程序,键盘上数字键功能不变,而“#”键的功能为总清除(即清除LED上的全部的数字显示,显示复原为8个“-”),“*”键的功能为修改键(表示最后
3、输入的数字有误,LED显示全部右移一位,清除最后输入的数字,最左边一位补入“-”)。2) 系统上电时,8个LED数码管显示“-”8条横线,每按下一个号码后,原8位LED数码管的显示内容向左移动一位,最右边一位则显示键盘上刚按下的数字。3) 将每个数字键与特定的音调相结合起来,比如数字1-2-3-4-5-6-7-8-9-0对应音阶Do-re-mi-fa-sol-la-ti-do-la-mi(后两个为高8度)。每当按下按键在LED上显示数字后都能在蜂鸣器上发出相同节拍的对应音阶。实验总结与思考1. 在按键处理过程中,除了要进行消抖处理,还要判别按键的释放,如果不进行按键释放的判别,会发生什么现象?2. 使用状态机的程序设计方法?该方法有什么优点?说明其基本原理。3. 仔细思考例9.3,回答以下问题l 本例中,在T/C0的中断服务中进行了LED的扫描,而读键盘和键盘处理是在主程序中完成的。如果将读键盘和键盘处理也放在T/C0中断中完成是否可以?请深入分析这两种处理方式的优点和缺点,说明原因。l 在read_keyboard()中,行线输出语句为什么重复2次?l 说明在read_keyboard()中,key_mask的作用,另外是否可以将变量key_line和key_value定义成普通的局部动态变量?为什么?1 / 1