EDN首页   博客首页

最新日志

发表于:2007-8-30 20:49:25
标签:无标签

2

TLC1549程序

       TLC1549是美国德州仪器公司生产的10位模数转换器。它采用CMOS工艺,具有内在的采样和保持,采用差分基准电压高阻输入,抗干扰,可按比例量程校准转换范围,总不可调整误差达到±1LSB Max(4.8mV)等特点。 1.2 TLC1549的工作温度范围内(自然通风)极限参数如下: 电源电压范围: -0.5~6.5V 输入电压范围: -0.3~VCC+0.3V 输出电压范围: -0.3~VCC+0.3V 正基准电压: VCC+0.1V 负基准电压: -0.1V 峰值输入电流(任何输入端): ±20mA 峰值总输入电流(所有输入端): ±30mA 工作温度范围(自然通风): TLC1549C 0~70℃ TLC1549I -40~80℃ TLC1549M -65~125℃ 二、工作原理   在芯片选择(CS)无效情况下,I/O CLOCK 最初被禁止且DATA OUT 处于高阻状态。当串行接口把CS拉至有效时,转换时序开始允许I/O CLOCK 工作并使DATA OUT 脱离高阻状态。串行接口然后把I/O CLOCK 序列提供给I/O CLOCK 并从DATA OUT 接收前次转换结果。I/O CLOCK 从主机串行接口接收长度在10和16个时钟之间的输入序列。开始10个I/O 时钟提供采样模拟输入的控制时序。 在CS的下降沿,前次转换的MSB出现在DATA OUT端。10位数据通过DATA OUT 被发送到主机串行接口。为了开始转换,最少需要10个时钟脉冲。如果I/O CLOCK 传送大于10个时钟长度,那么在的10个时钟的下降沿,内部逻辑把DATA OUT 拉至低电平以确保其余位的值为零。在正常进行的转换周期内,规定时间内CS端高电平至低电平的跳变可终止该周期,器件返回初始状态(输出数据寄存器的内容保持为前次转换结果)。由于可能破坏输出数据,所以在接近转换完成时要小心防止CS被拉至低电平。

 

       在网上查了一下关于1549的程序,居然没有,只好自己编一个。

#include"reg52.h"
#include"1602.c"
#include " intrins.h "
sbit AD_CS = P1^0;
sbit AD_DAT = P1^1;
sbit AD_CLK = P1^2;
void DelayMS(unsigned int Num);
main()
{  unsigned char i,j,q,p,k;
   bdata unsigned int AD_Temp,Temp,TempA;
   LCD_init();
   CLEARSCREEN;
   //CLEARSCREEN;
 
  

 
  for(;;)//111111
  {
   TempA="0";
  Temp="0";
 AD_CS   = 1;
 AD_CLK = 0;
 AD_DAT = 1;
 AD_CS = 0;  
 DelayMS(500);
 for(i=0;i<2;i++)
 {
  AD_CLK =0;
  _nop_();
  Temp   =Temp<<1;
  if(AD_DAT)
   { Temp+=0x01;}
  AD_CLK=1;
  _nop_();
 }
 for(i=0;i<8;i++)
 {
  AD_CLK =0;
  _nop_();
  TempA =TempA<<1;
 
   if(AD_DAT)
   {  TempA+=0x01; }
  
  AD_CLK =1;
  _nop_();
 }
 AD_CLK =0;
 AD_CS  =0;
    AD_Temp= Temp*256+TempA;
   j="AD"_Temp/1000;
   q=(AD_Temp%1000)/100;
   p="AD"_Temp%1000%100/10;
   k="AD"_Temp%1000%100%10;
LCD_write_string(0x00,LINE1,"   TCL1549    ");
LCD_write_char(0x01,LINE2,j|0x30);
LCD_write_char(0x02,LINE2,q|0x30);
LCD_write_char(0x03,LINE2,p|0x30);
LCD_write_char(0x04,LINE2,k|0x30);

DelayMS(50000);
 
 }//111111
 
 
 }


void DelayMS(unsigned int T)
{
 for(;T>0;T--);

}

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

评论(0) | 阅读(1003)
发表于:2007-8-8 22:13:54
标签:无标签

1

点亮12864了

          一晚上的调调弄弄,把12864点亮了。实话说程序是一位师兄的。不过看着一些细节不符合我的习惯,所以给改了一下。另外的一些管教也是能省则省。呵呵,准备做一块板子,把管教规整一下,也顺便能和51系统板管教兼容一下。用时方便一点。用了STC单片机后,就可以在寝室用笔记本调程序了 。呵呵!!如果什么时候做好了,就公布一下。资源共享嘛!!呵呵

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

