最新日志

发表于:2008-5-13 22:03:46
标签:无标签

0

VHDL 学习笔记

任意整数的分频器

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

 
ENTITY  vhdl2  IS
generic( n:integer:=2000);
PORT(
           CLK: IN STD_LOGIC;
           CLKOUT_3:BUFFER STD_LOGIC
          );
END vhdl2;
ARCHITECTURE A OF vhdl2 IS
SIGNAL CNT1,CNT2:integer:=0;
SIGNAL OUTTEMP:STD_LOGIC;
SIGNAL LOUT:STD_LOGIC;
SIGNAL OUT3:STD_LOGIC:='0';
BEGIN

PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK='1'THEN
IF CNT1=n-1 THEN
CNT1<=0;
ELSE
CNT1<=CNT1+1;
END IF;
END IF;
END PROCESS;

PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK='0'THEN
IF CNT2=n-1 THEN
CNT2<=0;
ELSE
CNT2<=CNT2+1;
END IF;
END IF;
END PROCESS;

PROCESS(CNT1,CNT2 )
BEGIN
if ((n mod 2)=1) then
IF CNT1=1 THEN
IF CNT2=0 THEN
OUTTEMP<='1';
ELSE OUTTEMP<='0';
END IF;

ELSIF CNT1=(n+1)/2 THEN
IF CNT2=(n+1)/2 THEN
OUTTEMP<='1';
ELSE OUTTEMP<='0';
END IF;

ELSE
OUTTEMP<='0';
END IF;
else
if cnt1=1 then
outtemp<='1';
elsif (cnt1=(n/2+1)) then
outtemp<='1';
else
outtemp<='0';
end if;
end if;
END PROCESS;

