导航按键案例原理与测试说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“导航按键”案例原理与测试说明
1程序设计目标及运行效果说明
程序设计目标:利用STC15F2K60S2芯片的ADC口对来自导航按键不同方向的电压值进行采集,并将采集后的转换结果用数码管显示。程序主要是对ADC进行操作,并将寄存器相应位取出分别用8位二极管和数码管显示。第一位数码管显示8位转换结果中前三位值,最后两位数码管显示后五位值。数码管下方的发光二极管与数码管对应显示。
程序运行效果说明:根据用户对导航按键的操作情况,相应产生的ADC转换结果,在数码管最高位(命名Seg0)显示转换结果高三位,点亮对应的发光二极管L7—L5。数码管后两位(命名Seg6-Seg7)显示转换结果低五位,点亮对应的发光二极管L4—L0。具体显示情况如表1所示。注:实际数值如果有一点误差,是由于电阻的工艺使得电阻会有一定的误差,关系不大,我们在做导航按键的判断时,都只是取高三位的值,也就是数码管Seg0的值。
表1 按键3对应的数码管及二极管显示情况对照表
操作Seg0 Seg6-Seg7参考值(实际值)
无操作7 31(实际范围:0-31)
按住Key3 0 00(实际范围:0-31)向右 1 06(实际范围:0-31)
向下 2 12(实际范围:0-31)
向里 3 17(实际范围:0-31)
向左 4 22(实际范围:0-31)
向上 5 25(实际范围:0-31)
2 程序实现相关电路及工作原理说明
本案例需要使用ADC进行导航按键的电压采集,并将采集后的转换结果送到数码管及发光二极管的显示。
2.1导航按键电路及工作原理说明
导航按键在上图的标注为MINI_KEY5,导航按键的每一个方向被按下,都会引起实际电压的改变,从而可以根据这个原理,与A/D转换器配合,可以判断哪个方位被按下,获取按下后A/D转换的结果。
2.2AD数据采集电路及采集步骤说明
ADC数据采集的步骤:
●将ADC0~7的模拟量送到比较器中,用DAC(数/模转换器)转换的模拟量与输入
的模拟量通过比较器进行比较。
●转换结束后,将比较结果放入转换结果寄存器(ADC_RES和ADC_RESL)。
●同时,需要将ADC_FLAG软件清零。
●注意硬件会自动将ADC_START清零,如果需要进行下一次转换,则需要将
ADC_START置位。
特别说明:
(1)数码管所显示的ADC转换结果并不是电压值,而是电压进行转换后所得的一个值。如果需要实际的电压值可以参照STC15F2K60S2数据手册的760页上面的公式进行计算得出。
(2)ADC转换结果是一个10位数据,若ADRJ=0,则ADC_RES存放高八位,ADC_RESL 存放低两位。若ADRJ=1,则ADC_RESL存放高八位,ADC_RES存放低两位。本案例采用的是ADRJ=0,而且只取了高八位结果。
2.3数码管和发光二极管说明
数码管和发光二极管的具体电路和工作原理说明请参考“流水灯测试”和“8位数码管动态扫描测试”。这个案例中,使用了一个技巧将发光二极管和3位数码管进行同时显示:将发光二极管作为数码管位选的第四位,从而在数码管显示的同时,发光二极管也能同时显示。
3 测试方法
(1)用STC ISP默认设置,打开工程中的HEX并下载
(2)下载后观察现象为:(从左至右边的数码管依次命名为Seg0~Seg7,Seg0 = L7~L5, Seg(6-7) = L4~L3)
操作Seg0 Seg6-Seg7(参考值)
无操作7 31(实际范围:0-31)
按住Key3 0 00(实际范围:0-31)向右 1 06(实际范围:0-31)
向下 2 12(实际范围:0-31)
向里 3 17(实际范围:0-31)
向左 4 22(实际范围:0-31)
向上 5 25(实际范围:0-31)4 用途
可以作为按键控制时钟、收音机等。