亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
基于AT89C51單片機的ADC0809兩路數據采集代碼Proteus仿真
[打印本頁]
作者:
willycj
時間:
2021-5-17 17:37
標題:
基于AT89C51單片機的ADC0809兩路數據采集代碼Proteus仿真
調整電位器的阻值改變模擬輸入電壓
完成對ADC0809(模數轉換器)的兩個通道的輸入模擬量進行轉換,兩個通道的結果顯示各占3位,同時顯示在8位數碼管上(有效顯示位數為6位)。兩個通道的采集模擬輸入電壓的大小由兩個滑動電位器來調節,后續也可以換成溫度傳感器,光線傳感器,紅外傳感器等各種傳感器,可構成測量不同變量的檢測電路。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png
(28.58 KB, 下載次數: 55)
下載附件
2021-5-17 17:50 上傳
單片機源程序如下:
/******************************************************************************/
#include <reg51.h>
#define uchar unsigned char
sbit dula=P2^0;
sbit wela=P2^1;
sbit CLK=P1^3;
sbit ST=P1^2;
sbit OE=P1^0;
sbit EOC=P1^1;
sbit wei1=P2^1;
sbit wei2=P2^2;
sbit wei3=P2^3;
sbit wei4=P2^5;
sbit wei5=P2^6;
sbit wei6=P2^7;
uchar code dulatab[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //數字編碼0-9
uchar code welatab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位控制字
uchar count;
void delay(uchar time) //延時
{
uchar i,j;
for(i=0;i<time;i++)
{
for(j=0;j<110;j++)
;
}
}
/*********系統初始化***********/
void init()
{
P2=0xff;
EA = 1; //開總中斷
TMOD = 0x02; //設定定時器T0工作方式
TH0=216; //利用T0中斷產生CLK信號
TL0=216; //定時40us頻率25K
TR0=1; //啟動定時器T0
ET0=1;
ST=0;
OE=0;
P1=0x30;
}
void write1(uchar num)
{
uchar i,j,k;
k=num/100;
j=num%100/10;
i=num%10;
P2=0xff;
P0=dulatab[k];
wei4=0;
delay(4);
P2=0xff;
P0=dulatab[j];
wei5=0;
delay(4);
P2=0xff;
P0=dulatab[i];
wei6=0;
delay(4);
}
void write0(uchar num)
{
uchar i,j,k;
k=num/100;
j=num%100/10;
i=num%10;
P2=0xff;
P0=dulatab[k];
wei1=0;
delay(4);
P2=0xff;
P0=dulatab[j];
wei2=0;
delay(4);
P2=0xff;
P0=dulatab[i];
wei3=0;
delay(4);
}
uchar adin0()
{
uchar value;
OE=0;
EOC=1;
ST=0;
P1&=0x8f;
P1|=0x30;
delay(10);
ST=1;
delay(10);
ST=0;
while(!EOC);
// EOC=0;
delay(10);
OE=1;
delay(1);
value=P3;
OE=0;
return value;
}
uchar adin1()
{
uchar value;
OE=0;
EOC=1;
ST=0;
P1&=0x8f;
P1|=0x00;
delay(10);
ST=1;
delay(10);
ST=0;
while(!EOC);
// EOC=0;
delay(10);
OE=1;
delay(1);
value=P3;
OE=0;
return value;
}
void main()
{
uchar in0,in1;
init();
while(1)
{
in0=adin0();
write0(in0);
in1=adin1();
write1(in1);
}
}
void timer0(void) interrupt 1
{
CLK=~CLK;
}
復制代碼
所有資料51hei提供下載:
基于AT89C51的兩路數據采集.zip
(512.5 KB, 下載次數: 93)
2021-5-17 17:37 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1