PROCESS(OUTTEMP,clk)
BEGIN
if ((n/=2) and (n/=1)) then
IF OUTTEMP'EVENT AND OUTTEMP='1' THEN
CLKOUT_3<=NOT CLKOUT_3;
END IF;
elsif (n=2) then
if(clk'event and clk='1')then
clkout_3<=not clkout_3;
end if;
else
clkout_3<=clk;
end if;
END PROCESS;
END A;

点击此处查看原文 >>

系统分类: CPLD/FPGA   |    用户分类: 无分类    |    来源: 整理

评论(0) | 阅读(54)
发表于:2008-5-12 20:33:16
标签:无标签

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小喇叭发出超声波,来达到驱蚊效果

 

点击此处查看原文 >>

系统分类: 生活点滴   |    用户分类: 无分类    |    来源: 整理

评论(0) | 阅读(40)
发表于:2008-5-12 9:28:47
标签:无标签

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"

点击此处查看原文 >>

系统分类: 软件开发   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(40)
发表于:2008-5-10 18:38:15
标签:无标签

0

VHDL 数据对象

VHDL 数据对象

            Data Objects(数据对象)4种,变量VARIABLE,常量CONSTANT,信号SIGNAL,文件FILE。

            CONSTANT相当电路里恒定的电平,GND或VCC。

            VARIABLE和SIGNAL区别

                   1 SIGNAL可以设置传输延时,VARIABLE 不可以

                   2 VARIABLE只能做局部信息载体,SIGNAL可以做为模块间的信息载体

                   3 VARIABLE有时后只是一种过渡,最后的信息传输和截面间的通信都是 通过SIGNAL完成的。

          尽管VHDL仿真器允许变量和信号设置初始值,但在实际应用中,VHDL综合器并不会把这些信息综合进去。

VARIABLE

      VARIABLE 是局部变量只能在进程和子程序中使用。不存在延时行为(仿真过程中共享变量例外)

         VARIABLE 变量名:数据类型 :=初始值;

         例子:

         VARIABLE a: INTEGER;

         VARIABLE b,c:INTEGER:=2;   --综合器将略去所有初始值

         VARIABLE d: STD_LOGIC;     --定义标准位变量

          变量赋值:

          目标变量名:=表达式;

          例子:

          VARIABLE x,y: REAL;

          VARIABLE a,b:BIT_VECTOR(0 T0 7):

          x:=100.0;

          y:=1.5+x;                               --运算表达式赋值

          a:=b;

          a:="10100101";                      --位矢量赋值

          a(3 TO 6):=('1','1','0','1',);     

          a(0 TO 5):=b(2 TO 7);

          a(7):='0';                               --位赋值

VHL'93 支持共享变量,但现在大多数VHDL不支持

             SHARED VARIABLE fre: BOOLEAN:=true;

SIGNAL

         SIGNAL类似连接线。SIGNAL做为一种数值容器

不但能容纳当前值,还能容纳历史值。这一点与触发器的记忆功能有很好的对应关系。

        除了没有方向以外,SIGNAL和实体的端口(PORT)概念是一致的。信号可以看成实体内部的端口

         格式:

         SIGNAL 信号名:数据类型:=初始值;

          例子

         SIGNAL temp: STD_LOGIC :=0;

              SIGNAL flaga,flagb:BIT;

              SIGNAL data: STD_LOGIC_VECTOR(15 T0 0);--定义了一个位失信号

                                                                                            --或总线信号

                                                                                            --或数组信号

                                                                             

              SIGNAL a:INTEGER RANGE 0 TO 15; --定义了一个整数变化范围为0-15

用户可以自定义信号数据类型,

    TYPE four IS ('X','0','1','Z');

     SIGNAL s1: four;

     s1的初始值是默认的,VHDL规定初始值取 LEFT‘most项,数组中最左项

在进程中,只能将信号列入敏感表,不能将变量列入敏感表,这是因为只有信号才能把进程外的东西带入进程内。

    目标信号名〈=表达式;

    〈=表示信息传入。可以设置延时。信号获得传入的数据并不是即时的。即使是零延时,也要经历一个特定的延时过程。因此〈=两边的数值并不总一致,这与实际器件的延时很接近,

      信号的初始值符号仍是:= 这是因为仿真的坐标是从初始赋值开始的,在此之前无所谓延时

       x<=9;

       z<=x AFTER 5ns;

      尽管综合器在综合的时候略去所设置的延时,但是即使没有利用AFTER关键词设置信号的赋值延时,任何信号赋值都是存在延时的。

      在综合后的功能仿真中,信号或变量间的延时是看成零延时的,但为了给信息传输的先后做出符合逻辑的排序,将自动设置一个小的延时。即一个VHDL模拟器的最小分辨率时间。

      顺序信号赋值,要看进程是否被启用。

      并行信号赋值,各自独立并行的发生。

      在进程中,允许同一个信号有多个驱动源(赋值源)

      在结构体中并行信号赋值语句的运行是独立于结构体中的其他语句的,每当驱动源改变,都会发生并行赋值操作。

 

常数

常数的定义和设置主要是为了使设计的实体中的常数容易读和修改

例如,将位矢量的宽度定义为一个常数,只要修改这个常数就能容易的改变宽度,从而改变硬件结构。具有全局性。

CONSTANT 常数名:数据类型:=表达式;

CONSTANT dely:TIME:=25ns;--时间类型

程序包中定义的常量可以暂不设定具体数值,它可以在程序包体中设定

PACKAGE   t   IS

     CONSTANT   rst : STD_LOGIC;

END PACKAGE t;

PACKAGE  BODY    t  IS

    CONSTANT   rst : STD_LOGIC:='0';

END PACKAGE BODY  t;

可视性 使用范围

点击此处查看原文 >>

系统分类: CPLD/FPGA   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(68)
发表于:2008-5-9 20:20:34
标签:无标签

0

pt2262 2272 红外发射接收

PT2262/2272是一对带地址、数据编码功能的红外遥控发射/接收芯片。其中发射芯片PT2262-IR将载波振荡器、编码器和发射单元集成于一身,使发射电路变得非常简洁。

    接收芯片PT2272的数据输出位根据其后缀不同而不同,数据输出具有“暂存”和“锁存”两种方式,方便用户使用。后缀为“M”为“暂存型”,后缀为“L”为“锁存型”,其数据输出又分为0、2、4、6不同的输出,例如:PT2272-M4则表示数据输出为4位的暂存型红外遥控接收芯片。

引脚图
     PT2262-IR引脚功能说明:

    Pin1-Pin6(A0-A5):
    地址输入端,可编成“1”、“0”和“开路”三种状态。

    Pin7、Pin8、pin10-Pin13(A6/D0-A11/D5):
    地址或数据输入端,地址输入时用Pin1-Pin6,做数据输入时只可编成“1”、“0”两种状态。

    Pin14(TE):
    发射使能端,低电平有效。

    Pin15、Pin16(OSC1、OSC2):
    外接振荡电阻,决定振荡的时钟频率。

    Pin17(Dout):
    数据输出端,编码由此脚串行输出。

    Pin9、Pin18(VDD,Vss):
    电源+,-输入端。

     PT2272引脚功能说明:

    Pin1-Pin6(A0-A5):
    地址输入端,可编成“1”、“0”和“开路”三种状态。要求与PT2262设定的状态一致。

    Pin7、Pin8、pin10-Pin13(D0-D5):
    数据输出端,分暂存和锁存两种状态。

    Pin14(DI):
    脉冲编码信号输入端。

    Pin15、Pin16(OSC1、OSC2):
    外接振荡电阻,决定振荡的时钟频率。

    Pin17(VT):
    输出端,接收有效信号时,VT端由低电平变为高电平。

    Pin9、Pin18(VDD,Vss):
    电源+,-输入端。

    PT2262/PT2272电气参数
参数名称 符号 工作条件 最小值 典型值 最大值 单位
工作电压 VDD - 3 - 15 V
工作电流 IDD VDD=12V停振
A0-A11开路
- 0.02 0.03 uA
输出驱动电流
(Dout)
IOH VDD=5V,VOH=3V
VDD=8V,VOH=4V
VDD=12V,VOH=6V
3
6
10
- - mA
输出驱动电流
(Dout)
IOL VDD=5V,VOL=3V
VDD=8V,VOL=4V
VDD=12V,VOL=6V
2
5
9
- - mA
    PT2262/PT2272极限参数
参数名称 符号 极限值 单位
工作电压 VDD -0.3-+16V V
输入电压 VI -0.3-VDD+0.3V V
输出电压 VO -0.3-VDD+0.3V V
功耗 PD 300(VDD=12V) mW
工作温度 TOPT -20-+70
存储温度 Tstg -40-+125
     PT2262/PT2272工作原理:

    PT2262-IR发射芯片地址编码输入有“1”、“0”和“开路”三种状态,数据输入有“1”和“0”两种状态。由各地址、数据的不同接脚状态决定,编码从输出端Dout输出,通过红外发射管发射出去。其编码时序波形如图2所示。

    Dout输出的编码信号是调制在38kHz载波上的,OSC1、OSC2外接的电阻决定载频频率,一般电阻可在430k—470k之间选择即可。
PT2262-IR编码时序图
    PT2272的暂存功能是指当发射信号消失时,PT2272的对应数据输出位即变为低电平。而锁存功能是指,当发射信号消失时,PT2272的数据输出端仍保持原来的状态,直到下次接收到新的信号输入。图3是红外发射和接收的典型应用原理图,为了能正确解调出调制的编码信号,接收端需加一级前置放大级,保证输入PT2272的信号幅度足够大。PT2272各输出端通过各种接口即可控制相应的负载。
PT2262/2272典型应用电路
    图4是PT2262构成6路发射电路,图中PT2262-IR的VDD是通过按键接通后向芯片供电,这样静态时,PT2262-IR并不耗电,特别适合是电池供电的场合。如果使用电源电压较低(如3V),二极管应选用低压差的型号(如1N60等),工作原理与图3相近,这里不再赘述。
PT2262-IR典型应用电路

点击此处查看原文 >>

系统分类: 资源共享   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(154)
发表于:2008-5-9 20:01:51
标签:无标签

0

pt2262

无线收发部分使用的是PT2262PT2272这一对无线收发编码模块,在发射端所使用的是PT2262,它是DIP-20封装。各个管脚的功能如表1所示。

名称

管脚

说明

A0-A11

1-810-13

地址管脚

D0-D5

7-810-13

数据输入端,有一个为“1”即有编码发出

Vcc

18

电源正端(+

Vss

9

电源负端(-

TE

14

编码启动端,用于多数据编码发射,低电平有效

OSC1

16

振荡电阻输入端,与OSC2所接电阻决定振荡频率

OSC2

15

振荡电阻振荡器输出端

Dout

17

编码输出端

1  PT2262引脚功能表

    PT2262搭建的无线发射模块的电路图如图1所示。P1为电源,我们可以外接9V的电池组或者其他直流电源供电,上电后,闭合S1开关,则指示灯LED就亮。 PT2262的电路联接中可以看到,作为地址管脚的A0-A7被统一接地,在接收模块PT2272中我们也是统一接地,这样就保持了相同的收发模块地址,才能实现二者的正常通信。当然了,这里的地址端口的接法是可以有38次方即6561种接法的,因为一共8个地址管脚,每个都可以有三种接法:接正、接负或者悬空。但是有一点是必须注意的,那就是需要使用的对应收发模块的地址必须保持一致。

点击看大图

1  发射部分原理图

    另外,四个数据输入口D0D3外接的是四个密闭容器内的漏水监测信号。当有漏水事故发生时,会相应的把数据输入端口拉高,从而驱动PT2262工作在发射模式。至于漏水监测部分的电路,是一个比较简单的开关电路,漏水时会把相应的两条导线导通从而发出正电平驱动数据输入口,这里就不作详细介绍。

    TE口接地,保持PT2262始终使能,用任意数据口的输入高电平来控制数据编码的发送。OSC1OSC2外接一个1.5M的振荡电阻,相应的振荡频率约为22KHz

PT2262的发送格式为:当任意数据端口有高电平输入时,PT2262将连续发送四次编码,假设振荡周期为T,每发送一次编码都有128T宽度的低电平分开。而32T×12的编码是由A0A11十二个码组成,A0在前A11在后。由Dout引出的电路部分即为发射编码电路,发射频率为315MHz,通过射频电路最终由天线进行编码的发射。

编码器用不同的占空比及组合表示不同的状态,PT2262有三种编码:悬空、10。其具体的发送编码方式如表2所示。

发送数据

编码

0

10001000

1

11101110

悬空

10001110

2 发送数据编码表

由表2可以看出,通过PT2262的内部编码把每1bit的原始码元对应编码成为1Byte新码元。也就是说,地址码A0A7以及数据码A0A3一共12bit的原始码元编码成12Byte的新码元发送出去。而编码后的1bit码元的周期为4T(T为震荡周期),相应的1Byte的码元周期就是32T

点击此处查看原文 >>

系统分类: 资源共享   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(65)
发表于:2008-5-9 14:49:03
标签:无标签

0

编写Cx51程序原则

1.当语句嵌套较多时

   容易产生花括号不匹配的情况,可以用uVision2 的Edit下的“Goto Matching Brace”选项,将光标放在某个括号处,单击该选项,与之相匹配的括号的内容将反现

2.数组指针有密切的关系

      char *name="hello";

     可以采用数组形式name[0]或指针形式*name来表示字符串第一个字母 h

     指针比较灵活,简洁

     数组比较直观,容易理解

3.为了保持整个程序具有较好的模块化结构,应尽量避免使用外部全局变量来传递数据信息。

4.编译链接时的初始化和程序执行过程的初始化具有不同的意义。

  通常,对静态和外部变量在编译链接时进行初始化

   sub()

  {static int count="0x1234";

   }

静态变量count是在编译链接时通过运行库中的初始化模块INIT.OBJ对其进行初始化

而不是每次调用函数sub()时都对其进行初始化。

   sub()

{static int count;

 count=0x1234;

}

    这实际上是程序执行的过程中的赋值,因此在每次的调用中进行赋值操作。

对于自动变量只能在程序运行的过程中进行初始化

5.由于静态变量和外部变量的初始化是通过INIT.OBJ模块实现的,在具有这类变量的程序开头会增加一段初始化程序INIT.A51的代码,这样显然会增加程序的运行时间,同时会增加程序代码所占用的空间。

6.Cx51程序经过编译后产生的目标代码具有浮动的地址,其绝对地址必须经过BL51连接定位后才能确定。

  为了能在Cx51程序中直接对任意指定的存储地址进行操作,可以采用指针的办法

  void testmodule(void)

{  char xdata *xdp; //定义一个指向XDATA存储空间的指针

    char data  *dp;   //定义一个指向DATA存储空间的指针

    xdp="0x0002";    //XDATA存储器地址

   *xdp=0xaa;       //将数据0XAA送入指定XDATA存储空间

   dp="0x30";

   *dp=0xbb;

}

   另外一种直接操作存储空间地址的方法是利用Cx51运行库中提供的一套预定义宏

“absacc.h”

#include <absacc.h>

 char c_var;

  int     i_var;

  XBYTE[0X12]=c_var;

  i_var=XWORD[0x100]; 

XWORD[0x100] 意义是将字节地址0 x200和0x201中内容取出,并赋给int型变量i_var

i_var=XWORD[0x100/2]

就是读取0x100和0x101地址单元的内容。

#include <absacc.h>

#define DAC0832 XBYTE[0X7FFF]

DAC0832=0X80;                     //启动一次D/A转换

 

Cx51编译器还提供了扩展关键字 “_at_”来对指定的存储空间的绝对地址进行定位

 [存储器类型]数据类型标识符_at_常数

idata struct link list _at_ 0x40;

xdata char text[256] _at_ 0xe000;

xdata int  il _at_ 0x8000;

7 通过printf() 调试程序

 #include <stdio.h>

 printf("hello\n");

8.在系统的正式运行前

用一个延时函数进行延时,等待系统上电稳定(除了51以外的 片外外围设备)

void main(void)

{unsigned i;

 for(i=0;i<1000;i++);  // 等待系统上电稳定

}

9  sfr16 T2=0XCC;  //定义TIMER2 ,其地址为T2L=0XCC; T2H=0XCD

    int bdata ibase;

    sbit mybit0=ibase^0;

 

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 原创

评论(0) | 阅读(52)
发表于:2008-5-9 10:38:44
标签:基于LM  2576  和M  ax813  的掉电保护  

0

基于LM 2576 和M ax813 的掉电保护

点击下载基于LM 2576 和M ax813 的掉电保护

 

             

LM 2576 的开关型稳压电源, 用LM 2576 来替代LM 7805 将得到更为宽的工作电压范围, 同时也能保持更为稳定的输出电压

 

 

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(62)
发表于:2008-5-9 10:15:50
标签:手机饰品的闪光原理  

0

手机饰品的闪光原理

CDMA手机饰品的闪光原理为什么中国移动GSM手机饰品挂在中国联通CDMA手机上不闪光?这要从CDMA和GSM手机的工作原理谈起,GSM手机是采取将语音打包压缩后发射出去的,也就是说间隙脉冲工作的,工作时提高发射功率来保持语音清晰,其余时间不发射。而CDMA手机基台采用了定向天线系统,当基台发现有手机要工作时,便会启动定向系统指向手机所在的方向并计算手机最经济的发射功率,使手机发射功率维持在比较低的水平,也就是说CDMA手机系统是充分利用基台的定向系统优势,而让手机工作在小功率状态(这就是大家看到的CDMA手机的电池容量可以比GSM手机容量小而使用时间长的原因)。这样CDMA手机系统便可采用连续工作的方式发射信号,而不像GSM手机脉冲工作方式那样工作时大功率发射。目前市面上手机饰品是为GSM手机设计的,也就是说利用了GSM手机脉冲工作时大功率发射信号来触发IC闪光的。但对于CDMA手机GSM手机饰品就不会闪光了。手机贴纸的闪光原理当手机向基台传送信号时,手机发射的是很强的电磁波。根据电磁理论电磁波在空中遇到天线,在天线的中段就会产生电压和电流。闪光贴纸其实就是一根接收天线,它把手机的电磁波信号变为电压和电流导致发光。但是为什么只有NOKIA的手机使用贴纸效果最好呢?因为由于此类型的手机没有采用标准的高效率螺旋天线,为了达到通话清晰和不掉线的效果,此类手机设计时就增大了手机的发射功率。这也是此类手机电池不够其它手机电池使用时间长的原因。GSM手机饰品的闪光原理手机使用时,手机是一部信号发射接收器,不停地和基台进行接收和发射的交换。手机闪光饰品中有一块具有检测手机信号发射接收的专用IC,当接检测到手机有信号时,就启动IC工作―-发光或发声等等。

点击此处查看原文 >>

系统分类: 生活点滴   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(51)
发表于:2008-4-20 23:17:58
标签:无标签

0

FAN3XXX系列高速低端MOSFET驱动器概述

FAN3XXX系列高速低端MOSFET驱动器概述
发布时间:2007-11-19   来源: 今日电子

  FAN3XXX系列是飞兆公司(FAIRCHILD)2007年10月推出的新产品,是一种高速低MOSFET驱动器系列。

  该系列各种驱动器与PWM控制器及功率MOSFET组合可设计出各种高频、大功率开关电源。根据驱动器的通道数、输出电流大小,有不同的封装及型号,可满足各种开关电源的大小结构及不同输出功率的需要,如表1所示。

表1 FAN3XXX型号列表

FAN3XXX型号列表

  主要特点

  FAN3XXX系列主要特点:

  1 速度高

  FAN3XXX在2.2nF负载时,输入90%到输出10%的时间小于35nS。在传播延迟上比很多竞争者要快。

  2 两通道间紧密匹配

  FAN3224在4.7nF负载时,在两通道间的差别测量值小于0.5nS(典型值)。两通道并联时有极好的性能。

  3 输入结构

  FAN3XXX系列有单输入驱动器及双输入驱动器,应用十分灵活。单输入结构如图1所示。例如FAN322X双驱动器,每一通道都有使能端(EN),另一输入端输入反相或同相逻辑。

单输入结构

图1 单输入结构

  双输入结构如图2所示。同相工作时将IN-端接L,使用IN+输入;反相工作时将IN+接H,使用IN-输入。其真值表如表2所示。

双输入结构

图2 双输入结构

真值表

  FAN3100用作同相驱动器时接法如图3所示,其输入及输出波形如图4所示。从图中可看出:在VDD低于欠压锁存(UVL0)阈值时,无输出,只有VDD大于欠压锁存阈值电压时才有输出。

FAN3100做同相驱动器的接法

图3  FAN3100做同相驱动器的接法

FAN3100做同相驱动器的输入/输出波形

图4  FAN3100做同相驱动器的输入/输出波形

  FAN3100用作反相驱动器时接法如图5所示,其输入及输出波形如图6所示。

FAN3100做同相驱动器的接法

图5 FAN3100做同相驱动器的接法

FAN3100做同相驱动器的输入/输出波形

图6 FAN3100做同相驱动器的输入/输出波形

  4 CMOS或TTL逻辑电压兼容

  FAN3XXX系列的各型号的输入信号是CMOS或TTL逻辑电压兼容,使设计更容易。在TTL电压输入时,其高电压≥2.0V;低电压≤0.8V。CMOS输入阈值与VDD有关,高电压≈0.6VDD;低电压≈0.4VDD。

  5 封装尺寸小

  在业界中FAN3XXX系列封装尺寸是最小的。2A驱动器采用2mm×2mm的MLP-6封装;4A驱动器采用3mm×3mm的MLP-8封装。另外,它也有SOLC及SOT标准封装。各种封装的尺寸如图7所示。

FAN3XXX的封装

图7 FAN3XXX的封装

  6 工作电压范围宽,其VDD极限值为20V。

  典型应用电路

  FAN3XXX系列MOSFET驱动器与PWM控制器及功率MOSFET可以组成各种不同结构的开关电源。图8是一种采用2个FAN3100 MOSFET驱动器(IC1、IC2)及3个功率MOSFET(Q1~Q3)组成的隔离式DC/DC转换器电路(图中未画出PWM控制器,仅画出PWM控制器输出的PWM信号)。

隔离式DC/DC转换器电路

图8 隔离式DC/DC转换器电路

  在图8中,IC1的IN-接地组成同相驱动电路,输出的PWM信号经驱动器后驱动开关器Q1,Q1的负载是高频变压器T1的原边线圈,高频变压器副边得电。

  PWM控制器输出的PWM信号同时输入到高频变压器T2,经T2隔离后的PWM信号加到IC2的IN-端(IC2的IN+接地,组成反相驱动器),驱动器IC2的输出去控制变压器副边的MOSFET Q3(Q3作同步整流器)。

  在T1副边上+下-时,Q2导通、Q3截止,电压经电感L1、COUT及负载供电,经Q2形成回路。在T1副边上-下+时,Q2截止,IC2输出的高电压使Q3导通。L1储存的能量向负载释放,经Q3形成回路,其工作状态如图9所示。这种同步整流的结构具有较高的转换效率。

工作状态

图9 工作状态

  图8仅画出驱动开关器Q1及驱动同步整流器Q3的部分电路。要输出电压稳定还需要将输出电压经光电耦合器隔离反馈到PWM控制器,改变输出脉冲宽度来调节输出电压,这部分电路未在图8中画出。

  驱动器电流参数的选择

  FAN3XXX系列低端MOSFET驱动器IC使用较方便、电路简单,在开关电源设计时主要是选择其电流参数。这里先介绍一下为什么MOSFET在工作时需要这样大的电流?

  MOSFET是一种栅极电压控制漏极电流的器件,在低端MOSFET中以地为基准,其漏极电流ID由栅极电压VG大小来决定(或VGS大小来决定)。VGS越大,则ID越大,如图10C所示。这好像与电流没有关系。但在栅极电压建立的过程中,由于在栅极与源极之间存在极间电容CGS(如图10a所示),驱动器需要提供电流向CGS充电,充电电流为IGS(如图10b所示)。当要求MOSFET导通时间很快,则要求充电电流很大。同样,在MOSFET要求很快关断时,CGS上的电荷要很快通过驱动器放掉,也会形成很大的放电电流。CGS的容量越大、要求MOSFET的开关速度越高,则在导通及关断过程中的充、放电流越大,这种充放电电流可达几A。

 

MOSFET中的栅源电容

图10a MOSFET中的栅源电容