单片机课设基于STC89LE516AD单片机的数字电压表设计说明_第1页
单片机课设基于STC89LE516AD单片机的数字电压表设计说明_第2页
单片机课设基于STC89LE516AD单片机的数字电压表设计说明_第3页
单片机课设基于STC89LE516AD单片机的数字电压表设计说明_第4页
单片机课设基于STC89LE516AD单片机的数字电压表设计说明_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、 . 题目:数字电压表设计(一)摘要数字电压表是诸多数字化仪表的核心与基础,电压表的数字化是将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,这数字表的部核心部件是AD转换器,转换器的精度很大程度上影响着数字万用表的准确度1.本设计实现对两路05V模拟电压进行循环采集,并在在1.25V和2.5V作为两路输入的报警值,指示灯闪烁和蜂鸣器发声,以示警告.可查看制定通道的电压值等功能。本文中数字电压表的控制系统采STC89LE516AD为主要硬件,实现简易数字式直流电压表的硬件电路与软件设计。关键词:单片机;数字电压表;AD转换;模拟信号(二)总体方案设计方案是利用单片机系统与模数转换

2、芯片、显示模块等的结合构建数字电压表。由于单片机的发展已经成熟,利用单片机系统的软硬件结合,可以组装出许多的应用电路来。此方案的原理是模数(A/D)转换芯片的基准电压端+3V,被测量电压输入端分别输入基准电压和被测电压。模数(A/D)转换将被测量电压输入端所采集到的模拟电压信号转换成相应的数字信号,然后通过对单片机系统进行软件编程,使单片机系统能按规定的时序来采集这些数字信号,通过一定的算法计算出被测量电压的值。最后单片机系统将计算好了的被测电压值按一定的时序送入显示电路模块加以显示。图11 系统总体方案设计此设计介绍的数字电压表是以STC89LE516AD单片机为核,由电压采集电路、单片机、

3、电压显示电路等几部分组成。该系统的先进性在于可以数字化显示电压。该系统的数字电压表电路简单,所用的元件较少,成本低,调节工作可实现自动化。还可以方便地进行2路AD转换量的测量,远程测量结果传送等功能。数字电压表可以测量05V的2路输入电压值,并在四位LED数码管上轮流显示或单路选择显示。该电压表有以下几个功能:1. 对两路05V模拟电压进行循环采集,每路采集3次,取平均值,采集的数存入存并显示。2. 测量围为0-5V,小数点后保留两位,误差小于等于正负0.02.3. 显示中,其中最高位显示通道提示符A-B,低三位显示实际的电压。4. 键盘控制,可查看制定通道的电压值。5. 将在1.25V和2.

4、5V作为两路输入的报警值,当结果超过报警值时,指示灯闪烁和蜂鸣器发声,以示警告。(三)硬件设计<一>数字电压表中应用的芯片1. STC89LE516AD单片机 图2-1 STC89LE516ADSTC89LE516AD单片机2是单时钟/ 机器周期(1T)的兼容8051 核单片机,是高速/ 低功耗的新一代8051 单片机,全新的流水线/ 精简指令集结构,部集成MAX810 专用复位电路。STC89LE516AD单片机主要性能:高速:1 个时钟/ 机器周期,RISC 型8051 核,速度比普通8051 快12 倍宽电压:5.53.4V,2.03.8V(STC12LE5410AD 系列)

5、低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)工作频率:035MHz,相当于普通8051:0420MHz- 实际可到48MHz,相当于8051: 0576MHz时钟:外部晶体或部RC 振荡器可选,在ISP 下载编程用户程序时设置 12K/10K/8K/6K/4K/2K 字节片Flash 程序存储器,擦写次数10 万次以上 512 字节片RAM 数据存储器芯片E2PROM 功能 ISP / IAP,在系统可编程/ 在应用可编程,无需仿真器 10 位ADC,8 通道,STC12C2052AD系列为8 位ADC 4 通道捕获/ 比较单元(PWM/PCA/CCU),STC12C2052AD 系列为

6、2 通道- 也可用来再实现4 个定时器或4 个外部中断(支持上升沿/ 下降沿中断) 2 个硬件16 位定时器,兼容普通8051 的定时器。4 路PCA 还可再实现4 个定时器硬件看门狗(W D T )高速SPI 通信端口全双工异步串行口(UART),兼容普通8051 的串口先进的指令集结构,兼容普通8051 指令集、正常工作模式:典型功耗 2.7mA - 7mASTC89LE516AD的特点:1. 增强型 1T 流水线/ 精简指令集结构 8051 CPU2. 工作电压:5.5V - 3.4V(5V 单片机) / 3.8V - 2.0V(3V 单片机)3. 工作频率围:0 - 35 MHz,相当

7、于普通8051 的 0420MHz.实际工作频率可达48MHz.4. 用户应用程序空间12K / 10K / 8K / 6K / 4K / 2K 字节5. 片上集成 512 字节 RAM6. 通用I/O 口(27/23 个),复位后为:准双向口/ 弱上拉(普通8051 传统I/O 口)可设置成四种模式:准双向口/ 弱上拉,推挽/ 强上拉,仅为输入/ 高阻,开漏每个I/O 口驱动能力均可达到20mA,但整个芯片最大不得超过55mA7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片8. EEPROM 功能9. 看门

8、狗10.部集成MAX810 专用复位电路(外部晶体20M 以下时,可省外部复位电路)11.时钟源:外部高精度晶体/ 时钟,部R/C 振荡器用户在下载用户程序时,可选择是使用部R/C 振荡器还是外部晶体/ 时钟常温下部R/C 振荡器频率为:5.2MHz 6.8MHz精度要求不高时,可选择使用部时钟,但因为有温漂,应认为是4MHz 8MHz12.共2 个16 位定时器/ 计数器13.外部中断2 路,下降沿中断或低电平触发中断,Power Down 模式可由外部中断低电平触发中断方式唤醒1 4 .P W M ( 4 路)/ P C A(可编程计数器阵列),也可用来再实现4 个定时器- 也可用来再实现

9、4 个定时器或4 个外部中断(上升沿中断/ 下降沿中断均可支持)15. ADC, 10 位精度ADC,共8 路16. 通用异步串行口(UART)17. SPI 同步通信口,主模式/ 从模式18.工作温度围: 0 - 75 / -40 - +85STC89LE516AD系统复位系统上电,初始化程序将70H77H存单元清0,P2口置0。系统默认为循环显示8个通道的压值,当进行一次测量后,将显示每一通道的AD转换值,每个通道显示时间为1s。70H77H存单元存放采样值,78H7BH存单元存放显示数据,依次为各位、通道标志位。ISP_CONTR: ISP/IAP 控制寄存器,地址在 0E7H 单元B7

10、B6B5B4B3B2B1B0ResetValueISPENSWBSSWRSTCMD_FAIL1WT2WT1WT00000,1000ISPEN: ISP/IAP 功能允许位。0:禁止ISP/IAP 编程改变Flash,1:允许编程改变FlashSWBS: 软件选择从用户应用程序区启动(0 ),还是从ISP 程序区启动(1 )。要与SWRST 直接配合才可以实现SWRST: 0: 不操作; 1 : 产生软件系统复位,硬件自动清零。MOV ISP_CONTR, #00100000B ;SWBS = 0(选择AP 区), SWRST = 1(软复位)MOV ISP_CONTR, #00100000B

