微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 福利:资深单片机工程师的开发经验总结

福利:资深单片机工程师的开发经验总结

时间:09-10 来源:电子发烧友网 点击:

  1、与发光二极管串联的电阻(排阻)的计算和选取,一般发光二极管的正常发光的电流是3~10mA,在发光二极管上产生的压降是1.7

  V(轨管) R=(5-1.7)/3~10 (k)

  2、单片机TTL电平 高电平:+5V;低电平:0V。

  RS232串口电平 高电平:—12V ;低电平:+12V。 可以通过MAX232电平转换芯片,转换之间的电平。

  3、单片机上电I\O口的寄存器为高电平,其余寄存器为低电平。

  4、三极管的开关作用:在B、E间接正向电压,E、C是导通的。

  5、蜂鸣器:

  1) 有源蜂鸣器直接接上额定电压就可以连续发声。

  2)无源蜂鸣器和电磁扬声器一样,需要接在音频输出电路中才能发声。

  3)有源蜂鸣器带振荡源,无源的不带。

  4)有源蜂鸣器的理想信号是直流电。

  5)无源蜂鸣器的理想信号为方波信号。

  方波发声函数:void beep()

  { fmq=0;

  delay 500us();

  fmq=1;

  delay 500us();

  }

  6、计算单片机指令周期:

  指令周期(us) = 12 / 晶振频率(Mhz)

  选用12M的晶振,一个指令周期为1us

  7、89C51的芯片最高支持24M的晶振

  以上是笔者对单片机开发的初探,结合自己的实际做的几点归纳,但笔者和大家都会感觉到不是很过瘾,笔者经过整理前人的经验总结,看到了很多值得很大家一起分享的一些开发经验!!

  目前介绍单片机应用的文章很多,但介绍单片机开发工具制作的文章却较少。由于单片机是一门实践性很强的课程,如果采用传统的开发模式,则要购买价格昂贵的仿真器、编程器等开发工具来作实验。其实由于芯片功能的日益完善,我们可以利用芯片的在系统编程(ISP)功能制作出实用而低价的开发工具。本文旨在帮助DIY爱好者开发制作出适合自己的开发工具。

  1 当前常用开发模式

  目前,基本上有两种开发模式可供选择:用仿真器、用编程器。

  ① 用仿真器。优点:方便,可以设置断点,可以观察存储器及寄存器的内容。缺点:价格昂贵,不同类型的单片机要购买不同的仿真器;仿真器终究不是单片机,有时代码在仿真器上能通过,但在单片机中不能正常工作,反而增加了调试的难度。

  ② 用编程器。优点:价格相对便宜,通常一款编程器可编程多种器件。缺点:操作相当不便,每次要将芯片在目标板与编程器之间转移,并且还要在编译操作界面与编程器操作界面之间切换,大部分时间在做简单的重复工作。

  2 新的开发模式介绍及芯片选择

  本文介绍的开发工具采用一种新的开发模式(类似于编程器开发模式)。由于利用了芯片的在系统编程功能,因此不需要移动芯片。在软件设计时设计成:一旦代码文件被重新编过,即自动下载到芯片,并自动复位运行,是真正的"所编即所得"。

  目前很多单片机都支持在系统编程。8051系列单片机支持在系统编程的也很多,但大多数是支持通过PC机的串口对单片机进行编程。这样有四个不方便的地方:一是项目本身与PC机串行通信不方便;二是要增加1片MAX232电平转换芯片;三是有的芯片要按特定的步骤进入下载模式,编程过程需要手工干预;四是有的芯片需要固件(定制的程序)的支持,如果不小心损坏了固件,则芯片的在系统编程功能也没有了。

  经过比较,Atmel公司生产的AT89S8252是一种比较理想的芯片,适合制作开发工具。此芯片有如下特点:

  ◆ 与8051兼容;

  ◆ 内含8KB可擦写1000次的程序存储器,2KB可擦写超过100 000次的数据存储器及256字节8位宽内部RAM;

  ◆ 可通过SPI接口在系统串行编程,与8051兼容

  ◆ 串行编程时有自动擦写周期,在调试大程序时可以分段下载,节约时间;

  ◆ 低电压下载,无需12V编程电压。

  3 AT89S8252串行编程

  (1) AT89S8252串行编程模式

  当芯片的RST引脚置高电平时,所有程序和数据存储器可以通过SPI总线接口[SCK,MOSI(input),MISO(output)]编程。RST变高以后,在编程或擦除操作之前必须首先发送一条编程允许命令。在串行编程模式下,芯片会在字节编程之前自动插入一个擦除周期。因此,除非芯片的代码保护位被编程,编程之前不需要执行全片擦除命令。SPI接口之SCK时钟频率须低于晶振频率的1/40。

  (2) AT89S8252串行编程步骤

  ① 在XTAL1与XTAL2之间连接一个3~24MHz的晶振;在VCC与GND之前加上电源电压,将RST置高,等待10ms。

  ② 发送串行编程允许命令。

  ③ 发送写/读/擦除等命令及数据,串行数据高位在前,低位在后,数据在时钟的上升沿锁定。

  ④ 如果上一步是写命令,至少等待2.5ms。

  ⑤ 需要时重复③、④两步。

  ⑥ 将RST置低,芯片开始运行。

(3)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top