adc0809 单片机ADC0809

捷配欢迎您!
微信扫一扫关注我们
当前位置:&>>&&>>&&>>&单片机AT89S51与ADC0809设计一个数字电压表
  1. 实验任务
  利用与设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示,但要求使用的数目最少。
  2. 电路原理图
  3. 系统板上硬件连线
  &a) 把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的端口用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. 程序设计内容
  由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在AT89S51单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使用。因此产生CLK信号的方法就得用软件来产生了;由于ADC0809的参考电压VREF=VCC,所以转换之后的数据要经过数据处理,在上显示出电压值。实际显示的电压值 (D/256*VREF)
  5. 汇编源程序
  6. C语言源程序
  #include &AT89X52.H&
  unsigned
code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
  0xef,0xdf,0xbf,0x7f};
  unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
  unsigned char dispbuf[8]={10,10,10,10,0,0,0,0};
&&&&&& 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=()/256;
&&&&&& TL1=()%256;
&&&&&& TR1=1;
&&&&& TR0=1;
&&&&& ST=1;
&&&&&& ST=0;
&&&&&&& while(1)
&&&&&& if(EOC==1)
&&&&&&& OE=1;
&&&&&&& getdata=P0;
&&&&&&& OE=0;
&&&&&& temp=getdata*235;
&&&&&& temp=temp/128;
&&&&&& i=5;
&&&&&& dispbuf[0]=10;
&&&&&& dispbuf[1]=10;
&&&&&& dispbuf[2]=10;
&&&&&& dispbuf[3]=10;
&&&&&& dispbuf[4]=10;
&&&&&&& dispbuf[5]=0;
&&&&&&& dispbuf[6]=0;
&&&&&&& dispbuf[7]=0;
&&&&&&& while(temp/10)
  dispbuf[i]=temp%10;
  temp=temp/10;
  dispbuf[i]=
  void t0(void) interrupt 1 using 0
  CLK=~CLK;
  void t1(void) interrupt 3 using 0
  TH1=()/256;
  TL1=()%256;
  P1=dispcode[dispbuf[dispcount]];
  P2=dispbitcode[dispcount];
  if(dispcount==7)
  P1=P1 | 0x80;
  dispcount++;
  if(dispcount==8)
  dispcount=0;
  } &&来源:
技术资料出处:gooog
该文章仅供学习参考使用,版权归作者所有。
因本网站内容较多,未能及时联系上的作者,请按本网站显示的方式与我们联系。
【】【】【】【】
上一篇:下一篇:
本文已有(0)篇评论
发表技术资料评论,请使用文明用语
字符数不能超过255
暂且没有评论!
12345678910
12345678910
摘要: 在天文光学精密测量中, 纳米精度的压电陶瓷传感器常作为微位移执行器,驱动各种精密位移。为进一步提高其采集精度和实时性,设计了基于Zynq7000双核ARM处理器的采集系统。在Zynq的PL部分实现数据采集和OLED显示IP核,以CPU0作为主处理器,实现系统的控制和压...[][][][][][][][][][]
IC热门型号
IC现货型号
推荐电子百科查看: 3905|回复: 2
51单片机控制ADC0809的电路图和源程序
& && && &ADC0809数模转换与显示/*& & & & 名称:ADC0809数模转换与显示& & & & 说明:ADC0809采样通道3输入的模拟量,转换后的结果显示在数码管上。*/#include&reg51.h&#define uchar unsigned char#define uint unsigned int//各数字的数码管段码(共阴)uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};sbit CLK=P1^3;& & & & & & & & //时钟信号sbit ST=P1^2;& & & & & & & & //启动信号sbit EOC=P1^1;& & & & & & & & //转换结束信号sbit OE=P1^0;& & & & & & & & //输出使能//延时void DelayMS(uint ms){& & & && & & & while(ms--) for(i=0;i&120;i++);}//显示转换结果void Display_Result(uchar d){& & & & P2=0xf7;& & & & & & & & //第4个数码管显示个位数& & & & P0=DSY_CODE[d%10];& & & & DelayMS(5);& & & & P2=0& & & & & & & & //第3个数码管显示十位数& & & & P0=DSY_CODE[d%100/10];& & & & DelayMS(5);& & & & P2=0& & & & & & & & //第2个数码管显示百位数& & & & P0=DSY_CODE[d/100];& & & & DelayMS(5);}//主程序void main(){& & & & TMOD=0x02;& & & & & & & & //T1工作模式2& & & & TH0=0x14;& & & & & & & & & & & & TL0=0x00;& & & & IE=0x82;& & & & TR0=1;& & & & P1=0x3f;& & & & & & & & //选择ADC0809的通道3(0111)(P1.4~P1.6)& & & & while(1)& & & & {& & & & & & & & ST=0;ST=1;ST=0;& & & & & & & & //启动A/D转换while(EOC==0);& & & & & & & & //等待转换完成& & & & & & & & OE=1;& & & & & & & & Display_Result(P3);& & & & & & & & OE=0;& & & & }}//T0定时器中断给ADC0808提供时钟信号void Timer0_INT() interrupt 1{& & & & CLK=~CLK;}
file:///C:\Users\jy\AppData\Local\Temp\ksohtml\wpsDD50.tmp.png硬件电路连接图(proteus仿真):
在回复的时候 点高级模式 可以上传图片
在回复的时候 点高级模式 可以上传图片
这是电路图、、
(139.8 KB, 下载次数: 183)
16:40 上传
无效楼层,该帖已经被删除
Powered by11-1911-1911-1810-2110-2110-2110-2110-2110-2110-21最新范文01-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-01ADC0809芯片与单片机的接口
查看: 838|
上一篇:下一篇:
Powered by &
这里是—这里可以学习 —这里是。
栏目导航:51单片机驱动ADC0809的C语言程序
> 51单片机驱动ADC0809的C语言程序
51单片机驱动ADC0809的C语言程序
#include#include#define uchar unsigned char#define uint unsigned intsbit CLK=P1^3;sbit ST=P1^2;sbit EOC=P1^1;sbit OE=P1^0;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(uint z);void display(uchar d);void main(){ TMOD=0x02;//方式2特别适合于用作较精确的脉冲信号发生器 TH0=0x14; TL0=0x00;//8自动重装定时器 EA=1; ET0=1; TR0=1; P1=0x3f;//选择通道三,注意:通道选择的不一样,显示的结果也将不一样 while(1) { ST=0; ST=1; ST=0;//start一个高脉冲启动AD0808; while(!EOC); OE=1; display(P3); OE=0; }}void delay(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}void display(uchar d){ P2=0 P2=0xf7; P0=table[d%10]; delay(5);本文引用地址: P2=0 P2=0 P0=table[d%100/10]; delay(5); P2=0 P2=0 P0=table[d/100]; delay(5);}void timer0() interrupt 1{ CLK=~CLK;}
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一

我要回帖

更多关于 ad0809与单片机连接 的文章

 

随机推荐