0

关于投票
学习笔记

基于DSP 和AVR 单片机的主从式双CPU 导航计算机

捷联制导系统的数据处理与计算, 包括误差补偿、初始对准、垂直水平基准计算、在线校正、滤波等,DSP 可很好的完成, 但输入输出涉及与外界进行大量的数据交换和外设控制等 IO 操作, 这是DSP 的弱项,勉强令其完成此工作, 则它赖以进行高速数据处理的多级缓冲和高速流水线机制将被频繁打断, 同时低速的外设和 IO 操作要求在DSP 的操作时序中插入大量的等待周期, 最终使DSP 的优势大大消弱。那么, 数据输入, 包括采集信号、输入初始对准数据、接收系统校正信息等由谁来完成呢? 用AVR 单片机完成

采用 F IFO 作为 DSP 和AVR 沟通信息的桥梁

VB与 avr通信

MSCOMM 控件功能介绍
VB 提供了一个基本通信控件 MSCOMM32.OCX ,它具备串行通信的能力 ,可以通过串口接收和传输数据。
CommPort :端口号 ,用于选择通过哪个端口进行通信。
InBufferCount :返回接收缓冲区中等待的字符数 ,可以通过置 0 来清空缓冲区。
InBufferSize :设置并返回接收缓冲区的字节数。
Set tings :设置并返回波特率、奇偶校验、数据位、停止位参数。通常设置为: “9 600 , n ,8 ,1”。
PortOpen :设置并返回通讯端口的状态(开或关) 。端口打开后 ,可以直接读写数据流。
Input :返回并删除接收缓冲区中的数据流。
InputLen :设置并返回 Input 属性从接收缓冲区读取的字符数。
InputMode :设置或返回 Input 属性取回的数据的类型。
Output :往传输缓冲区写数据流。

以下是加载窗体时对 MSCOMM 控件的初
始化设置
Private Sub Form   Load ()
With MSComm1
. CommPort = 1 ’设置通讯端口
. InBufferCount = 0 ’清空缓冲区
. InBufferSize = 5 000’设置通讯波特率等
. Set tings =“9 600 , n ,8 ,1”
If (PortOpen = False) Then
  PortOpen=True                                                                                                                                           End if
’将取出的数据设置为二进制
. InputMode = comInputModeBinary
End With
End Sub

跳频可以有效的消除通信中的干扰

       在军事通信中,为了保证通信的保密性和可靠性,也经常采用跳频通信系统。使用固定的频率传输,很容易被敌窃听和无线电干扰,于是跳频技术就成了窃听和干扰的“克星”。

       在跳频实现中,直接数字式频率综合器(DDS) 是一个很关键的器件。AD9852 可用于通信系统的本振雷达等用途。

一种基于AVR 单片机的直流电源监控系统

       发电厂、变电站(所)等供配电部门通常用蓄电池直流电源作为控制、信号、保护、事故照明、直流油泵、分合闸等装置的不间断电源, 直流电源装置可靠与否
直接影响到供配电系统的安全运行。

高速锁存芯片74AHC573, 地址译码芯片 74AHC138 以及总线驱动芯片74AHC244,245

 

AVR 单片机实现光电隔离RS - 422/ 485智能接口研究

点击看大图

RS - 232接口电路
MAX238 接口芯片含有 4 路 RS - 232 接口电路其中一路用于 RXD、 TXD 通讯信号的电平转换 ,另外两路用于 DTR、 RTS信号的电平转换.通过主机软件设置DTR、 RTS的状态选择通讯接口 ,实现主机与连接在此通讯接口上的从机进行
的数据通讯
RS - 422/ RS485接口电路
这部分电路由4 片(U3~U6)MAX489 芯片组成 ,芯片内部含有 1 组接收、发送电平转换电路.该芯片是全双工通讯方式的 RS422接口芯片 ,RE使能端(低有效)控制数据的接收 ,DE 使能端(高有效)控制数据的发送. 当该芯片用于 RS485半双工通讯方式时 ,须将连接在发送器输出端和接收器输入端的开关全部闭合.
为便于通讯系统
调试 ,可以在各路发送使能端和数据接收端分别安装一个发光管以观察各路的通讯状态.