评论(3) | 阅读(923)
发表于:2007-7-24 16:16:56
标签:DS18B20  

9

用51单片机调DS18B20

      经过几天的努力学习和实践,终于调好了DS18B20.呵呵,现在27.0625摄氏度.虽然是一个小程序,不过还是挺有成就感的.将源程序代码贡献出来,相互交流一下.(不包含1602显示的驱动程序)

  //将DQ与Vcc之间接入4.7K上拉电阻
#include "reg52.h"
#include "INTRINS.H"
#include "1602.c"
#define uchar unsigned char
#define uint  unsigned int
//#define CLEARSCREEN LCD_en_command(0x01)   1602清屏
sbit DQ="P1"^0;
/*操作命令代码
  跳过ROM 0xCC
  发送温度转换 0xBE
  写EEPROM  0x4E
*/

/////////////低层驱动子程序///////////
void Init18B20(void); //初始化
void Write18B20(uchar ch);//写数据
unsigned char Read18B20(void);//读数据 
void Delay15(uchar n);  
void Delay10ms(uint delay_num);
void Display(void);
///////////////////////////////////// 
code uchar decimalH[]={00,06,12,18,25,31,37,43,50,56,62,68,75,81,87,93};
code uchar decimalL[]={00,25,50,75,00,25,50,75,00,25,50,75,00,25,50,75};
uint ResultTemperatureH ,ResultTemperatureLH,ResultTemperatureLL;//整数,小数高位,小数低位
uint  ResultSignal;//符号位

 


main()
{  uint TemH,TemL,delay,k=0;
   for(; ; )
 {
   Init18B20();

   Write18B20(0xCC);//跳过ROM
   _nop_();
   //Write18B20(0x4E);//写EEPROM
  // Write18B20(0x00);//Th
   //Write18B20(0x00);//Tl
   Write18B20(0x7f);//12 bits温度分辨率
   Init18B20();

   Write18B20(0xCC);//跳过ROM
   _nop_();


   Write18B20(0x44);//发送温度转换指令
   Delay10ms(25);
   Delay10ms(25);
   Delay10ms(25);
   Delay10ms(25);//等待1s转换

   Init18B20();
   Write18B20(0xCC);//跳过ROM
   Write18B20(0xBE);//发送温度转换指令
   TemL="Read18B20"();  //读低位温度值
   TemH="Read18B20"();  //读高位温度值                                                        

   Delay10ms(2);
  
  TemH=(TemH<<4)|(TemL>>4);
   TemL="TemL"&0x0f;   //取低4位
   if(TemH&0x80)
    {  TemH=~TemH;
    TemL=~TemL+1;
       ResultSignal="1";     //负
    }
     else  ResultSignal="0";   //正

   ResultTemperatureLH="decimalH"[TemL];
   ResultTemperatureLL="decimalL"[TemL];
   ResultTemperatureH="TemH";
   Display();

  for(delay=0;delay<60000;delay++);
  for(delay=0;delay<20000;delay++);
  
  }  
}

 

void  Display(void)
{  uint i,j,q;
   LCD_init();
     CLEARSCREEN;
  LCD_en_command(0x01);
  delay_nms(2);
 
     q="ResultTemperatureH/100";
     i=(ResultTemperatureH%100)/10;
     j="ResultTemperatureH-"(i*10+q*100);
  LCD_write_string(0,LINE1," Jaq1217 18B20  ");
 if(ResultSignal)  
   { LCD_write_string(0,LINE2," T is:-   .     ");  }
   else {LCD_write_string(0,LINE2," T is:+   .     ");}
    LCD_write_char(0x07,LINE2,q|0x30);
    LCD_write_char(0x08,LINE2,i|0x30);
    LCD_write_char(0x09,LINE2,j|0x30);
    LCD_write_char(0x0b,LINE2,(ResultTemperatureLH/10)|0x30);
 LCD_write_char(0x0c,LINE2,(ResultTemperatureLH%10)|0x30);
 LCD_write_char(0x0d,LINE2,(ResultTemperatureLL/10)|0x30);
 LCD_write_char(0x0e,LINE2,(ResultTemperatureLL%10)|0x30);
   }

