最新日志

发表于:2008-4-30 22:11:14
标签:单片机硬件设计  

2

单片机硬件设计原则

偶然之间看到了这个链接,感觉相当的不错,现在收藏了,以便日后学习!同时与大家分享!

 

单片机硬件设计原则
  
一个单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROMRAMI/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统的配置,即按照系统功能要求配置外围设备,如键盘、显示器、打印机、A/DD/A转换器等,要设计合适的接口电路。
系统的扩展和配置应遵循以下原则:

1
、尽可能选择典型电路,并符合单片机常规用法。为硬件系统的标准化、模块化打下良好的基础。
2
、系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发。
3
、硬件结构应结合应用软件方案一并考虑。硬件结构与软件方案会产生相互影响,考虑的原则是:软件能实现的功能尽可能由软件实殃,以简化硬件结构。但必须注意,由软件实现的硬件功能,一般响应时间比硬件实现长,且占用CPU时间。
4
、系统中的相关器件要尽可能做到性能匹配。如选用CMOS芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品。
5
、可靠性及抗干扰设计是硬件设计必不可少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。
6
、单片机外围电路较多时,必须考虑其驱动能力。驱动能力不足时,系统工作不可靠,可通过增设线驱动器增强驱动能力或减少芯片功耗来降低总线负载。
7
、尽量朝单片方向设计硬件系统。系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性。随着单片机片内集成的功能越来越强,真正的片上系统SoC已经可以实现,如ST公司新近推出的μPSD32××系列产品在一块芯片上集成了80C32核、大容量FLASH存储器、SRAMA/DI/O、两个串口、看门狗、上电复位电路等等。

单片机系统硬件抗干扰常用方法实践

影响单片机系统可靠安全运行的主要因素主要来自系统内部和外部的各种电气干扰,并受系统结构设计、元器件选择、安装、制造工艺影响。这些都构成单片机系统的干扰因素,常会导致单片机系统运行失常,轻则影响产品质量和产量,重则会导致事故,造成重大经济损失。

      
形成干扰的基本要素有三个: 1)干扰源。指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都可 能成为干扰源。(2)传播路径。指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传 播路径是通过导线的传导和空间的辐射。(3)敏感器件。指容易被干扰的对象。如:A/DD/A变换器,单片机,数字IC 弱信号放大器等。 干扰的分类 1干扰的分类干扰的分类有好多种,通常可以按照噪声产生的原因、传导方式、波形特性等等进行不同的分类。按产生的原因分:可分为放电噪声音、高频振荡噪声、浪涌噪声。按传导方式分:可分为共模噪声和串模噪声。按波形分:可分为持续正弦波、脉冲电压、脉冲序列等等。 2 干扰的耦合方式干扰源产生的干扰信号是通过一定的耦合通道才对测控系统产生作用的。因此,我有有必要看看干扰源和被干扰对象之间的传递方式。干扰的耦合方式,无非是通过导线、空间、公共线等等,细分下来,主要有以下几种: 1)直接耦合:这是最直接的方式,也是系统中存在最普遍的一种方式。比如干扰信号通过电源线侵入系统。对于这中问剑钣行У姆椒ň褪羌尤肴ヱ畹缏贰4佣芎玫囊种啤?/P> 2)公共阻抗耦合:这也是常见的耦合方式,这种形式常常发生在两个电路电流有共同通路的情况。为了防止这种耦合,通常在电路设计上就要考虑。使干扰源和被干扰对象间没有公共阻抗。 3)电容耦合:又称电场耦合或静电耦合 。是由于分布电容的存在而产生的耦合。 4)电磁感应耦合:又称磁场耦合。是由于分布电磁感应而产生的耦合。 5)漏电耦合:这种耦合是纯电阻性的,在绝缘不好时就会发生。

      
常用硬件抗干扰技术 针对形成干扰的三要素,采取的抗干扰主要有以下手段。 1 抑制干扰源抑制干扰源就是尽可能的减小干扰源的du/dtdi/dt。这是抗干扰设计中最优先考虑和最重要的原则,常常会起到事半功倍的效果。 减小干扰源的du/dt主要是通过在干扰源两端并联电容来实现。减小干扰源的di/dt则是在干扰源回路串联电感或电阻以及增加续流二极管来实现。 抑制干扰源的常用措施如下: 1)继电器线圈增加续流二极管,消除断开线圈时产生的反电动势干扰。仅加 续流二极管会使继电器的断开时间滞后,增加稳压二极管后继电器在单位时间内可 动作更多的次数。 2)在继电器接点两端并接火花抑制电路(一般是RC串联电路,电阻一般选几K 到几十K,电容选0.01uF),减小电火花影响。 3)给电机加滤波电路,注意电容、电感引线要尽量短。 4)电路板上每个IC要并接一个0.01μF0.1μF高频电容,以减小IC对电源的 影响。注意高频电容的布线,连线应靠近电源端并尽量粗短,否则,等于增大了电 容的等效串联电阻,会影响滤波效果。 5)布线时避免90度折线,减少高频噪声发射。 6)可控硅两端并接RC抑制电路,减小可控硅产生的噪声(这个噪声严重时可能会把可控硅击穿的)。 2 切断干扰传播路径 按干扰的传播路径可分为传导干扰和辐射干扰两类。 所谓传导干扰是指通过导线传播到敏感器件的干扰。高频干扰噪声和有用信号的频带不同,可以通过在导线上增加滤波器的方法切断高频干扰噪声的传播,有时也可加隔离光耦来解决。电源噪声的危害最大,要特别注意处理。 所谓辐射干扰是指通过空间辐射传播到敏感器件的干扰。一般的解决方法是增加干扰源与敏感器件的距离,用地线把它们隔离和在敏感器件上加 蔽罩。 切断干扰传播路径的常用措施如下: 1)充分考虑电源对单片机的影响。电源做得好,整个电路的抗干扰就 解决了一大半。许多单片机对电源噪声很敏感,要给单片机电源加滤波电路或稳压器,以减小电源噪声对单片机的干扰。比如,可以利用磁珠和电容组成π形滤波电路,当然条件要求不高时也可用 100Ω电阻代替磁珠。 2)如果单片机的I/O口用来控制电机等噪声器件,在I/O口与噪声源之间应加隔离(增加π形滤波电路)。 3)注意晶振布线。晶振与单片机引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地并固定。 4)电路板合理分区,如强、弱信号,数字、模拟信号。尽可能把干扰源(如电机、继电器)与敏感元件(如单片机)远离。 5)用地线把数字区与模拟区隔离。数字地与模拟地要分离,最后在一点接于电源地。A/DD/A芯片布线也以此为原则。 6)单片机和大功率器件的地线要单独接地,以减小相互干扰。 大功率器件尽可能放在电路板边缘。 7)在单片机I/O口、电源线、电路板连接线等关键地方使用抗干扰元件如磁珠、磁环、电源滤波器、屏蔽罩,可显著提高电路的抗干扰性能。 3 提高敏感器件的抗干扰性能 提高敏感器件的抗干扰性能是指从敏感器件这边考虑尽量减少对干扰噪声 的拾取,以及从不正常状态尽快恢复的方法。 提高敏感器件抗干扰性能的常用措施如下: 1)布线时尽量减少回路环的面积,以降低感应噪声。 2)布线时,电源线和地线要尽量粗。除减小压降外,更重要的是降低耦 合噪声。 3)对于单片机闲置的I/O口,不要悬空,要接地或接电源。其它IC的闲置端在不改变系统逻辑的情况下接地或接电源。 4)对单片机使用电源监控及看门狗电路,如:IMP809IMP706IMP813 X5043X5045等,可大幅度提高整个电路的抗干扰性能。 5)在速度能满足要求的前提下,尽量降低单片机的晶振和选用低速数字电路。 6IC器件尽量直接焊在电路板上,少用IC座。 4 其它常用抗干扰措施 交流端用电感电容滤波:去掉高频低频干扰脉冲。变压器双隔离措施:变压器初级输入端串接电容,初、次级线圈间屏蔽层与初级间电容中心接点接大地,次级外屏蔽层接印制板地,这是硬件抗干扰的关键手段。次级加低通滤波器:吸收变压器产生的浪涌电压。采用集成式直流稳压电源:因为有过流、过压、过热等保护。I/O口采用光电、磁电、继电器隔离,同时去掉公共地。通讯线用双绞线:排除平行互感。防雷电用光纤隔离最为有效。A/D转换用隔离放大器或采用现场转换:减少误差。外壳接大地:解决人身安全及防外界电磁场干扰。加复位电压检测电路。防止复位不充份,CPU就工作,尤其有EEPROM的器件,复位不充份会改变EEPROM的内容。印制板工艺抗干扰: 电源线加粗,合理走线、接地,三总线分开以减少互感振荡。 CPURAMROM等主芯片,VCCGND之间接电解电容及瓷片电容,去掉高、低频干扰信号。 独立系统结构,减少接插件与连线,提高可靠性,减少故障率。 集成块与插座接触可靠,用双簧插座,最好集成块直接焊在印制板上,防止器件接触不良故障。 有条件采用四层以上印制板,中间两层为电源及地

 

 

