最新日志

发表于:2007-10-15 13:14:57
标签:无标签

0

一个好的网站

http://www.abab123.com/bbs/down.asp?html=703419

点击此处查看原文 >>

系统分类: 自由话题   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(225)
发表于:2007-10-13 16:23:08
标签:无标签

1

售S51单片机开发板(学习板)

       现有S51开发板2套,做工精细,性能稳定。

    主要资源:USB取电插头,Max232,在线编程接口,I/O口外扩插针,8位独立按键,液晶插座,蜂鸣器,DS1302时钟插座,93C64插座,24C××插座,红外接受头,温度传感器,8位数码管显示,8位LED指示灯,能保证各种学习开发的需要。

 附增:串口线一条,USB取电线一条。ISP下载线一条。

价格:120元。

QQ:58674624

点击此处查看原文 >>

系统分类: 接口电路   |    用户分类: 无分类    |    来源: 无分类

评论(1) | 阅读(408)
发表于:2007-7-14 16:25:10
标签:电工所考博  

1

中科院电工所考博试题

本人有中国科学院电工所2001年到2004年电工和电力电子试题10套,售价10元每份,电子版或者邮件都可。

还有中科院英语复习资料两套。据说把这些题弄明白就可能通过英语考试。

(这本来是为我考博准备的,但考不了了,保证真实性)

价格可议。QQ:58674624

点击此处查看原文 >>

系统分类: 资源共享   |    用户分类: 无分类    |    来源: 原创

评论(0) | 阅读(549)
发表于:2007-6-19 11:13:56
标签:AD  DA  

1

AD/DA的分类与指标

1. AD转换器的分类
    下面简要介绍常用的几种类型的基本原理及特点:积分型、逐次逼近型、并行比较型/串并行型、Σ-Δ调制型、电容阵列逐次比较型及压频变换型。

    1)积分型(如TLC7135)

    积分型AD工作原理是将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率),然后由定时器/计数器获得数字值。其优点是用简单电路就能获得高分辨率,但缺点是由于转换精度依赖于积分时间,因此转换速率极低。初期的单片AD转换器大多采用积分型,现在逐次比较型已逐步成为主流。

    2)逐次比较型(如TLC0831)

    逐次比较型AD由一个比较器和DA转换器通过逐次比较逻辑构成,从MSB开始,顺序地对每一位将输入电压与内置DA转换器输出进行比较,经n次比较而输出数字值。其电路规模属于中等。其优点是速度较高、功耗低,在低分辩率(<12位)时价格便宜,但高精度(>12位)时价格很高。

    3)并行比较型/串并行比较型(如TLC5510)

    并行比较型AD采用多个比较器,仅作一次比较而实行转换,又称FLash(快速)型。由于转换速率极高,n位的转换需要2n-1个比较器,因此电路规模也极大,价格也高,只适用于视频AD转换器等速度特别高的领域。
    串并行比较型AD结构上介于并行型和逐次比较型之间,最典型的是由2个n/2位的并行型AD转换器配合DA转换器组成,用两次比较实行转换,所以称为Half flash(半快速)型。还有分成三步或多步实现AD转换的叫做分级(Multistep/Subrangling)型AD,而从转换时序角度又可称为流水线(Pipelined)型AD,现代的分级型AD中还加入了对多次转换结果作数字运算而修正特性等功能。这类AD速度比逐次比较型高,电路规模比并行型小。

    4)Σ-Δ(Sigma?/FONT>delta)调制型(如AD7705)

    Σ-Δ型AD由积分器、比较器、1位DA转换器和数字滤波器等组成。原理上近似于积分型,将输入电压转换成时间(脉冲宽度)信号,用数字滤波器处理后得到数字值。电路的数字部分基本上容易单片化,因此容易做到高分辨率。主要用于音频和测量。

    5)电容阵列逐次比较型

    电容阵列逐次比较型AD在内置DA转换器中采用电容矩阵方式,也可称为电荷再分配型。一般的电阻阵列DA转换器中多数电阻的值必须一致,在单芯片上生成高精度的电阻并不容易。如果用电容阵列取代电阻阵列,可以用低廉成本制成高精度单片AD转换器。最近的逐次比较型AD转换器大多为电容阵列式的。

    6)压频变换型(如AD650)

    压频变换型(Voltage-Frequency Converter)是通过间接转换方式实现模数转换的。其原理是首先将输入的模拟信号转换成频率,然后用计数器将频率转换成数字量。从理论上讲这种AD的分辨率几乎可以无限增加,只要采样的时间能够满足输出频率分辨率要求的累积脉冲个数的宽度。其优点是分辩率高、功耗低、价格低,但是需要外部计数电路共同完成AD转换。