unsigned char Read18B20(void)
 { unsigned char ch;
   unsigned char q ;
   for(q=0;q<8;q++)
    {ch=ch>>1;
 DQ=0;
  _nop_();
  DQ="1";
  _nop_();_nop_();_nop_();_nop_();
     if(DQ==1)  ch="ch|0x80";
   else     ch="ch"&0x7f;
     Delay15(3);
   DQ="1";
 
     } 
 return (ch);
   }
void Write18B20(uchar ch)
 { uchar i;
   for(i=0;i<8;i++)
   { DQ="0";
  Delay15(1);
  DQ="ch"&0x01;
  Delay15(3);
  DQ="1";
  ch="ch">>1;
  _nop_();
    }
 }

void Init18B20(void)
 { DQ="0";
   Delay15(33);//至少延时480us
   DQ="1";
   Delay15(10);//至少延时100us
   /*if(DQ==1)  return 0;   //初始化失败
    else  return 1;
 DQ=1; Delay15(18);  */
   }
void Delay15(uchar n)
 {  do{ _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
        _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
        _nop_(); _nop_(); _nop_();
  n--;
 
       }while(n);
  }
void Delay10ms(uint delay_num)
{
 uchar i;
 while(delay_num--)
 {
  for(i=0;i<125;i++)
   {;}
 }
}

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

评论(12) | 阅读(2094)
发表于:2007-5-30 20:00:41
标签:无标签

4

Keil C166

     刚从Keil公司下载的Keil C166,不敢独享,供献出来.呵呵

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

好象上传不了,太大了,对不住啊,有需要的话找我把,呵呵

 

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

评论(9) | 阅读(1231)
发表于:2007-5-26 20:10:01
标签:无标签

1

数字电路如何抗干扰

在电子系统设计中,为了少走弯路和节省时间,应充分考虑并满足抗干扰性 的要求,避免在设计完成后再去进行抗干扰的补救措施。形成干扰的基本要素有三个:
(1)干扰源,指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt, di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都可 能成为干扰源。
(2)传播路径,指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传 播路径是通过导线的传导和空间的辐射。
(3)敏感器件,指容易被干扰的对象。如:A/D、D/A变换器,单片机,数字IC, 弱信号放大器等。

抗干扰设计的基本原则是:抑制干扰源,切断干扰传播路径,提高敏感器件的 抗干扰性能。(类似于传染病的预防)
1 抑制干扰源
抑制干扰源就是尽可能的减小干扰源的du/dt,di/dt。这是抗干扰设计中最优 先考虑和最重要的原则,常常会起到事半功倍的效果。 减小干扰源的du/dt主要是通过在干扰源两端并联电容来实现。减小干扰源的 di/dt则是在干扰源回路串联电感或电阻以及增加续流二极管来实现。
抑制干扰源的常用措施如下:
(1)继电器线圈增加续流二极管,消除断开线圈时产生的反电动势干扰。仅加 续流二极管会使继电器的断开时间滞后,增加稳压二极管后继电器在单位时间内可 动作更多的次数。
(2)在继电器接点两端并接火花抑制电路(一般是RC串联电路,电阻一般选几K 到几十K,电容选0.01uF),减小电火花影响。
(3)给电机加滤波电路,注意电容、电感引线要尽量短。
(4)电路板上每个IC要并接一个0.01μF~0.1μF高频电容,以减小IC对电源的 影响。注意高频电容的布线,连线应靠近电源端并尽量粗短,否则,等于增大了电 容的等效串联电阻,会影响滤波效果。
(5)布线时避免90度折线,减少高频噪声发射。
(6)可控硅两端并接RC抑制电路,减小可控硅产生的噪声(这个噪声严重时可能 会把可控硅击穿的)。

按干扰的传播路径可分为传导干扰和辐射干扰两类。
所谓传导干扰是指通过导线传播到敏感器件的干扰。高频干扰噪声和 有用信号的频带不同,可以通过在导线上增加滤波器的方法切断高频干扰 噪声的传播,有时也可加隔离光耦来解决。电源噪声的危害最大,要特别 注意处理。所谓辐射干扰是指通过空间辐射传播到敏感器件的干扰。一般 的解决方法是增加干扰源与敏感器件的距离,用地线把它们隔离和在敏感 器件上加 蔽罩。

