无功功率补偿装置的设计_第1页
无功功率补偿装置的设计_第2页
无功功率补偿装置的设计_第3页
无功功率补偿装置的设计_第4页
无功功率补偿装置的设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沈阳理工大学学士学位论文第一章绪论11.1课题的背景及意义11.2 主要工作及论文结构21.2.1 主要工作21.2.2本文结构安排2第二章 硬件设计32.1 总体方案的设计32. 2电源电路52. 3时钟电路62. 4 复位电路72. 5 键盘电路8第三章 系统所使用芯片的介绍103.1 tg12864液晶显示器103.1.1 概述103.1.2 特性103.1.3 外形尺寸113.1.4 硬件说明113.2 sm8952单片机简介163.2.1程序存储器163.2.2 数据存储器173.2.3特殊功能寄存器(sfr)173.2.4 sm8952单片机输入输出口203.2.5 sm8952定

2、时/计数器213.2.6看门狗定时器(wdt)223.2.7 sm8962的中断系统22第四章 系统软件设计244.1 单片机变成软件的发展244.2 程序的设计254.2.1 主程序254.2.2波形发生程序264.2.3 键盘扫描程序284.2.4 显示程序29第五章 系统调试305.1 硬件调试305.1.1 保证电源的稳定可靠305.1.2 对受损芯片的判断305.1.3 结合软件检查短路与虚焊305.2 软件调试305.2.1 软件的开发环境medwin315.2.2 程序调试315.2.3 调式结果32结论34致 谢35参考文献36附录37外文文献及翻译37第一章绪论1.1课题的背

3、景及意义目前工厂使用大量的非同步电气设备,无功功率损耗变化大、不稳定,如塑料工厂使用的挤塑机、注塑机,以及其他行业的升降机、冲压机、电梯、破碎机、电焊机、矿山传送带等。负载具有快速或极快的无功功率变化,如汽车制造厂、船舶制造厂等点焊机、缝焊机、焊接机的无功补偿。汽车制造厂点焊机负荷变化极为快速,并且引发大量的无功功率,总电压值的减少会导致电焊质量差并影响焊接的生产效率,稳定电流能提高焊接质量、消除闪烁,并充分地利用现有设备、减少基本费用开支。无功功率补偿装置在电子供电系统中所承担的作用是提高电网的功率因数,稳定电流,降低供电变压器及输送线路的损耗,提高供电效率,改善供电环境。所以无功功率补偿装

4、置在电力供电系统中处在一个不可缺少的非常重要的位置。合理的选择补偿装置,可以做到最大限度的减少网络的损耗,使电网质量提高。反之,如选择或使用不当,可能造成供电系统,电压波动,谐波增大等诸多因素。7无功功率补偿装置按投切方式分类可分为延时投切方式和瞬时投切方式两种。延时投切方式即人们熟称的静态补偿方式。这种投切依靠于传统的接触器的动作,当然用于投切电容的接触器专用的,它具有抑制电容的涌流作用,延时投切的目的在于防止接触器过于频繁的动作时,电容器造成损坏,更重要的是防备电容不停的投切导致供电系统振荡,这是很危险的。当电网的负荷呈感性时,如电动机、电焊机等负载,这时电网的电流滞后电压一个角度。当负荷

5、呈容性时,如过量的补偿装置的控制器,这是电网的电流超前于电压的一个角度,即功率因数超前或滞后是指电流与电压的相位关系。通过补偿装置的控制器检测供电系统的物理量,来决定电容器的投切,这个物理量可以是功率因数或无功电流或无功功率。下面就功率因数型举例说明。当这个物理量满足要求时,如cos超前且0.98,滞后且0.95,在这个范围内,此时控制器没有控制信号发出,这时已投入的电容器组不退出,没投入的电容器组也不投入。当检测到cos不满足要求时,如cos滞后且0.95,那么将一组电容器投入,并继续监测cos如还不满足要求,控制器则延时一段时间(延时时间可整定),再投入一组电容器,直到全部投入为止。当检测

6、到超前信号如cos0.98,即呈容性载荷时,那么控制器就逐一切除电容器组。要遵循的原则就是:先投入的那组电容器组在切除时就要先切除。综上所述可知功率因数检测的准确与否是一台功率因数补偿器好坏与否的重要标准之一,本设计的目的就是为一台功率因数补偿器提供基准功率因数,从而测试率因数补偿器检测的功率因数是否准确。1.2 主要工作及论文结构1.2.1 主要工作本文基于目前功率因数补偿技术,提出了自己的设计方案,并作了可行性分析后,开发功率因数发生器。本人的具体工作如下:1设计出了功率因数发生器的整个硬件电路,包括显示电路的设计、控制键盘的设计、电源电路的设计等,并进行原理图的设计。2 基于medwin

7、的开发环境,进行了功率因数发生器的应用软件设计。3 在硬件软件完成的基础上进行了功率因数发生器的总调。1.2.2本文结构安排本文是按照工程的进展顺序来安排章节的内容,一共分为五章,各章的内容安排如下:第一章,对课题的研究意义和工作内容进行了介绍。第二章,具体介绍了功率因数发生器的硬件设计及开发过程。第三章,具体介绍了应用各芯片的功能。第四章,具体介绍了应用软件的开发过程。第五章,总体调试的过程46第二章 硬件设计2.1 总体方案的设计功率因数型无功功率补偿控制器的信号采集过程基本上如图2.1所示。首先强正弦电压变送器电流变送器uacib检波装置弱正弦信号检波装置信号采集装置方波信号方波信号cp

8、u液晶显示屏控制电容投切弱正弦信号图2.1 功率因数的采集交流电uac和ib分别经过电压变送器和电流变送器转换成弱正弦交流电信号。然后经过检波装置的处理弱正弦交流电信号就被转换成了接近于方波信号。再然后这些接近于方波的信号电信号经过无功功率补偿控制器的信号采集装置的处理传送给了功功无率补偿控制器的cpu 。cpu对这些信号进行处理和计算后,将采集到的功率因数的信息悉数显示到液晶显示器上并同时对功功无率补偿控制器的电容投切装置进行控制,使其能够投切大小合适的电容。 综上所述可知,要想得知一台无功功率补偿控制器测得的功率因数是否准确那么就需要为其提供一台能够产生标准功率因数的仪器。跟据功率因数型无

9、功功率补偿控制器的信号采集过程可知,要想检测一台无功功率补偿控制器测得的功率因数是否准确功率因数发生器产生的信号有三种。第一种方法是让功率因数发生器产生强正弦交流信号让无功功率补偿控制器来检测。这种方法的好处是比较直接,接近无功功率补偿控制器真实工作时所采集的信号。其缺点是,产生标准的强正弦交流信号在技术上要求比较高,即使能够制造那么它的成本也是相当高昂的,所以我们不采用这种方法。第二种方法是让功率因数发生器产生弱正弦交流信号让无功功率补偿控制器来检测。这种方法的技术要求和成本同上一种方法相比虽然较低,但其成本总体上看仍然较高,所以仍不采用。最后一种一种方法是我们所采用的,即让功率因数发生器产

10、生方波信号让无功功率补偿控制器来检测。这种方法虽然简单但十分有效,因为无功功率补偿控制器的电压变送器和电流变送器和检波装置对无功功率补偿控制器检测功率因数的精度的影响比较少,所以可以忽略 。这种方法不但简单有效而且其成本也低较低只有几十块钱,所以确实可行。功率因数补偿器的基本结构如图2.2控制键盘sm8952tg12864液晶显示屏uacib 图2.2 功率因数发生器该设备基本具备以下功能:1、由单片机产生两列周期相同相位差可调的方波,用以表示uac和ib。2、能够在tg12864液晶屏上显示器显示uac和ib的相角,uac和ib的波形,功率因数cos,uac超前 ib的时间。3、拥有一个23

11、键盘能对单片机产生的波形和和显示器显示的内容进行控制。2. 2电源电路由于sm8952单片机需要为其提供电压为5v的直流电来维持它正常工作,而通常我们所用的220v交流电,所以必须设计一个电源装置将220v交流电转换成单片机正常工作所需要的5v直流电 。具体电源电路详见下图2.3。图2.3 电源电路220v交流电经过小型变压器转换成7.5低压交流电由ac1端和ac2端输入,然后经过整流电路整流。整流电路的任务是将ac1端和ac2端接入的正弦波交流电变换成直流电。完成这一电路主要是靠二极管的单向导电作用,因此二极管是构成整流电路的关键元件。在小功率整流电路中,常见的几种整流电路有半波、全波、桥式

12、和倍压整流电路。为了取得更好的整流效果,我们采用了桥式整流电路,整流器件我 们选择整流芯片db107。8由于经过整流装置转换成的直流电其脉动成分仍然较大所以在db107后加了一个电容c01用来消除电流中的脉动。然后在c01后面接了一个7805稳压模块,经过7805输出的直流电便是单片机工作时所需要的5v直流电了。2. 3时钟电路sm8952单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。在引脚xtal1和xtal2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。内部振荡方

