基于stc单片机编程器,利用两位按键配合操作(可用按键时间长度区分模式),可控制任意位置、任意个数的发光

STC15单片机IO口高阻模式做触摸按键问题 - 单片机论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
STC15单片机IO口高阻模式做触摸按键问题
19:36:24  
我仿杜洋21键触摸电子琴做了个8键的 杜洋用的STC12系列 我用STC15系列&&我做的用准双向IO口用镊子短接VCC和按键 一切正常 但换高阻模式 就问题来了 要不不按有反应 要不就是按一键几个键有反应 先以为是电路间距太小有干扰 但去除所有按键IO口线路 用手摸引脚都能响一串。杜洋源码:
游客,如果您要查看本帖隐藏内容请
我修改后的:
游客,如果您要查看本帖隐藏内容请
如果是软件问题或单片机性能问题请指正
09:27:23  
你隐藏个毛线啊
12:59:42  
应该是程序问题
13:43:50  
既然是寻求解决问题的,就不要设置回复可见了吧,显得没诚意了
22:07:53  
触摸按键 不错 学习一下
01:03:46  
我和你问题一样。。哎
12:28:28  
...........................
15:30:47  
15:38:51  
看看是这么样的?
19:47:04  
{:1:}&&看看
高级工程师
20:16:04  
20:28:51  
QTC18X系列触控按键ic包括: QTC188A(8通道二进制编码输出)、QTC186A(6通道一对一推挽输出)、QT186C(6通道一对一开漏输出)、QTC186B(7通道二进制编码输出)等型号。
QTC18X系列触控按键ic特点如下:
1、QTC18X系列触摸IC的抗干扰能力比上一代产品更强,可以通过EMC的所有测试项目。
2、对环境变化的适应能力更强、更快、确保芯片长时间、持续稳定的工作(温度升降、湿度增减、耦合电容的变化)。
3、当触摸面板上有积水的时候仍然可以进行触摸操作,不会死机不会误动作。
4、PCB布线难免会导致各条感应走线的长短\粗细\间距\寄生电容值的不同而导致灵敏度存在差异,有的触摸键灵敏度高,有的触摸键灵敏度低,这种情况下,不需要软件去单独调节各通道的灵敏度,不需要用硬件措施来调节灵敏度,QTC18X系列触控IC完全可以自动实时、精准的进行灵敏度补偿,大幅提高了IC的通用性、易用性。
(32.72 KB, 下载次数: 18)
20:27 上传
22:57:56  
过来看看什么问题
10:49:16  
下来看一下先。
高级工程师
12:59:43  
看看学习一下!
08:52:20  
谢谢你的分享…………。
14:23:46  
的确不喜欢回复可见这几个字呀。。。。
11:39:05  
最讨厌你这种回复可见
12:55:32  
回复回复、、、
17:10:24  
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶点的
Powered bySTC12系列单片机, 做按键检测时 IO口应设置为哪种模式?
STC12系列单片机, 做按键检测时 IO口应设置为哪种模式?
如题,STC12系列单片机, 做按键检测时 IO口应设置为哪种模式?
好像是高电平就行了吧
io口做输入,要先给io口置位。
希望能帮助你。
请遵守网上公德,勿发布广告信息
相关问答:STC89C52单片机按键实验
10:03:20来源: eefocus
//////////////////////////////////////////////////////////////////////////
&实现功能:& 完成独立按键的测试,当key1-key4这四个按键中,有一个按下时,在
&&&&&&&&&&&& 开发板的第一个数码管上会显示具体的数值,比如说按下key1键,在
&&& 数码管上会显示1,其他的类似
&实验板型号:BS-XYD-C52
&实验名称:& 静态数码管
&编写人:& 谢应东
&编写日期:& &&&&&&
&&//////////////////////////////////////////////////////////////////////////
#include &
&&&&&&&&&&&&&&&&&&&&
#define uchar unsigned char &//定义unsigned char 为 uchar
#define uint& unsigned int
sbit Duan=P2^6;&&&&&//定义数码管的段选使能端
sbit Wei =P2^7;&&&&&&& //定义数码管的位选使能端
#define Digital_tube_Wei_Enable Wei=1;&&//开启控制数码管的位选使能端
#define Digital_tube_Wei_Disable Wei=0;&&&& //关闭控制数码管的位选使能端
#define Digital_tube_Duan_Enable Duan=1;&//开启控制数码管的段选使能端
#define Digital_tube_Duan_Disable Duan=0;&//关闭控制数码管的段选使能端
#define Digital_tube_Duan P0&&& //定义数码管数据端口
#define KEY_DOWN& 0
#define Keyport P3
uchar code Dis_table[]=&&&&&& //将BCD码转换成数码管扫描码的数组
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 0x79,0x71,0x40,0x80,0x00};
uchar code Dis_Position[]=&&//定义数码管位选的数组
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
&//////////////////////////////////////////////////////////////////////////
函数名称:毫秒延时函数
函数功能:实现毫秒级的延时
参数介绍:Delay_MS: 定义需要延时的毫秒的数值
&&&&&&&&& iNumber: 记录Delay_MS的数值,以for语句实现所要求的延时
&&& iValue: 要延时毫秒所要进行的循环数值,本数值为实际测得
返回值:& 无
注意事项:本实验是在所用晶振为12M的前提下实现的毫秒延时,本函数是通过循环的形
&&&&&&&&& 式完成,所以如果改变了晶振的频率,请做相应的改变
&//////////////////////////////////////////////////////////////////////////
void DelayMs(uint Delay_MS)
&uint iNumber,iV
&for(iNumber=0;iNumber<Delay_MS;iNumber++)
&&&& iValue=107;
&&&& while(iValue--);
&//////////////////////////////////////////////////////////////////////////
函数名称:One_DigitalTube_display
函数功能:完成在实验板上数码管指定显示,即在特定的数码管上显示特定的数字,比
&&&&&&&&& 在第一个数码管上显示0
参数介绍:uData:要显示的数字的BCD码数组
&&&&&&&&& uNumber:选择哪个数码管显示,即让某个特定数码管显示
返回值:& 无
注意事项:实验板上的数码管是共阴极的数码管,如果使用共阳极的数码管,请注意不
&&&&&&&&& 要弄反了
&//////////////////////////////////////////////////////////////////////////
void One_DigitalTube_display(uchar uData,uchar uNumber)
& Digital_tube_Wei_E&&&//使能数码管的位选
& Digital_tube_Duan=0XFF;&&&//熄灭所有的数码管,以达到稳定的显示
& Digital_tube_Wei_D&&&//关闭数码管的位选
& Digital_tube_Duan_E&&&&& //使能数码管的段选
& Digital_tube_Duan=Dis_table[uData];//输入所要显示的数值
& DelayMs(1);&&&&&&&& //调整时序,以实现稳定显示
& Digital_tube_Duan_D&&&&& //关闭数码管的段选
& Digital_tube_Wei_E&&&&& //使能数码管的位选
& Digital_tube_Duan=Dis_Position[uNumber]; //点亮特定的数码管
& Digital_tube_Wei_D&&&&& //关闭数码管的位选
&//////////////////////////////////////////////////////////////////////////
函数名称:Scan_Keyboard
函数功能:这是一个键盘扫描函数,主要是测试是否有按键按下,如果有按键按下,近
&&&&&&&&& 一步判断是哪个按键按下,然后显示在数码管上显示相应的数值
参数介绍:cTemp_Value: 记录按键端口数值的临时变量
返回值:& 无
注意事项:无
&//////////////////////////////////////////////////////////////////////////
void Scan_Keyboard()
&uchar cTemp_V
&Keyport=0x0f;&&&&&&&&&&&&& //赋给键盘端口特定的值,以实现后面的检测
&cTemp_Value=K&& //把键盘端口值赋给临时变量
&if(cTemp_Value!=0x0f)
&&DelayMs(10);&&&&&& //消除,即消除干扰
&&&&&&& cTemp_Value=K& //重新赋值于临时值
&&&&&&& if(cTemp_Value!=0x0f) & //再次检查
&&&&&&& while((Keyport&0x0F)!=0x0F) ; & //再次判断是否有按键按下
&&&& switch(cTemp_Value)&&&&
&&& &&case 0x0e:
&&&&&&& One_DigitalTube_display(1,0);& //第一个按键按下,显示1
&&& &&case 0x0d:
&&&&&&& One_DigitalTube_display(2,0);& //第二个按键按下,显示2
&&& &&case 0x0b:
&&&&&&& One_DigitalTube_display(3,0);& //第三个按键按下,显示3
&&& &&case 0x07:
&&&&&&& One_DigitalTube_display(4,0);& //第四个按键按下,显示4
&//////////////////////////////////////////////////////////////////////////
函数名称:main
函数功能:不断地循环扫描键盘,当有按键按下时,会在数码管上显示相应的数值
参数介绍:无
返回值:& 无
注意事项:无
&//////////////////////////////////////////////////////////////////////////
void main()
&&Scan_Keyboard();&&& //调用键盘扫描函数
关键字:&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
大学堂最新课程
<img src=".cn/files/course//e0239453.png?4.9.0"
width="140" height="90"
alt="CapTIvateTM 技术软件设计快速指南" />
CapTIvateTM 技术软件设计快速指南
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

我要回帖

更多关于 stc单片机编程器 的文章

 

随机推荐