ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:192.43KB ,
资源ID:23637103      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23637103.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机真有效值程序实现.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机真有效值程序实现.docx

1、单片机真有效值程序实现1 前言单片微型计算机简称单片机,又称微控制器(MCU),它的出现是计算机发展史上的一个重要的里程碑,它以体积小、功能全、性价比高等诸多优点独具特色,在工业控制、尖端武器、通信设备、信息处理、家用电器等嵌入式应用领域中独占鳌头。本次课设采用的STC89C51单片机是51系列单片机的一种代表,目前51系列单片机是国内目前应用最广泛的一种单片机之一。单片机以其系统硬件构架完整、价格低廉、学生能动手等特点,成为工科学生硬件设计的基础课。2 单片机系统板的介绍本次课设所使用的单片机最小系统板包括以下器件:电源端子(DC +5V),可以USB供电,也可独立电源供电。通用异步串口,采

2、用MAX232做电平转换。STC89C51单片机,支持串口下载和单步调试 ZLG7290管理芯片,是IIC总线通信的键盘扫描和数码管显示芯片,自带8M晶振,最多可扫描64个键盘和8个数码管。各种颜色的LED发光二极管共9个,其中8个接于P1口做LED显示,还有一个做电源灯显示。TLC549,8位串行AD。TLC5615,10位串行DA。还有其他电阻电容若干,系统板一个,大按键开关两个,用于中断控制和通信开关。利用STC51系列特有的ISP在线编程,方便我们初学者的二次开发,省去大量芯片烧写时间。USB电源线供电和外接供电并存,方便学生在寝室使用。电源保护电路,有效防止电源接反对CPU造成的损害

3、。增加专门的键盘扫描和数码管显示芯片,只占用2个I/O口和一个外部中断就能完成8个数码管显示和最多64个键盘扫描。增加了I/O口键盘扫描,2种扫描方式可通过跳线由用户自己选择。所有I/O口均用引脚引出,方便用户扩展。外部中断0和外部脉冲记数按键复用,通过跳线,用户即可以进行外部中断实验,也可以进行外部T0记数实验。增加了串行的AD和DA芯片,可直接在开发板上进行AD和DA的实验。3 有效值测量程序流程图本次课设的任务是利用自己亲手做的单片机最小系统,通过编程和调试,实现正弦波的有效值测量,并用数码管将测量的有效值显示出来。其过程是先通过A/D采样取出最大值,然后根据定义计算出有效值,通过进制转

4、换将16进制转换称10进制BCD码,把查表得到的码形值通过STC89C51单片机的IIC总线方式写到ZLG7290中用数码管显示,流程图如图3.1所示。图3.1 有效值测量程序流程图4 A/D转换部分本次课设的任务是实现正弦波有效值的测量,一般有效值的测量主要有平均值法峰值法,真有效值转换芯片测量等方法。本次课程设计采用TI公司的串行A/D转换芯片TLC549测量交流信号,再根据有效值的定义式求得其有效值。4.1 TLC549功能简介TLC549 是以8 位开关电容逐次逼近A/D 转换器为基础而构造的CMOS A/D 转换器。它设计成能通过3 态数据输出和模拟输入与微处理器或外围设备串行接口。

5、TLC549 仅用输入/输出时 钟 (I/O CLOCK )和芯片选择 (CS )输入作数据控制。TLC549 的I/O CLOCK 输入频率最高可达 1.1MHz。转换结果有DOUT脚读出。其外围管脚如图4.1所示。图4.1 TLC549的外围管脚图当输入的模拟电压大于REF+端电压时,TCL549输出为FFH,当输入的模拟电压小于REF-端电压时,TCL549输出00H。使用时通常将REF-端与GND相连。TCL549的工作时序如图4.2所示。图4.2 TCL549的工作时序图端为高电平时,DOUT端为高阻态。当跳变为低电平经过1.7us后,上次转换结果的D7位被放置在DOUT端。在随后的

6、4个I/O CLOCK的下降沿,分别输出D6、D5、D4、D3位。在输出D3位的同时,启动片内采样电路,对模拟输入采样,在其后的3个I/O CLOCK的下降沿,分别输出D2、D1、D0位,第8个I/O CLOCK的下降沿启动片内的保持电路,在DOUT端输出的数据无效。此后,应将端拉为高电平,并至少保持17us,以使TLC549完成一次A/D转换。重复上述过程可读出本次转换的结果,其过程如图4.3所示。图4.3 AD转换原理框图若定义STC89C51单片机的P1.2口为片选信号控制,P1.3口为A/D转换后输出结果读取端,P1.4口为TLC549的时钟输入端,则TCL549与单片机的硬件连接如图

