用户登陆 用户注册
您的位置:首页> 家电专栏>内容正文
数字电压表设计
[正文]:1.实验任务  利用单片机at89s51与adc0809设计一个数字电压表,能够测量0-5v之间的直流电压值,四位数码显示,但要求使用的元器件数目最少。
2.电路原理图     
点击查看大图片
                 图1.28.13.系统板上硬件连线a)把“单片机系统”区域中的p1.0-p1.7与“动态数码显示”区域中的abcdefgh端口用8芯排线连接。
b)把“单片机系统”区域中的p2.0-p2.7与“动态数码显示”区域中的s1s2s3s4s5s6s7s8端口用8芯排线连接。
c)把“单片机系统”区域中的p3.0与“模数转换模块”区域中的st端子用导线相连接。
d)把“单片机系统”区域中的p3.1与“模数转换模块”区域中的oe端子用导线相连接。
e)把“单片机系统”区域中的p3.2与“模数转换模块”区域中的eoc端子用导线相连接。
f)把“单片机系统”区域中的p3.3与“模数转换模块”区域中的clk端子用导线相连接。
g)把“模数转换模块”区域中的a2a1a0端子用导线连接到“电源模块”区域中的gnd端子上。
h)把“模数转换模块”区域中的in0端子用导线连接到“三路可调电压模块”区域中的vr1端子上。
i)把“单片机系统”区域中的p0.0-p0.7用8芯排线连接到“模数转换模块”区域中的d0d1d2d3d4d5d6d7端子上。
4.程序设计内容  1、由于adc0809在进行a/d转换时需要有clk信号,而此时的adc0809的clk是接在at89s51单片机的p3.3端口上,也就是要求从p3.3输出clk信号供adc0809使用。
因此产生clk信号的方法就得用软件来产生了。
  2、由于adc0809的参考电压vref=vcc,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。
实际显示的电压值 (d/256*vref)5.汇编源程序(略)6.c语言源程序#include unsigned char code dispbitcode[]=123;0xfe,0xfd,0xfb,0xf7,                                   0xef,0xdf,0xbf,0x7f125;; unsigned char code dispcode[]=123;0x3f,0x06,0x5b,0x4f,0x66,                                0x6d,0x7d,0x07,0x7f,0x6f,0x00125;; unsigned char dispbuf[8]=123;10,10,10,10,0,0,0,0125;; unsigned char dispcount; unsigned char getdata; unsigned int temp; unsigned char i; sbit st=p3^0; sbit oe=p3^1; sbit eoc=p3^2; sbit clk=p3^3; void main(void) 123;   st=0;   oe=0;   et0=1;   et1=1;   ea=1;   tmod=0x12;   th0=216;   tl0=216;   th1=(65536-4000)/256;   tl1=(65536-4000)%6;   tr1=1;   tr0=1;   st=1;   st=0;   while(1)     123;       if(eoc==1)         123;           oe=1;           getdata=p0;           oe=0;           temp=getdata*235;           temp=temp/128;           i=5;           dispbuf[0]=10;           dispbuf=10;           dispbuf=10;           dispbuf=10;           dispbuf[4]=10;           dispbuf[5]=0;           dispbuf[6]=0;           dispbuf[7]=0;           while(temp/10)             123;               dispbuf[i]=temp;               temp=temp/10;               i++;             125;           dispbuf[i]=temp;                    st=1;           st=0;         125;     125; 125; void t0(void) interrupt 1 using 0 123;   clk=~clk; 125; void t1(void) interrupt 3 using 0 123;   th1=(65536-4000)/256;   tl1=(65536-4000)%6;   p1=dispcode[dispbuf[dispcount]];   p2=dispbitcode[dispcount];   if(dispcount==7)     123;       p1=p1 | 0x80;     125;   dispcount++;   if(dispcount==8)     123;       dispcount=0;     125;  125;


网站首页 培训课程 维修指南
技术文章 家电专栏 供应信息
求购信息 培训资讯 展会信息
电脑专栏 教程下载 资料下载
常用软件 PLC教程 PLC资料
变频伺服 低压电器 维修资料
人机界面 自控仪表 工控机类
文章标题: 搜文章
中国工控资源网手机版 2012
电话:010-67577139 13811659603
培训咨询QQ:657167934 471895637 销售咨询QQ:623769457
联系邮箱:zggkzyw@163.com
 京ICP备11002135号
报时(2026-04-02 21:21:02) 流量统计