标题:
51单片机+AD0809怎么样实现多路采集和发送 求帮助
[打印本页]
作者:
宝猫
时间:
2019-7-25 21:49
标题:
51单片机+AD0809怎么样实现多路采集和发送 求帮助
不知道protues的原理图和程序是否配套
QQ截图20190725215009.png
(28.23 KB, 下载次数: 37)
下载附件
2019-7-25 21:48 上传
#include"reg51.h"
#include <intrins.h>
#include<stdio.h>
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
#define uint unsigned int
#define uchar unsigned char
uchar code LEDData[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit OE = P1^0;
sbit EOC = P1^1;
sbit ST = P1^2;
sbit CLK = P1^3;
sbit ADDA = P1^4;
sbit ADDB = P1^5;
sbit ADDC = P1^6;
sbit LED=P1^7;
u8 weixuan[4];
uint temp;
uchar getdata;
uchar b;
uchar s;
uchar g;
void delayus(uchar us)
{
uchar i;
while(us--)
for(i=0;i<120;i++);
}
void init()
{
TMOD=0x21;
TH0=(65536-200)/256;
TL0=(65536-200)%256;
TH1=0XF3;
TL1=0XF3;
PCON=0X80;
SCON=0X50;
ES=1;
ET0=1;
EA=1;
TR1=1;
TR0=1;
}
void TImer0()interrupt 1
{ TH0=(65535-200)/256;
TL0=(65535-200)%256;
CLK=~CLK;
}
void DigDisplay()
{
u8 i;
for(i=0;i<4;i++)
{
switch(i) //位选,选择点亮的数码管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//显示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//显示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//显示第3位
}
P0=weixuan[i];//发送段码
delayus(10); //间隔一段时间扫描
P0=0x00;//消隐
}
}
void Display_Result()
{
weixuan[1] = LEDData[b];
weixuan[2] = LEDData[s];
weixuan[3] = LEDData[g];
DigDisplay();
}
void ADDX(uchar x,uchar y,uchar z)
{
ADDC=x;
ADDB=y;
ADDA=z;
}
void send(uchar x)
{
EA=0;
SBUF=x;
while(TI==0);
TI=0;
EA=1;
}
void ADC0808()
{
ST=0;
OE=0;
ST=1;
ST=0;
while(EOC==0);
OE=1;
getdata=P3;
send(getdata);
OE=0;
}
void main()
{
init();
LED=0;
ADDX(0,0,0);
while(1)
{
ADC0808();
temp=getdata*1.0/255*500;
b=temp/100;
s=temp/10%10;
g=temp%10;
if(RI==1)
{
RI=0;
if(SBUF=='A')
{
LED=~LED;
}
}
Display_Result();
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1