7、4.4所示。图4.4 TCL549与单片机的硬件连接4.2 A/D转换的驱动程序AD:MOV R2,#08H ;第一次采样CLOCK的8个脉冲CLR P1.2 ;CS变为低电平NOPNOPNOPL 3:MOV C,P1.3 ;对模拟输入采样,读出结果OUTMOV A,20HRLC AMOV 20H,ALCALL PULSE ;调用产生CLK时钟脉冲子程序DJNZ R2,L3MOV R2,#24H ;A/D转换的36个时钟周期SETB P1.2 ;CS变为高电平,开始保持和转换L 4:LCALL PULSEDJNZ R2,L4RETPULSE:SETB P1.4 ;p1.4输出高电平,CLOCK

8、时钟NOPNOPNOPCLR P1.4RET5 有效值的计算根据有效值的定义,有效值等于最大值除以,为了计算方便,程序中取为1.414,A/D转换输出的结果(设为M)是16进制的数,最大为#0FFH,对应的是基准电压,约为4.2V,所以每个十六进制的单位1对应的电压是,有效值为 。在实验程序中先取出采样结果M,然后乘以12(即#0CH),再将所得的结果(也是十六进制)转换成十进制BCD码,其计算和转换的流程图如图5.1所示。图5.1 有效值计算的流程图按照上面介绍的有效值近似计算方法和结果进制转换的过程,可以编写出计算有效值的实验程序如下:MOV A,21H ;A/D转换的结果存于21H中MO

9、V B,#0CHMUL ABMOV 39H,B ;得到的新的16进制数高字节放39H中,低字节放40H中MOV 40H,AHUAN:MOV A,39H ;将存放于39H单元中待转换的16进制数高字节存于AMOV B,#0AHDIV ABMOV 41H,A ;商送41H单元暂存MOV A,B ;余数送回AMOV 42H,40H ;待变换16进制数的低字节送42H单元暂存ANL 42H,#0F0H ;屏蔽低半字节ADD A,42H ;高字节除#0AH后余数与低字节的前半字节相加,;后半字节换位使上次除法余数仍在高位SWAP AMOV B,#0AHDIV ABMOV 43H,A ;商送43H单元暂存

10、MOV A,B ;余数送到ASWAP A ;使余数处在高半字节位数ANL 40H,#0FH ;屏蔽待转换数低字节的高半字节ADD A,40HMOV B,#0AHDIV ABMOV 7FH,B ;得到待转换的最低位的BCD码值MOV 44H,A ;商送44H单元暂存MOV A,41HSWAP AADD A,43HMOV B,#0AHDIV ABMOV 41H,AMOV A,BSWAP AADD A,44HMOV B,#0AHDIV ABMOV 42H,A ;以上是将前面计算所得到的商再除以#0AH,;以得到倒数第二位的BCD码值MOV 7EH,BMOV A,41HSWAP AADD A,42HM

11、OV B,#0EHDIV ABMOV 7DH,BMOV 7CH,ARET6 显示部分6.1 ZLG7290介绍本次课程设计的单片机系统板采用ZLG7290管理芯片来控制键盘和LED数码管,ZLG7290芯片负责LED显示及键盘扫描,它与单片机采用IIC总线方式进行通信。ZLG7290的IIC接口传输速率可达32kbit/s, 容易与处理器接口,并提供键盘中断信号,提高主处理器时间效率.ZLG7290的从地址(slave address)为70H(01110000B).ZLG7290 内可通过IIC总线访问的寄存器地址范围为 00H到17H,任一寄存器都可按字节直接读写,也可以通过命令接口间接读

12、写或按位读写。它的控制和状态查询全部都是通过读/写寄存器实现的,用户只需像读24C02内的单元一样,即可实现对ZLG7290 的控制。ZLG7290与数码管的连接如图6.1所示。其中ZLG7290的引脚SCL和SDA分别与STC89C51单片机的P1.0和P1.1相连,实现IIC总线方式通信。图6.1 ZLG7290与数码管的连接图6.2 IIC通信的原理通信总线是串行传输总线,通过定义单片机两根引脚(串行时钟线SCL和串行数据线SDA)能实现全双工同步数据传送。在数据传输时,发送开始后,主器件送出8位控制字节,以选择从器件并控制总线传送方向,其后再传送数据。每传送完一个字节后,接收器都必须发

