单片机课设数字电压表设计Word格式文档下载.docx
《单片机课设数字电压表设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机课设数字电压表设计Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
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
处理电压BCD码子程序
CONVTEAMP:
MOVA,TEMPH
ANLA,#80H
JZTEMPC1
CLRC
MOVA,TEMPL
CPLA
ADDA,#01H
MOVTEMPL,A
MOVA,TEMPH
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
ANLA,#0F0H
MOVTEMPL,A
MOVA,TEMPH
ORLA,TEMPL
LCALLHEX2BCD1
SWAPA
ORLA,TEMPHC
MOVTEMPHC,A
ORLA,TEMPLC
MOVA,R7
JZTEMPC12
MOVR7,A
MOVA,TEMPHC
ORLA,R7
TEMPC12:
RET
小数部分码表
TEMPDOTTAB:
DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06H
DB06H,07H,08H,09H,09H
显示区BCD码电压值刷新子程序
DISPBCD:
MOVA,TEMPLC
MOV70H,A
MOVA,TEMPLC
MOV71H,A
MOVA,TEMPHC
MOV72H,A
MOVA,TEMPHC
MOV73H,A
CJNZA,#010H,DISPBCD0
SJMPDISPBCD2
DISPBCD0:
MOVA,TEMPHC
ANLA,#0FH
JNZDISPBCD2
SWAPA
MOV73H,#0AH
MOV72H,A
DISPBCD2:
*******************************************************