如果只是开关信号,那只要扫描IO就行;
如果是脉冲信号,只要用外部定时计数器或者外部中断就行,比如光电编码器;
发射出来的信号是个周期信号,不同的按键,其编码不同,编码中0和1对应的脉冲长度有差别,详细内容可以看相关的资料。
要实现一直按着音量会一直加(减),这个过程比较复杂,需要单片机不断的接收响应,要编写相应的单片机程序,之后还需要调试。
⑵ 单片机与网络的通信
问题说得不太清楚:
1,您想用什么网连接?
我曾经做过这个项目,当时使用的是MCU+串口+Modem远程控制,协议使用UDP+IP+PPP,您如果想简化通信协议栈,也可以使用该协议栈。TCP涉及到排序及重发机制,比较复杂,同时资源占用比较多。但如果对TCP进行裁剪,也可以用51实现,有相关图书的中文译本,我看过。如果使用ARM开发板+嵌入式操作系统+TCP/IP函数组,开发会快很多。
2,网页放在那里?
说实话,不知道您设计的方案。您是想使用PC机来控制远程MCU?还是反之?还是其他?如果使用PC控制远程MCU,你可以选择将网页放在MCU中,这样需要HTML协议。其实也可以将界面设计在PC中,这样可以省掉一层HTML协议,比较简单,但在PC上需要安装这个控制界面,不能随心所欲地使用任意PC操作,不是很方便。
⑶ 请问老师:单片机工作时会发出信号么如果有信号,那么这个信号怎么检测
当然会发出信号,通过数据线及地址线发出(P1或P2口),一般是用排线将这两口的信号传送给外围受控设备,也可以通过排线与其它DTE交换信号,示波器或者逻辑分析仪都可以检测
⑷ 计算机是怎样识别单片机传来的是什么信号
计算机识别单片机的信号一般通过
串口通信
,不过这里需要一个
RS232
转换一下电平,因为单片机输出一般是0-5V表示逻辑0、1,但是计算机可能不是的,通过RS232把逻辑0、1转换成-12V、+12V,这样计算机与单片机就能正常通信了。
⑸ 51单片机ALE怎么检测信号
记的是当有MOVX等访问外部的指令时,ALE才能测到1/6主频的脉冲
⑹ 如何启用单片机中的上拉电阻arino
首先,我估计大家都没有USB TO TTL 硬件,也不是所有的坛友都有mangoII,所以我今天就写个特别的arino程序,让arino变成一个串口转发器。
原理很简单。。从串口芯片到单片机和这个口是个并联关系。。然后usb 到这个IO口有1k电阻,我就启用了单片机的内上拉稍微平衡下阻抗,,就把arino板子作为usb to ttl工具了。。嘿嘿
(本设置在mangoII板硬件环境下测试通过,不确定其他硬件是否可以使用,请自行尝试)
代码如下:
ARDUINO 代码复制打印
void setup() {
pinMode(0,INPUT_PULLUP);
pinMode(1,INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
}
因为程序很简单,我又偷懒就没写注释了。主要内容就是创建一个软串口,软串口接模块 ,然后让软串口的回显数据转发到硬件串口,硬件串口的输入数据转发到软串口。
下面来介绍下接线
3V3 ------------ VCC
ARDUINO GND ------------ GND esp8266
IO1 ------------ TX
IO0 ------------ RX
注意,TX 是直接对应板子上的TX RX 对应RX。,。原因自己思考下。
非常简单的接线,就是把我们的wifi模块接到arino的软串口上,需要注意的是,wifi模块是3.3V供电。
好了。已经全部准备好了。我们要正式开始了。首先我们打开串口监视器,然后重新插拔一下模块的VCC接线(让模块重启,显示其启动信息),你应该能看到如下图所示的启动信息,说明已经没有任何问题了。
1.png
前面的乱码是因为模块启动信息的波特率与后面启动后不一致造成的,不管就行了
重点来了看窗口的右下角“没有结束符”
这个要选择成“回车”如下图
1.png
我们输入下面这个指令
AT+Reset
复制代码
点击发送后,模块会重启
显示如下
AT+Reset
done
返回字符是done 为啥d没了呢,实际上是有的。可能是软串口的bug,这个我们不研究了。。反正能用知道就行了,不影响使用。
好上面的重启命令我们等会会经常用到
下面,我们要查询一下模块的工作模式,模块一共有三种工作模式1.Station 2.AP 3.Station+AP 第一种是客户端模式,第二种是接入点模式,第三种是两种模式共存。既然我们是登陆路由器然后往指定网络传数据,所以我们选第一种模式。。
设置之前先查询
AT+MODE?
复制代码
返回内容:
AT+MODE?
+MODE:0
done
这个0就是没配置的意思。。我们配置成1即可
用这个命令来设置
AT+MODE=1
复制代码
这样就设置成模式1了。具体的详细指令请参阅上面的指令手册以及自己多尝试
返回如下:
AT+MODE=1
one
坑爹的d又丢了,不管~~~这个时候,关键的时刻来了,这时候虽然设置了。但还没有生效,需要重启模块。还记得我之前说的指令么?我就不重复写了。。反正这时候要重启(拔电源插头也是可以的)
然后我们来查询下
AT+MODE?
复制代码
返回如下:
AT+MODE?
+MODE:1
done
大概就是这样就设置好模式了。
我们后面就暂时不介绍回显内容了,很简单
然后就是查询一下附近能搜索到的wifi网络信号
AT+ShowAP
复制代码
回显内容就是周围wifi信号
看到自己的wifi就可以加入网络了
AT+JoinAP="SSID","PASSWD"
复制代码
很简单的命令对吧,前面写SSID号,后面写密码。回车发送命令就可以加入网络了。记得加完网络重启下模块
好了,这样模块就连上路由器了
下面就需要有个小工具,在自己计算机(局域网内)上建立一个TCP端口的监听,来模拟服务器
小工具连接
我计算机IP是192.168.1.101 我打算监听8089端口,如下图配置,监听(当然你也可以监听你需要的任何端口)
tcp.png
(说明:任何网络服务器都可以看成是工作在指定端口,负责解析指定协议的端口监听器)
设置模块到单链接模式(只能使用一个连接的模式,这种比较方便简单,多链接模式我们以后再讲)
AT+MUX=0
复制代码
然后重启模块(拔电或者用reset指令都可以)
好了。以上的设置模块设置一次后,断电后还是会有记忆的。。也就是说只需要配置一次。。下面开始建立TCP连接啥的。断电不会重连了。。
下面我们在模块上建立一个TCP的连接
使用指令
AT+NewSTA=“TCP”,“192.168.1.101”,8089
复制代码
很简单的指令,首先说明连接类型,目标ip地址,端口号。。这样就建立好了。。
然后我们就能发送数据了
指令
AT+UpDate=11
复制代码
然后串口会返回一个>号,我们继续输入hello world发送
这样就会从TCP监听的一端看到数据了。很简单吧
指令后面的11的意思就是你要发送的字符的长度。系统是靠字符长度判断一句话是否可以发送,所以我们的数据长度要和下面要发送的字符串的长度等长才行。。
简单的教程目前就到这里了,有助于大家理解AT指令的使用。
另外我们还有一个arino的库,虽然目前开发的不太完全,基本函数都开发完了,例程还没写好,bug可能还有不少,也都在调试中,有兴趣的可以去看看
⑺ 单片机和单片机之间怎么读取信号
很简单,一个单片机的IO作为输出,另一个单片机与之相连的IO看成输入。
⑻ 在单片机中应用查询法如何检测脉冲信号
有一定难度,特别是频率较高,脉宽较小的情况下,很容易丢失一些脉冲的,当然如果你的单片机只有一个唯一的任务就是检测脉冲的话也未必不能实现比如:
#include<reg51.h>
main()
{
int x;
while((P0&0x01)==0x01)//P0.0为高则加1
{
x++;
while((P0&0x01)==0x01);//P0.0为高等待直到变低
}
}
⑼ 单片机怎么检测35Hz的信号
1.信号进单片机必须是TTL电平,如果不是需要转换;
2.转换后的TTL信号进入外中断,将外中断设置成外部边沿触发,相应地设置定时器/计数器,测量脉宽;或者
3.转换后的TTL电平进入P1.0-P1.7,使用查询方式,同时也需要相应地设置定时器/计数器,测量脉宽。
⑽ 单片机如何检测干接点信号
单片机检测干接点信号的方法:
检测门磁的闭合和断开,从而单片机实施一定的操作,门磁就是干接点信号,它具有两根线,具体步骤:
1、引出单片机一个IO口线,连接门磁开关一端。
2、门磁开关另一端通过导线连接到单片机电源负极。
如果门磁开关是常开触点,平时检测IO口是高电平,门打开时检测IO口是低电平。
如果门磁开关是常闭触点,平时检测IO口是低电平,门打开时检测IO口是高电平。