13、一位应答信号ACK,发送器确定后,再发下一数据。每一数据都是先发高位,再发低位,在全部数据传送结束后主控制器发送停止信号。还要注意写时钟SCL和SDA的发送起始和停止条件程序时,要根据单片机晶振来确定NOP指令条数,由于我们用的外部时钟晶振是11.0592M,需要四个NOP指令。通信程序设计流程图如图6.2所示。图6.2通信程序设计流程图6.3 ZLG7290的驱动程序 ZLG7290与单片机是通过IIC总线方式通信的,所以只需要一根数据线和一根时钟线即可完成通信。而在通信之前和之后需要编写满足起始和停止条件的程序,为保证数据成功传输,要有发送应答位和非应答位子程序。实验程序如下:多个字节数据

14、发送子程序:WRNBYT: PUSH PSWWRNBYT1: SETB RS0 SETB RS1 CALL STA MOV A,SLA CALL WRB CALL CACK JB F0,WRNBYT MOV R0,#MTD MOV R5,NUMBYTWRDA: MOV A,R0 LCALL WRB LCALL CACK JB F0,WRNBYT1 INC R0 DJNZ R5,WRDA LCALL STOP POP PSW RET发送一个字节子程序:WRB: MOV R7,#8WLP: RLC A JC WR1 CLR SDA SETB SCL NOP NOP NOP NOP CLR SCL

15、DJNZ R7,WLP RETWR1: SETB SDA SETB SCL NOP NOP NOP NOP CLR SCL CLR SDA DJNZ R7,WLP RET应答位检查子程序:CACK: SETB SDA SETB SCL NOP NOP MOV C,SDA MOV F0,C CLR SCL NOP NOP RET发送起始位子程序:STA: SETB SDA SETB SCL NOP NOP NOP NOP CLR SDA NOP NOP NOP NOP CLR SCL RET发送停止位子程序:STOP: CLR SDA SETB SCL NOP NOP NOP NOP SETB

16、SDA NOP NOP NOP NOP CLR SCL RET7 刷新频率的计算刷新频率即数据更新一次所需要的时间,也就是一个完整的抽样周期。在一个抽样周期内完成很多个A/D转换的抽样取值,抽样的次数由R3和R4确定,程序中R3为#0AH,R4等于#0C8H,所以抽样次数为2000次,即每进行2000次A/D转换之后取出最大值,并且计算出有效值加以显示,然后进行下一轮抽样,也是取2000次/AD转换的最大值,并且计算出有效值加以显示(这样显示的数据就得到了更新)。而这2000次的A/D转换中每两次A/D转换的之间的间隔时间由定时器决定,由于TH0为#0FFH,TL0为#0A4H,所以每次AD抽

17、样间隔约为100us,这样每一轮AD转换之后取最大值计算出有效值并显示的时间间隔约为200ms。8 误差分析通过单片机测量有效值的方法有多种,如利用有效值的定义式通过积分来求,以为采样间隔对连续采样转换N次,且,则有式中为各采样值的瞬时值,就其原理而言,在不考虑AD转换精度的情况下,只要保证采样时间间隔的准确度,得到的有效值即具有较高的精度。但是此方法要求的程序比较复杂,而且计算转换过程较多,为了使实验程序简单易懂而精度要求在允许的误差范围内,我们采用一种近似算法,也就是取最大值,然后除以得到有效值。经过反复实验采集数据分析,得到误差分析如表1所示。表1 测量差误分析单 位:V一组二组三组四组

18、五组六组七组八组九组十组输入电压0.360.761.321.561.882.282.63.03.323.72实际有效值0.270.540.91.121.411.691.942.242.512.81测量有效值0.280.560.941.181.471.701.962.232.522.96误 差3.6%3.6%4.3%5.1%4.1%0.6%1.0%0.4%0.4%5.1%本次实验的AD转换芯片输入的基准电压约为4.2V,测量的正弦波信号的最大值不得超过4V,由实验结果可知,当输入的信号的最大值越接近基准电压,其测量结果误差越大。9 小结与体会通过这次单片机课程设计,使我的编程能力得到了很大的提高

