标题:
单片机驱动ADC0809控制led仿真
[打印本页]
作者:
51黑ff
时间:
2016-9-26 13:25
标题:
单片机驱动ADC0809控制led仿真
用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亮。
0.png
(31.8 KB, 下载次数: 50)
下载附件
2016-9-26 13:22 上传
所有资料下载:
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;
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1