单片机课设数字电压表设计.docx
- 文档编号:4232664
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:22
- 大小:114.32KB
单片机课设数字电压表设计.docx
《单片机课设数字电压表设计.docx》由会员分享,可在线阅读,更多相关《单片机课设数字电压表设计.docx(22页珍藏版)》请在冰豆网上搜索。
单片机课设数字电压表设计
目录
1摘要2
2设计方案3
2.1设计要求3
2.2设计思路3
2.3设计方案....................................................3
3硬件电路设计4
3.1控制器——单片机4
3.2电源设计5
3.3LED显示电路6
3.4键盘电路设计..................................................8
3.5晶振电路8
3.6复位电路9
3.7报警电路10
4系统软件程序的设计11
4.1主流序程图11
4.2显示电路流程图12
4.3报警电路流程图12
5总结13
6参考文献14
附录1源程序15
附录2电气原理图25
1摘要
随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。
数字电压表(DigitalVoltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
由各种单片A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力理。
本文是以数字电压表的设计为研究内容,本系统主要包括三大模块:
转换模块、数据处理模块及显示模块。
其中,采用STC12C5A32AD对输入的模拟信号进行转换和转换的结果进行运算处理[9],最后驱动输出装置LED显示数字电压信号。
关键词:
电压测量,STC12C5A32AD,A/D转换,模拟信号,HD7279
2设计方案
2.1设计要求
1.对2路0—5v的模拟电压进行循环采集,每路连续采集三次,取平均值,采集的数存入内存并显示。
2.测量的范围为0—5v,小数点后保留两位,误差0.02v以内。
3.LCD液晶显示或用4位LED数码管进行循环显示,其中最高位显示通道提示符A—B,低3位显示实际电压值,每秒切换一个通道轮流显示。
4.键盘控制,可查询指定通道的电压值。
5.将1.25v和2.5v作为两路输入的报警值,当AD转换结果超过报警值时,指示灯闪烁和蜂鸣器发声,以示警告。
2.2设计思路
采用内置AD转换器单片机(如STC12C5A32AD,C8051F310)为核心控制器件。
采用LED专用显示驱动芯片(如:
MAX7219,HD7279A,CH451等)实现LED的驱动。
2.3设计方案
硬件电路设计由6个部分组成:
内置A/D转换的STC12C5A32AD单片机系统,LED显示系统、晶振电路、复位电路,键盘电路以及测量电压输入电路[10]。
硬件电路设计框图如图1所示。
图1数字电压表系统硬件设计框图
3硬件电路设计
3.1控制器——单片机
STC12C5A32AD单片机是单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。
内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(240K/S)。
图2STC12C5A32AD单片机引脚图
STC12C5A32AD引脚及功能
1.VCC:
电源[5]
2.Gnd:
地
3.P0口:
P0口是一个具有内部上拉电阻的8位双向I/O口。
P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
4.P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,同时也是模拟量输入口,可以对8路模拟量进行模数转换。
5.P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
6.P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口。
P3口亦作为特殊功能(第二功能)使用。
表1STC12C5A32ADP3口第二功能定义
引脚
第二功能
说明
P3.0
RXD
串行输入
P3.1
TXD
串行输出
P3.2
INT0
外部中断0
P3.3
INT1
外部中断1
P3.4
T0/CLKOUT0
定时器0外部计数输入/定时器0时钟频率输出
P3.5
T1/CLKOUT0
定时器1外部计数输入/定时器1时钟频率输出
P3.6
WR
外部数据存储器写选通输出
P3.7
RD
外部数据存储器读选通输出
7.RST:
复位输入,晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
8.ALE:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
9.PSEN:
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
10.NA/P4.4:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,NA必须接GND。
为了执行内部程序指令,NA应该接VCC。
11.XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
12.XTAL2:
振荡器反相放大器的输出端。
3.2电源设计
该电路通过整流桥整流,各级的电容滤波(滤去交流高频信号),再通过采用CW7805三端稳压片即可满足要求,该电源提供的电能可靠,可以满足实验要求。
图3+5V电源
3.3LED显示电路
采用LED专用显示驱动芯片HD7279实现LED的驱动[4]。
图4HD7279引脚图
表2HD7279引脚及功能
引脚
名称
说明
1,2
VDD
正电源(+5V)
3,5
NC
悬空
4
VSS
地
6
CS
片选信号,低电平有效
7
CLK
同步时钟输入端
8
DATA
串行数据写入/读出端
9
KEY
按键信号输出端
10-16
SG-SA
LED的g-a段驱动输出
17
DP
小数点输出端
18-25
DIG0-DIG7
LED位驱动输出端
26
CLKO
振荡输出端
27
RC
RC振荡器连接端
28
RESET
复位端,低电平有效
图5LED显示电路
3.4键盘电路设计
由于采用两路进行采集,并且要进行查看指定通道的电压值。
所以采用独立式键盘。
用两个按键进行查看其电压值,一键一线,各键相互独立,每个键各连一条I/O口线,通过检测输入线的电平状态就可以判断那个键被按下[8]。
图6键盘电路
3.5晶振电路
单片机中CPU每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。
CPU执行一条指令的各个微操作所对应时间顺序称为单片机的时序。
本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简,只需要一个12MHZ晶振和2个30PF电容即可。
晶振电路的两端分别接于单片机的XTAL1、XTAL2两个端口[11]。
图7晶振电路
3.6复位电路
单片机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。
图8复位电路
按键手动电平复位是通过RST端经电阻与电源VCC接通来实现的,当按键没有按下时,C3起到隔断直流电源的作用,使RST处于低电平状态。
当S3按下,将C3短路,使电路导通,RST端为高电平,当时间长到单片机的两个机器周期后,单片机就会复位。
复位后,只影响SFR中的内容,内部RAM中的数据不受影响。
外部复位有上电复位和按键电平复位。
由于单片机运行过程中,其本身的干扰或外界干扰会导致出错,此时我们可按复位键重新开始运行。
为了便于本设计运行调试,复位电路采用按键复位方式。
3.7报警电路
利用三极管进行放大驱动LED或蜂鸣器进行工作,将1.25V和2.5V作为两路输入的报警值,当结果超过报警值时,指示灯闪烁和蜂鸣器发声,以示警告。
在数字电路中,是以脉冲信号驱动蜂鸣器以产生声音,若要以C51产生声音,可利用程序产生频率,送到IO口,再从该点连接到蜂鸣器的驱动电路,即可驱动蜂鸣器,这里采用的是以PNP晶体管放大电路。
数字微处理电路输出高电位时,由Ic内部流出的电流很小。
虽然我们可以利用高增益晶体管,在连接上拉电阻,以提供较大的驱动电流,以驱动蜂鸣器或其他负载。
而数字微处理电路输出低电位时,Ic可吸入较大电路,连接PNP晶体管构成的简单放大电路,即可提供足够的驱动能力。
图9报警电路
4.系统软件设计
4.1主流序程图[1]
对两路0—5V模拟电压进行循环采集,每路采集3次,取平均值,采集的数存入内存并显示。
对其扫描的过程进行了概括和分析。
4.2显示电路流程图
键盘控制,可查看制定通道的电压值。
显示中,其中最高位显示通道提示符A-B,低三位显示实际的电压。
4.3报警电路流程图
将1.25V和2.5V作为两路输入的报警值,当结果超过报警值时,指示灯闪烁和蜂鸣器发声,以示警告。
5总结
经过两周的努力终于设计完成。
通过本次设计,我对单片机这门课有了进一步的了解。
无论是在硬件连接方面还是在软件编程方面。
以前在学单片机课程时只是对其理论知识有了初步的理解。
通过这次设计,对它的工作原理有了更深的理解。
本设计参考了教材上有关A/D转换,LED显示,键盘电路等部分,实验指导书上关于A/D转换,键盘电路部分。
通过查询大量资料文献,对STC12C5A32AD工作方式有了初步了解。
并通过网上查询,初步掌握PROTEL99SE应用。
在这两周的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高,而且在与老师和同学的交流过程中,互动学习,将知识融会贯通。
更重要的是我们学会了很多学习的方法。
而这是日后最实用的,真的是受益匪浅。
要面对社会的挑战,只有不断的学习、实践,再学习、再实践。
不管怎样,这些都是一种锻炼,一种知识的积完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取得更好的成绩。
总之这次电路的设计和仿真,基本上达到了设计的功能要求。
在以后的实践中,我将继续努力学习电路设计方面的理论知识,并理论联系实际,争取在电路设计方面能有所提升。
参考文献
[1]刘伟,赵俊逸,黄勇.《一种基予C8051F单片机的SOC型数据采录器的设计与实现》[A].天津市计算机学会单片机分会编.《2003年全国单片机及嵌如入式系统学术年会论文集(下册)》[C].北京:
北京航空航天大学出版社,2003.790-794.
[2]吴鹏,夏田.Linux操作系统实时化改造的分析[J].现代计算机,2006,(7):
69—71.
[3]赵春红等.基于PC的开放式数控系统研究[J].机械科学与技术,2005,(9):
1108—1112.
[4]徐爱钧.《智能化测量控制仪表原理与设计》(第二版)[M].北京:
北京航空航天大学出版社,2004:
145-178.
[5]应明仁,壬化成.单片机原理及应用[M].广州:
华南理工大学出版,2005.(7):
200-240.
[6]高峰,《单片微型计算机与接口技术》[M].北京:
科学出版社,2003:
202-232.
[7]李齐雄,郑颜雄,蔡盂吕.11012I’EKIri'48系列单片机原理及应用实例[M].北京:
北京航空航天大学出版社,2005,(5):
309-333.
[8]解永勃.电压量程自动转换电路[J].电子世界,2003(7):
52—53.
[9]程宇红.基于EPROM的高精度数字电压表设计[J].自动化与仪器仪表,2001(5):
52—54.
[10]苗红霞.单片机实现数字电压表的软硬件设计[J].河海大学常州分校学报,2002(3):
74—79.
[11]吴金戌,沈庆阳,郭庭吉.《8051单片机实践与应用》[M].北京:
清华大学出版社,2002:
67-88.
附录1源程序
***************************************************************
系统初始化
****************************************************************
ORG0000H
AJMPSTART
ORG0003H
AJMPSAMPLE
ORG0013H
AJMPEOC
START:
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
MOV30H,#00H
SETBIT0
SETRIT1
SETBEX0
SETBET0
SETBEA
SETBTR0
HERE:
AJMPHERE
****************************************************************
工作内存定义
****************************************************************
BITSTDATA20H
TIMEISOKBITBITST.1
TEMPONEOKBITBITST.2
TEMPLDATA26H
TEMPHDATA27H
TEMPHCDATA28H
TEMPLCDATA29H
****************************************************************
常数定义
****************************************************************
TMELEQU0E0H;20ms,定时器0时间常数
TMEHEQU0B1H
TMEPHEADEQU36H
****************************************************************
中断向量区
****************************************************************
ORG000H
LJMPSTART
ORG00BH
LJMPT0IT
****************************************************************
定时器0中断服务程序
****************************************************************
T0IT:
PUSHPSW
MOVPSW,#10H
MOVTH0,#TIMEH
MOVTL0,#TIMEL
INCR7
CJNER7,#32H,T0ITI
MOVR7,#00H
SETBTIMEISOK
TOIT1:
POPPSW
RETI
***************************************************************
主程序
****************************************************************
MAIN:
LCALLCLK;初始化
MOVR4,#8
MOVLED_3,R4
START1:
MOVDPTR,#7FF0H;指向0通道
MOVX@DPTR,A;读取转换数值
JBP3.4,AAA1
LCALLDELAY;调用延时程序
JBP3.4,AAA1;判断是否按下按钮并开始转换数值
SETBP3.2;P3.2给高电平锁存地址
INCR4
CJNER4,#9,AAA2
MOVR4,#1
AAA2:
MOVLED_3,R4;显示所选通道
INCR5
INCDPTR;指向下一通道
MOVB,R5;显示通道并重新锁存地址
MOVP0,B
CLRP3.2
JNBP3.4,$
AAA1:
CLRP2.4
SETBP2.4
CLRP2.4
JNBP2.5,$
SETBP2.6
MOVXA,@DPTR;读取转换数据开始转化为工程量
MOVADC,A
CLRP2.6
LCALLCONV;调用转换子程序
LCALLDISP;调用显示子程序
LCALLDELAY;调用延时程序
LJMPSTART1
****************************************************************
子程序区
****************************************************************
数据采样子程序
****************************************************************
SAMPLE:
SETB00H
MOVDPTR,#0F00H
MOVR6,#08H
MOVR7,#05H
MOVR0,#40H
TRANS:
MOVX@DPTR,A
WAIT:
JB00H,WAIT
SETB00H
INCDPTR
INCR0
DINZR6,#TRAN_S
MOVDPTR,#0F00H
INCR0
DJNZR7,TRAN_S
……
……
RETI
****************************************************************
数模转换子程序
****************************************************************
CONV:
MOVA,ADC;数模转换子程序
MOVB,#51
DIVAB
MOVLED_2,A
MOVA,B
CLRF0
SUBBA,#1AH
MOVF0,C
MOVA,#10
MULAB
MOVB,#51
DIVAB
JBF0,LOOP1
ADDA,#5
LOOP1:
MOVLED_1,A
MOVA,B
CLRF0
SUBBA,#1AH
MOVF0,C
MOVA,#10
MULAB
MOVB,#51
DIVAB
JBF0,LOOP2
ADDA,#5
LOOP2:
MOVLED_0,A
RETI
****************************************************************
处理电压BCD码子程序
****************************************************************
CONVTEAMP:
MOVA,TEMPH
ANLA,#80H
JZTEMPC1
CLRC
MOVA,TEMPL
CPLA
ADDA,#01H
MOVTEMPL,A
MOVA,TEMPH
CPLA
ADDCA,#00H
MOVTEMPH,A
MOVTEMPHC,#0BH
SJMPTEMPCH
TEMPC1:
MOVTEMPHC,#0AH
TEMPC11:
MOVA,TEMPHC
SWAPA
MOVTEMPHC,A
MOVA,TEMPL
ANLA,#0FH
MOVDPTR,#TEMPDOTTAB
MOVCA,@A+DPTR
MOVTEMPLC,A
MOVA,TEMPL
ANLA,#0F0H
SWAPA
MOVTEMPL,A
MOVA,TEMPH
ANLA,#0FH
SWAPA
ORLA,TEMPL
LCALLHEX2BCD1
MOVTEMPL,A
ANLA,#0F0H
SWAPA
ORLA,TEMPHC
MOVTEMPHC,A
MOVA,TEMPL
ANLA,#0FH
SWAPA
ORLA,TEMPLC
MOVTEMPLC,A
MOVA,R7
JZTEMPC12
ANLA,#0FH
SWAPA
MOVR7,A
MOVA,TEMPHC
ANLA,#0FH
ORLA,R7
MOVTEMPHC,A
TEMPC12:
RET
****************************************************************
小数部分码表
****************************************************************
TEMPDOTTAB:
DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06H
DB06H,07H,08H,09H,09H
****************************************************************
显示区BCD码电压值刷新子程序
****************************************************************
DISPBCD:
MOVA,TEMPLC
ANLA,#0FH
MOV70H,A
MOVA,TEMPLC
SWAPA
ANLA,#0FH
MOV71H,A
MOVA,TEMPHC
ANLA,#0FH
MOV72H,A
MOVA,TEMPHC
SWAPA
ANLA,#0FH
MOV73H,A
MOVA,TEMPHC
ANLA,#0F0H
CJNZA,#010H,DISPBCD0
SJMPDISPBCD2
DISPBCD0:
MOVA,TEMPHC
ANLA,#0FH
JNZDISPBCD2
MOVA,TEMPHC
SWAPA
ANLA,#0FH
MOV73H,#0AH
MOV72H,A
DISPBCD2:
RET
*******************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字 电压表 设计