13、式的外部电路如下图2.4示。 图2.4 时钟电路图中,电容器c4,c3起稳定振荡频率、快速起振的作用,其电容值一般在5-30pf。在此电路中我们选用22pf的电容。晶振频率的典型值为12mhz,我们采用11.0592 mhz。内部振荡方式所得的时钟情号比较稳定,实用电路中使用较多。sm8952单片机的指令时序 时序是用定时单位来描述的,sm8952的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期,接下来我们分别加以说明。(1) 节拍与状态: 我们把振荡脉冲的周期定义为节拍(为方便描述,用p表示),振荡脉冲经过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态(用s

14、表示),这样一个状态就有两个节拍,前半周期相应的节拍我们定义为1(p1),后半周期对应的节拍定义为2(p2)。(2) 机器周期: mcs-51有固定的机器周期,规定一个机器周期有6个状态,分别表示为s1-s6,而一个状态包含两个节拍,那么一个机器周期就有12个节拍,我们可以记着s1p1、s1p2s6p1、s6p2,一个机器周期共包含12个振荡脉冲,即机器周期就是振荡脉冲的12分频,显然,如果使用6mhz的时钟频率,一个机器周期就是2us,而如使用12mhz的时钟频率,一个机器周期就是1us。 (3)指令周期:执行一条指令所需要的时间称为指令周期,mcs-51的指令有单字节、双字节和三字节的,所

15、以它们的指令周期不尽相同,也就是说它们所需的机器周期不相同,可能包括一到四个不等的机器周期。2. 4 复位电路当sm8952系列单片机的复位引脚rst(全称reset)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果rst持续为高电平,单片机就处于循环复位状态。据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。常用的上电复位电路如下图2.5示。电源接通后,单片机自动复位。 图2.5复位电路根据实际操作的经验,c1=10 uf,r09=8.2k。单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器pc0000h,这表明

16、程序从0000h地址单元开始执行。单片机冷启动后,片内ram为随机值,运行中的复位操作不改变片内ram区中的内容,21个特殊功能寄存器复位后的状态为确定值,见表2.1。 记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的韧始化部分是十分必要的。表中符号*为随机状态;a00h,表明累加器已被清零; 表2.1 殊功能寄存器复位后的主要状态特殊功能寄存器初始状态特殊功能寄存器初始状态 a00htmod 00hb 00htcon00hpsw00hth000hsp00htl000hdpl00hth100hdph00htl100hp0p3ffhsbuf不定ip*00000bsc

17、on00hie0*00000bpcon0*bpsw00h,表明选寄存器0组为工作寄存器组;sp07h,表明堆栈指针指向片内ram 07h字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08h单元中;po-p3ffh,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出;ip00000b,表明各个中断源处于低优先级;ie000000b,表明各个中断均被关断;系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。单片机的复位是由reset引脚来控制的,此引脚与高电平相接超过24个振荡周期后,单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到reset

18、引脚转为低电平后,才检查ea引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。2. 5 键盘电路每个按键都有它的键值。矩阵的行线和列线分别通过两并行接口和单片机通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接vcc,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。图2.6 键盘电路第

19、三章 系统所使用芯片的介绍3.1 tg12864液晶显示器液晶显示器(lcd)是一种被动式显示器,由于它的功耗低、抗干扰能力强、显示界面效果良好,因而在低功耗的单片机系统中大量使用。2 目前市面上的lcd显示屏种类繁多,我们选了tg12864。其在电路中的应用如图3.1。 图3.1 液晶显示电路3.1.1 概述 tg12864是一种图形点阵液晶显示器。它主要采用动态驱动原理由行驱动控制器和列驱动器两部分组成了128(列)64(行)的全点阵液晶显示。此显示器采用了cob的软封装方式,通过导电橡胶和压框连接lcd,使其寿命长,连接可靠。3.1.2 特性1.工作电压为+5v10% ,可自带驱动lcd

20、所需的负电压。2.全屏幕点阵,点阵数为128(列)64(行),可显示8(/行)4(行)个(1616点阵)汉字,也可完成图形,字符的显示。3.与cpu接口采用5条位控制总线和8位并行数据总线输入输出,适配m6800系列时序。4.内部有显示数据锁存器,自带el驱动。5.简单的操作指令显示开关设置,显示起始行设置,地址指针设置和数据读/写等指令。3.1.3 外形尺寸表3.1 主要外形尺寸项 目标 准 尺 寸单 位模 块 体 积54.050.06.5mm定 位 尺 寸49.045.0mm视 域43.529mm行 列 点 阵 数12864dots点 距 离0.320.39mm点 大 小0.280.35m

21、m3.1.4 硬件说明1. 引脚特性 表3.2 引脚特性引脚号引脚名称级 别引 脚 功 能 描 述1gnd0v电源地2vcc+5v电源电压3vo0-10vlcd驱动负电压,要求vdd-vo=13v4d/ih/l寄存器选择信号5r/wh/l读/写操作选择信号6eh/l使能信号7db0h/l八位三态并行数据总线8db19db210db311db412db513db614db715cs1h/l片选信号,当cs1=h时,液晶左半屏显示16cs2h/l片选信号,当cs2=h时,液晶右半屏显示17/resh/l复位信号,低有效18vee-10v输出-10v的负电压(单电源供电)19swh/lsw=h时,e

