一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>C/C++語言編程>

DAC-ADC控制實(shí)驗(yàn)程序

大?。?/span>0.1 MB 人氣: 2017-09-06 需要積分:0

ADC溫度控制實(shí)例演練

/* ADC溫度控制實(shí)例演練 (ch11-7-5.c) */
#include
/* 聲明驅(qū)動信號陣列 */
char code TAB[10]={?0xc0, 0xf9, 0xa4, 0xb0, 0x99,?// 0 ̄4
?????0x92, 0x83, 0xf8, 0x80, 0x98 };?// 5 ̄9
#define? SCANP?P1????//?定義掃瞄信號連接埠?
#define? SEG7P?P2????//?定義七節(jié)顯示器連接埠?
#define off? 35?????//?定義溫度上限?
#define on? 20?????//?定義溫度下限?
sbit?INTR=P3^2; ????//?IRQ接腳?
sbit?relay=P3^3; ???//?繼電器位置?
unsigned char xdata? adc;??//?聲明外部記憶體變量?
unsigned char _adc; ???//?聲明變量?
unsigned char disp[4]={0, 0, 0, 0};?//?聲明顯示區(qū)陣列?
unsigned char _adc;????//?聲明變量?
void dataproc(unsigned char);?//?聲明資料處理函數(shù)?
void display(void);????//?聲明顯示函數(shù)?
void delay1ms(char);???//?聲明延遲函數(shù)?
main()???????//?主程序?
{?while(1)?????//?while開始?
?{?display();????//?顯示?
??_adc=adc;???
??/*讀取外部記憶體,目的是讓ADC0804之RD=0、INTR=1*/
??adc=0xff;
??while(INTR==1); ??//?等待中斷
??_adc=adc; ????//?讀取外部記憶體?
??dataproc(_adc);???//?資料處理?
?}???????//?while結(jié)束?
}????????//?主程序結(jié)束?
//====資料處理函數(shù)====
void dataproc(unsigned char data_in)
{?int results;????//?聲明變量?
?results= data_in;???//?讀取ADC0804轉(zhuǎn)換結(jié)果?
?if (results >=off) relay=0;?
?/* 若溫度高於或等於35度(off),則關(guān)閉繼電器 */
?else if (results <=on) relay=1;
?/* 若溫度低於或等於20度(on),則開啟繼電器 */
?disp[3]=results/1000;??//?取得千位數(shù)?
?disp[2]=(results/100)%10;?//?取得百位數(shù)?
?disp[1]=(results/10)%10;?//?取得十位數(shù)?
?disp[0]=results%10;???//?取得個(gè)位數(shù)?
}????????//?資料處理函數(shù)結(jié)束?
//====顯示函數(shù)====
void display(void)
{?char i, scan;????//?聲明變量?
?char times=20;????//?掃瞄20次?
?while (--times>=0)???//?while循環(huán)開始?
?{?scan=1;?????//?初始掃瞄信號?
??for(i=0;i<4;i++)??//?for敘述開始?
??{?SEG7P=0xff;???//?關(guān)閉7節(jié)顯示器?
???SCANP=~scan;??//?輸出掃瞄信號?
???SEG7P=TAB[disp[i]];?//?轉(zhuǎn)換成驅(qū)動信號,并輸出到P0
???delay1ms(4);??//?延遲4ms
???scan<<=1;???//?下一個(gè)掃瞄信號?
??}??????//?結(jié)束for敘述?
?}???????//?結(jié)束while敘述?
}????????//?display函數(shù)結(jié)束?
//====延遲函數(shù)====
void delay1ms(char x)
{?int i,j;????//?聲明變量?
?for(i=0;i ??for(j=0;j<120;j++);?//?內(nèi)循環(huán)?
}???????//?延遲函數(shù)結(jié)束?

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發(fā)表評論

      用戶評論
      評價(jià):好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?