多语言展示
当前在线:472今日阅读:84今日分享:32

基于STC15系列单片机的ADC键盘编写方法

STC15系列单片机自带AD转换功能,本文结合作者自己的经验,以STC15W408AS单片机为例,搭建出测试ADC键盘的板型,并介绍ADC键盘的驱动如何编写。声明:电路原理图取自STC宏晶科技STC15.PDF数据手册。
工具/原料
1

STC15W408AS和下载器

2

安装了驱动程序和Keil的电脑

3

用于焊接测试电路的工具,如焊台、焊锡丝、钳子等

4

板子所需元件,如74HC595、74HC573、74HC138、数码管、IC插座、按键、电阻等等

硬件部分
1

在单片机系统设计中,使用ADC键盘代替矩阵键盘有巨大的优势,例如节省IO口就是明显的好处之一。所以ADC键盘的驱动方式就成为了初学者应该学习和掌握的技巧之一。

2

由于本例选取的是STC15W408AS单片机,引脚图如下图所示(截取自数据手册)。根据图可以看出AD转换功能排列在P1口。

3

参考数据手册STC15.pdf的低405页4.23 A/D做键盘扫描应用线路图。对应所选择的单片机,安排IO连接如下图所示。其中,74HC595驱动一位数码管显示当前按下的设定值,数码管显示出当前按键的AD转换值。如此安排便于排除故障并且可以由此设定按键判断的AD转换值范围(不懂没关系,继续看)。

4

电路原理图如下,其中,使用74HC138改为2-4线译码连到数码管位选,使用74HC573作为中继连接到数码管的段选,顺序按照0~7对应a~f连接。74HC595连接的数码管由于处在静态显示状态,所以COM口接470Ω电阻到地用于限流。基准源按照数据手册提供的连接方法接到CMP+口。电路原理图使用立创EDA绘制。

5

按照电路原理图进行焊接,注意保证走线的清晰明了,ADC键盘电阻之间的连线不能有短路等现象,建议添加电源指示灯(便于检测是否有电源短路现象)和预留出下载接口。

6

由于本人原本是制作方波发生器,利用了ADC键盘,所以在此放上制作的方波发生器实物图,大家可以看一下ADC键盘的元件安排。另一张是键盘部分细节图,走线还是很明朗的,但是本人画工很差,读者将就看吧……本人菜鸟级学生,请高手误喷。

软件部分
1

搭建编程环境。打开Keil,本例以Keil4为例,添加STC15系列头文件,写出函数基本框架。

2

查找单片机的数据手册,找到相关的寄存器,并写在系统初始化函数里。初始化主要包括74HC595的上电消隐、AD转换相关寄存器的开启和配置等。

3

用查询方式检测键盘的按动情况,在中断函数中进行键值判断。以便在每一次AD转换完成后自动获取键值。按照之前的原理图连接的电路,AD典型转换值在程序中列出

4

在主函数中,每进行一次AD转换值就进行一次比对,只要AD转换值不是非按下状态的值(这个值在本例中设置为16,因为共有16个按键,键值分配依次为0~15),就证明有按键按下,继而使用switch-case语句判断接下来执行的语句。下图的功能是不断调用AD转换,实时显示转换对应的值。

5

为实现上述程序,需要添加的全局变量和子函数如图所示,主要包括数码管显示函数、74HC595通信函数、延时函数和一些位定义等。

6

在工程配置中设置生成HEX文件,并下载到板子上测试运行即可,此处放上我使用当初方波发生器的板子做的测试图。可以清晰的看见,当按下某个按键时,静态显示数码管显示键位值,动态扫描数码管显示AD转换值。

注意事项
1

74HC595的引脚连接需要特别注意,其主要输出在左,而输入在右

2

建议先焊接IC插座,将芯片、数码管等元件放置在IC插座上,方便更换、且焊接时的高温不易损坏元件

3

ADC键盘可以不接在P1.7口,但是需要查看使用的单片机的IO定义,连接在具有AD转换功能的引脚上

4

静态显示数码管的限流电阻要求不高,本人使用470Ω的电阻觉得亮度正常

5

ADC键盘的分档电阻的选择,需要保证电流的大小满足每一个电阻功率的要求

推荐信息