切断干扰传播路径的常用措施如下:
(1)充分考虑电源对单片机的影响。电源做得好,整个电路的抗干扰就 解决了一大半。许多单片机对电源噪声很敏感,要给单片机电源加滤波电路 或稳压器,以减小电源噪声对单片机的干扰。比如,可以利用磁珠和电容 组成π形滤波电路,当然条件要求不高时也可用100Ω电阻代替磁珠。
(2)如果单片机的I/O口用来控制电机等噪声器件,在I/O口与噪声源之 间应加隔离(增加π形滤波电路)。 控制电机等噪声器件,在I/O口与噪声源之 间应加隔离(增加π形滤波电路)。
(3)注意晶振布线。晶振与单片机引脚尽量靠近,用地线把时钟区隔离 起来,晶振外壳接地并固定。此措施可解决许多疑难问题。
(4)电路板合理分区,如强、弱信号,数字、模拟信号。尽可能把干扰源(如电机,继电器)与敏感元件(如单片机)远离。
(5)用地线把数字区与模拟区隔离,数字地与模拟地要分离,最后在一 点接于电源地。A/D、D/A芯片布线也以此为原则,厂家分配A/D、D/A芯片 引脚排列时已考虑此要求。
(6)单片机和大功率器件的地线要单独接地,以减小相互干扰。 大功率 器件尽可能放在电路板边缘。
(7)在单片机I/O口,电源线,电路板连接线等关键地方使用抗干扰元件 如磁珠、磁环、电源滤波器,屏蔽罩,可显著提高电路的抗干扰性能。

3 提高敏感器件的抗干扰性能
提高敏感器件的抗干扰性能是指从敏感器件这边考虑尽量减少对干扰噪声 的拾取,以及从不正常状态尽快恢复的方法。
提高敏感器件抗干扰性能的常用措施如下:
(1)布线时尽量减少回路环的面积,以降低感应噪声。
(2)布线时,电源线和地线要尽量粗。除减小压降外,更重要的是降低耦 合噪声。
(3)对于单片机闲置的I/O口,不要悬空,要接地或接电源。其它IC的闲置 端在不改变系统逻辑的情况下接地或接电源。
(4)对单片机使用电源监控及看门狗电路,如:IMP809,IMP706,IMP813, X25043,X25045等,可大幅度提高整个电路的抗干扰性能。
(5)在速度能满足要求的前提下,尽量降低单片机的晶振和选用低速数字 电路。
(6)IC器件尽量直接焊在电路板上,少用IC座。

系统分类: 资源共享   |    用户分类:    |    来源: 整理

评论(0) | 阅读(785)
发表于:2007-5-24 21:23:58
标签:无标签

0

国产3G从10月起对公众放号 有望占领五成市场

在国产3G标准TD-SCDMA进入商用试验后,记者获悉,相关配套产品招投标工作正在进行中,7月至9月将进行终端测试和招投标,在四季度提供给用户使用。

   昨天,由中国信息产业商会和国产3G联盟共同举办的TD-SCDMA终端产业发展高峰论坛在京召开,国产3G联盟工作组组长赵宏表示,在未来中国发放 3G牌照后,国产3G技术有望占领五成的市场份额。与此对应,欧盟3G标准WCDMA和美国3G标准CD-MA2000的份额则预计分别为四成及一成。

  TD联盟秘书长杨骅则透露,国产3G扩大网络技术应用试验在北京、上海、天津、广州、深圳、沈阳、厦门、保定、青岛和秦皇岛10个城市已经展开,投资规模达数百亿元。目前各城市系统设备陆续到货,大规模网络建设也已开始。

  赵宏则表示,未来普通TD手机的价位预计将在2000元左右,而高端手机的价格在3000元以上,同时拥有具备手机广播、手机电视以及高速下载业务等类型的手机将出现。

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

评论(0) | 阅读(580)
发表于:2007-5-23 11:57:04
标签:无标签

3

Cygnal C8051F020基本资料

                C8051F020的主要特点

  • 1)具有与8051兼容的微控制内核,最高速度可达25MIPS。(时钟频率为25MHz);
  • 2)具有64K字节可在系统编程的FLASH存储器,4352(4096+256)字节的片内RAM,外部64K数据存储器接口(可编程为复用或非复用方式);
  • 3)8个8位的I/O端口,所有口线均耐5V电压,并可通过交叉开关灵活配置;
  • 4)可同时使用的硬件SMBus,SPI及两个增强型UART串口;
  • 5)22个矢量中断源;
  • 6)多种复位源;
  • 7)可编程的16位计数器/定时器阵列(PCA),有5个捕捉/比较模块,6种工作方式;
  • 8)专用的看门狗定时器;
  • 9)工作范围温度:-40~+85℃;
