找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1434|回复: 9
收起左侧

关于单片机+ADC检测应用的一些疑惑?

[复制链接]
ID:706724 发表于 2023-9-9 18:15 | 显示全部楼层 |阅读模式
如下图:思路:如果用单片机ADC检测电池电源,当电压大于2.5V时LED灯亮,小于2.5V时灯灭。但不管检测出来的电压大于或小于2.5V时,都可以用遥控控制灯的亮灭。  

现在在构思程序时有一些疑惑:当程序在循坏检测ADC时,假设ADC>2.5V那么LED灯亮,但若要用遥控关闭LED时,那么是不是永远无法关闭?(因为ADC>2.5v)那么 ADC_READ();放在哪里好呢?或者该怎么写这个程序呢?请大家指教一下!谢谢!
#include<51.h>
......
......
void main()
{
IR_INT();//遥控控制
ADC_INT();//ADC初始化
........
........
While(1)
{
       ADC_READ();//ADC读出来的值,并与2.5V比较的结果.
     if(press)  //遥控按键,及遥控的功能按键.        这里的遥控会受到ADC的干扰,不能随意开关LED!!!

switch(i)
    {
    case 0:.....  break;
    case 1:..... break;
       ..........
}
}
}
ee39b96a80782bab67b7428cd3dab7e.jpg
回复

使用道具 举报

ID:883242 发表于 2023-9-9 20:25 | 显示全部楼层
设一个标志位,初始化为0,ADC不能动这个标志位,遥控可以置1,那么这个标志位为0就听ADC指挥,如果为1就不管ADC结果,只听遥控指挥。
回复

使用道具 举报

ID:706724 发表于 2023-9-10 17:11 | 显示全部楼层
不太明白,还没有完全领会你的意思,详细指教一下
回复

使用道具 举报

ID:213173 发表于 2023-9-10 20:42 | 显示全部楼层
        switch(遥控变量)
        {
                case 0: ADC控制 break;
                case 1: 遥控开 break;
                case 2: 遥控关 break;
        }
回复

使用道具 举报

ID:123289 发表于 2023-9-11 09:41 | 显示全部楼层
A、B同时能控制C,A叫C=1,B叫C=0,听谁的?
明白了么?
这里必须给出一个优先次序。或分时优先。
回复

使用道具 举报

ID:1010435 发表于 2023-9-11 10:01 | 显示全部楼层
判断两个条件不就行了,
回复

使用道具 举报

ID:879348 发表于 2023-9-11 16:01 | 显示全部楼层
思维混乱是无法吧功能做好的
回复

使用道具 举报

ID:526665 发表于 2023-9-12 01:51 | 显示全部楼层
ADC取值范围是 0~3.3V,8位ADC应该是0~255,因此需要读取到ADC后看看数值是否大于阈值,如果是认为是大于2.5V,比如ADC读取到的数值是210,那么就认为是2.5V
回复

使用道具 举报

ID:1065536 发表于 2023-9-13 16:34 来自手机 | 显示全部楼层
Hephaestus 发表于 2023-9-9 20:25
设一个标志位,初始化为0,ADC不能动这个标志位,遥控可以置1,那么这个标志位为0就听ADC指挥,如果为1就不 ...

确实,这个思路可以
回复

使用道具 举报

ID:491577 发表于 2023-9-15 13:03 | 显示全部楼层
其实遥控器与AD是同等优先的,不存在谁优先的问题,应该有一个按键或开关决定是受遥控器还是AD控制,同一时间只能够有一个起作用。这是2选1的问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表