2. AD转换器的主要技术指标

    1)分辩率(Resolution) 指数字量变化一个最小量时模拟信号的变化量,定义为满刻度与2n的比值。分辩率又称精度,通常以数字信号的位数来表示。

    2)转换速率(Conversion Rate)是指完成一次从模拟转换到数字的AD转换所需的时间的倒数。积分型AD的转换时间是毫秒级属低速AD,逐次比较型AD是微秒级属中速AD,全并行/串并行型AD可达到纳秒级。采样时间则是另外一个概念,是指两次转换的间隔。为了保证转换的正确完成,采样速率(Sample Rate)必须小于或等于转换速率。因此有人习惯上将转换速率在数值上等同于采样速率也是可以接受的。常用单位是ksps和Msps,表示每秒采样千/百万次(kilo / Million Samples per Second)。

    3)量化误差(Quantizing Error) 由于AD的有限分辩率而引起的误差,即有限分辩率AD的阶梯状转移特性曲线与无限分辩率AD(理想AD)的转移特性曲线(直线)之间的最大偏差。通常是1 个或半个最小数字量的模拟变化量,表示为1LSB、1/2LSB。

    4)偏移误差(Offset Error) 输入信号为零时输出信号不为零的值,可外接电位器调至最小。

    5)满刻度误差(Full Scale Error) 满度输出时对应的输入信号与理想输入信号值之差。

    6)线性度(Linearity) 实际转换器的转移函数与理想直线的最大偏移,不包括以上三种误差。

    其他指标还有:绝对精度(Absolute Accuracy) ,相对精度(Relative Accuracy),微分非线性,单调性和无错码,总谐波失真(Total Harmonic Distotortion缩写THD)和积分非线性。

3. DA转换器

    DA转换器的内部电路构成无太大差异,一般按输出是电流还是电压、能否作乘法运算等进行分类。大多数DA转换器由电阻阵列和n个电流开关(或电压开关)构成。按数字输入值切换开关,产生比例于输入的电流(或电压)。此外,也有为了改善精度而把恒流源放入器件内部的。一般说来,由于电流开关的切换误差小,大多采用电流开关型电路,电流开关型电路如果直接输出生成的电流,则为电流输出型DA转换器,如果经电流椀缪棺缓笫涑觯蛭缪故涑鲂?/FONT>DA转换器。此外,电压开关型电路为直接输出电压型DA转换器。

    1)电压输出型(如TLC5620)

    电压输出型DA转换器虽有直接从电阻阵列输出电压的,但一般采用内置输出放大器以低阻抗输出。直接输出电压的器件仅用于高阻抗负载,由于无输出放大器部分的延迟,故常作为高速DA转换器使用。

    2)电流输出型(如THS5661A)

    电流输出型DA转换器很少直接利用电流输出,大多外接电流—电压转换电路得到电压输出,后者有两种方法:一是只在输出引脚上接负载电阻而进行电流—电压转换,二是外接运算放大器。用负载电阻进行电流—电压转换的方法,虽可在电流输出引脚上出现电压,但必须在规定的输出电压范围内使用,而且由于输出阻抗高,所以一般外接运算放大器使用。此外,大部分CMOS DA转换器当输出电压不为零时不能正确动作,所以必须外接运算放大器。当外接运算放大器进行电流电压转换时,则电路构成基本上与内置放大器的电压输出型相同,这时由于在DA转换器的电流建立时间上加入了达算放入器的延迟,使响应变慢。此外,这种电路中运算放大器因输出引脚的内部电容而容易起振,有时必须作相位补偿。

    3)乘算型(如AD7533)

    DA转换器中有使用恒定基准电压的,也有在基准电压输入上加交流信号的,后者由于能得到数字输入和基准电压输入相乘的结果而输出,因而称为乘算型DA转换器。乘算型DA转换器一般不仅可以进行乘法运算,而且可以作为使输入信号数字化地衰减的衰减器及对输入信号进行调制的调制器使用。

    4)一位DA转换器

    一位DA转换器与前述转换方式全然不同,它将数字值转换为脉冲宽度调制或频率调制的输出,然后用数字滤波器作平均化而得到一般的电压输出(又称位流方式),用于音频等场合。

