?? adcc.c
字號:
/**************************************************************************
A/D轉(zhuǎn)換模塊演示程序
來源: 鄭州遠博科技 王興民
0371-6949037 0371-7256036 13949105551
實驗本程序,需要把轉(zhuǎn)換模塊上的J2短路
閱讀本程序,需要參照AD0832的使用說明及時序圖進行
***************************************************************************/
#include <at89x51.h>
#include <Delay.h>
#define CS P0_0 //ADC0832 的CS端
#define CLK P0_1 //ADC0832 的CLK端
#define DO P0_2 //ADC0832 的DO端
#define DI P0_3 //ADC0832 的DI端
#define SDA P2_7 //74LS164 SAD
#define SCK P2_6 //74LS164 SCK
#define BIT5 P2_5 //數(shù)碼管位1
#define BIT4 P2_4 //數(shù)碼管位2
#define BIT3 P2_3 //數(shù)碼管位3
#define BIT2 P2_2 //數(shù)碼管位4
#define BIT1 P2_1 //數(shù)碼管位5
#define BIT0 P2_0 //數(shù)碼管位6
#define uchar unsigned char
#define uint unsigned int
code uchar szdm[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff}; //共陽數(shù)碼管的顯示字模數(shù)據(jù)
data uchar displaybuff[6]; //定義顯示緩沖區(qū)
uchar CH0=0X10; //通道0轉(zhuǎn)換數(shù)據(jù)
void display();
uchar adconvert(sign);
void main() {
uchar temp;
DelayMs(2000); //延時使芯片復(fù)位完成
CS=1;
DI=1;
DO=1;
CLK=0;
while(1) {
temp=adconvert(CH0);
displaybuff[2]=temp/100;
displaybuff[1]=(temp-displaybuff[2]*100)/10;
displaybuff[0]=temp-(displaybuff[2]*100+displaybuff[1]*10);
display();
}
}
void adstart(void) { //開始條件
CLK=0;
CS=0;
DI=1;
CLK=1;
CLK=0; }
void adsendsign(uchar signifi) { //發(fā)送信號
uchar temp;
temp=signifi&0x03;
DI=(signifi>>1)&0x01;
CLK=1;
CLK=0;
DI=temp&0x01;
CLK=1;
CLK=0;
}
uchar adoutdata(void) { //數(shù)據(jù)輸出
uchar mfdata,i,j;
bit D;
while(DO);
CLK=1;
for(i=0;i<8;i++)
{ CLK=0;
D=DO;
mfdata=mfdata|D;
CLK=1;
mfdata=mfdata<<1;
}
for(j=0;j<7;j++)
{
CLK=0;CLK=1;
}
CS=1;
DO=1;
return(mfdata);
}
uchar adconvert(sign) { //開始轉(zhuǎn)換
uchar addata;
adstart();
adsendsign(sign);
addata=adoutdata();
return(addata);
}
void senddata(uchar dd) { //74HC164移入顯示數(shù)據(jù)
uchar j;
for (j=0;j<8;j++) {
SDA=(bit)(dd&0x01);
SCK=1; SCK=0;
dd=dd>>1;
}
}
void display() { //在實驗板的6位數(shù)碼管上動態(tài)顯示緩沖區(qū)中的數(shù)據(jù)
senddata(szdm[displaybuff[0]]);
BIT0=0;
Delay_ms(10);
BIT0=1;
senddata(szdm[displaybuff[1]]);
BIT1=0;
Delay_ms(10);
BIT1=1;
senddata(szdm[displaybuff[2]]);
BIT2=0;
Delay_ms(10);
BIT2=1;
senddata(szdm[displaybuff[3]]);
BIT3=0;
Delay_ms(10);
BIT3=1;
senddata(szdm[displaybuff[4]]);
BIT4=0;
Delay_ms(10);
BIT4=1;
senddata(szdm[displaybuff[5]]);
BIT5=0;
Delay_ms(10);
BIT5=1;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -