基本示例分析 2.单片机应用系统设计

上传人:woxinch****an2018 文档编号:38969373 上传时间:2018-05-10 格式:DOC 页数:7 大小:32KB
返回 下载 相关 举报
基本示例分析 2.单片机应用系统设计_第1页
第1页 / 共7页
基本示例分析 2.单片机应用系统设计_第2页
第2页 / 共7页
基本示例分析 2.单片机应用系统设计_第3页
第3页 / 共7页
基本示例分析 2.单片机应用系统设计_第4页
第4页 / 共7页
基本示例分析 2.单片机应用系统设计_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《基本示例分析 2.单片机应用系统设计》由会员分享,可在线阅读,更多相关《基本示例分析 2.单片机应用系统设计(7页珍藏版)》请在金锄头文库上搜索。

1、1.4 单片机应用系统的抗干扰设计 1. 干扰源及干扰途径 单片机系统中的干扰有多种类型。 一种是来自空间辐射的干扰。可控硅逆变电源、变频调速器、发射机等特殊设备在工作时会产生很强的干扰,在这种环境中单片机系统难以正常运行; 另一种是来自电源的干扰。各种开关的通断、火花干扰、大电机启停等现象在工业现场很常见,这些来自交流电源的干扰对单片机系统的正常运行危害极大; 还有一种就是来自信号通道的干扰。在实际的应用系统中,测控信号的输入/输出是必不可少的。在工业现场中,这些 I/O 信号线、控制线有时长达几百米,不可避免地会把干扰引入到系统中。如果受控对象是强干扰源,如可控硅、电焊机等,则单片机系统根

2、本就无法运行。 2、硬件抗干扰措施 根据干扰的产生及传输特点,在硬件上可以采取以下措施: (1)硬件屏蔽。将系统安装在对电磁辐射干扰具有屏蔽作用的金属机箱中,并进行正确接地,可以有效地抑制强电设备产生的空间辐射干扰。 (2)光电隔离。对于开关量信号用光电耦合器隔离以后再进行输入/输出,对于模拟量信号可选用光电隔离器或变压器隔离后再进行输入/输出,并使用双绞线或屏蔽线进行信号传输,这样就可以有效地克服信号传输通道带来的干扰。 (3)电源滤波。对于来自电源的干扰,可采用低通滤波器以及带有屏蔽层的电源变压器来进行抑制。 3、软件抗干扰措施 (1)在程序中插入空操作指令实现指令冗余。系统在工作时容易因

3、干扰而使 PC 指向程序存储器的非代码区,从而导致“死机” 。为此可以在程序中插入一些单字节的空操作指令 NOP,失控的程序遇到该指令后得到调整而转入正常。 (2)对未用的中断向量进行处理。在程序中对未用的中断都编写出相应的错误处理程序,若因干扰触发了这些中断,则执行完简单的出错处理程序后可以正常返回。 (3)采用超时判断克服程序的死锁。在系统的数据采集部分,如 A/D 转换结果采用查询方式读取,若因干扰使 A/D 转换结束标志无效,程序就会进入死循环。针对类似情况,可在程序中采用超时判断,若系统在一定的时间内采不到有效的标志,就自动放弃本次采样,从而避免程序死锁的发生。 (5)采用看门狗。当

4、程序“跑飞”而前述方法又没有捕捉到时,可以用看门狗来恢复系统的正常运行。具体设计时可以用软件实现,也可以用专用的看门狗芯片如MAX693、X25045 等来实现。软件方法利是用单片机中未用的定时器进行定时,在主程序每一次循环的特定时刻刷新定时器的时间常数,若定时器因系统死机而得不到刷新,就会产生溢出而引起中断,在其中断服务程序中进行出错处理后转入正常运行。看门狗芯片也相当于定时器,系统在每一次循环中用一根口线使芯片复位,若芯片因系统异常而得不到复位,其接到 MCU 复位端的溢出信号就能使系统恢复正常运行。 单片机系统的故障诊断 (1)同类比较法。 (2)分段检查法。 (3)隔离压缩法。 (4)

5、故障跟踪法。 (5)振动加固法。 (6)拉偏检测法。 (7)直接查找法。 系统级故障诊断 在单片机系统的电气连接没有问题的条件下,可以进一步利用程序存储器中固化的系统自检程序对系统进行预定的几项检查。对系统故障进行检查时,一个十分有效的办法是利用系统本身的自检功能,包括指令系统自检、数据存储器自检、程序存储器自检、I/O 接口自检、传感器装置自检、调节机构自检等。自检手段不仅可用自检软件,而且还可以配置一定的自检硬件电路来实现系统自检。尤其是对于控制系统的末级部分,利用硬件手段效果更好。 RAM 分为片内 RAM 和片外 RAM。片外 RAM 的容量比较大,通常用来存放批量大的数据,如采样结果

6、数据;片内 RAM 容量较少,应尽量重叠使用,比如数据暂存区与显示、打印缓冲区重叠。 对于MCS-51 单片机来说,片内 RAM 是指 00H7FH 单元,这 128 个单元的功能并不完全相同,分配时应注意发挥各自的特点,做到物尽其用。二数据 RAM 资源分配 单片机应用系统开发工具 一个单片机应用系统经过总体设计,完成硬件开发和软件设计,就进行硬件安装。硬件安装好后,把编制好的程序写入存储器中,调试好后系统就可以运行了。但用户设计的应用系统本身并不具备自开发的能力,不能够写入程序和调试程序,这必须借助于单片机开发系统才能完成这些工作。单片机开发系统是能够模拟用户实际的单片机,并且能随时观察