4. DA转换器的主要技术指标:

    1)分辩率(Resolution) 指最小模拟输出量(对应数字量仅最低位为‘1’)与最大量(对应数字量所有有效位为‘1’)之比。

    2)建立时间(Setting Time) 是将一个数字量转换为稳定模拟信号所需的时间,也可以认为是转换时间。DA中常用建立时间来描述其速度,而不是AD中常用的转换速率。一般地,电流输出DA建立时间较短,电压输出DA则较长。

    其他指标还有线性度(Linearity),转换精度,温度系数/漂移。

点击此处查看原文 >>

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

评论(0) | 阅读(540)
发表于:2007-6-19 10:18:46
标签:无标签

2

avr利用pwm控制led光暗及峰鳴器音量大小

 

//ICC-AVR application builder // Target : M16 

// Crystal: 4.0000Mhz 

 

#include <iom16v.h> 

#include <macros.h> 

 

#define uchar unsigned char

#define uint unsigned int

 

void port_init(void);

void timer0_init(void);

void init_devices(void);

void delay_short(uint t);

uchar scan_key(void);

 

 

void port_init(void) 

 PORTA = 0x00; 

 DDRA  = 0x00; 

 PORTB = BIT(PB3); 

 DDRB  = BIT(PB3); 

 PORTC = 0x00; //m103 output only 

 DDRC  = 0x00; 

 PORTD = 0x00; 

 DDRD  = 0x00; 

 

// WGM: PWM Phase correct

// desired value: 1KHz

// actual value:  0.980KHz (-2.0%)

void timer0_init(void) 

 TCCR0 = 0x00; //stop 

 TCNT0 = 0x01; //set count 

 OCR0  = 0xFF;  //set compare 

 TCCR0 = 0x62; //start timer ; 相位修正, 8分頻

 

//call this routine to initialize all peripherals 

void init_devices(void) 

 //stop errant interrupts until set up 

 CLI(); //disable all interrupts 

 port_init(); 

 timer0_init(); 

 

 MCUCR = 0x00; 

 GICR  = 0x00; 

 TIMSK = 0x00; //timer interrupt sources 

 SEI(); //re-enable interrupts 

 //all peripherals are now initialized 

}

 

void delay_short(uint t) // 短延時

{

  uint i;

  for (i=0;i<t;i++);

}

 

uchar scan_key(void)  // 按鍵掃瞄

  uchar v;

  

  v = 0;     

  

  if ((PIND & 0x07) != 0x07)

  {

 

  if ((PIND & 0x01) == 0) 

  {

   v = 1;

    delay_short(1000);  

  }

  

  if ((PIND & 0x2) == 0) 

  {

    v = 2;

    delay_short(1000);  

  }

   

  if ((PIND & 0x4) == 0) 

  {

    v = 3;

    delay_short(1000);  

  }

  };

  while((PIND & 0x07) != 0x07);   // 判斷按鍵是不是放開   

  return v;  

}

 

void main(void) 

