精华内容
下载资源
问答
  • 双工对讲机设计

    2011-12-05 10:58:58
    电源电压:+9V,功率≤0.5W。 选择电路方案,完成对确定方案电路的设计。计算电路元件参数与元件选择、并画出总体电路原理图,阐述基本原理。(用Proteus画电路原理图并实现仿真)。安装调试并按规定格式写出课程...
  • 双工

    2020-05-29 10:22:16
    前面的博文中已经提到了单工和半双工,而全双工就是能够同时给对方发送数据。比如QQ就是全双工的。

    前面的博文中已经提到了单工和半双工,而全双工就是能够同时给对方发送数据。比如QQ就是全双工的。本次为了学习全双工,就书写一个简单的聊天工具,本次工具只包括发送消息功能,接收消息功能。不包括登录注册等。本次消息还有一个弊端就是只能一行一行的发送数据。
    首先写出大体的界面:
    在这里插入图片描述
    当这个程序运行的时候需要先运行Server.java,而后再运行Client.java。最后再说明一下当程序结束的时候因为程序没有关流的操作所以报异常也很正常。
    然后就开始实现功能了,这次大体需要四个类:
    首先书写一个收发消息的工具类:
    这个类是MessageUtil:

    package socket.chat;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    
    /** 
    
    * @author Hercules
    
    * @version 创建时间:2020年5月29日 上午9:23:43 
    
    * 类说明 
    
    */
    public class MessageUtil {
    
    	public static void sendMessage(Socket socket,String content) {
    		try {
    			PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
    			out.println(content);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	public static String receiveMessgae(Socket socket) {
    		InputStreamReader isr;
    	    try {
    			isr = new InputStreamReader(socket.getInputStream());
    			BufferedReader br = new BufferedReader(isr);
    			return br.readLine();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    	
    }
    

    而后因为客户端和服务器都要不停的接收消息,这时候就需要一个线程去不停的接收消息:

    package socket.chat;
    /** 
    
    * @author Hercules
    
    * @version 创建时间:2020年5月29日 上午9:23:54 
    
    * 类说明 
    
    */
    
    import java.net.Socket;
    
    import javax.swing.JTextArea;
    
    public class Mythread extends Thread{
    
    	private JTextArea textArea;
    	
    	private Socket socket;
    
    	public Mythread(JTextArea textArea, Socket socket) {
    		super();
    		this.textArea = textArea;
    		this.socket = socket;
    	}
    	
    	@Override
    		public void run() {
    			super.run();
    			while (true) {
    				String content = MessageUtil.receiveMessgae(socket);
    				textArea.append(content);
    				textArea.append("\n\n");
    			}
    			
    		}
    	
    }
    

    客户端代码如下:

    package socket.chat;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.IOException;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
    
    /** 
    
    * @author Hercules
    
    * @version 创建时间:2020年5月29日 上午9:21:42 
    
    * 类说明 
    
    */
    public class Client {
    
    static Socket socket = null;
    public static void main(String[] args) {
    	
    	    try {
    			socket = new Socket("127.0.0.1",9999);
    		} catch (UnknownHostException e1) {
    			e1.printStackTrace();
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		}
    		//给出一个顶层容器,并设置窗口标题为聊天窗口
    		JFrame jFrame = new JFrame("我是客户端");
    		//设置聊天窗口的大小
    		jFrame.setSize(300,400);
    		//设置聊天窗口在屏幕上居中显示
    		jFrame.setLocationRelativeTo(null);
    		//设置点击窗口的x自动退出程序,如果不写这一行代码,则只会界面消失,但是不会退出
    		jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		//给出一个一般容器JPanel
    		JPanel panel = new JPanel();
    		//将一般容器放入顶层容器
    		jFrame.add(panel);
    		//将一般容器的布局设置为四边布局
    		panel.setLayout(new BorderLayout());
    		//初始化一个文本输入区域,作为消息显示区域
    		JTextArea show = new JTextArea();
    		//给显示区域设置一下大小,因为四边布局宽是默认铺满的,所以只设置高260
    		show.setPreferredSize(new Dimension(0,260));
    		//再给显示区域设置一下边框,可以更好的区分,这里是实线边框
    		show.setBorder(BorderFactory.createLineBorder(Color.BLACK));
    		//而后显示区域应该是不可编辑的,这里设置不可编辑
    		show.setEditable(false);
    		//将文本输入区域添加到一般容器中,并设置其显示在容器的北方,也就是上方
    		//四边布局分东南西北,记住一个原则,上北下南左西右东
    		panel.add(show,BorderLayout.NORTH);
    		//初始化一个按钮
    		JButton send = new JButton("发送");
    		//在容器中加入按钮并且,设置按钮在布局的南边,也就是下面
    		panel.add(send,BorderLayout.SOUTH);
    		//再初始化一个文本输入区域作为输入区域
    		JTextArea textArea = new JTextArea();
    		//将这个文本输入区域放在四边布局的中央
    		panel.add(textArea,BorderLayout.CENTER);
    		//设置send按钮的事件
    		send.addActionListener(new ActionListener() {
    			
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				//获取输入框的内容
    				String text ="客户端:" + textArea.getText();
    				//将输入框的内容显示到显示框中并且换行
    				show.append(text+"\n");
    				//发送消息
    				MessageUtil.sendMessage(socket, text);
    				//清空输入框
    				textArea.setText("");
    			}
    		});
    		//启动线程不停的接收消息
    		new Mythread(show, socket).start();;
    		//最后再显示一下这个顶层容器
    		jFrame.setVisible(true);
    		
    	}
    	
    	
    }
    

    服务器端代码如下:

    package socket.chat;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
    
    /** 
    
    * @author Hercules
    
    * @version 创建时间:2020年5月29日 上午9:21:53 
    
    * 类说明 
    
    */
    public class Server {
    	static Socket socket = null;
    	public static void main(String[] args) {
    		
    		    try {
    				ServerSocket serverSocket = new ServerSocket(9999);
    				socket = serverSocket.accept();
    			} catch (UnknownHostException e1) {
    				e1.printStackTrace();
    			} catch (IOException e1) {
    				e1.printStackTrace();
    			}
    			//给出一个顶层容器,并设置窗口标题为聊天窗口
    			JFrame jFrame = new JFrame("我是服务器");
    			//设置聊天窗口的大小
    			jFrame.setSize(300,400);
    			//设置聊天窗口在屏幕上居中显示
    			jFrame.setLocationRelativeTo(null);
    			//设置点击窗口的x自动退出程序,如果不写这一行代码,则只会界面消失,但是不会退出
    			jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			//给出一个一般容器JPanel
    			JPanel panel = new JPanel();
    			//将一般容器放入顶层容器
    			jFrame.add(panel);
    			//将一般容器的布局设置为四边布局
    			panel.setLayout(new BorderLayout());
    			//初始化一个文本输入区域,作为消息显示区域
    			JTextArea show = new JTextArea();
    			//给显示区域设置一下大小,因为四边布局宽是默认铺满的,所以只设置高260
    			show.setPreferredSize(new Dimension(0,260));
    			//再给显示区域设置一下边框,可以更好的区分,这里是实线边框
    			show.setBorder(BorderFactory.createLineBorder(Color.BLACK));
    			//而后显示区域应该是不可编辑的,这里设置不可编辑
    			show.setEditable(false);
    			//将文本输入区域添加到一般容器中,并设置其显示在容器的北方,也就是上方
    			//四边布局分东南西北,记住一个原则,上北下南左西右东
    			panel.add(show,BorderLayout.NORTH);
    			//初始化一个按钮
    			JButton send = new JButton("发送");
    			//在容器中加入按钮并且,设置按钮在布局的南边,也就是下面
    			panel.add(send,BorderLayout.SOUTH);
    			//再初始化一个文本输入区域作为输入区域
    			JTextArea textArea = new JTextArea();
    			//将这个文本输入区域放在四边布局的中央
    			panel.add(textArea,BorderLayout.CENTER);
    			//设置send按钮的事件
    			send.addActionListener(new ActionListener() {
    				
    				@Override
    				public void actionPerformed(ActionEvent e) {
    					//获取输入框的内容
    					String text = "服务器:"+textArea.getText();
    					//将输入框的内容显示到显示框中并且换行
    					show.append(text+"\n");
    					//发送消息
    					MessageUtil.sendMessage(socket, text);
    					//清空输入框
    					textArea.setText("");
    				}
    			});
    			//启动线程不停的接收消息
    			new Mythread(show, socket).start();;
    			//最后再显示一下这个顶层容器
    			jFrame.setVisible(true);
    			
    		}
    		
    }
    

    运行结果如下:
    在这里插入图片描述
    这时候就可以同时发送消息了,这就是全双工,接下来的博客,会有一个比较正式的聊天软件项目。

    展开全文
  • 比如,有位朋友反馈自己想要在win10系统中该设置网络双工模式,可是不懂得如何实现,该怎么办呢?在本文中,系统城小编就给大家详细介绍下在win10系统中网络双工模式切换的操作方法。什么是网络双工模式呢?该模式...

    刚刚使用windows10系统的朋友们,很容易会遇到一些操作问题。比如,有位朋友反馈自己想要在win10系统中该设置网络双工模式,可是不懂得如何实现,该怎么办呢?在本文中,系统城小编就给大家详细介绍下在win10系统中网络双工模式切换的操作方法。

    什么是网络双工模式呢?

    该模式分别有全双工和半双工模式,2个模式的区别在于比如有2条公路,一条路是有两个车道的,可以双向行驶的,互不影响;而另一条路只有一个车道,2俩车子无法同时通过,另外一辆交互的车俩才能通过。在现实应用中,对讲机就是半双工的典型例子,电话是全双工的,大家很容易可以想象到。

    步骤如下:

    1、在开始菜单上单击右键,选择设备管理器 ;

    a6a20123edc8f3d088d7ed1d8b202a73.png

    2、在设备管理器左侧展开: 网络适配器;

    a6a20123edc8f3d088d7ed1d8b202a73.png

    3、在下面的网卡上单击右键,选择 属性;

    a6a20123edc8f3d088d7ed1d8b202a73.png

    4、切换到【高级】选卡中;

    a6a20123edc8f3d088d7ed1d8b202a73.png

    5、在属性框中选择 速度和双工,在右侧 值 下拉菜单选择需要设置的模式即可;

    a6a20123edc8f3d088d7ed1d8b202a73.png

    6、若是英文界面则在左侧点击speed&duplex,在右侧值中选择需要设置的模式即可,full duplex即全双工方式,half duplex即半双式方式,除此之外,我们还可以在任务栏的网络图标上单击右键,选择 打开网络和共享中心 ;

    a6a20123edc8f3d088d7ed1d8b202a73.png

    7、在访问类型下面点击以太网或wlan(当前已连接的无线);

    a6a20123edc8f3d088d7ed1d8b202a73.png

    8、在打开的状态界面,点击属性;

    a6a20123edc8f3d088d7ed1d8b202a73.png

    9、然后点击配置按钮同样可进行设置!

    a6a20123edc8f3d088d7ed1d8b202a73.png

    以上就是windows10系统如何设置网络双工模式教程介绍了。感兴趣的朋友们,可以按照上述步骤一步步进行操作!

    展开全文
  • 聊聊“全双工

    千次阅读 2020-04-30 07:26:59
    “全双工”一词对于通信专业出身的老码农而言太容易引起曾经的记忆了,“通信就是计算机”也是大学的一位老师给我印象很深的一句话。那么——什么是全双工呢?AI时代的全双工又意味着什么呢?我们如...

    “全双工”一词对于通信专业出身的老码农而言太容易引起曾经的记忆了,“通信就是计算机”也是大学的一位老师给我印象很深的一句话。那么——

    什么是全双工呢?

    AI时代的全双工又意味着什么呢?

    我们如何更好地应用AI时代的全双工呢?

    本文试图解释这些问题。

    什么是全双工?

    全双工(Full Duplex)是通信传输的一个术语。通信允许数据在两个方向上同时传输,在能力上相当于两个单工通信方式的结合。全双工指可以同时进行信号的双向传输(A→B且B→A,)即A→B的同时B→A,是瞬时同步的。------来自百度百科(baike.baidu.com)

    与双工通信对应的是单工通信,单工通信就是在只允许A向B发送信息,而乙方不能向甲方传送 。在全双工和单工之间,还有一种通信方式叫“半双工”,是指一个时间段内只允许A向B发送信息,另一个时间段内只允许B向A发送信息,也就是说A和B通过时间段的组合完成双向通信。

    列举现实中的例子可以帮助我们更容易理解这些通信方式。

    我们日常使用的移动电话、固定电话以及各种远程工作的会议系统都是全双工通信的方式,半双工的通信工具比较典型的是对讲机,某些调度系统也还在使用半双工的方式。单工通信依然非常普遍,例如广播系统(FM103.9),电视系统等等。

    广义上看,传统的音箱或者家庭影院都可以认为是单工通信方式。随着智能设备,尤其是智能语音交互设备的兴起,本质上是从单工通信方式向双工通信方式的转变和演进。

    智能语音交互与全双工

    目前,比较典型的智能语音交互产品应该是智能音箱了,不论是无屏音箱(例如 小度智能音箱系列产品)还是有屏音箱(例如, 小度在家系列产品),都是为音箱设备引入了智能交互的能力,提供了双向通信的赋能。

    看一下一般的智能音箱是如何完成完成智能语音交互的。以小度智能音箱为例,如果我想听李健的《贝加尔湖畔》这首歌,我会对小度音箱说,“小度小度,播放李健的贝加尔湖畔”,小度音箱就会传来悠扬的音乐,很自然没有疑问。如果我想在小度在家上玩小度种树的游戏,我会说

    “小度小度,我要种树”, 小度回复“...”

    “小度小度,播种” , 小度回复“...”

    “小度小度,浇水” ,小度回复“...”

    你会发现,每次都要说“小度小度”,有些不方便,这里涉及一个语音交互中的基本概念——唤醒词,关于唤醒的更多资料可以参考《令人激动的语音UI背后》。

    举个例子,在一个房间里大家都在聊天,我想对其中的一位朋友——康夫说话,我会说,“康夫,你BSP层一般的优化流程是什么?”,这时康夫会转向我,给我描述他是如何在内核和驱动间做权衡的,相当于,我通过叫他的名字“康夫”和他建立起了对话。我们和智能音箱的交互也是如此,召唤“小度小度”就是为了让音箱和我建立对话。

    但是,智能音箱在一次交互之后,一般不好判断您是否接下来还会和它交互,所以,保险的做法是每次交互都要唤醒它,这相当于半双工的通信方式,当然,模糊一点的话,也可以认为这是“单工”。

    每一次交互都带有唤醒词,尤其在多轮对话的时候,显得不那么智能,能不能在音箱说话的时候,我也同时说话,就像我和康夫聊天时那样自由问答呢?实现这一功能的方式,就是智能语音交互中的全双工。

    还以种树的游戏为例,我能否直接对智能音箱说“我要种树”,“浇水”,“施肥”等等呢?如果音箱支持全双工的话,是没问题的。但这样会带来另一个问题,如果没有唤醒的话,智能音箱需要随时处于拾音的状态,而且语音识别在云端完成的话,可能会涉及用户的隐私问题。而语音唤醒都是在设备端完成的,可以有效地保护用户的隐私,关于智能语音设备的安全问题可以参考《放心用吧!浅谈DuerOS的安全性》。

    那么,如何有效地解决每次唤醒和全双工通信直接的矛盾呢?智能语音交互系统——DuerOS提出了小度系列产品的全双工免唤醒技术。

    DuerOS的全双工免唤醒

    DuerOS(可以参考《感知人工智能操作系统》)的全双工免唤醒技术,是指一次唤醒即可实现连续对话,还能在与他人对话的同时互不干扰地实现人机交互。

    一次唤醒连续对话,很容易理解,那什么是“与他人对话的同时互不干扰地实现人机交互“呢?

    举个笑话,有人说在与智能音箱交互的时候,忽然家里的猫叫了两声,结果音箱就开始了对猫叫声的应答,而中断了主人与音箱的对话,这是一个尴尬的场面。在小度系列的产品中,是不会让类似的尴尬局面发生的的。这里要引入一个技术概念——拒识。

    一般地,拒识是智能语音识别系统对无效输入不做特殊处理的能力,进而减少无效输入对智能系统的影响。在DuerOS中,拒识能力分布在不同的子系统中,除了语音识别的拒识之外,同样在NLP方面提供了不同策略的拒识。还以种树的游戏为例,在支持全双工的条件下,你在对话过程中说“喝咖啡”,种树游戏将不做特殊响应。

    目前,只需对小度喊出口令:【小度小度,打开极客模式】,即可即可召唤彩色小度,触发连续对话技能;想退出极客模式,只需对小度喊出口令:【小度小度,退出极客模式】,就可以让彩色小度退下。在交互体验上给人的感受非常的真实、自然,让小度更像一个既“听话”又“懂事”的孩子。

    应用全双工,赋能DuerOS语音技能

    DBP(dueros.baidu.com/dbp)作为DuerOS的技能开放平台(详见 揭秘“语音交互”背后的AI硬核黑科技!),目前已经有数千个语音技能应用。原则上,这些技能都可以使用全双工的能力,但是,为了保证达到完美的全双工效果,目前全双工作为“preview feature”在DBP 平台上开放了。

    作为一个开发者,如何在自己的技能中应用全双工能力呢?

    1. 选择全双工能力

    目前的全双工能力主要面向“自定义技能”,因为多轮对话才是全双工的用武之地。在我们创建技能或者升级技能的时候,可以在DBP 平台选中“全双工”,这样在DBP后台的运营同学就可以对开发者的资质和技能的形态进行审核,审核通过之后就可以在技能开发中针对全双工进行修改了。

    2. 技能中的代码支持——ER的使用

    为了更好地在技能中支持全双工的能力,强烈建议在技能服务的响应中使用ER。

    什么是ER呢?ER不是我们曾经所熟知的Entity Relationship。在DBP(DuerOS Bot Platform)中,指的是expectResponse,即技能推测用户可能的回复。

    在DBP的自定义技能技术文档中,给出了响应消息的示例,指出了ER(expectResponse)在响应消息中的位置。

    {
        "version" : "2.0",
        "context" : {
            "intent" : {
                "name" : "{{STRING}}",
                "slots" : {
                    "{{STRING}}" : {
                        "name" : "{{STRING}}",
                        "value" : "{{STRING}}",
                    }
                }
            },
            "expectResponse" : [
            {
                "type": "{{STRING}}",
                "text": "{{STRING}}",
                "slot": "{{STRING}}",
            }
        ],
        },
        ......
    }

    在技能Bot返回给DuerOS的信息中,context上下文字段用于反馈给DuerOS的意图结果。context中的expectResponse用于推测用户可能的回复。

    对于开发过程中的开发者而言,只需要在技能交互模型中稍微关注一下expectResponse字段,按需增加数据即可。其中具体的字段含义如下:

    expectResponse.type

    技能所期待用户回复内容的类型,取值如下:PlainText:普通文本类型;Slot:槽位类型。Intent: 意图类型

    expectResponse.text

    技能期待用户的回复内容,普通文本不超过256个字符。当type取值为PlainText时,该字段为必选字段。

    expectResponse.slot

    当技能期待用户针对特定槽位进行回复时,此时应填写对应槽位的名称,长度不超过256个字符。当type取值为Slot时,该字段为必选字段。

    expectResponse.intent

    意图类型的意图名称,意图名字为开发者在平台上定义的意图名称,当type取值为Intent时,该字段为必须字段,长度不能超过256个字符。

    对于已经开发的线上技能,需要做一下简单的升级。例如,在waitAnswer()之前,增加一行expectResponse()代码即可,参数就是包含上面字段的JOSN数组字符串(以PHP为例):

    {
        ... ...
        $this->addExpectTextResponse($Text);
        $this->waitAnswer();
        ... ...
    }

    ER的使用,可以有效地提高DuerOS理解能力。对全双工而言,使用expectResponse.intent 还可以辅助DuerOS的拒识能力,会得到更好的用户体验。

    3 调试与测试

    支持全双工能力的技能调试和真机上的技能调试模式类似,对小度说“打开技能调试模式”,再说“打开极客模式”,就可以在真机上调试支持全双工能力的技能了。关于调试和测试的更多内容可以参考《调试DuerOS的智能语音技能》。

    4 注意事项

    鉴于全双工中的拒识限制,对于在技能中完全自行使用NLU的情况,可能暂时无法使用全双工的能力。一个技能如果使用自己的NLP能力,往往需要订阅system_default意图,进而进行自己的NLP处理。因此,订阅了system_default意图的技能可能暂时无法使用DuerOS全双工面唤醒的能力。

    那么,问题来了,很多技能都订阅了system_default意图作为兜底话术,如果没有兜底话术,影响用户体验怎么办呢?DuerOS 提供了ai.dueros.common.unknown_intent专门作为兜底话术意图,只要在技能中引用ai.dueros.common.unknown_intent,然后在代码中对处理该意图进行回复即可。

    细心的开发者还会发现,DBP 平台还新增了一个系统意图——场景命名意图(ai.dueros.context.naming_intent),而且用法有些独特。场景命名意图必须有前置意图,并在ExpectResponse 返回场景命名意图后,才能在下一轮对话中收到该意图。也就是说,如果没有前置意图的话,技能将无法收到场景命名意图,从而也无法处理。

    再以种树的语音游戏为例,在第一次进入游戏的时候有这样一个环节:

    用户:“小度小度,打开种树。”

    小度:“......,请给你的农庄起个名字吧。” (A1)

    用户:“老曹的农场”。

    小度:“好的,.......” 

    在种树游戏回复A1的时候,需要在响应的ER中使用expectResponse.Intent类型, 具体的值为ai.dueros.context.naming_intent。理由是显然的,名字可以是任意的,但任意的值可能会遭遇拒识,而场景命名意图则有效地解决了这一矛盾。

    总之,开发者技能的意图、槽位、词典和常用表达描述的越充分,全双工所实现的效果就会越好。

    不是小结的小结

    全双工是一个智能语音系统综合能力的体现,DuerOS 一直在为打造良好的用户交互体验而不懈的努力着。尽管当前DuerOS全双工能力作为“Preview Feature”受限开放,但是,再经过一小段时间的打磨之后,将很快向全部开发者开放。

    DuerOS的开发者们可以自由使用全双工能力为自己的技能赋能,给大家的生活带来更多的便利和欢乐!

    关联阅读

    展开全文
  • 2.2双工对讲机

    千次阅读 多人点赞 2020-06-23 16:21:12
    2.2双工对讲机 文章目录2.2双工对讲机一、设计任务与要求1.1 元件采用集成运放和集成功放及电阻、电容等,实现甲、乙双方异地有线通话对讲功能;1.2用扬声器兼作话筒和喇叭,双向对讲,互不影响;1.3电源电压选用+9V...

    2.2双工对讲机

    一、设计任务与要求

    1.1 元件采用集成运放和集成功放及电阻、电容等,实现甲、乙双方异地有线通话对讲功能;

    1.2用扬声器兼作话筒和喇叭,双向对讲,互不影响;

    1.3电源电压选用+9V,输出功率≥0.5W,工作可靠,效果良好;

    1.4 设计电路所需的直流稳压电源(即+9V电源);

    二、方案设计与论证

    ​ 双工对讲机设计主要利用了运算放大器能放大信号的原理。我们设计一个简单的电路图在一边装上喇叭,作为微弱信号源,信号通过电阻、电容,运算放大器, 使信号放大了一定倍数,基本可以听到,同时接入电容也有消除失真的作用,在运算放大的输出端接上前面加有电容的扬声器,就可以完成实验,在仿真中,只 要将输入端的喇叭换成信号输入器,输出端的扬声器换成试波器既可完成仿真。

    ​ 基本设计思路:

    ​ 本设计主要分为三个模块,第一模块为稳压电源模块,第二模块为声电转换及前置放大电路模块,第三模块为功率放大电路模块。

    (1)稳压电源模块主要是提供一个+9V的直流电源;

    (2)声电转换电路主要是实现声电信号的转换,以及双向对讲,互不影响的功能;

    (3)前置放大电路及功率放大电路的主要功能是对信号进行放大。

    设计框图:

    在这里插入图片描述

    三、单元电路设计与参数计算

    由于双工对讲机的对称性,以下将用其中一侧作为例子,进行分析。

    3.1、直流稳压电源电路

    在这里插入图片描述
    直流稳压电压设计分为变压,整流,滤波,稳压四部分。

    (1)变压是采用电源变压器将电网220V,50Hz交流电经过降压后送到整流电路。

    (2)整流电路采用单相桥式整流电路,整流桥选用的是二极管。

    (3)滤波:由于本电路为小功率所以用电容输入时滤波。

    (4)稳压电路用LM7809T,LM7809T是正输出电压为9v的稳压器,其中C26防止自激振荡,抑制高频脉冲,C27改善负载瞬态响应,消除高频噪音,同时也消除自激振荡。

    3.2、声电转换及前置放大电路

    在这里插入图片描述
    (1)声电转换

    如图所示,由扬声器(LS1)与电阻R16(8Ω),R14(10kΩ),R15(10kΩ)组成电桥电路。由于电桥电阻远小于差动放大器的输入电阻,故差动放大器对电桥的负载效应可以不考虑。
    在这里插入图片描述
    R是扬声器部讲话时的等效电阻(8Ω),ΔR是对准扬声器讲话时的电阻变化量。当ΔR很小,即δ很小时,V2-V1=V3δ/4可见差动放大器的输出信号与扬声器电阻相对变化率成正比。当自方对准扬声器讲话时,ΔR≠0,电桥失去平衡,V2-V1≠0,该信号经过前置放大电路电压放大,再经音频功率放大,传输到对方扬声器去,即对方就可听见自方的讲话声音。因此此时,对方没有对准扬声器讲话,故对方ΔR=0,电桥输出信号为零,或者说对方的差动放大器输出信号为零,所以不会干扰自方讲话。反之亦然,这就实现了双工对讲互不影响的作用。图中扬声器兼作话筒和喇叭。+9V电源是用来给扬声器提供偏置电压的。

    (2)前置放大电路

    NE5532是高性能低噪声双运算放大器(双运放)集成电路。它具有高精度、低噪音、高阻抗、高速、宽频带等优良性能 。这种运放的高速转换性能可大大改善电路的瞬态性能, 较宽的带宽能保证信号在低、中、高频段均能不失真输出, 使电路的整体指标大大提高。

    R17(8.2K)和R18(33K)组成放大倍数为4倍电路,并且电路不会自激,同时反馈也适量,音质柔和,透明度清晰度高。R17,R18,C17频率补偿电路消除负载电感在高频时产生不良影响,改善功放高频特性防止自激振荡。

    3.3、功率放大电路

    在这里插入图片描述

    LM1875T为美国国家半导体公司(NS)的元老级音频功放器件。其供电电压宽,过压、过流、温度保护功能齐全。

    R21,R22,C18对信号筛选后,送入1脚进入放大器。电阻R24为负反馈,以使波形稳定,R23和C21为低频校正网络,防止电路自激振荡。

    C20,R25的作用是防止放大器产生低频振荡。

    四、总原理图及元器件清单

    4.1.总原理图:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kyFVbi4v-1592900027392)(F:\学习笔记\模电学习笔记\模拟电子技术课堂设计\2.2 双工对讲机.assets\wps6.jpg)]

    4. 2.元件清单

    元件序号型号主要参数数量备注
    R1k6R(9,12,20,23,25,27)
    R8k4R(4,16,29,30)
    R8.2k2R(5,17)
    R10k4R(2,3,14,15)
    R22k4R(11,13,22,24)
    R33k2R(6,18)
    R100k2R(7,19)
    R8302R(1,28)
    R1M2R(10,21)
    R400k2滑动变阻器R(8,26)
    C0.1uF2C(4,13)
    C0.22uF2C(11,20)
    C0.33uF2C(2,26)
    C2.2uF2C(9,18)
    C1uF2C(3,27)
    C4.7uF4C(5,8,14,16)
    C20pF2C(6,15)
    C22uF2C(12,21)
    C100uF2C(7,17)
    C220uF2C(1,25)
    BUZZERAD2LS(1,2)
    NE55322前置放大器
    LM1875T2功率放大器
    LM7809CT2恒流

    五、安装与调试(没有进行安装调试的这部分写电路中参数的选择与计算)

    解:理论值计算

    前置放大器放大倍数:

    ​ Au=R18/R17=33/8.2≈4

    功率放大器放大倍数:

    ​ Au=R24/R23=22/1=22

    六、性能测试与分析(写仿真调试与分析)

    6.1、直流稳压电源的仿真结果:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JMddbgFH-1592900027394)(F:\学习笔记\模电学习笔记\模拟电子技术课堂设计\2.2 双工对讲机.assets\wps7.jpg)]
    由截图可看出直流稳压电压约为+9V

    6.2、前置放大电路仿真分析

    (1)输入端
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m5SQJUDq-1592900027396)(F:\学习笔记\模电学习笔记\模拟电子技术课堂设计\2.2 双工对讲机.assets\wps8.jpg)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4sEnlarM-1592900027398)(F:\学习笔记\模电学习笔记\模拟电子技术课堂设计\2.2 双工对讲机.assets\wps9.jpg)]

    (2)输出端
    在这里插入图片描述
    在这里插入图片描述

    实际放大倍数的计算:

    A=输出端/输入端=3.36/0.668≈5

    与理论值相比,在误差范围内。

    6.3、功率放大电路仿真分析

    (1)当滑动电阻R26为100%时

    A、输入端
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MzNXgspl-1592900027404)(F:\学习笔记\模电学习笔记\模拟电子技术课堂设计\2.2 双工对讲机.assets\wps12.jpg)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UEATX12x-1592900027406)(F:\学习笔记\模电学习笔记\模拟电子技术课堂设计\2.2 双工对讲机.assets\wps13.jpg)]

    B、输出端
    在这里插入图片描述
    在这里插入图片描述
    实际放大倍数的计算:

    A=输出端/输入端=3.91/0.172≈23

    与理论值相比,在误差范围内。

    最小输出功率计算:

    P=V(rms)I(rms)=3.910.489≈1.9W

    (2)当滑动电阻R26为50%时

    A、输入端
    在这里插入图片描述
    在这里插入图片描述
    B、输出端
    在这里插入图片描述
    在这里插入图片描述
    实际放大倍数的计算:

    A=输出端/输入端=7.44/0.326≈23

    与理论值相比,在误差范围内。

    (3)当滑动电阻R26为0%时

    A、输入端
    在这里插入图片描述
    在这里插入图片描述
    B、输出端
    在这里插入图片描述
    在这里插入图片描述
    实际放大倍数的计算:

    A=输出端/输入端=76.5/3.36≈23

    与理论值相比,在误差范围内。

    6.4、总电路图仿真图像:

    在这里插入图片描述
    改变通道A的比例:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NBXWQR7A-1592900027431)(F:\学习笔记\模电学习笔记\模拟电子技术课堂设计\2.2 双工对讲机.assets\wps25.jpg)]

    七、结论与心得

    通过这次的模电课程设计,使我对模拟电路这门课程有了更加深刻的了解,同时也让我学习到了一个新的软件Multisim。
    在刚开始准备开始这个课题的时候,我首先选用的软件是proteus,因为之前的课程设计用过,以为用这个已经比较熟悉的软件会更加容易完成。不过很快我就发现了很多的问题,有一些元器件在库里面找不到,结果我又找了一些替代元件,但是最终还是以仿真失败告终。于是我不得不重新考虑使用Multisim软件。
    虽然双工对讲机的设计可能不算是最难的,它所用到的元器件也比较简单主要就是电阻,电容,放大器等,主要要实现的是将声音转换成电信号再经过一系列的放大再转换成声音。但也有比较难懂的部分,就是在功率放大模块,要如何实现输出功率≥0.5W这一点就让我困惑了很久。
    在这一周的课程设计中,我学会了很多,也体会到了实践的重要性,当然,书本上的知识是基础,只有把这些基础学好了,才能在实际操作中,少走弯路,并从中收获更多的经验和知识。

    八、参考文献

    [1]彭介华.电子技术课程设计指导[M].北京:高等教育出版社
    [2]李继凯.模拟电子技术及应用[M].北京:科学出版社

    展开全文
  • main.c #include "uart.h" #include #include "delay.h" #define UART_T1 1//1的话就用定时器1产生波特率,0则为定时器2产生波特率 //备注,此串口是全双工模式,自定义(uart.c和uart.h)缓存区RX[num]的大小,本...
  • FPGA-UART-双工通信 US(A)RT,The Universal Synchronous and Asynchronous serial Receiver and Transmitter,通用同步(异步)串行接受和发送器,简称为串口 Ø USART是最普遍的一种串行通信协议 提示:写完文章后,...
  • 微软小冰:全双工语音对话详解

    千次阅读 2019-02-10 11:03:16
    讲师| 周力来源 | AI科技大本营在线公开课微软小冰第六代发布会上正式宣布上线全新的共感模型,同时也开始公测一种融合了文本、全双工语音与实时视觉的新感官。这项新技术...
  • WCF双工实现

    2020-08-25 15:51:57
    WCF双工实现服务端步骤客户端步骤 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口 WCF双工:客户端请求服务端,服务端处理完后再主动调用客户端; 服务端步骤 服务端:新增...
  • rows = number of rows processed by the fetch or execute call ******************************************************************************** SQL ID: 7k7vqur9zap62 Plan Hash: 0 alter session set SQL_...
  • 1、全双工允许数据在两个方向上同时传输; 2、半双工允许数据在两个方向上传输,但是同一时间数据只能在一个方向上传输,实际上是切换的单工。 有人认为CAN是“全双工”,也有人看是“半双工”。其实我认为都对吧,...
  • 双工通信的 WebSocket

    千次阅读 2018-05-23 09:36:44
    一. WebSocket 是什么?WebSocket 是一种网络通信协议。在 2009 年诞生,于 2011 年被 IETF 定为标准...WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工(full-duplex)通讯的协议。没有了 Request 和 ...
  • Zjy6wfxsecUZfUE9fx9yBQ == Sec - WebSocket - Extensions : permessage - deflate ; client_max_window_bits Connection: Upgrade 表示要升级协议 Upgrade: websocket 表示协议要升级为websocket Sec-...
  • 2.1双工对讲机

    千次阅读 多人点赞 2020-06-22 20:10:23
    2.1双工对讲机 文章目录2.1双工对讲机一、 设计任务与要求二、方案设计与论证三、 单元电路设计与参数计算3.1直流稳压电源:3.2 声电转换电路:3.3前置放大电路:4.1 总原理图...电源电压选用**+9V**,输出功率≥0.5W,
  • 一,单工、半双工和全双工的区别: 在串行通信中,数据通常是在两个终端(如电脑和外设)之间进行传送,根据数据流的传输方向可分为3种基本传送方式:单工、半双工和全双工。这3种传输方式的示意图和区别如下图所示...
  • WCF双工通信

    2018-07-23 16:25:50
    在WCF通信中,如果实现要得到服务端...另一种方式是通过双工通信,使用回调来实现。但回调的时候,回调方法中不应该有耗时操作,否则当服务端处理完成退出的时间,回调消息会丢失。目前WCF支持双工的绑定方式有:...
  • 展开全部全双工(Full Duplex)是指在发32313133353236313431303231363533e59b9ee7ad9431333366303132送数据的同时也能够接收数据,两者同步进行,这好像我们平时打电话一样,说话的同时也能够听到对方的声音。...
  • WCF双工通信笔记

    2019-10-05 09:09:38
    1,Dupex(双工)MEP(消息交换模式),服务端回调(Callback)客户端操作 2,客户端调用服务时,附加上一个回调对象(InstanceContext)。服务端处理服务请求时,通过该回调对象调用客户端操作。 3,WCF系统设计...
  • lis双工常见设置!

    万次阅读 2015-08-14 22:11:10
    LIS仪器双工手册 LIS仪器双工手册 1 化学发光Bayer Centaur 1 化学发光 罗氏 Roche ES2010 2 化学发光 罗氏E411 2 生化仪 奥林巴斯 AU400 2 生化仪 奥林巴斯AU600 4 生化仪 奥林巴斯 AU640 6 生化...
  • 【原创】NRF52832做的全双工数字对讲机 不知道是几个月前,发了一篇文章,说用F4做了个全双工数字对讲机,那时候因为客户的原因,没有把东西放出来,这次算是把原来的坑填了。 唠嗑还是要唠的,前段时间忙忙碌碌,咋...
  • WebSocket协议,让客户端和服务器之间建立无限制的全双工通信,任何一方都可以主动发消息给对方。HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。 参考文档: ...
  • i<=9;i++) //发送数据 { TB8=0; SBUF=buf[i]; pf+=buf[i]; while(TI==0) { ; } TI=0; } TB8=0; SBUF=pf; //发送效验和 while(TI==0) { ; } TI=0; key1=0; while(RI==0) //主机接受从机是否正确接受数据 { ; } ...
  • 基于FPGA的UART全双工数据控制器

    千次阅读 2019-05-12 22:06:56
    在网上,一般所见到的可应用于FPGA设计的UART接口都遗留有编程语言的设计痕迹,无法实现FPGA上的多数据时序控制传输,因此本文提出了一种带有多标志位的UART控制器,可以满足数据流的双向全双工传递。但由于本人在...
  • NEC 环形接收双工通信

    2013-06-16 13:55:56
    本文档介绍了举例程序的操作概述,...本举例程序中,波特率设置为9,600bps,执行串行通信,并且根据所接收的1个字符数据来发送4个字符数据。类似地,在收到错误数据的情况下,则根据该错误数据来发送相应4个字符数据。
  • 让人用着心里就窝火,就MT76x8来说,第一个窝火的地方就是启动跳线选择,非得把串口用作启动跳线,导致调试起来非常麻烦,第二个就是本文要说的SPI问题,此问题分析和测试了很久,主要是关于spi 半双工和全双工的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,648
精华内容 13,459
关键字:

双工九