RS485通讯方式是软件通过收、发使能信号来控制数据的分时接收与发送 ,使用同一对差分通讯总线实现双向数据通讯的半双工通讯方式而 RS232通讯接口不能提供这样的使能控制信号.通过单片机对主机 PC - TXD 信号的监测 ,准确计算出传送一帧数据的时间 ,智能产生收、发使能信号 ,控制数据的分时接收与发送 ,从而实现数
据的半双工通讯.

单片机对传送一帧数据的时间的识别方法如
下:当单片机监测到主机发送数据的起始位时 ,开
始测量 PC - TXD信号的每个脉冲的脉冲宽度 ,计
算出对应的波特率 ,若均属于通用波特率集合 ,它
们中的最高波特率即是通讯波特率.否则 ,该脉冲
宽度是发送两帧数据的间隔时间 ,电平负跃变的
时刻是起始位的开始时刻 ,开始重新测量每个脉
冲的脉冲宽度.当通讯波特率确定后 ,检测第十位
的电平状态 ,若是低电平 ,则可确定是 11 位通讯
方式.否则是10 位通讯方式.由通讯波特率和通
讯方式计算出传送一帧数据的时间.
通讯接口接收、发送数据的智能控制过程如
下:每当监测到主机发送数据的起始位时 ,单片机
输出收、发使能信号(RE = 1、 DE = 1) ,控制收、发
电路禁止接收、允许发送数据 ,主机数据发送到
RS485通讯总线上 ,同时定时器开始计时.当计时

时间等于发送一帧数据的时间时 ,单片机输出收、
发使能信号(RE = 0、 DE = 0) ,控制收、发电路允许
接收、禁止发送数据. 此时 ,主机可以接收 RS485
通讯总线上的从机数据.当单片机又监测到主机
发送数据的起始位时 ,重复上述的发送过程

单片机 I/ O 端口的分配和功能: ICP 捕获输
入[1 ]
端用于监测主机 PC - TXD 信号; PB0~PB7
输出端用于通讯接口的收、发使能控制信号;
TXD、 RXD用于与主机通讯 ,可根据主机命令来选
择通讯接口;PD4 输入 ,由 K1 设置双工或半双工
通讯方式.通过 K2、 DTR 和 RTS选择通讯端口如

USB 充电电路 ,网上高手制作

点击开大图

 

 

利用电脑中几乎被人遗忘的PC小喇叭发出超声波,来达到驱蚊效果

 

系统分类: 生活点滴
用户分类: 无分类
标签: 无标签
来源: 整理
发表评论 阅读全文(138) | 回复(0)

0

关于投票
海明码 转载

海明码  转载
基本概念
海明码:             能纠正所有单个比特的高效线性分组码。
最大似然译码:接收到的码字,最像某一允许码,就判决为这个码。
码元:                  码字中的二进制位。
码字:                  码元的组合。
码长:                  码字中码元的个数。
码组:                  所有许用码字构成的码字空间。
码距:                  两码字间对应位上的码元取值不同的位数。
海明距离(d) 码组中的最小码字。决定了码组的纠错能力。

        对于3位编码的码距,可用三维空间表示,每个码字对应立方体的各个顶点,码距可用对应两顶点间沿立方体各棱行走的最短几何距离表示。如果仅用“000”和“111”为许用码,则码距为3。