11、;SWBS = 0(选择AP 区), SWRST = 1(软复位MOV ISP_CONTR, #01100000B ;SWBS = 1(选择ISP 区), SWRST = 1(软复位)MOV ISP_CONTR, #01100000B ;SWBS = 1(选择ISP 区), SWRST = 1(软复位)选择STC89LE516AD系列单片机的理由:超强抗干扰:1 、高抗静电(E S D 保护)2 、轻松过4KV 快速脉冲干扰(EFT 测试)3 、宽电压,不怕电源抖动4 、宽温度围, - 4 0 8 5 5 、I / O 口经过特殊处理6 、单片机部的电源供电系统经过特殊处理7 、单片机部的时钟

12、电路经过特殊处理8 、单片机部的复位电路经过特殊处理9 、单片机部的看门狗电路经过特殊处理2 74LS164单片机图2-2 74LS16474LS164是为8位移位寄存器,串行输入并行出。CLOCK 时钟输入端 CLEAR 同步清除输入端A.B 串行数据输入端当清除端为低电平时输出端为低电平,串行数据输入端可控数据。当A.B任何一个为低电平时,禁止新数据输入。当A,B任何一个为高电平时则可以输入新数据,并在CLOCK上升沿作用下决定Q0的状态。74LS164 是8 位串入并出移位寄存器。下图是利用74LS164 扩展二个8 位输出口的接口电路。当单片机串行口工作在方式0 的发送状态时,串行数据

13、由P3.0(RXD)送出,移位时钟由P3.1(T一位地移入74LS164 中。需要指出的是,由于74LS164 无并行输出控制端,因而在串XD)送出。在移位时钟的作用下,串行口发送缓冲器的数据一位行输入过程中,其输出端的状态会不断变化,故在某些应用场合,在74LS164 的输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据。下面是将RAM 缓冲区30H、31H 的容串行口由74LS164 并行输出的子程序。3. LED数码图2-3 74LS164八段发光二极管组成的数码显示器的外行,利用字段的不同组合可分别显示出09十个数字。该设计选用的是发光二极管数码显示器的共阴极接地此时译码器输

14、出高电平如图三所示。该数码管的工作原理如图四所示,其中R为限流电阻,74LS164为译码器,通过8421BCD码的输入控制各个发光二极管的导通从而显示数字。<二>数字电压表中应用的部分电路分析31.电源部分图2-3 +5V电源该电路通过整流桥整流,再通过采用CW7805三端稳压片即可满足要求,该电源提供的电能可靠,可以满足实验要求,220V交流电压经过变压器得到8V电压,再经整流电路得到9V左右电压,经CW7805三端稳压片得到+5V/1.5A的电源。图2-4 +3V电源该电路可以产生+3V电压,因为STC89LE516AD需要+3V电压做A/D基准电压。该电路里利用LM117等组

15、成电路如上。2.显示电路图2-5 显示电路设计中采用的是8段LED数码管来显示电压值。LED具有耗电低、亮度高、视角大、线路简单、耐震与寿命长等优点,它由8个发光二极管组成,其中7个按8字型排列,另一个发光二极管为圆点形状,位于右下角,常用于显示小小数点,把8个发光二极管连在一起,公共端接高电平,共阳极接法。,我们采用共阳极接法,当发光二极管导通时,相应的一段笔画或占就发亮,从而形成不同的发光字符。其中8段分别命名为dp g f e d c b a。当串行口被设置在方式0发送状态时,串行数据由P3.0送出,移位脉冲由P3.1送出。在移位脉冲的作用下,串行口发送缓冲器的数据逐位地从P3.0串口移

16、入74LS164中,在经过电阻送到8段LED数码管显示,3. 复位电路 图2-6 复位电路按键手动电平复位是通过RST端经电阻与电源vcc接通来实现的,复位引脚RST通过一个施密特触发器与复位电路相连,施密特触发器用来抑制噪声,在每一个S5P2,施密特触发器出电平由复位电路采样一次,然后才能得到部复位操作所需的复位信号,4.晶振电路图2-7 晶振电路采用部时钟方式使用现成的外部振荡器产生脉冲信号,晶体的频率越高,系统的时钟频率越高,单片机的运行速度越快。晶体和电容应尽量安装的与单片机接近,减少寄生电容。更好的保证振荡器的稳定工作。5.键盘电路图2-8 键盘电路由于采用两路进行采集,而且要进行查

17、看指定通道的电压值。所以采用两个按键进行查看其电压值。一键一线,各键相互独立,每个键各连一条I/O口线,通过检测输入线的电平状态就可以判断那个键被按下。表3-1 键的定义按键键名功能S1选择A通道LED显示A通道电压S2选择B通道LED显示B通道电压S3复位键系统复位6.报警电路图2-9 报警电路利用三极管进行放大驱动LED或蜂鸣器进行工作,将在1.25V和2.5V作为两路输入的报警值,当结果超过报警值时,指示灯闪烁和蜂鸣器发声,以示警告。在数字电路中,是以脉冲信号驱动蜂鸣器以产生声音,若要以C51产生声音,可利用程序产生频率,送到IO口,再从该点连接到蜂鸣器的驱动电路,即可驱动蜂鸣器,这里采

18、用的是以PNP晶体管放大电路。数字微处理电路输出高电位时,由IC部流出的电流很小。虽然我们可以利用高增益晶体管,在连接上拉电阻,以提供较大的驱动电流,以驱动蜂鸣器或其他负载。而数字微处理电路输出低电位时,IC可吸入较大电路,连接PNP晶体管构成的简单放大电路,即可提供足够的驱动能力。(思)系统软件设计<一>流程图1. 主流程图4图3-1 主程序流程图对两路05V模拟电压进行循环采集,每路采集3次,取平均值,采集的数存入存并显示。对其扫描的过程进行了概括和分析。2. 显示电路流程图图3-2.1 A/D转换流程图图3-2.2 显示电路流程图键盘控制,可查看制定通道的电压值。显示中,其中

19、最高位显示通道提示符A-B,低三位显示实际的电压。3.报警电路流程图图3-3 报警电路流程图将在1.25V和2.5V作为两路输入的报警值,当结果超过报警值时,指示灯。数字微处理电路输出高电位时,由IC部流出的电流很小。虽然我们可以利用高增益晶体管,在连接上拉电阻,以提供较大的驱动电流,以驱动蜂鸣器或其他负载。而数字微处理电路输出低电位时,IC可吸入较大电路,连接PNP晶体管构成的简单放大电路,即可提供足够的驱动能力。4.按键电路流程图由于采用两路进行采集,而且要进行查看指定通道的电压值。所以采用两个按键进行查看其电压值。一键一线,各键相互独立,每个键各连一条I/O口线,通过检测输入线的电平状态

20、就可以判断那个键被按下。(四)结论总结1、课题总结通过两周的设计和研究,对STC89LE516AD为主要硬件,实现简易数字式直流电压表的硬件电路与软件设计。对电源,报警电路,单片机串口和74LS164扩并口实现LED静态显示等进行了深入的分析和应用,并对protel 99 se进行了学习和应用。2、心得课设周的设计使得摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的专业基础知识,解决实际工程问题的能力,同时也提高我查阅文献资料、设计手册、设计规以与电脑制图等其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以与对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富,

21、并且意志品质力,撑受能力与耐力也都得到了不同程度的提升。本课题使我熟悉了单片机设计原则,对单片机部构造、工作原理、与其它芯片的接口技术与其工作情况有了更进一步了解,虽然是很简单的运用,对我的独立的思考问题,积极的去解决问题的能力进行了锻炼和提升,这次课设使我对单片机应用产生了浓厚的研究激情。参考文献1振忠数字电压表发展概况和原理:数字电压表J电讯工程1998(2).3555.2丁明亮,唐前辉STC89LE516AD系列单片机应用设计与仿真M:航空航天大学20090120.3宋凤娟。军,国忠基于单片机的数字电压表设计J制造业自动化,2007,29(2).89904苗红霞单片机实现数字电压表的软硬

22、件设计J河海大学分校学报,2002(3):23795夏路易单片机技术基础教程与实践M:电子工业2008,1801946教坤善久,裘雪红单片徽型计算机原理与软件编程应用M:电子科技大学1998,122270.附录<一>程序源代码 6;*; 主程序;*MAIN: LCALL DISP1 JNB TIME1SOK,MAIN CLR TIME1SOKJNB TEMPONEOK,MAIN2LCALL READTEMP1LCALL CONVTEMPLCALL DISPBCDLCALL DISP1 MAIN2: LCALL READTEMPSETB TEMPONEOKLJMP MAIN;*;工作

23、存定义;*BITST DATA 20HTIMEISOK BIT BITST.1TEMPONEOK BIT BITST.2TEMPL DATA 26HTEMPH DATA 27HTEMPHC DATA 28HTEMPLC DATA 29H;*;*;系统初始化;* ORG 100HSTART: MOV SP,#60HCLSMEM: MOV R0,#20H MOV R1,#60HCLSMEM1: MOV R0,#00H INC R0 DJNZ R1,CLSMEM1 MOV TMOD,#00100001B MOV TH0,#TIMEL MOV TL0,#TIMEH SJMP INITERROR: NO

24、P LJMP START NOPINIT: NOP SETB ET0 SETB TR0 SETB EA MOV PSW,#00H CLR TEMPONEOK LJMP MAIN;*; 定时器0中断服务程序;*T0IT: PUSH PSW MOV PSW,#10H MOV TH0,#TIMEH MOV TL0,#TIMEL INC R7 CJNE R7,#32H,T0ITI MOV R7,#00H SETB TIMEISOKTOIT1: POP PSW RETI;*;*;子程序区;*键盘扫描函数;*void read_key()/键盘扫描函数static uchar key_state=0;sw

25、itch(key_state)case key_state0:if(key=0)key_state=key_state1;break; case key_state1:if(key=0) TR0=1;display_zifu(1,0,tab3);key_state=key_state2; elsekey_state=key_state0;break;case key_state2: if(key)key_state=key_state0;break;void main() long float dat;long float dat_aver,dat1,dat2,dat3,dat4,dat5;/

26、定义5个随机电压值变量uchar flag; /后五秒取随机电压的标志init_timer0();init_1602();delay(10); while(1) dat=read_value();if(dat>=100) /当电压值大于1V时,用V显示,否则用mV显示display_zifu(0,1,tab2);display(0,7,dat);display_zifu(0,13,tab0);elsedisplay_zifu(0,1,tab2);display(0,7,dat*1000);display_zifu(0,13,tab1);read_key(); /当键盘按下时,计算后五秒的

27、平均电压值if(t=20)t=0;flag+;if(flag=1)dat1=dat;if(flag=2)dat2=dat;if(flag=3)dat3=dat;if(flag=4)dat4=dat;if(flag=5)dat5=dat;dat_aver=(dat1+dat2+dat3+dat4+dat5)/5;display(1,7,dat_aver);display_zifu(1,13,tab0);dat_aver=0; if(flag=8)flag=0;write_(0x01);TR0=0; void timer0() interrupt 1 /定时器中断函数TH0=(65536-5000

28、0)/256; /重新放入初始值TL0=(65536-50000)%256;t+; *报警函数程序; *void SK()/报警函数 int Htemp,Ltemp,Ntemp; /定义上下限电压与正值 Htemp=hbai*100+hshi*10; Ltemp=lbai*100+lshi*10;Ntemp=bai*100+shi*10+ge;delay_n10us(50); if(Htemp<Ntemp) speak=0; /当正常值大于上限值时,蜂鸣器叫 if(Htemp>Ntemp) speak=1; if(Ltemp>Ntemp) speak=0; /当正常值小于下限值时,蜂鸣器叫if(Ltemp<Ntemp) speak=1; ; *; 小数部分码表; *TEMPDOTTAB: DB 00H, 01H, 01H, 02H, 03H, 03H, 04H,04H,05H,06HDB 06H,07H,08H,09H,09H; *; 显示区BCD码温度值刷新子程序; *D

温馨提示

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

评论

0/150

提交评论