{  

 uchar key, OCR0_V;

 

 init_devices(); 

 OCR0_V = 0xff;

 

 while(1)

 {

   key = scan_key();

   

   if (key > 0)

   {

     if (key==1) // 減少佔空比

    { 

      OCR0_V -= 10;

      OCR0 = OCR0_V;

    };

    

     if (key==2) // 增加佔空比

    { 

      OCR0_V += 10;

      OCR0 = OCR0_V;

    };    

    

     if (key==3) // 全黑,佔空比為100% 

    { 

      OCR0_V = 0xff;

      OCR0 = OCR0_V;

    };      

   }

 }; 

 

 

實驗板接線:

PB3 -----> JA.1  JM

PD0 -----> K1

PD1 -----> K2

PD2 -----> K3

 

 

TCNT0的初始值的计算和设置,

根据myhk007 提供的算法

最原始的方法:

T0记到255溢出为例,如果AVR的主频是8MT01024分频的话,那么T0每加1,需要的时间就是1024/8000000,加255次的总共延时就是1024/8000000*255,依次类推。

点击此处查看原文 >>

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

评论(0) | 阅读(602)
发表于:2007-6-19 9:10:59
标签:AVR  TWM  

2

AVR的PWM波(转)

(1)一个实例:

这个程序是用ICC的向导生成的,很简单。

T0是作为普通8位定时器,频率100KHz,每次中断将PB0pin1)状态反转,产生的是200KHz占空比50%的方波。

T1是作为工作模式9:相频可调PWM波发生器,频率初始化16KHz,占空比50%。请注意:

TCNT1T0的定时器计数值,就是每个定时器时钟加1,和普通定时器的计数值寄存器作用一样。

OCR1A作为比较的TOP值。 OCR1B作为匹配输出值。

TCNT1的值增加到OCR1B相等时,OC1B(pin18)清零,就是对应低电平;

然后TCNT1继续增加到OCR1A(就是TOP)的值,然后TCNT1开始减少,这个中间,OC1BPin18)状态不变;当TCNT1减少到OCR1B相等时,OC1Bpin18)置1,就是对应高电平。 然后TCNT1继续减少到0x00(就是BOTTOM),然后TCNT1又开始增加,这个中间,OC1Bpin18)状态不变。

OCR1B的值与OCR1A的比值就是PWM的占空比! 所以这个值必须比OCR1A小。当OCR1B0时,PWM波就一直为低电平(相当于占空比为0);当OCR1BOCR1A时,PWM波就一直为高电平(相当于占空比为100);当OCR1BOCR1A的一半时,PWM波就是占空比为50%。

   你可以修改OCR1B的值,然后重新下载程序运行,看看占空比的改变;也可以修改OCR1A的值,然后重新下载程序运行,看看频率的改变,不过要注意修改OCR1A时,同时注意OCR1B的值不要比OCR1A大。

   模式9算是PWM生成中最复杂的一种,只要你理解了这个,对别的几种PWM都好理解。

TCNT0 = 0xB0; //set count 

OCR0 = 0x50;

即使工作在normal模式下,这个OCR0仍然在和TCNT0进行比较,一旦匹配后,就会产生中断或者改变OC0脚上的电平(产生PWM)。改变这个值,就会改变中断发生的时间,或者改变OC0脚上的方波的频率了。

T1定时器1的模式9,相频修正模式,可以用来产生波形非常完整的PWM波。TCNT1设置初值,增加到0xFFFF的时间,然后从0开始计数,这个理解是正确的。可以画一个波形图对应理解一下:画一个占空比50%的方波,高电平上平分为12两段,低电平上平分为34两段。

1就是TCCNT1从初值加,-->0xFFFF阶段,这个阶段OCR1B为高电平;

2就是TCCNT10x00-->OCR1B阶段,这个阶段为高电平;匹配后,变为低电平

3就是TCCNT1OCR1B-->OCR1A阶段,这个阶段为低电平;

4就是TCCNT1OCR1A-->OCR1B阶段,这个阶段为低电平;匹配后,变为高电平

TCCNT1的初值,就是保证第一段高电平的时间,这样才能形成一个完整周期的方波。而且,这个初值应该根据OCR1B的值而设,就是TCCNT1 = 0xffff-OCR1B+1;这样才能保证时间的匹配。

如果是模式9,那么每次变化后,算出占空比,算出OCR1B的值并赋值,会自动在下一个周期改变占空比为新值。easy。。。重点是:每次给OCR1B赋值,会在 下一个