22、l能发光20ac60vel驱动的输入交流信号2. 原理简图 图3.2 原理简图 3. 主要各部分详解图3.3 详解图(1) 显示数据ram(ddram) ddram(6488 bits)是存储图形显示数据的。此ram的每一位数据对应显示面板上一个点的显示(数据为h)与不显示(数据为l)。(2) i/o缓冲器(db0db7) i/o缓冲器为双向三态数据缓冲器。是lcm(液晶显示模块)内部总线与mpu总线的结合部。其作用是将两个不同时钟下工作的系统连接起来,实现通讯。i/o缓冲器在片选信号cs有效状态下,i/o缓冲器开放,实现lcm(液晶显示模块)与mpu之间的数据传递。当片选信号为无效状态时,i

23、/o缓冲器将中断lcm(液晶显示模块)内部总线与mpu数据总线的联系,对外总线呈高阻状态,从而不影响mpu的其他数据操作功能。(3) 输入寄存器输入寄存器用于接收在mpu运行速度下传送给lcm(液晶显示模块)的数据并将其锁存在输入寄存器内,其输出将在lcm(液晶显示模块)内部工作时钟的运作下将数据写入指令寄存器或显示存储器内。(4) 输出寄存器输出寄存器用于暂存从显示存储器读出的数据,在mpu读操作时,输出寄存器将当前锁存的数据通过i/o缓冲器送入mpu数据总线上。(5) 指令寄存器指令寄存器用于接收mpu发来的指令代码,通过译码将指令代码置入相关的寄存器或触发器内。(6) 状态字寄存器 状态

24、字寄存器是lcm(液晶显示模块)与mpu通讯时唯一的“握手”信号。状态字寄存器向mpu表示了lcm(液晶显示模块)当前的工作状态。尤其是状态字中的“忙”标志位是mpu在每次对lcm(液晶显示模块)访问时必须要读出判别的状态位。当处于“忙”标志位时,i/o缓冲器被封锁,此时mpu对lcm(液晶显示模块)的任何操作(除读状态字操作外)都将是无效的。(7) x地址寄存器x地址寄存器是一个三位页地址寄存器,其输出控制着ddram中8个页面的选择,也是控制着数据传输通道的八选一选择器。x地址寄存器可以由mpu以指令形式设置。x地址寄存器没有自动修改功能,所以要想转换页面需要重新设置x地址寄存器的内容。(

25、8) y地址计数器y地址计数器是一个6位循环加一计数器。它管理某一页面上的64个单元。y地址计数器可以由mpu以指令形式设置,它和页地址指针结合唯一选通显示存储器的一个单元,y地址计数器具有自动加一功能。在显示存储器读/写操作后y地址计数将自动加一。当计数器加至3fh后循环归零再继续加一。(9) z地址计数器z地址计数器是一个6位地址计数器,用于确定当前显示行的扫描地址。z地址计数器具有自动加一功能。它与行驱动器的行扫描输出同步,选择相应的列驱动的数据输出。(10) 显示起始行寄存器显示起始行寄存器是一个6位寄存器,它规定了显示存储器所对应显示屏上第一行的行号。该行的数据将作为显示屏上第一行显

26、示状态的控制信号。3.2 sm8952单片机简介3.2.1程序存储器 一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。那么设计人员编写的程序就存放在微处理器的程序存储器中。程序相当于给微处理器处理问题的一系列命令。其实程序和数据一样,都是由机器码组成的代码串。只是程序代码则存放于程序存储器中。 sm8952具有64kb程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。对于内部无rom的8031单片机,它的程序存储器必须外接,空间地址为64kb,此时单片机的端必须接地。强制cpu从外部程序

27、存储器读取程序。对于内部有rom的sm8952等单片机,正常运行时,则需接高电平,使cpu先从内部的程序存储中读取程序,当pc值超过内部rom的容量时,才会转向外部的程序存储器读取程序。 sm8952片内有8kb的程序存储单元,其地址为0000h1fffh,单片机启动复位后,程序计数器的内容为0000h,所以系统将从0000h单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意。 其中一组特殊是0000h0002h单元,系统复位后,pc为0000h,单片机从0000h单元开始执行程序,如果程序不是从0000h单元开始,则应在这三个单元中存放一条无条件转移指令,让cpu直接去执行

28、用户指定的程序。 另一组特殊单元是0003h002ah,这40个单元各有用途,它们被均匀地分为五段,它们的定义如表3.3表3.30003h000ah外部中断0中断地址区000bh0012h定时/计数器0中断地址区0013h001ah外部中断1中断地址区001bh0022h定时/计数器1中断地址区0023h002ah串行中断地址区可见以上的40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。因此以上地址单元不能用于存放程序的其他内容,只能存放中断服务程序。但是通常情况下,每段只有8个地址单元是不能存下完整的中断服务程序的,因而一般也在中断响应

