1、单片机课设基于STC89LE516AD单片机的数字电压表设计 摘要2一、总体方案设计 3二、系统硬件设计42.1 控制器单片机42.2电源电路62.3 显示电路72.4 键盘电路82.5 晶振电路102.6 复位电路102.7 报警电路11三、系统软件设计123.1 主流序程图123.1 显示电路流程图133.3 报警电路流程图14四、结论 14五、参考文献15附录16摘要在现代检测技术中,常需用高精度数字电压表进行现场检测,将检测到的数据送入微计算机系统,完成计算、存储、控制和显示等功能。本文中数字电压表的控制系统采用单片机实现数字电压表的硬件电路与软件设计。该数字电压表电路简单,还可以方便
2、地行2路数据采集,远程测量结果传送等功能。数字电压表是诸多数字化仪表的核心与基础,电压表的数字化是将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,这有别于传统的以指针加刻度盘进行读数的方法,避免了读数的视差和视觉疲劳。采用单片机的数字电压表,它的精度高、抗干扰能力强。可扩展性强、集成方便,还可与PC进行实时通信。目前,有各种单片A/D转换器构成的数字电压表,以被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能测量领域,本文采用内置AD转换器对输入模拟信号进行转换,STC89C51RC对转换的结果进行运算和处理,最后驱动输出装置显示数字电压信号。关键词:单片机;数字电压
3、表;模拟信号;AD转换一、总体方案设计 本设计利用内置A/D转换的单片机STC89LE516AD、显示电路、按键电路、振荡电路以及报警电路等构成数字电压表。其原理是晶振电路为单片机提供稳定的时钟周期。采集电路将基准电压和被测电压分别输入到内置A/D转换器的基准电压端及被测电压输入端。模数转换器将被测电压输入端采集的模拟信号转换为相应的数字信号, 由于单片机的软件编程,使单片机系统能够按照规定的时序采集这些数字信号,这些数字信号通过一定的算法计算得出被测电压相应的电压值,每三次取平均值,被测出的平均电压值以一定的时序在显示电路上显示。当计算值达到报警电路程序设定值时,发出报警脉冲,使报警电路动作
4、,发出报警。复位电路的功能主要用于单片机的复位,向其输入大于两个机器周期的高电平,即可使单片机复位。键盘电路用于查看指定通道的显示的电压值。晶振电路 复位电路 图1-1 系统总体方案设计 该系统的先进性在于可以数字化显示电压。该系统的数字电压表电路简单,所用的元件较少,成本低,调节工作可实现自动化。数字电压表可以测量05V的2路输入电压值,并在LED数码管上轮流显示或单路选择显示。本数字电压表的设计要求1、对两路05V模拟电压进行循环采集,每路采集3次,取平均值,采集的数存入内存并显示。2、测量范围为0-5V,小数点后保留两位,误差小于等于正负0.02.3、显示中,其中最高位显示通道提示符A-
5、B,低三位显示实际的电压。4、键盘控制,可查看制定通道的电压值。5、将在1.25V和2.5V作为两路输入的报警值,当结果超过报警值时,指示灯 闪烁和蜂鸣器发声,以示警告。 二、系统硬件设计2.1 控制器单片机STC89LE516AD系列单片机是新一代超强干扰、高速、低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟机器周期和6时钟机器周期可以任意选择,内置A/D转换电路。引脚图如下: 图2-1 STC89LE516AD单片机引脚图VCC:电源VSS:接地P0口: P0口是一个8位漏极开路的双向I/O口。作为输出口,需要接上拉电阻。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程
6、序和数据存储器时,P0口也被作为低8位地址/数据复用P1口:P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,同时也是模拟量输入口,可以对8路模拟量进行模数转换。P2口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2 口送出高八位地址。P3口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口。P3口亦作为特殊功能(第二功能)使用,如表2-1所示。P3.0 RXD(串行输入)P3.1 TXD(串行输出)P3.2 INT0(外部中断0)P3.3 INT0(外部中断0)P3.4 T0(
7、定时器0外部输入)P3.5 T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)表2-1 STC89LE516AD引脚号第二功能RST: 复位输入,晶振工作时,RST脚持续2个机器周期高电平将使单片机复位ALE/PROG: 地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。PSEN: 外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。EA/VPP: 访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。XTAL1:振荡器反
8、相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。2.2电源电路2.2 电源电路.图2-2 +5V电源该电路通过整流桥整流,各级的电容滤波(滤去交流高频信号),再通过采用CW7805三端稳压片即可满足要求,该电源提供的电能可靠,可以满足实验要求。 图2-3 +3V电源该电路可以产生+3V电压,因为STC89LE516AD需要+3V电压做A/D基准。该电路里利用LM117等组成电路如上,为单片机提供稳定直流的3V电源由上图可知 U=(1+R2/R1)* 1.25 ,取R1=240欧姆,则R2=336欧姆,即将R2调至为336欧姆,输出为3V。2.3 显示电路 (1)驱动器
9、件MC14543MC14543是16引脚双列直插式,塑料封转得硬件译码芯片,各引脚的表示功能说明如下A,B,C,D引脚:数据输入引脚,BCD码,D为最高位。a-g:7位字段码输出端PH:驱动方式控制端LD:片内存储器控制端。LD=1时,A-D端数据输入到片内锁存器;LD=0时,输入数据被锁存BI:消隐控制端。当BI=1时,使PH端和a-g端的信号相位相同,不显示字符;当BI=0时,显示字符图2-4 MC14543(2)本系统采用LED数码管动态显示,经过上拉电阻限流,用MC14543作为驱动器件,驱动四个LED数码管显示逐一数字,由于人眼产生的误差,实际看到的是四个数码管同时进行显示。STC8
10、9LE516AD 图2-5 显示电路2.4 键盘电路由于采用两路进行采集,而且要进行查看指定通道的电压值。所以采用两个按键进行查看其电压值。一键一线,各键相互独立,每个键各连一条I/O口线,通过检测输入线的电平状态就可以判断那个键被按下。图2-6 键盘电路2.5 晶振电路采用内部时钟方式使用现成的外部振荡器产生脉冲信号,晶体的频率越高,系统的时钟频率越高,单片机的运行速度越快。时钟电路是单片机的心脏,它控制着单片机的工作节奏。单片机允许的时钟频率是因型号而异的,其典型值为12MHZ。STC89LE516AD内部有一个反相振荡放大器,XTAL1和 XTAL2分别是该反向振荡放大器的输入端和输出端
11、。该反向放大器可配置为片内振荡器,石晶振荡和陶瓷振荡均可采用。本系统使用12MHZ的晶体,电容为30PF,晶体和电容安装的与单片机近似接近,减少寄生电容。更好的保证振荡器的稳定工作。晶振电路的两端分别接于单片机的XTAL1、XTAL2两个端口。图2-7 晶振电路2.6 复位电路按键手动电平复位是通过RST端经电阻与电源VCC接通来实现的,当按键没有按下时,C3起到隔断直流电源的作用,使RST处于低电平状态。当S3按下,将C3短路,使电路导通,RST端为高电平,当时间长到单片机的两个机器周期后,单片机就会复位。复位后,只影响SFR中的内容,内部RAM中的数据不受影响。外部复位有上电复位和按键电平
12、复位。由于单片机运行过程中,其本身的干扰或外界干扰会导致出错,此时我们可按复位键重新开始运行。为了便于本设计运行调试,复位电路采用按键复位方式。图2-8 复位电路2.7 报警电路利用三极管进行放大驱动LED或蜂鸣器进行工作,将在1.25V和2.5V作为两路输入的报警值,当结果超过报警值时,指示灯闪烁和蜂鸣器发声,以示警告。在数字电路中,是以脉冲信号驱动蜂鸣器以产生声音,若要以C51产生声音,可利用程序产生频率,送到IO口,再从该点连接到蜂鸣器的驱动电路,即可驱动蜂鸣器,这里采用的是以PNP晶体管放大电路。数字微处理电路输出高电位时,由IC内部流出的电流很小。虽然我们可以利用高增益晶体管,在连接
13、上拉电阻,以提供较大的驱动电流,以驱动蜂鸣器或其他负载。而数字微处理电路输出低电位时,IC可吸入较大电路,连接PNP晶体管构成的简单放大电路,即可提供足够的驱动能力。图2-9 报警电路(三)系统软件设计3.1 主流序程图图3-1 主程序流程图对两路05V模拟电压进行循环采集,每路采集3次,取平均值,采集的数存入内存并显示。对其扫描的过程进行了概括和分析。3.2 显示电路流程图键盘控制,可查看制定通道的电压值。显示中,其中最高位显示通道提示符A-B,低三位显示实际的电压。显示电路流程图如下。图3-2 显示电路流程图3.3 报警电路流程图将在1.25V和2.5V作为两路输入的报警值,当结果超过报警
14、值时,指示灯。数字微处理电路输出高电位时,由IC内部流出的电流很小。虽然我们可以利用高增益晶体管,在连接上拉电阻,以提供较大的驱动电流,以驱动蜂鸣器或其他负载。而数字微处理电路输出低电位时,IC可吸入较大电路,连接PNP晶体管构成的简单放大电路,即可提供足够的驱动能力。 图3-3 报警电路流程图(四)结论总结1、课题总结通过单片机课程设计,我对内置单片机STC89LE516AD各引脚及功能有了深刻的了解,我设计的是数字电压表,包含了STC89LE516A单片机,MC14543驱动LED数码管显示电路,电源电路,键盘电路,晶振电路,复位电路,报警电路,以及程序流程图,对各部分进行了详细的分析,在
15、画图过程中尽量注意各部分搭配美观,电路的设计基本包含了课本上的大部分内容,因此,我对课本有了进一步掌握。2、心得这是我第一次进行课程设计,单片机课程设计使我受益匪浅,以前老师在课上教给我们的都是理论知识,从来没有动手连接过芯片,这次数字电压表的设计使我能够亲自体会到如何连接芯片,当然前提是对各器件引脚的功能进行仔细阅读以及与课上的理论知识相结合才能设计出正确的电路。同时这次课程设计锻炼了我的实践能力,我查阅了课本及一些书籍,从中找到一些很有用的知识,应用到设计电路中。刚开始设计的时候遇到一些困难,最后通过分析一一克服。这次课程设计使我对课程设计有了清晰的了解,也为我以后的课程设计提供了很丰富的
16、经验。(五)参考文献1杨居义单片机课程设计指导M 北京:清华大学出版社,2009:89942夏路易单片机技术基础教程与实践M北京:电子工业出版社2008:1801943 沙占友新型数字电压表原理与应用M北京:机械工业出版社,2006:70854应明仁,壬化成单片机原理及应用M广州:华南理工大学出版 ,2005: 200-2405张毅刚 单片微机原理及应用M 西安:西安电子科技大学出版社,1994:1551606 马忠梅单片机的C语言应用程序设计M北京:北京航空航天大学出版社,2003:901017程宇红基于EPROM的高精度数字电压表设计J自动化与仪器仪表,2001(5):52548公茂法,黄
17、鹤松,杨学蔚MCS-51单片机原理与实践M北京:北京航空航天大学出版社,2009:170-1759苗红霞单片机实现数字电压表的软硬件设计J河海大学常州分校学报,2002(3):747910宋凤娟,孙军,李国忠基于89C51单片机的数字电压表的设计J制造业自动化,2007,29(2): 89-90附录源程序代码A/D转换程序/定义与ADC有关的特殊功能寄存器sfr ADC_CONTR =0xC5;sfr ADC_DATA =0xC6;sfr ADC_LOW2 =0xBE;sfr P1M0 =0x91;sfr P1M1 =0x92;sbit p20 =P20;void STC90CxxAD_del
18、ay(int timer) /延时函数 while(timer-);int Ad_Change(char channel) /AD转换 int AD_Result_Temp = 0 ; P1 = 0xff; /将P1口置高,为A/D转换作准备 ADC_CONTR = ADC_CONTR|0x80; /1000,0000打开A/D转换电源 P1M0 = 0x03; /0000,0011用于A/D转换的P1.x口,先设为开漏 P1M1 = 0x03; /0000,0011P1.0-P1.1先设为开漏。断开内部上拉电阻 STC90CxxAD_delay(20); /20 ADC_CONTR = AD
19、C_CONTR&0xE0; /1110,0000 清ADC_FLAG,ADC_START位和低3位 ADC_CONTR = ADC_CONTR|(channel); /设置当前通道号 STC90CxxAD_delay(1); /延时使输入电压达到定 ADC_DATA = 0; /清A/D转换结果寄存器 ADC_LOW2 = 0; ADC_CONTR = ADC_CONTR|0x08; /0000,1000ADCS 1,启动转换 do ; while(ADC_CONTR & 0x10)=0); /0001,0000等待A/D转换结束 ADC_CONTR = ADC_CONTR&0xE7; /11
20、10,0111清ADC_FLAG位,停止A/D转换 AD_Result_Temp = (AD_Result_Temp|ADC_DATA)2)|(ADC_LOW2&0x03); /保存返回AD转换的 结果 STC90CxxAD_delay(1); / return AD_Result_Temp; 常数定义;*TMEL EQU 0E0H ;20ms,定时器0时间常数TMEH EQU 0B1HTMEPHEAD EQU 36H*工作内存定义*BITST DATA 20HTIMEISOK BIT BITST.1TEMPONEOK BIT BITST.2TEMPL DATA 26HTEMPH DATA 2
21、7HTEMPHC DATA 28HTEMPLC DATA 29H* 引脚定义* TEMPDIN BIT P3.7* 中断向量区*ORG 000HLJMP START ORG 00BH LJMP T0IT*系统初始化* 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: NOP LJMP START NOPINIT:
22、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;*; 主程序;*MAIN: LCALL DISP1 JNB TIME1SOK,MAIN CLR TIME1SOKJNB TEMPONEOK,MAIN2LCALL READTEMP
23、1LCALL CONVTEMPLCALL DISPBCDLCALL DISP1 MAIN2: LCALL READTEMPSETB TEMPONEOKLJMP MAIN;*;*;子程序区;*; RESET DS18B20;*INITDS1820: SETB TEMPDINNOP NOPCLR TEMPDINMOV R6,#0A0HDJNZ R6,$MOV R6,#0A0H DJNZ R6,$ SETB TEMPDIN MOV R6,#32H DJNZ R6,$ MOV R6,#3CHLOOP1820: MOV C,TEMPDINJC INITDS1820OUTDJNZ R6,LOOP1820M
24、OV R6,#064HDJNZ R6,$SJMP INITDS1820RET;INITDS1820OUT: SETB TEMPDINRET; *; READ TEMP; *READTEMP: LCALL INITEDS1820MOV A,#0CCHLCALL WRITEDS1820MOV R6,#34HDJNZ R6,$MOV A,#44HLCALL WRITEDS1820MOV R6,#34HDJNZ R6,$RETREADTEMP1: LCALL INITDS1820MOV A,#0CCHLCALL WRITEDS1820MOV R6,#34HDJNZ R6,$MOV A,#0BEHLCA
25、LL WRITEDS1820MOV R6,#34HDJNZ R6,$MOV R5,#09HMOV R0,#TEMPHEADMOV B,#00HREADTEMP2: LCALL READDS1820MOV R0,AINC R0READTEMP21: LCALL CRC8CALDJNZ R5,READTEMP2MOV A,BJNZ READTEMPOUTMOV A,TEMPHEAD+0MOV TEMPL,AMOV A,TEMPHEAD+1MOV TEMPH,AREADTEMPOUT: RET; *; 处理电压BCD码子程序; *CONVTEAMP: MOV A,TEMPHANL A,#80HJZ TEMPC1CLR CMOV A,TEMPL
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1