单片机的引脚检测不到低电平是怎么回事啊,在硬件上测量是低电平。电压和端口都正常。
答案:3 悬赏:20 手机版
解决时间 2021-02-24 13:09
- 提问者网友:抽煙菂渘情少年
- 2021-02-23 16:25
单片机的引脚检测不到低电平是怎么回事啊,在硬件上测量是低电平。电压和端口都正常。
最佳答案
- 五星知识达人网友:末日狂欢
- 2021-02-23 17:06
如果是你单片机速度很快的话,
你要考虑加适当的延时,
比如1T类的单片机,
在状态改变后,要加适当的
nop
你要考虑加适当的延时,
比如1T类的单片机,
在状态改变后,要加适当的
nop
全部回答
- 1楼网友:枭雄戏美人
- 2021-02-23 19:29
你软件要先把引脚置为高电平后再读,如:
//pin是你要检测电平的引脚,要先置1,即高电平
pin=1;
//然后做低电平判定
if(pin==0) {//要做的动作}
- 2楼网友:慢性怪人
- 2021-02-23 18:30
这很明显,你对adc0809的转换时序问题没有搞清楚。先仔细看看adc的资料再说。adc0809是“大中华”的ad转换ic,单片机驱动不难的。前提是控制时序不要出错。你的问题可以就在这个上。
好好看看这个:
adc0809芯片有28条引脚,采用双列直插式封装,如图13.23所示。下面说明各引脚功能。
in0~in7:8路模拟量输入端。
2-1~2-8:8位数字量输出端。
adda、addb、addc:3位地址输入线,用于选通8路模拟输入中的一路
ale:地址锁存允许信号,输入,高电平有效。
start: a/d转换启动信号,输入,高电平有效。
eoc: a/d转换结束信号,输出,当a/d转换结束时,此端输出一个高电平(转换期间一直为低电平)。
oe:数据输出允许信号,输入,高电平有效。当a/d转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
clk:时钟脉冲输入端。要求时钟频率不高于640khz。
adc0809的工作过程是:首先输入3位地址,并使ale=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。start上升沿将逐次逼近寄存器复位。下降沿启动 a/d转换,之后eoc输出信号变低,指示转换正在进行。直到a/d转换完成,eoc变为高电平,指示a/d转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当oe输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。
最关键的,我提醒你,它的时钟信号频率很关键。不知道你频率这一块的处理是怎么处理的,我可以给你推荐一个成功的案例,这是我以前做过的一个案例:
我以前做的是:adc0809的clk时钟输入信号线的频率直接由单片机的ale口输出,因adc内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500khz。在正常工作时,at89c51的ale端输出为地址锁存允许信号,当单片机上电正常工作后,ale引脚不断输出正脉冲信号。当单片机访问外部存储器时,ale输出信号的负跳沿用于单片机发出的低8位地址经外部锁存器的锁存控制信号。即使不访问外部锁存器,ale端仍有正脉冲信号输出,此频率为时钟振荡频率fosc的1/6。
因此单片机的时钟振荡频率采用6mhz,经ale输出为1mhz,在经外围74ls74两分频后得到500khz,把此信号连接到adc的clock端,提供adc工作时所需的频率。但这要求你的单片机晶振必须是6mh的,如果你采用12mhz,那么,外部你就得进行四分频后得到adc的clk时钟频率,这就看你怎么处理,凡事也只能具体情况具体分析。
如查想要程序代码和电路图,你可以访问:http://hi.baidu.com/hjiannew/
但愿对你有帮助!!!!!!!!!!!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