29、的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后,cpu读到这条转移指令,便转向其他地方去继续执行中断服务程序。3.2.2 数据存储器数据存储器也称为随机存取数据存储器。sm8952单片机的数据存储器在物理上和逻辑上都分为两个地址空间,一个是内部数据存储区和一个外部数据存储区。sm8952内部ram有256个字节的用户数据存储,它们是用于存放执行的中间结果和过程数据的。sm8952的数据存储器均可读写,部分单元还可以位寻址。 sm8952内部ram共有256个单元,这256个单元共分为两部分。其一是地址从00h7fh单元(共128个字节)为用

30、户数据ram。从80hffh地址单元(也是128个字节)为特殊寄存器(sfr)单元。 在00h1fh共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以r0r7来命名,我们常称这些寄存器为通用寄存器。这四块中的寄存器都称为r0r7,那么在程序中怎么区分和使用它们呢?聪明的intel工程师们又安排了一个寄存器程序状态字寄存器(psw)来管理它们,cpu只要定义这个寄存的psw的第3和第4位(rs0和rs1),即可选中这四组通用寄存器内部ram的20h2fh单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址。位寻址区共有16个字节,128个位,位地址为00h7fh。cpu能

31、直接寻址这些位,执行例如置“1”、清“0”、求“反”、转移,传送和逻辑等操作。我们常称sm8952具有布尔处理功能,布尔处理的存储空间指的就是这些为寻址区。53.2.3特殊功能寄存器(sfr)特殊功能寄存器(sfr)也称为专用寄存器,特殊功能寄存器反映了sm8952单片机的运行状态。很多功能也通过特殊功能寄存器来定义和控制程序的执行。 sm8952有21个特殊功能寄存器,它们被离散地分布在内部ram的80hffh地址中,这些寄存的功能已作了专门的规定,用户不能修改其结构。我们对其主要的寄存器作一些简单的介绍。1. 程序计数器pc(program counter) 程序计数器在物理上是独立的,它

32、不属于特殊内部数据存储器块中。pc是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64kb,pc有自动加1功能,即完成了一条指令的执行后,其内容自动加1。pc本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。2.累加器acc(accumulator)(1)累加器a累加器a是一个最常用的专用寄存器,大部分单操作指令的一个操作数取自累加器,很多双操作数指令中的一个操作数也取自累加器。加、减、乘、除法运算的指令,运算结果都存放于累加器a或ab累加器对中。大部分的数据操作都会通过累加器a进行,它形象于一个交通要

33、道,在程序比较复杂的运算中,累加器成了制约软件效率的“瓶颈”,它的功能较多,地位也十分重要。以至于后来发展的单片机,有的集成了多累加器结构,或者使用寄存器阵列来代替累加器,即赋予更多寄存器以累加器的功能,目的是解决累加器的“交通堵塞”问题。提高单片机的软件效率。3(2)寄存器b 寄存器b 在乘除法指令中,乘法指令中的两个操作数分别取自累加器a和寄存器b,其结果存放于ab寄存器对中。除法指令中,被除数取自累加器a,除数取自寄存器b,结果商存放于累加器a,余数存放于寄存器b中。3.程序状态字(program status word) 程序状态字是一个8位寄存器,用于存放程序运行的状态信息,这个寄存

34、器的一些位可由软件设置,有些位则由硬件运行时自动设置的。寄存器的各位定义如下,其中psw.1是保留位,未使用。下表是它的功能说明,并对各个位的定义介绍如下:psw.7(cy) 进位标志位,此位有两个功能:一是存放执行某写算数运算时,存放进位标志,可被硬件或软件置位或清零。二是在位操作中作累加位使用。 psw.6(ac) 辅助进位标志位,当进行加、减运算时当有低4位向高4位进位或借位时,ac置位,否则被清零。ac辅助进位位也常用于十进制调整。 psw.5(f0) 用户标志位,供用户设置的标志位。 psw.4、psw.3(rs1和 rs0) 寄存器组选择位。psw.2(ov) 溢出标志。带符号加减

35、运算中,超出了累加器a所能表示的符号数有效范围(-128+127)时,即产生溢出,ov=1。表明运算运算结果错误。如果ov=0,表明运算结果正确。 执行加法指令add时,当位6向位7进位,而位7不向c进位时,ov=1。或者位6不向位7进位,而位7向c进位时,同样ov=1。除法指令,乘积超过255时,ov=1。表面乘积在ab寄存器对中。若ov=0,则说明乘积没有超过255,乘积只在累加器a中。 除法指令,ov=1,表示除数为0,运算不被执行。否则ov=0。psw.0(p) 奇偶校验位。声明累加器a的奇偶性,每个指令周期都由硬件来置位或清零,若值为1的位数奇数,则p置位,否则清零。 4 .数据指针

