基于51单片机制作的数字电压表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于51单片机数字电压表的设计
基于51单片机数字电压表的设计
摘要:本文介绍了基于STC89C52单片机为核心的,以AD0809数模转换芯片作为采样,以四位八段数码管作为显示的具有测量功能的具有一定精度的数字电压表。在实现基础功能的情况下,另外还可以扩展串行口通信,时钟,等其他一系列功能,使系统达到了良好的设计效果和要求。本课题主要解决A/D转换,数据处理及显示控制等三个模块。
关键词:STC89C52;数字电压表;模数转换;数字信号
Abstract:This paper introduces STC89C52 SCM as the core based on AD0809 analog-to-digital conversion chip, as sampled to four seven segment digital tube as display with certain with measuring function of digital voltmeter accuracy. The basic function in realizing circumstance, also can expand serial port communication, clock, and other series of function, make the system to achieve a good design effect and requirements.This subject mainly to solve AD, data processing and display control three modules.
Key words: Digital voltmeter; Frequency-field; Digital signal
本设计在分析研究和总结了单片机技术的发展历史及趋势的基础上,以使用可靠,经济,精度高等设计原则为目标,设计出基于单片机的数字测量电压表。单片机有着微处理所具备的功能,它可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。
单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可用软件控制来实现,并能够实现智能化。由于单片机具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此,现在单片机控制范畴无所不在,例如通信产品,家用电器,智能化仪器仪表,过程控制和专用控制装置等等,单片机的应用领域越来越广泛。
1 系统构成
该电压表的测量电路主要由三个模块组成:A/D转换模块、数据处理模块及显示控制模块。A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。数据处理则由芯片STC89C51来完成,其负责把ADC0809传送来的数字量,经一定的数据处理,产生相应的显示码送到显示模块进行显示;另外它还控制着ADC0809芯片的工作。显示模块主要由7段数码管显示测量到的电压值
系统构成框图
2 系统硬件设计
2.1 电源电路原理
由于本系统的主控芯片是单片机,所以应提供五伏的恒流源作为单片机的基准电压。主要原理是用变压器将220V交流电压进行变压,然后经过电桥整流,将交流电变为直流电源,经过稳压管稳压,得到稳定的5V电源供单片机使用。
电桥由整流二极管1N4007所搭建的电
桥将交流变为直流,为了保证电源更加的平稳,减少波动分别在稳压管两端加470μF
滤波电容,和两个0.1μF的104瓷片电容。由三极稳压管7805稳压,保证有稳定的五伏电源,为了显示通电状况,有一红色发光二级管作为显示电路显示,外接限流电阻1k Ω。原理图如图所示:
组成电桥
电源模块总原理图
2.2 单片机最小系统电路
1、复位电路:复位电路为高电平复位通常在复位引脚RST上接一个电容到VCC,在连接一个电阻到GND,由此形有足够的高电平时间进行复位,随后返回到低电平进入正常的工作状态,这个电阻和电容的典型值是8.2k和10uF。
复位电路原理图
2、振荡电路:
STC89C52使用11.0592MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。
51单片机引脚图
2.3 A/D转换器与单片机接口电路
A/D转换器主要采用ADC0809,由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在STC89C52单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使用。因此产生CLK 信号的方法就得用软件来产生了,单片机的P0.0~P0.7与A/D转换器D0~D7相连,产生相应的数字量经过其输出通道D0~D7传送给单片机进行处理。P3.0与A/D转换器ST相连,控制A/D转换器的启动端,P3.1与A/D转换器OE相连,控制A/D转换器的输出允许端,P3.2 与A/D转换器EOC相连,控制转换结束信号。2.4 显示电路
显示电路主要由四位一体七段LED数码管组成,用于显示测量到的电压值。它是一个共阳极的数码管,每一位数码管的a,b,c,d,e,f,g和dp端都各自连接在一起,用于接收单片机的P1口产生的显示段码。1,2,3,4引脚端为其位选端,用于接收单片机的P2口产生的位选码。
数码管内部原理图
数码管引脚图
2.5 总电路原理图:
3 单片机内部程序源
C语言源程序
#include
unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00}; unsigned char dispbuf[8]={10,10,10,10,10,0,0,0}; unsigned char dispcount;
unsigned char getdata;
unsigned int temp;
long int i; \\代替原来的unsigned char i;
sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^3;
void main(void)
{
ST=0;
OE=0;
ET0=1;
ET1=1;
EA=1;
TMOD=0x12;
TH0=216;
TL0=216;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
TR1=1;
TR0=1;
ST=1;
ST=0;
while(1)
{
if(EOC==1)
{
OE=1;
getdata=P0;
OE=0;
i=getdata*196;
dispbuf[5]=i/10000;
i=i%10000;
dispbuf[6]=i/1000;
i=i%1000;
dispbuf[7]=i/100;
/ *原来的:
t emp = getdata * 235;
temp=temp/128;