登录
|
立即注册
|
使用QQ帐号登录
论坛
>
51单片机
发帖
|
单片机驱动ADC0809控制led仿真
看5647
|
回0
|
收藏
楼主
ID:137190
只看他
2016-9-26 13:25
用AT89C51接ADC0809并编一个程序:分别给ADC0809的两个输入口分别输入0~5V的电压,在C51的四个输出口对应输出高低电平。要求如下:
用IN0控制led1和led2,用IN1控制led3和led4。当通道1的输入端的电压小于2V时,led1亮led2灭;当通道1的输入端的电压大于3V时,led1灭led2亮。当通道0的输入端电压小于2V时led3亮led4灭;当通道0的输入端电压大于3V时led3灭led4亮。
所有资料下载:
0809系统仿真和程序.zip
(1.62 MB)
(下载次数: 28, 2016-9-26 13:24 上传)
下载积分: 黑币 -5
下面是程序源码:
代码:
/*************** writer:shopping.w ******************/
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit OE = P2^2;
sbit EOC = P2^1;
sbit ST = P2^0;
uchar CLK;
sbit A1=P0^0;
sbit A2=P0^1;
sbit A3=P0^2;
sbit A4=P0^3;
uint a,b;
void delayMS(uchar ms)
{
uchar a;
while(ms--)
for(a=0;a<120;a--);
}
void main()
{ TMOD = 0x02;
TH0 = 0x14;
TL0 = 0x00;
IE = 0x82;
TR0 =1;
while(1)
{
ST=1;
P2=0x03;///***************选0通道
ST = 0;
ST = 1;
ST = 0;
delayMS(2);
while(!EOC);
OE = 1;
a=P1;//***********p1给数组
delayMS(2);
OE = 0;
delayMS(200);
ST=1;
P2=0x13;//******选通道
ST = 0;
ST = 1;
ST = 0;
delayMS(2);
while(!EOC);
OE = 1;
b=P1;//*************p1给数组
delayMS(2);
OE = 0;
delayMS(200);
if(a<0x66)
{
if(b<0x66)
{
P3=0x05;
delayMS(200);
break;
}
if(b>0x99)
{
P3=0x06;
delayMS(200);
break;
}
if((b>=0x66)&(b<=0x99))
{
P3=0x07;
delayMS(200);
break;
}
break;
}
if(a>0x99)
{
if(b<0x66)
{
P3=0x09;
delayMS(200);
break;
}
if(b>0x99)
{
P3=0x0a;
delayMS(200);
break;
}
if((b>=0x66)&(b<=0x99))
{
P3=0x0b;
delayMS(200);
break;
}
break;
}
if((a>=0x66)&(a<=0x99))
{
if(b<0x66)
{
P3=0x0d;
delayMS(200);
break;
}
if(b>0x99)
{
P3=0x0e;
delayMS(200);
break;
}
if((b>=0x66)&(b<=0x99))
{
P3=0x0f;
delayMS(200);
break;
}
break;
}
}
}
void Timer0_INT() interrupt 1
{
CLK = !CLK;
}
51黑电子论坛
Powered by
Discuz!
X3.1
首页
|
标准版
|
触屏版
|
电脑版