36、(dptr) 数据指针为16位寄存器,编程时,既可以按16位寄存器来使用,也可以按两个8位寄存器来使用,即高位字节寄存器dph和低位字节dpl。 dptr主要是用来保存16位地址,当对64kb外部数据存储器寻址时,可作为间址寄存器使用,此时,使用如下两条指令: movx a, dptr movx dptr, a 在访问程序存储器时,dptr可用来作基址寄存器,采用基址+变址寻址方式访问程序存储器,这条指令常用于读取程序存储器内的表格数据。 movc a, a+dptr5 . 堆栈指针sp(stack pointer) 堆栈是一种数据结构,它是一个8位寄存器,它指示堆栈顶部在内部ram中的位置。

37、系统复位后,sp的初始值为07h,使得堆栈实际上是从08h开始的。但我们从ram的结构分布中可知,08h1fh隶属13工作寄存器区,若编程时需要用到这些数据单元,必须对堆栈指针sp进行初始化,原则上设在任何一个区域均可,但一般设在30h1fh之间较为适宜。 数据的写入堆栈我们称为入栈(push,有些文献也称作插入运算或压入),从堆栈中取出数据称为出栈(pop,也称为删除运算或弹出),堆栈的最主要特征是“后进先出”规则,也即最先入栈的数据放在堆栈的最底部,而最后入栈的数据放在栈的顶部,因此,最后入栈的数据出栈时则是最先的。这和我们往一个箱里存放书本一样,需将最先放入箱底部的书取出,必须先取走最上

38、层的书籍。这个道理非常相似。1 那么堆栈有何用途呢?堆栈的设立是为了中断操作和子程序的调用而用于保存数据的,即常说的断点保护和现场保护。微处理器无论是在转入子程序和中断服务程序的执行,执行完后,还是要回到主程序中来,在转入子程序和中断服务程序前,必须先将现场的数据进行保存起来,否则返回时,cpu并不知道原来的程序执行到哪一步,原来的中间结果如何?所以在转入执行其它子程序前,先将需要保存的数据压入堆栈中保存。以备返回时,再复原当时的数据。供主程序继续执行。转入中断服务程序或子程序时,需要保存的数据可能有若干个,都需要一一地保留。如果微处理器进行多重子程序或中断服务程序嵌套,那么需保存的数据就更多

39、,这要求堆栈还需要有相当的容量。否则会造成堆栈溢出,丢失应备份的数据。轻者使运算和执行结果错误,重则使整个程序紊乱。 sm8952的堆栈是在ram中开辟的,即堆栈要占据一定的ram存储单元。同时mcs-51的堆栈可以由用户设置,sp的初始值不同,堆栈的位置则不一定,不同的设计人员,使用的堆栈区则不同,不同的应用要求,堆栈要求的容量也有所不同。堆栈的操作只有两种,即进栈和出栈,但不管是向堆栈写入数据还是从堆栈中读出数据,都是对栈顶单元进行的,sp就是即时指示出栈顶的位置(即地址)。在子程序调用和中断服务程序响应的开始和结束期间,cpu都是根据sp指示的地址与相应的ram存储单元交换数据。 堆栈的

40、操作有两种方法:其一是自动方式,即在中断服务程序响应或子程序调用时,返回地址自动进栈。当需要返回执行主程序时,返回的地址自动交给pc,以保证程序从断点处继续执行,这种方式是不需要编程人员干预的。第二种方式是人工指令方式,使用专有的堆栈操作指令进行进出栈操作,也只有两条指令:进栈为push指令,在中断服务程序或子程序调用时作为现场保护。出栈操作pop指令,用于子程序完成时,为主程序恢复现场。3.2.4 sm8952单片机输入输出口sm8952有4组8位i/o口:p0、p1、p2和p3口,p1、p2和p3为准双向口,p0口则为双向三态输入输出口,下面我们分别介绍这几个口线:1. p0口和p2口p0

41、口身兼两职,既可作为地址总线,也可作为数据总线。p2口作为外部数据存储器或程序存储器的地址总线的高8位输出口ab8-ab15,p0口由ale选通作为地址总线的低8位输出口ab0-ab7。外部的程序存储器由psen信号选通,数据存储器则由wr和rd读写信号选通,因为216=64k,所以sm8952最大可外接64kb的程序存储器和数据存储器。2.p1口 p1口为8位准双向口,每一位均可单独定义为输入或输出口3.p3口 p3口为准双向口,为适应引脚的第二功能的需要,增加了第二功能控制逻辑,在真正的应用电路中,第二功能显得更为重要。由于第二功能信号有输入输出两种情况,我们分别加以说明。 p3口的输入输