7、运行的中间过程和结果,从而能对现场进行模仿的仿真开发系统。通过它能很方便的对硬件电路进行诊断和调试,得到正确的结果。 目前国内使用的通用单片机的仿真开发系统很多,如复旦大学研制的 SICE 系列、启东计算机厂制造的 DVCC 系列、中国科大研制的 KDV 系列、南京伟福实业有限公司的伟福 E6000 以及西安唐都科教仪器公司的 TDS51开发及教学实验系统。它们都具有对用户程序进行输入、编辑、汇编和调试的功能。此外,有些还具备在线仿真功能,能够直接将程序固化到 EEPROM 中。一般都支持汇编语言编程,有的可以通过开发软件,支持 C 语言编程。例如可通过 Keil C51 软件来编写 C 语言

8、源程序,编译连接生成目标文件、可执行文件,仿真、调试、生成代码并下载到应用系统中。 (4)电源去耦。对于系统中每一片集成电路,在电源和地之间都加上去耦电容,既是本芯片的蓄能电容,还能抑制高频噪声。 (5)在满足要求的前提下尽量用较低的时钟频率和低频的器件。 (6)合理布置元件在线路板上的位置,把模拟电路、高速数字电路和产生噪声的功率驱动部分合理地分开,各部件之间的引线尽量短,对各种输入/输出线分类打把,以减少寄生电容的干扰。 (7)系统中芯片的未用端不要悬空,应根据实际情况接到电源端、地端或已用端。 (8)尽量不用 IC 插座,而将集成电路直接焊接在电路板上。 (4)采用软件陷阱。当程序因干扰

9、而“跑飞”时,可在非程序区设置陷阱,强迫 PC 进入一个指定的地址,执行一段专门对死机进行处理的程序,使系统恢复正常。软件陷阱可安排在未使用的中断区和未使用的大片 ROM 空间,可由以下三条指令构成: NOP NOP LJMP ERR (6)采用数字滤波。为了提高数据采集的可靠性,减小虚假信息的影响,可以采用数字滤波的方法,如程序判断滤波、中值滤波、滑动平均值滤波、防脉冲干扰平均值滤波、一阶滞后滤波等。也可以对数据进行非线性补偿和误差修正,提高数据精度。 #include #define TIMER0_COUNT 0XEE11 #define TRUE 1 #define FALSE 0 #d

10、efine TIMES 25 code seven_seg10=0XC0, 0XF9, 0XA4, 0XB0, 0X99, 0X92, 0X82, 0XF8, 0X80, 0X90; int c, ups, downs; static void timer0_initialize(void) EA=0; TR0=0; TMOD TMOD |=0x01; TL0=(TIMER0_COUNT TH0=(TIMER0_COUNT 8); PT0=0; ET0=1; TR0=1; EA=1; void main (void) c=0; ups=0; downs=0; timer0_initialize

11、(); P1=seven_segc; while(1); / 函数 timer0_isr 检查是否有按键按下 static void timer0_isr(void) interrupt TF0_VECTOR using 1 TR0=0; TL0=(TIMER0_COUNT TH0=(TIMER0_COUNT 8); TR0=1; if (ups !=0) /检查 ups 等于 0 吗? ups-; /如果 ups 不等于 0,就将 ups减 1 if (ups=0 / 如果 P2_0 是 0 就表示上数的弹跳按钮被按下,所以 c 加 1 if(c=10) c=0; /如果 c 加到 10,就

12、将 c 恢复为 0 else if (P2_0=0) ups=TIMES; /如果 ups=0 且P2_0=0 就将 ups 设为 25 if (downs !=0) /检查downs 等于 0 吗? downs-; /如果 downs 不等于 0,就将 downs 减 1 if (downs=0 / 如果 P2_1 是 0 就表示下数的弹跳按钮被按下,所以 c 减1 if(c=-1) c=9; /如果 c 减到-1 时,就将 c 恢复为 10 else if (P2_1=0) downs=TIMES; /如果 downs=0 且 P2_1 =0 /就将 downs 设为 25 P1=seve

13、n_segc; 如何计程序可以使用 Timer0 延迟一段时间呢?在此我们利用变量 ups,当第一次检查到 P2_0 等于 0 时就设置 ups=25,然后每一次 Timer0 中断之后,就将 ups 减 1,直到 0 为止,刚好经历 25/200 秒,接下来再检查 P2_0 是否依然等于 0,就可以判断上数的弹跳按钮是否被单击。程序部分如下所示: if (ups !=0) /检查 ups 等于 0 吗? ups-; /如果 ups 不等于 0,就将 ups 减 1 if (ups=0 / 如果 P2_0 是 0 就表示上数的弹跳按钮被按下,所以 c 加 1 if(c=10) c=0; /如果

14、 c 加到 10,就将 c 恢复为 0 else if (P2_0=0) ups=TIMES; /如果 ups=0 且P2_0=0 就将 ups 设为 25 例 8、四个七段显示器的显示控制 本练习使用 805 l 的 Port 1 连接到四个七段显示器。这四个共阳七段显示器的 a、b、c、d、e、f 和 g 全部都连接在一起,因此 PORT 1 所输出的数据按理说应该会在四个共阳七段显示器都显示出来。但足我们利用 PORT 0 的低 4 位分别控制这四个共阳七段显示器,让四个共阳七段显示器使用扫描的方式轮流显示数字,因此 PORT 1 每一次输出的数据恰好只会在其中一个共阳七段显示器显示数字。当您连接好电路,并且完成程序之后,您将可以看到这四个七段显示器上显示 09999。在这次实习中,您将学会如何使用轮流驱动的方式,让四个共阳七段显示器轮流显示数字。 电路图 程序描述:说明如何使用 8051 的 Port 1 连接到四颗七段显示器,PORT 0 的低 4 位分别控制这

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 高中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号