点击此处查看原文 >>

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

评论(1) | 阅读(241)
发表于:2008-4-30 22:05:22
标签:单片机编程  

2

单片机应用编程技巧100问.pdf

点击下载单片机应用编程技巧100问

另外补充:

功能强大的时钟中断
  在单片机CPU发挥两个CPU的功效,大大方便和简化
  下面以6MHz时钟的AT89C51系统为例,说明时钟中断的
  定时器初值与中断周期 时钟中断无需过于频繁,一般取20mS(50Hz)即可。如需要百分之一秒的时基10mS(100Hz)。这里取20mS,用定时器T0工作于16位定时器方式(方式1)T0的工作方式为:每过一个机器周期自动加1,当计满0FFFFh,要溢出时,便会产生中断,并由硬件设置相应的标志位供N+1个机器周期。所以,我们只要在T0中预先存入一个比满值0FFFFhN的数,然后启动定时器,便会在N个机器周期后产生中断。这个值便是所谓的初值。下面计算我们需要的初值:时钟为6MHz12个时钟周期为一个机器周期,20mS中有10000个机器周期。(10000)10=(2710)16,则0FFFFh-2710h+1=0D8F0h。由于响应中断、保护现场及重装初值还需要7~8个机器周期,把这个值再加上7,即T0应装入的初值是0D8F7h。每次中断进入后,先把APSW的值压入堆栈,然后即把0D8F7h装入T0
  设置一个单元,每次中断加1 我们可以取内部RAM中一个单元,取名为INCPI(Increase Per Interrupt),在中断中,装完T0初值后,用INC INCPI指令将其加一。从这个单元中,无论中断程序还是主程序,都可以从中获得20mS1~256之间任意整数倍的信号。例如:有一段向数码管送显的程序,需要每0.5秒执行一次以便刷新显示器,便可以设一单元(称为等待单元)W_DISP,用/MOV A,INCPI/ADD A,#25/MOV W_DISP,A/语句让其比当前的INCPI值大25,然后在每次中断中检查是否于INCPI值相等。若相等,说明已过了25个中断周期,便执行送显程序,并且让W_DISP再加上25,等待下个0.5秒。我们可以设置多个等待单元,以便取出多个不同的时基信号。让中断程序在每次中断时依次查询各个等待单元是否与INCPI相等,若相等,则执行相应的处理,并重新设置该等待单元的值,否则跳过。例如:用0.5秒信号刷新或闪烁显示器,用1秒信号产生实时时钟,或输出一定频率的方波,以一定间隔查询输入设备等。
  在中断中读键 通常,我们在主程序中读键盘,步骤为:扫描键盘,若有键按下,则延时几十毫秒去抖动,再次确认此键确实按下,然后处理该键对应的工作,完成后再次重上述步骤。但这有两点不足:1.处理相应工作时无法锁存按键的输入,即可能漏键。2.延时去抖时CPU无法做其它事情,效率不高。如果把读键放入时钟中断中,则可避免上述不足。方法为:如果两次相邻的中断中都读到同一个键按下,则这个键是有效的(达到了去抖目的),并将其锁存到先入先出(队列)的键盘缓冲区,等主程序来处理。这样,主程序处理按键的同时,仍可响应键盘的输入。缓冲区深度通常可设为8级,若锁存的键数多于8个,则忽略新的按键,并报警提示用户新的按键将无效。若键盘缓冲队列停滞的时间大大长于主程序处理按键所需要的最大时间,说明主程序已出错或跑飞,可以在中断用指令将系统复位,起到了看门狗的目的。
  主程序中的延时 由于有常开的时钟中断,所以当主程序中有需要时间较短、精度较高的延时时,应暂时把时钟中断关闭。而程序中需要时间较长、精度不高的延时时,便可仿照下需的写法,避免多层嵌套的循环延时。
  例:在P1.1输出1秒的高电平脉冲
    MOV    A,INCPI
    INC    A
    CJNE    A,INCPI$   