42、出及p3口锁存器、中断、定时/计数器、串行口和特殊功能寄存器有关,p3口的第一功能和p1口一样可作为输入输出端口,同样具有字节操作和位操作两种方式,在位操作模式下,每一位均可定义为输入或输出。 我们着重讨论p3口的第二功能,p3口的第二功能各管脚定义如下:(1)p3.0 串行输入口(rxd)(2)p3.1 串行输出口(txd)(3)p3.2 外中断0(int0)(4)p3.3 外中断1(int1)(5)p3.4 定时/计数器0的外部输入口(t0)(6)p3.5 定时/计数器1的外部输入口(t1)(7)p3.6 外部数据存储器写选通(wr)(8)p3.7 外部数据存储器读选通(rd) 对于第二功

43、能为输出引脚,当作i/o口使用时,第二功能信号线应保持高电平,与非门开通,以维持从锁存器到输出口数据输出通路畅通无阻。而当作第二功能口线使用时,该位的锁存器置高电平,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。对于第二功能为输入的信号引脚,在口线上的输入通路增设了一个缓冲器,输入的第二功能信号即从这个缓冲器的输出端取得。而作为i/o口线输入端时,取自三态缓冲器的输出端。这样,不管是作为输入口使用还是第二功能信号输入,输出电路中的锁存器输出和第二功能输出信号线均应置“1”。43.2.5 sm8952定时/计数器sm8952的单片机内有三个16位可编程的定时/计数器,它们具有

44、四种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。63.2.6看门狗定时器(wdt)看门狗定时器(wdt)是1 个16 位自运行计数器在计数器,溢出时会产生复位信号。wdt 对那些易受噪声干扰、电压波动或放电现象影响的系统很有用在程序跑飞或死机的情况下,wdt 可以使用户程序脱离不正常状态。wdt不同于sm8952 系统的定时器0、 定时器1 和定时器2 ,通过软件周期性的清除wdt 计数器的值可以防止wdt 产生复位信号。sm8952 wdt可以对基准时钟源选择分频输入要选择分频输入就要相应地设置wdt 控制寄存器(wdtc)的位2

45、位1和位0的值。置位wdt 的位7 (wdte) 即可使能wdt wdte 位置1 后16 位计数器根据ps2 、ps1、ps0 所确定的时钟输入开始工作。计数器溢出时会产生复位信号,此时wdt 的wdte 位会被清零,另外硬件复位也可以将wdte 清零置位wdt 的位5(clear)可以复位wdt, 同时清除计数器的内容使计数器重新开始计数。3.2.7 sm8962的中断系统 中断这个概念比较抽象,其实单片机的处理系统与人的一般思维有着许多异曲同工之妙,在日常生活和工作中有很多类似的情况。假如某人正在上班,例如是编译资料,这时侯电话铃响了,此人在书本上做个记号(以记下他现在正编译到某某页),

46、然后与 对方通电话,而此时恰好有客人到访,他先停下通电话,与客人说几句话,叫客人侯,然后回头继续通完电话,再与客人谈话。谈话完毕,送走客人,继续你的资料编译工作。这就是日常生活和工作中的中断现象,类似的情况还有很多,从编译资料到接电话是第一次中断,通电话的过程中引有客人到访,这是第二次中断,即在中断的过程中又出现第二次中断,这就是我们常说的中断嵌套。处理完第二个中断任务后,回头处理第一个中断,第一个中断完成后,再继续你原先的主要工作。 为什么会出现这样的中断呢?道理很简单,人非三头六臂,人只有一个脑袋,在一种特定的时间内,可能会面对着两、三甚至更多的任务。但一个人又不可能在同一时间去完成多样任

47、务,因此你只能采分析任务的轻重缓急,采用中断的方法穿插去完成它们。那么这种情况对于单片机中的中央处理器也是如此,单片机中cpu只有一个,但在同一时间内可能会面临着处理很多任务的情况,如运行主程序、数据的输入和输出,定时/和计数时间已到要处理、可能还有一些外部的更重要的中断请求要先处理。此时也得象人的思维一样停下某一样(或几样)工作先去完成一些紧急任务的中断方法。这样的一样处理方法上升到计算机理论,就是一个资源面对多项任务的处理方式,由于资源有限,面对多项任务同时要处理时,就会出现资源竞争的现象。中断技术就是为了解决资源竞争的一个可行的方法,采用中断技术可多项任务共享一个资源,所以有些文献也称中

