用的51单片机,附电路图。
按键KEY与数码管COM端是复用的。
现在可以知道,把数码管的数据输出端设置为高阻输入。
按键即(COM)端,设置为标准IO口,可以检测到按键输入。
数码管显示时,
数码管的数据输出端设置为推挽输出。
按键即(COM)端,同时要设置为推挽才可以显示正常,
数码管显示用的是定时器中断显示。(6ms)。
按键在主循环,扫描输入(100ms)扫描1次。
用了按键程序,LED显示不正常。
用了LED显示程序,按键程序不正常。
不知道为什么?有没有人指一下点?
KEY_COM.jpg (320.99 KB, 下载次数: 1)
下载附件
按键数码管复用电路
2013-5-15 08:40 上传
{
WDT_action();//喂狗
if ( g_time_5MS_Fg )//5ms数码管显示
{
g_time_5MS_Fg = 0;
g_key_scan_count++;
Display_Led();//
if ( g_key_scan_count >= 20 )//100ms扫描一次按键
{
g_key_scan_count = 0;
key = Get_Key ( ); //这里要连续扫描两次才能输出键值
key = Get_Key ( ); //这里要连续扫描两次才能输出键值
}
}
}
但是上面会出现一个问题。按下时4个数码管会闪,长按会不停闪,频率大概是1秒闪一次。
不知道为什么要连续扫描两次按键才有数据输出,
而且数码管会闪烁。
一周热门 更多>