海明距离与纠错能力的关系
1、当码组用于检错时:设检错个数为e,则:d>=e+1。
说明:码字A和B出现e个错误时,仍没有变成对方,和对方至少有一个码元位不同。
2、当码组用于纠正t重错时:则:d>=2t+1。
说明:码字A和B同时出现t个错误时,仍能看出出错后的码字最像谁(最大似然译码)。
3、当码组用于纠正t重错,同时检测e个错误时,要求(e>t),则:d>=e+t+1。
码字A和B出现e个错误时,仍没有变成对方,且码字A和B同时出现t个错误时,仍能看出出错后的码字最像谁。
海明码纠正单比特差错。
原理:在d位信息位后增加r位冗余位,构成一个n=d+r位的码字,且满足关系:2r>=d+r+1,即用r个监督关系式产生的r个校正因子来区分无错和在码字中的n个不同位置的一位错。将r位冗余位安插在码字的2的幂次方的位置,将码字中信息位的位置用二进制表示,冗余位的值是码字中位置相应位为“1”的信息位的异或。接收方按上述方法进行校验,并降序排列冗余位,值不为“0”则表示对应位置的码元出错。
海明码的编码效率为:R=d/d+r)
式中 d为信息位位数,为增加冗余位位数。
海明码的生成与接收
方法一:(按教科书)
1)海明码的生成。
例1.已知:信息码为:"0010"。海明码的监督关系式为:
S2=a2+a4+a5+a6
S1=a1+a3+a5+a6
S0=a0+a3+a4+a6
求:海明码码字。
解:1)由监督关系式知冗余码为a2a1a0。
2)冗余码与信息码合成的海明码是:"0010a2a1a0"。
设S2=S1=S0=0,由监督关系式得:
a2=a4+a5+a6=1
a1=a3+a5+a6=0
a0=a3+a4+a6=1
因此,海明码码字为:"0010101"
2)海明码的接收。
例2.已知:海明码的监督关系式为:
S2=a2+a4+a5+a6
S1=a1+a3+a5+a6
S0=a0+a3+a4+a6
接收码字为:"0011101"(n=7)
求:发送端的信息码。
解:1)由海明码的监督关系式计算得S2S1S0=011。
2)由监督关系式可构造出下面错码位置关系表:
S2S1S0        000   001   010   100   011   101   110   111
错码位置    无错 a0      a1      a2      a3      a4      a5      a6
3)由S2S1S0=011查表得知错码位置是a3。
4)纠错--对码字的a3位取反得正确码字:"0 0 1 0 1 0 1"
5)把冗余码a2a1a0删除得发送端的信息码:"0010"
***方法二:(不用查表,方便编程)
1)海明码的生成(顺序生成法)。
例3.已知:信息码为:" 1 1 0 0 1 1 0 0 "(d=8)
求:海明码码字。
解:1)把冗余码A、B、C、…,顺序插入信息码中,得海明码
码字:" A B 1 C 1 0 0 D 1 1  0  0 "
码位: 1 2 3 4 5 6 7 8 9 10 11 12  
其中A,B,C,D分别插于2k位(k=0,1,2,3)。码位分别为1,2,4,8。


点击看大图
2)冗余码A,B,C,D的线性码位是:(相当于监督关系式)
A->1,3,5,7,9,11;
B->2,3,6,7,10,11;
C->4,5,6,7,12;(注 5=4+1;6=4+2;7=4+2+1;12=8+4)
D->8,9,10,11,12。
3)把线性码位的值的偶校验作为冗余码的值(设冗余码初值为0):
A=∑(0,1,1,0,1,0)=1
B=∑(0,1,0,0,1,0)=0
C=∑(0,1,0,0,0)=1
D=∑(0,1,1,0,0)=0
4)海明码为:"1 0 1 1 1 0 0 0 1 1 0 0"
2)海明码的接收。
例4.已知:接收的码字为:"1 0 0 1 1 0 0 0 1 1 0 0"(k=8)
求:发送端的信息码。
解:1)设错误累加器(err)初值=0
2)求出冗余码的偶校验和,并按码位累加到err中:
A=∑(1,0,1,0,1,0)=1
B=∑(0,0,0,0,1,0)=1
C=∑(1,1,0,0,0)=0
D=∑(0,1,1,0,0)=0
由err≠0可知接收码字有错,
3)码字的错误位置就是错误累加器(err)的值DCBA=0011:3。
4)纠错--对码字的第3位值取反得正确码字:
"1 0 1 1 1 0 0 0 1 1 0 0"
5)把位于2k位的冗余码删除得信息码:"1 1 0 0 1 1 0 0"
系统分类: 软件开发
用户分类: 无分类
标签: 无标签
来源: 转贴
发表评论 阅读全文(132) | 回复(0)
总共 , 当前 /