19、,在大脑里面形成了初步的体系结构,以致于在编程时能够灵活的运用和变更。回顾整个设计过程,从硬件焊接到软件编程,从小程序的编写调试到整个单片机功能的了解,从分析到实际运用,都经过了许多思考过程。刚开始对整个系统板不是很熟悉,有很多芯片的用法都了解,以至于编程调试时遇到了很多的困难,失败了很多次。后来上网查资料和一些技术文献,在图书馆借了很多有关单片机的书,慢慢分析调试,最后问题都一一解决了。总结下来,这三周学会了很多东西,例如知道了在编写大程序的时候要把握一些原则,要不然很容易出错,而且很难查出错在哪里,还学会了ZLG7290键盘和数码管管理芯片的使用,以及A/D转换芯片TLC549的使用和驱动

20、程序的编写,觉得自己的专业知识又得到了丰富。参考文献1 李群芳主编.单片微型计算机与接口技术.北京:电子工业出版社,20052 宋 浩主编.单片机原理及应用.北京:清华大学出版社,20053 凌玉华编著.单片机原理及应用系统设计.北京:中南大学出版社,20064 蒋力培编著.单片微机系统实用教程.北京:机械工业出版社,20045 潘 昊编著.单片机十六进制数与BCD码转换新探讨(摘要),19976 佟为明主编. TLC549在交流有效值测量中的应用(摘要),2006附录一 设计总体电路图附录二 设计总程序NUMBYT EQU 5DH ;发送的个数,包括第一位地址SLA EQU 5EH ;控制字

21、或7290的地址MTD EQU 5FH ;7290存“显示的数字”的寄存器的地址10HSCL EQU P1.0 ;时钟脉冲SDA EQU P1.1 ;发送数据ORG 0000HAJMP MAINORG 0030HMAIN:MOV SP,#30H MOV 21H,#0 MOV R3,#0AH MOV R4,#0C8H LCALL AD MOV TMOD,#01H MOV TH0,#0FFH MOV TL0,#0A4H SETB EA SETB ET0SS: SETB TR0 JNB TF0,$ CLR TF0 LCALL AD MOV A,21H CJNE A,20H,SS2 JMP SS3SS

22、2: JNC SS3 XCH A,20H MOV 21H,ASS3: MOV TH0,#0FFH MOV TL0,#0A4H DJNZ R4,SS MOV R4,#0C8H DJNZ R3,SS MOV A,21H MOV B,#0CH MUL AB MOV 39H,B MOV 40H,A LCALL HUAN LCALL MA LCALL XIAN MOV TH0,#0FFH MOV TL0,#0A4H MOV 21H,#0 MOV R3,#0AH MOV R4,#0C8H SJMP SS查表程序MA: MOV DPTR,#TAB MOV R0,#7FH MOV A,R0 MOVC A,A+

23、DPTR MOV 60H,A DEC R0 MOV A,R0 MOVC A,A+DPTR MOV 61H,A DEC R0 MOV A,R0 MOVC A,A+DPTR MOV 62H,A MOV DPTR,#TAB1 DEC R0 MOV A,R0 MOVC A,A+DPTR MOV 63H,A RETTAB:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0E6HTAB1:DB 0FDH,61H,0DBH,0F3H,67H,0B7H,0BFH,0E1H,0FFH,0E7H进制转换程序HUAN:MOV A,39HMOV B,#0AHDIV ABMOV

24、 41H,AMOV A,BMOV 42H,40HANL 42H,#0F0HADD A,42HSWAP AMOV B,#0AHDIV ABMOV 43H,AMOV A,BSWAP AANL 40H,#0FHADD A,40HMOV B,#0AHDIV ABMOV 7FH,BMOV 44H,AMOV A,41HSWAP AADD A,43HMOV B,#0AHDIV ABMOV 41H,AMOV A,BSWAP AADD A,44HMOV B,#0AHDIV ABMOV 42H,AMOV 7EH,BMOV A,41HSWAP AADD A,42HMOV B,#0AHDIV ABMOV 7DH,BM

25、OV 7CH,ARET单片机读A/D转换结果AD: MOV R2,#08H CLR P1.2 NOP NOP NOPL3:MOV C,P1.3 MOV A,20H RLC A MOV 20H,A LCALL PULSE DJNZ R2,L3 MOV R2,#24H SETB P1.2L4: LCALL PULSE DJNZ R2,L4 RETPULSE: SETB P1.4 NOP NOP NOP CLR P1.4 RET显示子程序XIAN:: MOV MTD,#10H MOV NUMBYT,#05H MOV SLA,#70H LCALL WRNBYT RETWRNBYT: PUSH PSWWRNBYT1:SETB RS0 SETB RS1 CALL STA MOV A,SLA

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1