48、断技术是一种资源共享技术。 cpu响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不同的中要求可能有不同的中断处理方但它们的处理流程一般都如下所述。1.现场的保护和现场恢复中断是在执行其它任务的过程中转去执行临时的任务,为了在执行完中断服务程序后,回头执行原先的程序时,知道程序原来在何处打断的,各有关寄存器的内容如何,就必须在转入执行中断服务程序前,将这些内容和状态进行备份即保护现场。就象文章开头举的例子,在看书时,电话玲响需传去接电话时,必须在书本上做个记号,以便在接完电话后回来看书时,知道从哪些内容继续往下看。计算机的中断处理方法也如此,中断开始前需将个有关寄存器的内容压入堆栈进

49、行保存,以便在恢复原来程序时使用。中断服务程序完成后,继续执行原先的程序,就需把保存的现场内容从堆栈中弹出,恢复积存器和存储单元的原有内容,这就是现场恢复。如果在执行中断服务时不是按上述方法进行现场保护和恢复现场,就会是程序运行紊乱,程序跑飞,自然使单片机不能正常工作。2.中断的打开和中断的关闭在中断处理进行过程中,可能又有新的中断请求到来,这里规定,现场保护和现场恢复的操作是不允许打扰的,否则保护和恢复的过程就可能使数据出错,为此在进行现场保护和现场恢复的过程中,必须关闭总中断,屏蔽其它所有的中断,待这个操作完成后再打开总中断,以便实现中断嵌套。3.中断服务程序既然有中断产生,就必然有其具体

50、的需执行的任务,中断服务程序就是执行中断处理的具体内容,一般以子程序的形式出现,所有的中断都要转去执行中断服务程序,进行中断服务。4.中断的返回执行完中断服务程序后,必然要返回,中断返回就是被程序运行从中断服务程序转回到原工作程序上来。在单片机中,中断返回是通过一条专门的指令实现的,自然这条指令是中断服务程序的最后一条指令。第四章 系统软件设计4.1 单片机变成软件的发展软件系统设计是整个检测系统设计至关重要的组成部分,软件部分设计的好坏,直接关系到整个系统功能实现和运行的可靠性。随着计算机应用的不断推广,计算机软件的设计也发生了巨大的变化,程序设计方法也在不断进步、更新,程序设计语言也从初期

51、的机器语言到用符号表示的汇编语言以至发展到高级语言。8051芯片的派生门类特别多(达到了上百种之多)sm 8952就是其中的一种。而c语言对于它们的每一个硬件资源又无一例外地要能进行操作。这些都是过去以mpu为基础的c语言所没有的。经过keil/franklin、archmeades、iar、bso/tasking等公司艰若不懈的努力,终于于90年代开始而趋成熟,成为专业化的mcu高级语言了。过去长期困扰人们的所谓“高级语言产生代码太长,运行速度太慢,因此不适合单片机使用”的致使缺点已被大幅度地克服。目前,8051上的c语言的代码长度,已经做到了汇编水平的1.21.5倍。4k字节以上的程度,c

52、语言的优势更能得到发挥。至于执行速度的问题,只要有好的仿真器的帮助,找出关键代码,进一步用人工优化,就可很简单地达到十分美满的程度。如果谈到开发速度、软件质量、结构严谨、程序坚固等方面的话,则c语言的完美绝非汇编语言编程所可比拟的。今天,确实已经到mcu开发人员拿起c语言利器的时候了。下面结合sm8952单片机介绍单片机c语言的优越性:不懂得单片机的指令集,也能够编写完美的单片机程序;无须懂得单片机的具体硬件,也能够编出符合硬件实际的专业水平的程序;不同函数的数据实行覆盖,有效利用片上有限的ram空间;程序具有坚固性:数据被破坏是导致程序运行异常的重要因素。c语言对数据进行了许多专业性的处理,

53、避免了运行中间非异步的破坏;c语言提供复杂的数据类型(数组、结构、联合、枚举、指针等),极大地增强了程序处理能力和灵活性;提供auto、static、const等存储类型和专门针对单片机的data、idata、pdata、xdata、code等存储类型,自动为变量合理地分配地址;提供small、compact、large等编译模式,以适应片上存储器的大小;中断服务程序的现场保护和恢复,中断向量表的填写,是直接与单片机相关的,都由c编译器代办;提供常用的标准函数库,以供用户直接使用;头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发;有严格的句法检查,错误很少,可容易地在高级语言的水平上迅速地被排掉;可方便地接受多种实用程序的服务:如片上资源的初始化有专门的实用程序自动生成;再如,有实时多任务操作系统可调度多道任务,简化用户编程,提高运行的安全性等等。4.2 程序的设计4.2.1 主程序通过应用要求来分析功率因数发生器所使用的程序主要可以分为以下几个部分:显示程序;键盘输入程序;波形发生程序。软件设计的主程序流程图如图4.1所示在整个程序中,每个部分都有其具体的明确的任务,分别编制、调试后再把它们连接在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论