本系列为大家更新一些本人最近研究的单片机相关内容。
第一期内容:
1,4X4触摸键盘测试成功,后续会进行开源分享
2,自己写个串口打印函数printf,打开可变参数函数的大门。
3,STC-ISP软件串口助手的问题。
4,用3个IO口检测5向按键电路。
1,4X4触摸键盘测试成功。
之前我设计了4X4触摸键盘模块,电路图如下,经过实际测试,效果良好,可以作为一个串口键盘模块。模块使用STC8G1K17单片机作为主控芯片,使用纵横交错各4片长条铜作为触摸点,一共8个触摸点,通过电路实现,使用ADC检测触摸情况。16个触摸点还有LED作为指示灯,可以触摸一下,改变一次状态。
2,自己写个串口打印函数printf,用起来更顺手。
这里说的printf函数呢,就是单片机串口打印函数,实际上KEIL-C51可以包含stdio.h后,直接使用的,但是使用起来和纯C语言中的printf有些差异,同时底层代码也看不到。所以我就自己写了一个,printf函数和一般的函数不同,是一个可变参数函数,但是简单了解后,还是可以写出来的。这个只是一个起点,学会了可变参数函数的使用后,我们可以写出更多的可变参数函数,函数的使用体验更好。
3,STC-ISP软件串口助手的一些问题。
STC-ISP软件作为使用STC单片机的必备软件,集成了不少功能,除了最基础的下载程序功能,还有范例程序,可以直接复制参考,有软件延时计算器,计算出的延时理论上0误差(除了因为晶振频率问题达不到)。
但是串口助手功能,显示中文汉字会出现乱码现象,这个并不是最近才出现的,而是很久了,之前我也遇到了,没有分享给大家罢了,我也问过其他STC单片机玩家,也存在这样的情况。使用其他串口助手就没有乱码。
还有就是打开串口助手后,CPU占用率很高,我这里占用高达20%,其他串口助手是没有的。
STC-ISP的串口助手有上述问题,但是还是要去用的,毕竟要下载代码,如果程序编译后,使用STC-ISP的串口时,可以直接切换到下载代码,使用其他串口助手时,会弹出串口被占用,这个就很难受了,毕竟我一直都是用的自动下载,这么一搞,还要用手动操作一下了。
4,用3个IO口检测5向按键
5向按键,就是有5个方向,上下左右中,里边的电路也很简单,就是5个独立按键,5个一端接在一起,作为公共端,另一端引出。
最简单的做法就是5个独立按键了,这需要5个IO口,我想能不能少一些IO口呢,可以的。
第二种方案是ADC检测按键了,一个ADC口就可以了,搞一个电阻分压串,5个按键的单独端接不同电压,公共端送去ADC检测。
第三种方案是,使用74HC165,并转串芯片,这个我没用过,就不展开了。
第四种方案是我常用的,就是加二极管了。介绍视频:https://www.bilibili.com/video/BV12L4y1w7K5
如电路图所示,SW7,8,9接三个IO口,P1,P2,P3,这就是普通的独立按键检测了,SW10接两个二极管D3,D4,当SW10按下后,P2,P3为低电平,SW11按下后,P1,P2是低电平,这样就能区分出这些按键了。
当然可能有人有疑问,怎么处理按键同时按下的情况?
这个一般是不会发生的,尤其是五向按键。所以不用担心。
全部0条评论
快来发表一下你的评论吧 !