ADC0809分析和总结分析和总结.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SCON=0xd8CON=0x00;//串行工作方式3,无奇偶校验位,1 位停止位要求:ADC0809 和 AT89C52 完成数据采集,通过串口发送到 PC SCON=0xd8 CON=0x00;//串行工作方式3,无奇偶校验位,1 位停止位 我先描述一下硬件电路的连接:单片机的 PO 口依次和 74LS373 的 D0~D7 口同时和ADC0809 的 D0~D7 口相连。373 的 Q0,Q1,Q2 依次和ADC0809 的 A,B,C 端口相连。89C52 的 ALE 端口连接 373 端口的G 端,同时ALE 端口通过分频器连接到 ADC0809 的CLK 端口。89C52 的 P2.7 端口和/WR 经过或非门连接到 ADC0809 的 ALE 和 START 端口,P2.7 和/RD 经过或非门连接到OE 端口。ADC0809 的EOC 端口通过非门连接到 89C52的/INTO 端口。剩下的 89C52 端口都是标准的接法,用的 11.0592MHZ,ADC0809 的 Vref (+)和 VCC 连接到+5V,Vref(-)和 GND 连接到地。程序如下: /* 从 ADC0809 的 8 个通道轮流采集一次数据,采集的结果放在数组ad 中.其程序如下: */ #includeabsacc.h #includereg51.h #define uchar unsigned char #define IN0 XBYTE[0x7ff8] //设置 ADC0809 的通道 0 地址 sbitad_busy=P3^2;//EOC 状态 void ad0809(ucharidata *x) {uchar i; ucharxdata *ad_adr; ad_adr=IN0; for(i=0;i8;i++)// 处理 8 个通道 {*ad_adr=0;//启动转换 i=i;//延时等待 EOC 变低 i=i; while(ad_busy==0);// 查询等待是否结束x=*ad_adr;// 存转换结果 ad_adr++;// 下一个通道 } } void main(void) {unsigned char a; static ucharidata ad[10]; ad0809(ad);//采样 ADC0809 通道的值TMOD=0x20; TL1=0xfd;TH1=0xfd;//串口初始化,设置波特率9600Kb TR1=1; while(1) { a=ad[0];// 发送0 通道的采样值 SBUF=a; while(TI==0); TI=0; } } VB 端 接 收 程 序 : Private Sub Form_Load() MSComm1.CommPort = 1 选择 COM1 端口 MSComm1.Settings = 9600,N,8,1 波特率9600,无奇偶校验,8 位数据位,1 位停止位MSComm1.InBufferSize = 1024 接受缓冲区大小位1024 字节MSComm1.InBufferCount = 0 清接收缓冲区 MSComm1.OutBufferCount = 0 清发送缓冲区 MSComm1.PortOpen = True 打开 COM1 端口End Sub Private Sub Receivecmd_Click() Receivebuf = Trim(MSComm1.Input) If Len(Receivebuf) = 0 Then txtreceive.Text = 空 Else txtreceive.Text = Receivebuf End If End Sub 】 #include AT89X52.H 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}; // (这句什么意思?数组里的 10 .0 什么意思,为什么是这样写) unsigned char dispcount; sbit ST=P3^0; sbit OE=P3^1; sbit EOC=P3^2; unsigned char channel=0xbc;//IN3 unsigned char getdata; void main(void) { TMOD=0x01; TH0=(65536-4000)/256; TL0=(6

文档评论(0)

dqy118 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体上海海滋实业有限公司
IP属地湖北
统一社会信用代码/组织机构代码
91310115MA7DL1JF2N

1亿VIP精品文档

相关文档