- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 20182019学年人教版七年级数学上学期期末模拟试卷含答案解析试题.docx
- 20182019学年湘教版七年级数学上册《一元一次方程》单元测试题及答案解析试题.docx
- 20192020第二学期高二下学期4月英语试题.docx
- 20192020广州七年级下册英语U1U8语法归纳大全.docx
- 20192020年人教版英语七年级下册79单元练习题.docx
- 20192020年苏教版八年级英语下册期末检测卷.docx
- 20192020学年 人教版 必修1 捕获光能的色素和结构 作业.docx
- 20192020学年 人教版 必修一 细胞呼吸的原理和应用 教案.docx
- 20192020学年河北省衡水中学高三数学试卷.docx
- 20192020学年江苏省徐州市第二学期期末抽测八年级英语试卷.docx
文档评论(0)