基于STC12LE5A60S2的低压电能表检测仪_毕业论文.doc_第1页
基于STC12LE5A60S2的低压电能表检测仪_毕业论文.doc_第2页
基于STC12LE5A60S2的低压电能表检测仪_毕业论文.doc_第3页
基于STC12LE5A60S2的低压电能表检测仪_毕业论文.doc_第4页
基于STC12LE5A60S2的低压电能表检测仪_毕业论文.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

目录1 引言11.1 研究背景11.2 研究现状12 总体设计方案22.1 技术要求22.2 方案论证33 硬件电路设计43.1 单片机的选择及外围电路设计43.2 电流互感器的选择与连接73.3 电能计量芯片的选择73.4 lcd显示接口电路设计123.5 键盘接口电路设计133.6 电源电路设计154 软件设计154.1 主程序设计主程序的主要功能164.2 中断服务程序设计174.3 lcd1602程序设计194.4 cs5490程序设计214.5 键盘扫描程序设计27结 论29致 谢30附录:电路原理图321 引言1.1 研究背景随着社会的发展,人们的生活水平不断提高,家用电器越来越普及,人人用电、家家用电,使用电量大大增加。同时即将实行的分段电费计费制,将使用电大户的电费支出大幅度地增长,各种各样的窃电行为不可避免,对此,供电部门采取多种方法对用户的电能表进行定期校验或不定期的抽查。通常校验用户电能表的方法为:1.1.1、使用钳形电流表和秒表,现场检测电能表:用秒表实测电能表每转时间t1;查看电能表上标明的参数,算出电能表每转一转所需的电能,然后用钳形电流表测量电流求出有功功率,电能表每转1转所需电能与有功功率之比得到的时间即为电能表每转所需时间t2。通过t1与t2的比较,就可以判断电能表是否正常工作,从而达到检测目的。但这种方法的误差很大,主要产生自秒表的掐表误差。1.1.2、通过检验电能表的外观,确定电能表有无破坏痕迹。这种方法包括:1) 检查电能表外壳、封铅及封条是否完好,外壳是否有变形、微小孔洞及铁丝等;2) 检查电能表接线盒是否封闭完好,进出线是否紧固,电压连接片是否压紧。3) 核对电能表铭牌上的型号、出厂编号及所计量负荷性质等是否与抄表卡相同,若不符即有窃电行为。1.1.3、在被测电能表电路中接入标准电能表,然后对被测表和标准表同时采样进行比对。1.1.4、采用专门的检测仪器对电能表进行校验。这种方法分为两种形式,一种方法是将电能表从供电线路上拆下,利用实验室的电能表校验台对电能表进行校验,另一种方法是不拆下电能表,利用电能表现场检测仪器对电能表进行现场校验。电能表的现场检验因不影响用户用电而被供电部门广泛采用,随着电子技术的发展,供电部门迫切需要一种携带方便,操作简单,计量准确的单项电表检测仪,用于用户低压电能表的现场检验。1.2 研究现状电能表的校验是否准确,取决于有功功率的测量是否准确,有功功率的测量属于电气测量范畴,在电气测量方面,国内外已有大量的研究成果,就测量方法和采用的技术手段综述如下。采用的技术手段上,一是采用微机加数据采集卡,二是采用微处理器结合自行设计的数据采集通道。在互感器的选择上,一是在供电电路中接入固定式的电压互感器和电流互感器。二是电压互感器采用固定式,接线端使用线夹,电流互感器采用钳形互感器6。固定式互感器中磁路是封闭的,因而具有较好的线形和较小的相移,可以得到较高的精度。但需要停电接线,不便于现场检测。电压互感器采用固定式,接线端使用线夹,电流互感器采用钳形互感器,现场不用接线。固定式互感器的优点是显而易见的,采用线夹后可直接加在供电线路的母线上,避免了现场检测需要停电接线的麻烦。但钳形电流互感器的接触面存在空气间隙,使互感器磁路的磁阻显著增大,且随工况不同呈现非线形,使互感器的线形变差,且相移较大,给功率因数的测量带来影响,为了弥补这一缺陷,对结果采用分段线性化处理,可以提高测量精度。在有功功率的测量方面,一是采用有效值转换,分别测量出电压、电流和功率因数,利用微处理器计算出功率;二是采用有功功率专用测量集成电路,直接测量出有功功率;三是利用各种电量的传感器,测量出电压、电流、功率因数或直接测量有功功率。采用专用电能计量芯片,直接测量出有功功率,测量方便,硬件电路简单,软件开销小。 2 总体设计方案2.1 技术要求由于目前使用的低压电能表多为电子式电能表,机械式电能表基本已淘汰,所以本设计以电子式电能表为检测对象。本设计以stc公司的mcu为核心,采用电流互感器及电能计量专用芯片对电能进行实时计量,计算出被测电能表的误差,检验电能表计量的准确性。具体要求如下:(1).电量测量范围:电压220vac,电流040a,单相;(2).检验对象:电子式电能表;(3).测量误差:0.5%fs;(4).测量方式:不拆线不断电;(5).方便野外使用,强阳光下可清晰显示;(6).220vac供电。2.2 方案论证按照上述技术要求,系统由电流电压互感器、有功功率测量芯片、单片机、显示器、键盘和sd卡几部分组成。系统组成图如图2.1所示。图2.1系统组成图利用互感器将供电电路的电压、电流转换为弱电信号,单片机通过有功功率测量芯片对电参数进行实时采集并计算出电能,通过与被测电能表的显示进行比对,从而计算出被测电能表的相对误差。2.2.1 互感器方案一:在供电电路中接入固定式的电压互感器和电流互感器。固定式互感器中磁路是封闭的,因而具有较好的线形和较小的相移,可以得到较高的精度。但需要停电接线,不便于现场检测。方案二:电压采样使用线夹,电流采样使用钳形电流互感器,现场不接线。线夹可直接加在供电线路的母线上,避免了现场检测需要停电接线的麻烦。但钳形电流互感器的接触面存在空气间隙,使互感器磁路的磁阻显著增大,且随工况不同呈现一定的非线形,使互感器的线形变差,且相移较大,给功率因数的测量带来影响。综上分析,结合低压电能表进行现场检验的特点,确定采用方案二。2.2.2 有功功率测量通道方案一:采用有功功率专用测量集成电路。专用电能计量芯片,直接测量出有功功率。测量方便,硬件电路简单,软件开销小。方案二:采用有效值转换电路,分别测量出电压、电流和功率因数,利用微处理器计算出功率。便于对钳形互感器带来的相移进行修正或补偿,但硬件电路较为繁琐,软件开销大。综上分析,确定采用方案一,有功功率测量通道由既是专用电能计量芯片。2.2.3 显示器方案一:采用led数码管显示器。传统的数码管具有:低功耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度要求比较高,显示速度快,精确可靠,操作简单。数码管是采用bcd编码显示数字,程序编译容易,资源占用较少。方案二:使用lcd液晶显示器。液晶显示器具有轻薄短小、超低耗电量、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等优点。lcd符合本设计系统的要求,利用其自带的字符库,进行编程还可以实现各信息的显示,即节省资源又省去了大量编程任务,且在强光照射下的户外进行检测时,lcd可清晰地显示数值。综上分析,本设计系统采用方案二。3 硬件电路设计3.1 单片机的选择及外围电路设计3.1.1 单片机的选择本系统主要从编程方式,io口数量,功耗等方面选择mcu。编程方式简洁,硬件投资小,与pc连接方式简单。io口分配:电量测量芯片6个,键盘8个,rs232接口2个,并口1602lcd 11个。共需至少27个io口。目前8位单片机已有百十个系列,上千个种类,市场上可见到的如intel公司的mcs-51系列产品,motorola公司的6800、68000系列产品,zilog公司的z8、supper8、z86系列产品,rockwell公司的6500系列产品,philips公司的80c51系列产品,microchip公司的pic系列,ateml公司的at89、avr系列,华邦公司、松下公司、三星公司、国产的stc等等。基于以上分析,本设计采用stc公司的stc12le5a60s2可以满足设计要求。3.1.2 stc系列单片机stc12le5a60s2的简介stc12le5a60s2单片机是stc宏晶科技()生产的单时钟/机器周期(1t)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成max810专用复位电路,2路pwm,8路高速10位a/d转换(250k/s),针对电机控制,强干扰场合。3.1.3功能特性概述1.增强型8051 cpu,1t,单时钟/机器周期,指令代码完全兼容传统80512.工作电压: 5.5v- 3.3v(5v单片机)3.工作频率范围:0 - 35mhz,相当于普通8051的 0420mhz4.用户应用程序空间62k字节5.片上集成1280字节ram6.通用i/o口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统i/o口),可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏 每个i/o口驱动能力均可达到20ma,但整个芯片最大不要超过55ma7. isp(在系统可编程)/iap(在应用可编程),无需专用编程器,无需专用仿真器 可通过串口(p3.0/p3.1)直接下载用户程序,数秒即可完成一片8.有eeprom功能9. 看门狗10.内部集成max810专用复位电路(外部晶体12m以下时,复位脚可直接1k电阻到地)11.外部掉电检测电路:在p4.6口有一个低压门槛比较器,5v单片机为1.32v,误差为+/-5%12.时钟源:外部高精度晶体/时钟,内部r/c振荡器(温漂为+/-5%到+/-10%以内) 1用户在下载用户程序时,可选择是使用内部r/c振荡器还是外部晶体/时钟13.共4个16位定时器:两个与传统8051兼容的定时器/计数器,16位定时器t0和t1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器再加上2路pca模块可再实现2个16位定时器14. 2个时钟输出口,可由t0的溢出在p3.4/t0输出时钟,可由t1的溢出在p3.5/t1输出时钟15.外部中断i/o口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的pca模块,power down模式可由外部中断唤醒,int0/p3.2,int1/p3.3,t0/p3.4, t1/p3.5,rxd/p3.0,ccp0/p1.3(也可通过寄存器设置到p4.2 ),ccp1/p1.4 (也可通过寄存器设置到p4.3)16. pwm(2路)/pca(可编程计数器阵列,2路) -也可用来当2路d/a使用 -也可用来再实现2个定时器 -也可用来再实现2个外部中断(上升沿中断/下降沿中断均可分别或同时支持)17.a/d转换, 10位精度adc,共8路,转换速度可达250k/s(每秒钟25万次)18.通用全双工异步串行口(uart),由于stc12系列是高速的8051,可再用定时器或pca软件实现多串口19. stc12le5a60s2系列有双串口,后缀有s2标志的才有双串口,rxd2/p1.2(可通过寄存器设置到p4.2),txd2/p1.3(可通过寄存器设置到p4.3)20.工作温度范围:-40 - +85(工业级) / 0 - 75(商业级)21.封装:pdip-40,lqfp-44,lqfp-48 i/o口不够时,可用2到3根普通i/o口线外接 74hc164/165/595(均可级联)来扩展i/o口, 还可用a/d做按键扫描来节省i/o口,或用双cpu,三线通信,还多了串口。3.1.4 单片机外围电路设计本设计选择stc12le5a60s2的外部时钟方式,在引脚xtal1和xtal2两端跨接11.0592mhz晶体,以方便和pc编程和采集测量数据。复位采用片内复位电路,外接一个1k下拉电阻。单片机外围电路如图3.1图3.1 单片机stc12le5a60s2外围电路设计图3.2 电流互感器的选择与连接3.2.1 电流互感器的选择在测量中,一般规定它的二次绕组的额定电流为5a。其主要特点是:它的一次绕组的匝数比二次绕组少得多,并且串于一次电路中。有些电流互感器仅有铁芯和二次绕组,测量时将被测电路的导线直接穿过铁芯。这些电流互感器称为穿心式互感器。一次绕组中的电流几完全取决于一次电路中的负载电流,而与二次侧无关。电流互感器有固定式与钳形供电互感器几种。在供电电路中接入固定式的电流互感器,其优点是固定式互感器中磁路是封闭的,因而具有较好的线形和较小的相移,可以得到较高的精度,但需要停电穿线,不便于现场检测。若采用钳形互感器,则现场不用停电接线,避免了现场检测需要停电接线的麻烦。考虑到方便检测这一要求,可选择钳形电流互感器。本设计中,采用淄博元星电子有限公司()生产的ctc0080n钳形电流互感器,外型如图3.6所示。图3.2 ctc0080n钳形电流互感器3.2.2 电流互感器主要参数1) 一次电流: 1-50a;2) 匝比: 1:1000,1:2000,1:2500;3) 等级: 0.1级;4) 负载: 50。5) 频率: 50-400hz3.3 电能计量芯片的选择cs5490是cirrus logic公司()新近推出的带有rs232接口的单相双通道电能计量芯片。3.3.1 cs5490芯片有如下功能特点(1) 在4000:1动态范围内,有功和无功电能的测量精度都为0.1%。(2) 具有两个独立通道24位-的ad转换器,可精确测量瞬时电压、电流、功率以及电压、电流有效值。(3) 计算视在、有功和无功功率,基波有功、谐波功率和功率因数。(4) 具有瞬时电流、瞬时电压、瞬时功率、电流有效值、电压有效值、功率有效值测量及电能计量功能;(5) 具有片内看门狗定时器(watch dog timer)与内部电源监视器;(6) 提供了外部复位引脚;(7) 带有温度传感器;(8) rs232串行接口与内部寄存器阵列可以方便地与单片机相连接;(9) 低能耗13mw。(10) 具有功率方向输出指示。(11) 极高的信噪比和超低的噪声。(12) 简单的2线rs232串行接口。3.3.2 基本结构与技术指标(1) 内部结构cs5490内部集成了两个-a/d转换器、高、低通数字滤波器、能量计算单元、串行接口、数字-频率转换器、寄存器阵列和看门狗定时器等模拟、数字信号处理单元。cs5463 的内部结构框图如图3.3所示,图3.3 cs5490芯片结构框图它由2个放大器、2个-调制器、配套的高速滤波器、功率计算引擎、偏置和增益校正、功率监测、串行接口及相应功能寄存器等组成。2个可编程放大器采集电压和电流数据,-调制器对模拟量采样处理,高速数字低通或可选的高通滤波器滤取可用电压电流数字信号,功率计算引擎计算各类型的功率、电压、电流,并将计算的功率值通过rs232接口对外输出,也可以接微控制器。该电路还有可编程数字输出信号。(2) 引脚排列及功能cs5490的引脚排列如图3.4所示。图3.4 cs5490芯片引脚排列图xout(pin 1):晶体振荡器输出;xin(pin 2):晶体振荡器输入。 reset(pin 3):复位输入;iin-(pin 4):差分电流负输入端;iin+(pin 5):差分电流正输入端;vin+(pin 6):差分电压正输入端;vin-(pin 7):差分电压负输入端;vrefin(pin 8):参考电压输入;vrefout(pin 9):参考电压输出;gnda(pin 10):模拟地电源;vdda(pin 11):模拟电路电源正极;do(pin 12):数据输出;tx(pin 13):串行232发送;rx(pin 14):串行232接收;mode(pin 15):操作模式选择;vddd(pin 16):数字电路电源正极; 3.3.3 串行接口及其操作(1) 串行接口cs5490的rs232串行口包括2条控制线:tx/rx,可以直接连接到stc12le5a60s2的第二串口。串行口的默认波特率为600,可以通过设置串口控制寄存器来改变波特率。cs5490可以通过rs232接口接收单片机的4种命令:读寄存器操作、写寄存器操作、寄存器页选择操作、指令操作。 (2) 内部寄存器cs5490共有64页,每页64个地址的寄存器。其地址设定为12bit,高6位为页码,低6位为该页的地址码: p5p4p3p2p1p0a5a4a3a2a1a0。 (3) 命令解释及操作寄存器页选择操作:10 p5p4p3p2p1p0;读寄存器操作:00 a5a4a3a2a1a0,cs5490回传3个字节的数据;写寄存器操作:01 a5a4a3a2a1a0+data2+data1+data0;指令操作:11 c5c4c3c2c1c0 (4) cs5490与stc12le5a60s2的连接电路如图3.5所示。图3.5 cs5490与stc12le5a60s2的连接电路3.3.4 电源线接口的设计vin通过电阻直接夹到l和n,iin通过互感器ct卡在line导线上。电源检测输入电路如图3.6。cs5490端口的最大输入电压为250mvp 。图3.6 cs5490的电源检测电路3.3.5 常用寄存器定义串口控制寄存器:page:0,address:7,default:02004dh有功功率寄(pavg)存器:page:16,address:5,default:000000h电流有效值(irms)寄存器:page:16,address:6,default:000000h电压有效值(vrms)寄存器:page:16,address:7,default:000000h无功功率(qavg)寄存器:page:16,address:14,default:000000h电流峰值(ipeak)寄存器:page:0,address:37,default:000000h电压峰值(vpeak)寄存器:page:0,address:36,default:000000h视在功率(s)寄存器:page:16,address:20,default:000000h功率因数(pf)寄存器:page:16,address:21,default:000000h实时温度(temp)寄存器:page:16,address:27,default:000000h总有功功率(psum)寄存器:page:16,address:29,default:000000h总视在功率(ssum)寄存器:page:16,address:30,default:000000h总无功功率(qsum)寄存器:page:16,address:31,default:000000h电流增益寄存器:page:16,address:33,default:1.0电压增益寄存器:page:16,address:35,default:1.03.4 lcd显示接口电路设计3.4.1 lcd显示器的选择lcd一般分为3类,即段码型液晶模块、点阵字符液晶模块、点阵图形液晶模块。本系统选择lcd1602液晶显示模块,它可以显示两行,每行16个字符,采用3v3电源供电,外围电路配置简单,价格便宜,具有较高的性价比,很长的寿命。lcd的控制方法如表3.1所示。表3.1 lcd602的控制表rsr/wedb0-db7功能00下降沿输入写指令代码011输出读标志和ac码10下降沿输入写数据111输出读数据主要管脚介绍:v0:液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高。rs:寄存器选择,高电平时选择数据寄存器;低电平时选择指令寄存器。r/w:读写信号线,高电平时进行读操作,低电平时进行写操作。当rs和r/w共同为低电平时可以写入指令或者显示地址;当rs为高电平r/w为低电平时可以写入数据。e:使能端,当e端由高电平跳变成低电平时,液晶模块执行命令。lcd1602的操作指令共11条,如表3.2表3.2 lcd602的操作指令表3.4.2 显示器接口电路设计lcd12864在设计时采用3.3v的驱动电源电压。通过显示屏幕,将所测得的各种数据显示出来。lcd1602显示接口电路设计如图3.7所示。图3.7 lcd1602显示接口电路3.5 键盘接口电路设计3.5.1 键盘的数目及功能确定在该应用系统中,具有人机对话功能。它包括人对应用系统状态的干预、数据的输入以及应用系统向人报告运行状态与运行结果。键盘电路的设计应使cpu不仅能识别是否有键按下,还要能识别是哪一个键按下,而且能把此键所代表的信息翻译成计算机所能接受的形式,计算机所用的键盘有编码键盘和非编码键盘两种。编码键盘能够由硬件逻辑自动提供与按键对应的编码。本系统选择4*4的矩阵式键盘,该键盘一部分为数字按键,另一部分为功能按键。为了识别键盘上的闭合键,常用的键码识别方法有行扫描法、行反转法及行列扫描法等。本设计采用行扫描方法。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,行扫描法识别按键的基本原理是:先将所有的行线置0,读列线的值,若此时列线上的值全为1,说明无键按下。若有某位为0,则说明对应这一列上有键按下,这时改变行扫描码,使行线逐行为0,依次扫描。当读到某一列线的值为0时,就可根据此时的行扫描码和列线的值唯一地确定按键的位置,同时也就确定了该键的扫描码。3.5.2 键盘电路设计在键盘中按键数量较多时,为了减少i/o口的占用,通常将按键排列成矩阵形式,如图3.8所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键开关加以连接。这样,一个8io口就可以构成4*4=16个按键。并且列线通过内部上拉电阻接1,而将行线所接的单片机的i/o口作为输出0端,列线所接的i/o口作为输入。如果所有的8个端口都是高电平,则表示没有按键开关按下;一旦有键按下,则输入线就会被拉低,这样,通过读入p2口的状态就可得知是否有键按下了。图3.8 矩阵式键盘此矩阵式键盘根据设计要求,设置了功能键与数字键。功能键主要是启动键、手动按键、自动按键。启动按键要单片机处于待命状态;手动按键要人自己控制时间,计算出误差值;自动按键在设定时间内完成误差计算。数字键用于所测电能表型号选择。各按键所代表的具体功能如下:s1s10:数字键;s11:启动测量键;s12:停止测量键;s13:确认键; s14:功能键;s15:参数查看键;s16:被测表数据输入键。3.6 电源电路设计本系统使用的是3.3v直流电源,供mcu、cs5490、lcd1602等电路使用。如图3.9所示电路为输出电压+3.3v的稳压电源。它由电源变压器b,桥式整流电路d1d4,滤波电容c1、c3,防止自激电容c2、c4和一只固定式三端稳压器(1117-3.3)。220v交流市电通过电源变压器变换成交流低压,再经过桥式整流电路d1d4和滤波电容c1的整流和滤波,在固定式三端稳压器1117-3.3的输入和gnd两端形成一个并不十分稳定的直流电压。此直流电压经过1117-3.3的稳压和c3的滤波便在稳压电源的输出端产生了精度高、稳定度好的3.3v直流输出电压。图3.9电源电路图4 软件设计软件是系统的灵魂,软件的灵活性和强大性将在系统中明显的体现出来,是判断系统的优良与否的主要标准之一。设计软件采用模块化设计方法。系统按照不同的功能予以划分,然后按一定的用途分别编写、调试,最终将所有模块调试成功后,将其各个模块拼接构成为单项电表检测仪系统的软件部分。模块化编程方式有利于程序代码的优化,而且便于设计、调试和维护。4.1 主程序设计主程序的主要功能(1) 对单片机系统进行初始化;(2) 内存单元清零; (3) lcd显示器初始化; (4) cs5490初始化;(5) 进行键盘扫描,检测各功能键的闭合情况,并执行相应的子程序;(6) 检测pc机的rs232,用以交换数据。主程序流程图如图4.1所示。4.1.1 主程序;=org0000hjmpmainorg000bhjmpint_t0org0023hjmpint_rs232;=org0030hmain:movtmod,#21h;t1产生波特率movth1,#0fdh;960011.0592movtl1,#0fdh movtl0,#0;t0方式1,50ms定时movth0,#4ch movscon,#50h;设定串行口方式1 anlpcon,#0efh;波特率不倍增setbtr0;打开定时器t0 setbtr1;启动定时器1 图4.1 主程序流程图setbet0;t0中断使能movip,#10h;设定串行1口为最高中断级别movie,#92h;1001 0010b,开启所有中断,允许串行1口、定时器0中断movs2con,#50h;设定串行2口方式1,movbrt,#0d0h;60011.0592mhz,12tmovauxr,#10h;串行2口使用独立波特率发生器,12tmova,#00hmovr0,#20h;将 20h-7fh 单元清零movr4,#60hmain1:movr0,aincr0djnzr4,main14.1.2 lcd1602初始化子程序:call delay5ms;lcd1602上电后需要延时稳定call delay5mscall delay5msmov a,#38h;lcd,设置8位数据格式,16*2,5*7点阵call lcd_cmd_nc ;第一次写指令,不进行lcd忙检测call delay5ms;延时5msmov a,#38h;lcd,设置8位数据格式,16*2,5*7点阵call lcd_cmd_nc ;第一次写指令,不进行lcd忙检测call delay5msmov a,#38h;lcd,设置8位数据格式,16*2,5*7点阵call lcd_cmd_nc ;第一次写指令,不进行lcd忙检测mov a,#08h ;显示关,无光标call lcd_cmd ;写指令,进行lcd忙检测mov a,#01h ;清除屏幕内容call lcd_cmd ;写指令,进行lcd忙检测mov a,#06h ;ac自动加一call lcd_cmd ;写指令,进行lcd忙检测mov a,#0ch ;显示开,关光标call lcd_cmd ;写指令,进行lcd忙检测ret4.1.3 cs5490初始化子程序:call delay5ms; cs5490上电后需要延时稳定clrp1.4call delay5mssetbp1.4call delay5msret4.2 中断服务程序设计中断是通过硬件来改变cpu程序运行的方向。程序在执行过程中由于外界的原因而被中间打断的情况称为中断。中断之后所执行的处理程序,称为中断服务程序。本设计主要是定时器的时间中断和串口中断。流程图如图4.2所示。图4.2中断服务程序流程图4.2.1 定时器中断程序定时器中断程序让工作状态指示灯每一秒闪烁一次。int_t0:pushaccpushpswmovtl0,#00hmovth0,#4ch;50ms定时值,11.0592incm_countmova,m_ countcjnea,#10,int_end;10*50ms=0.5smovm_ count,#0cplworking;工作状态灯闪烁int_end:poppswpopaccreti4.2.2 串口中断程序串口中断程序用于接收pc机的8位命令数据,可调取测量仪的测量历史数据。int_rs232:clreapushaccpushpswjbri,int_rs0;ri=0,返回poppswpopaccsetbearetiint_rs0:clrrimova,sbufcjnea,#0f0h,int_rs9;检测第一个f0,由通讯协议确定movr1,#40h;第一个f0时,赋接收数据区r1=40hmovr1,a;保存接收数据f0int_rs2:movr4,#0ffhmovr5,#0ffhint_rs3:jbri,int_rs4 ;等待,接收数据nopdjnzr4,int_rs3djnzr5,int_rs3jmpint_rs9; 发送的数据错int_rs4:clrri ;收到,清除ri,以接收下一个mova,sbufincr1movr1,acjner1,#48h,int_rs2;够8位数据?setbb_rev_ok;有8位数据接收poppswpopaccsetbearetiint_rs9:setbb_rev_err;数据不正确,报错callbeep_2msint_rs232_end:poppswpopaccsetbeareti4.3 lcd1602程序设计4.3.1 写指令数据到lcd;rs=l,rw=l,d0-d7=指令码,e=高脉冲lcd_cmd:call checkbusylcd_cmd_nc:clr lcd_rsclr lcd_rwmov p0,asetb lcd_ennopnopnopnopclr lcd_enret4.3.2 写显示数据到lcd;rs=h,rw=l,d0-d7=数据,e=高脉冲lcd_wdata:acall checkbusysetb lcd_rsclr lcd_rwmov p0,asetb lcd_ennopnopnopnopclr lcd_enret4.3.3 检测lcd控制器忙状态;读数据;rs=l,rw=h,e=h,输出:d0-d7=数据;p0.7=1,lcd忙,等待。p0.7=0,lcd闲,可以进行读写操作。checkbusy:pushaccmovp0,#0ffhclr lcd_rssetb lcd_rwsetb lcd_enbusyloop:nopjb p0.7,busyloopclr lcd_enpop accret4.3.4 发送字符串子程序write:push accwrite1:clr amovc a,a+dptrjz write2inc dptracall lcd_wdatajmp write1write2:pop accret4.4 cs5490程序设计4.4.1 读取温度值movr0,#tempmova,#10010110b;page:16movsbuf,ajnbti,$;等待数据发送clrti;清除数据传送标志mova,#00100111b;reg address:27movsbuf,ajnbti,$clrticall delay5msjnbri,$;等待数据clrri ;收到,清除ri,以接收下一个mova,sbufmovr0,a;保存温度值,共3个字节incr0jnbri,$clrri mova,sbufmovr0,aincr0jnbri,$clrri mova,sbufmovr0,aret4.4.2 读取有功功率值movr0,#pavgmova,#10010110b;page:16movsbuf,ajnbti,$;等待数据发送clrti;清除数据传送标志mova,#00000101b;reg address:5movsbuf,ajnbti,$clrticall delay5msjnbri,$;等待数据clrri ;收到,清除ri,以接收下一个mova,sbufmovr0,a;保存,共3个字节incr0jnbri,$clrri mova,sbufmovr0,aincr0jnbri,$clrri mova,sbufmovr0,aret4.4.3 读取无功功率值movr0,#qavgmova,#10010110b;page:16movsbuf,ajnbti,$;等待数据发送clrti;清除数据传送标志mova,#00010100b;reg address:14movsbuf,ajnbti,$clrticall delay5msjnbri,$;等待数据clrri ;收到,清除ri,以接收下一个mova,sbufmovr0,a;保存,共3个字节incr0jnbri,$clrri mova,sbufmovr0,aincr0jnbri,$clrri mova,sbufmovr0,aret4.4.4 读取视在功率值movr0,#savgmova,#10010110b;page:16movsbuf,ajnbti,$;等待数据发送clrti;清除数据传送标志mova,#00100000b;reg address:20movsbuf,ajnbti,$clrticall delay5msjnbri,$;等待数据clrri ;收到,清除ri,以接收下一个mova,sbufmovr0,a;保存,共3个字节incr0jnbri,$clrri mova,sbufmovr0,aincr0jnbri,$clrri mova,sbufmovr0,aret4.4.5 读取功率因数值movr0,#pfmova,#10010110b;page:16movsbuf,ajnbti,$;等待数据发送clrti;清除数据传送标志mova,#00100001b;reg address:21movsbuf,ajnbti,$clrticall delay5msjnbri,$;等待数据clrri ;收到,清除ri,以接收下一个mova,sbufmovr0,a;保存,共3个字节incr0jnbri,$clrri mova,sbufmovr0,aincr0jnbri,$clrri mova,sbufmovr0,aret4.4.6 读取电流有效值movr0,#irmsmova,#10010110b;page:16movsbuf,ajnbti,$;等待数据发送clrti;清除数据传送标志mova,#00000110b;reg address:6movsbuf,ajnbti,$clrticall delay5msjnbri,$;等待数据clrri ;收到,清除ri,以接收下一个mova,sbufmovr0,a;保存,共3个字节incr0jnbri,$clrri mova,sbufmovr0,aincr0jnbri,$clrri mova,sbufmovr0,aret4.4.7 读取电压有效值movr0,#vrmsmova,#10010110b;page:16movsbuf,ajnbti,$;等待数据发送clrti;清除数据传送标志mova,#00000111b;reg address:7movsbuf,ajnbti,$clrticall delay5msjnbri,$;等待数据clrri ;收到,清除ri,以接收下一个mova,sbufmovr0,a;保存,共3个字节incr0jnbri,$clrri mova,sbufmovr0,aincr0jnbri,$clrri mova,sbufmovr0,aret4.4.8 读取总有功功率值movr0,#psummova,#10010110b;page:16movsbuf,ajnbti,$;等待数据发送clrti;清除数据传送标志mova,#00101001b;reg address:29movsbuf,ajnbti,$clrticall delay5msjnbri,$;等待数据clrri ;收到,清除ri,以接收下一个mova,sbufmovr0,a;保存,共3个字节incr0jnbri,$clrri mova,sbufmovr0,aincr0jnbri,$clrri mova,sbufmovr0,aret4.4.9 读取总视在功率值movr0,#ssummova,#10010110b;page:16movsbuf,ajnbti,$;等待数据发送clrti;清除数据传送标志mova,#00110000b;reg address:30movsbuf,ajnbti,$clrticall delay5msjnbri,$;等待数据clrri ;收到,清除ri,以接收下一个mova,sbufmovr0,a;保存,共3个字节incr0jnbri,$clrri mova,sbufmovr0,aincr0jnbri,$clrri mova,sbufmovr0,aret4.4.10 读取总无功功率值movr0,#qsummova,#10010110b;page:16movsbuf,ajnbti,$;等待数据发送clrti;清除数据传送标志mova,#00110001b;reg address:31movsbuf,ajnbti,$clrticall delay5msjnbri,$;等待数据clrri ;收到,清除ri,以接收下一个mova,sbufmovr0,a;保存,共3个字节incr0jnbri,$clrri mova,sbufmovr0,aincr0jnbri,$clrri mova,sbufmovr0,

温馨提示

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

最新文档

评论

0/150

提交评论