10)支持JTAG调试和边界扫描;C8051F020的基本结构C8051F020除了具有标准的8052的数字外设部件之外,片内还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件。其中包括模拟 多路选择器、可编程增益放大器,ADC、DAC、电压比较器、电压基准、温度传感器、SMBus/I2C、UART、SPI、可编程计数器/定时器阵列 (PCA)、定时器、数字I/O端口、电源监视器、看门狗定时器(WDT)和时钟振荡器等。C8051F020是真正能独立工作的片上系统(SOC)。它 能有效的管理模拟贺数字外设,可以关闭单个或全部外设以节省功耗。篇内完全符合IEEE1149.1规范JTAG借口,支持安装在最终应用系统上的产品 MCU进行非侵入式(不占用片内资源)、全速、在系统调试和在系统编程(ISP)。其内部功能方框图如图所示:   
点击看大图

系统分类: 单片机   |    用户分类:    |    来源: 整理

评论(0) | 阅读(1302)
发表于:2007-5-21 18:01:52
标签:无标签

5

升降旗

 

  

 

本系统采用 AT89S52 单片机作为主控单元步进电机作为动力源4×4 键盘、 组合键和无线键盘作为输入,液晶显示器和国旗状态指示灯作为输出构成一个具有 良好人机交互方式的系统。通过键盘的输入,可以实现国旗升降、升降半旗、任意 时间升降、任何位置升降等功能,通过显示器输出显示当前高度、目标高度、当前 时间目标时间等必要信息国旗上升时上升标志灯亮下降时下降标志灯亮; 半旗状态时,半旗标志灯亮。具有无线遥控升降旗功能,可以控制国旗升降、升降 半旗。通过与单片机配套的 EEPROM 存储器可实现掉电保护功能。为避免误操作, 国旗上升至最高位置时按上升键不起作下降至最低位置时下降键不起作用。 可顺利实现系统要求的基本功能和发挥功能。 关键字AT89S52,驱动电路,中断,SPI 接口,无线收/发,防干扰。

 

 

 

 

 

 

 

 

 

Abstract

 

This  system  is  based  on  AT89S52  single-chip  as  the  main  control  unit, step-by-step motor as the drive, the 4× 4-keyboard and the wireless-keyboard as the input, LED and indicator of national flag as the out put. Most of these make up a system, which  has  an  excellence  man-machine  conversation  function. It can implement functions by input via keyboards such as raise-low a flag, raise-low the half-mast, raise-low the flag at any time, park the flag at any highness, and so on. It can show the highness currently, the anticipative highness, the time currently, the anticipative time and some useful info. When the flag is been rising up, the up arrow lights. When the flag is been lowing down, the down arrow lights. When the flag  is  in  the  half-mast  state,  the  half-mast  sign  light  lights.  And  it  has  the long-distance wireless control function, which can command the flag raise low and half-mast.  It  even  can  implement  safeguard  power  break  off  function  with EEPROM controlled by single-chip. To avoid the wrong actions, the rising key is useless  when  the  national  flag is  in  the  highest point and  the  lowering key  is useless  when  the  national  flag  is  at  the  lowest  point.  It  can  carry  basal  and patulous demand out all right.

 

KeywordAT89S52drive circuitblackoutSPI portwireless receive/transmit

 

disturb prevent.

 

 

 

 

 

 

 

 

 

 

- 1 -


一、方案比设计论证

 

根据目的基本要求,本系主要由三构成:主控元、机与驱动 键盘示模

 

1.  主控元方案论证与比

 

方案一:采用 FPGA现场门阵列)作控制器。使用 GW48CK EDA 开发统对 Altera 公司的 FLEX10K 系列 FPGAAltera II  设计开发软 MAXPLUS II  件描述 VHDL FPGA 程与调试FPGA 具有容 量大,集成度高,可反复程与调试,可靠性高,触器与引脚丰富等优点。常用 于大实时性要求高的系。在本设计中,FPGA 的高速理能力得不到充分 发挥

方案二:采用 PLC逻辑控制器)作控制器。使用 SIEMENS 公司的 S7200  CPU224 PLCSETP7-Micro/WIN32 件。PLC 的特点是可靠性 I/O 接口丰富,用模构和安装简单等特PLC 广泛地用于工控制 域,但是入端采用 RC 波器, 10~20ms 的延时间,且价格昂

方案三采用 MCS-51 系列片机作控制器使用 AT89S52 片机作控制 核心Keil Uvision2 件和 C51 程序编写调试该单片机 源丰富,集成了部看狗、双数据指、在系统编程(串行下