没有合适的资源?快使用搜索试试~ 我知道了~
按键和LED复用扫描程序
21 下载量 76 浏览量
2020-07-22
08:08:43
上传
评论
收藏 59KB PDF 举报
温馨提示
试读
2页
在我们的实际产品开发过程中,为了节省成本,常常会采用按键和LED复用,从而达到节省IO口的目的。很多刚刚碰到这种情况的工程师,可能会不知道如何处理,PS:大神请自动略过。下面由我来给大家讲讲按键和LED复用IO口时,程序该如何处理吧。(上一讲已经讲过,我个人比较喜欢状态机编程,因此这里还是采用状态机编程的方法,来实现按键和LED复用扫描功能)。
资源推荐
资源详情
资源评论
按键和按键和LED复用扫描程序复用扫描程序
在我们的实际产品开发过程中,为了节省成本,常常会采用按键和LED复用,从而达到节省IO口的目的。很多
刚刚碰到这种情况的工程师,可能会不知道如何处理,PS:大神请自动略过。下面由我来给大家讲讲按键和LED
复用IO口时,程序该如何处理吧。(上一讲已经讲过,我个人比较喜欢状态机编程,因此这里还是采用状态机
编程的方法,来实现按键和LED复用扫描功能)。
一、按键和LED复用原理图如下:
LEDC是LED灯的COM控制端,LED1_K1和LED2_K2是按键和LED的复用IO口。扫描过程如下:
1、上电初始化时,先将LEDC、LED1_K1和LED2_K2设置为推挽输出高;
2、首先扫描LED1和LED2,LEDC输出高,LED1_K1根据系统标志判断,LED1需要亮,就输出低,LED1不需要亮,就输出
高,LED2和LED1处理一样。
3、LED1和LED2扫描完成以后,LEDC输出低,LED1和LED2输出高,将LED1_K1和LED2_K2的IO口切换为输入状态,并且
用一个变量备份一下LED1和LED2的输出电平状态,以便按键扫描完成后,恢复LED1和LED2的亮灭状态。
4、进入按键扫描状态,读取LED1_K1和LED2_K2引脚的电平状态,读取IO口电平完成以后,立即将LED1_K1和LED2_K2切
换为推挽输出低模式,并且恢复步骤3中备份的LED1_K1和LED2_K2的电平状态到LED1_K1和LED2_K2管脚上。
以上四个步骤就是按键和LED复用时,程序的扫描过程,看不懂的话没有关系,大家结合源代码理解,就很清楚了。按键和
LED复用扫描程序如下:
/**********************************************************
*名称: void Led2Disp_Scan(void)
*功能: led2和按键扫描函数
*形参:无
*返回:无
*说明:无
注意:当在使用STM8单片机编程时,切换IO口的输入输出状态时,请将IO口配置成低速模式(2MHz),要不然在切换IO口
的输入输出状态时,会触发IO口的外部中断,造成程序异常。
**********************************************************/
void Led2Disp_Scan(void)
{
static INT8U scan_num = 0;//扫描状态变量
scan_num++;
switch(scan_num)
{
case 1://状态1扫描LED灯
{
COM1_ON();//置高LED公共端
LedDisp_Process(0,Bit_TyPeDefStructure.led2_disp);//根据标志位控制LED2的亮灭
LedDisp_Process(1,Bit_TyPeDefStructure.led1_disp);//根据标志位控制LED1的亮灭
}
break;
case 2://LED灯扫描完毕
{
资源评论
weixin_38632624
- 粉丝: 8
- 资源: 956
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功