;等待一次中断处理完成
    SETB    P1.1        
;设P1.1H,脉冲开始
    ADD    A,#50        
5020mS1
    CJNE    A,INCPI,$   
;等中断将INCPI加一50
    CLR    P1.1        
;设P1.1L,脉冲结束
  结束语:从上看出,要灵活地应用时钟中断,将任务合理分配给中断和主程序,并且二者要分工明确,接口简单。这其中的技巧还需要大家在实践中多多摸索与体会。另外要注意:应尽量缩短中断处理程序的执行时间,更不要长于20mS

 

感觉不错,跟大家分享一下,呵呵

 

点击此处查看原文 >>

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

评论(0) | 阅读(268)
发表于:2008-4-30 22:02:15
标签:C语言  

0

10小时学会C语言(简单易学)

点击下载

10小时学会C语言(简单易学),绝对适用于新手!

点击此处查看原文 >>

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

评论(0) | 阅读(305)
发表于:2008-4-30 21:54:17
标签:单片机小技巧  

1

有关单片机串口的几个小招数但愿你能用得上

1.可用函数发生器当串口发送器用
如果你要调试串口,只有一块扳,计算机又不在手边,你可以用函数发升器当串口发送器来用,如你的波特率是9600,那你把函数发生器频率调到9600/2=4800HZ上输出TTL电平直接到RXD上就行了,如果是RS232接口,你频率不变就选函数发生器双极性(交流输出)就是了,注意电平有峰峰值12VPP就够了,此时你的单片机收到数据必须是55H,你可以用MOV P1,SBUF,P1上去测电压,这样没显示也可测试串口了.
理论依旧:55H 01010101 串口启始位是0,先发55H最低位,于是一帧就是0(启始)101010101(停止)................0(启始)101010101(停止)......正好是1/2波特率的方波.

2.
如果你的串口要实现远距离传输,你怎么知道传输的可靠性和信号与传输媒介的适配性呢?
你可以这样来做:发送00H 0FFH 55H,如果这三个值都能正确接受,那网络一定能可靠传输了,这就是以点代面的测试方法.
理由:00H 0FFH是最宽的脉冲和电平(代表能量)最大/最小的脉冲,用信号系统话说他们代表是直流,55H是最窄脉冲,它代表是最高频和能量中间值.既然最低的能过,最大也能过,最宽能过最窄也能过,大能量(抗干扰强)低能量(代表抗干扰弱)中能量也能过,你会相信中间的和中不垃圾的过不了吗!

3.
用同步头初始实现波特率自适应和判断数据包起始
同步头用谁?------7FH,且开始同步时连续发送!
7FH的发送  0起始11111110---1停止
011111110多对称!当你收到两个0中间夹了连续个1的数据后,只要用连续1的时间除以0的持续时间=7,说明这就是同步头了,且一个标准码元持续时间就是码元0的持续时间,其波特率=1/(0元持续时间)

点击此处查看原文 >>

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

评论(0) | 阅读(206)
发表于:2008-4-30 21:50:44
标签:单片机PPT  

0

单片机PPT学习资料

点击下载  MCS-51单片机结构与工作原理.ppt

点击下载 第2章  MCS-51单片机的硬件结构 .rar

 

 

点击此处查看原文 >>

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