|
希望能對各位有所幫助!
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
QQ截圖20180816214228.png (59.34 KB, 下載次數: 108)
下載附件
2018-8-16 21:44 上傳
0.png (18.36 KB, 下載次數: 124)
下載附件
2018-8-17 00:56 上傳
QQ截圖20180816214252.png (57.02 KB, 下載次數: 116)
下載附件
2018-8-16 21:44 上傳
單片機源程序如下:
- #include<reg52.h>
- sbit adclk=P2^5;
- sbit addi=P2^0;
- sbit addo=P2^1;
- sbit adcs=P2^2;
- sbit dian=P0^7;
- sbit beep=P2^4;
- sbit wela1=P1^0;
- sbit wela2=P1^1;
- sbit wela3=P1^2;
- sbit wela4=P1^3;
- char code table[]=
- { 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71
- };
- void Delay(unsigned char x)
- {
- unsigned char i;
- for(i=0;i<x;i++);
-
- }
- void Delay1(unsigned char y)
- {
- unsigned char i,j;
- for(i=0;i<y;i++)
- for(j=110;j>0;j--);
-
- }
- unsigned char ADC0832(void)
- {
- unsigned char i,data_c;
- data_c=0;
- adcs=0;
- addo=0;
- Delay(2);
- adclk=0;
- Delay(2);
- addi=1; //第一個脈沖 啟動AD轉換器
- adclk=1;
- Delay(2);
- adclk=0;
- Delay(2);
- adclk=1; // 第二的脈沖 送出1
- Delay(2);
- adclk=0;
- Delay(2);
- addi=0;
- adclk=1; //第三個脈沖 送出0
- Delay(2);
- adclk=0;
- addi=0; //D1口轉為高阻態
- addo=1; //D0口脫離高阻態 為輸出做準備
- for (i=0;i<8;i++)//讀出數據
- {
- adclk=1;
- Delay(2);
- adclk=0;
- Delay(2);
- data_c=(data_c<<1)|addo;
- }
- adcs=1;
- return(data_c);
- }
- void display(char bai,char shi,char ge)//數碼管顯示
- {
- wela1=0;
- dian=1;
- Delay1(5);
- wela2=1;
- P0=0x00;
- Delay1(1);
-
- wela1=0;
- P0=table[bai];
- Delay1(5);
- wela1=1;
- P0=0x00;
- Delay1(1);
-
- wela2=0;
- P0=table[shi];
- Delay1(5);
- wela2=1;
- P0=0x00;
- Delay1(1);
-
- wela3=0;
- P0=table[ge];
- Delay1(5);
- wela3=1;
- P0=0x00;
- Delay1(1);
-
- }
- void main()
- {
- unsigned int adval,shi,bai,ge;
- while(1)
- {
- adval=ADC0832();
- adval=2*adval;
- bai=adval/100;
- shi=adval%100/10;
- ge=adval%10;
- display(bai,shi,ge);
- if(bai>=3)
- {
- beep=0;
- }
- else if(bai<=3)
- {
- beep=1;
- }
- }
- }
復制代碼
0.png (11.12 KB, 下載次數: 101)
下載附件
2018-8-17 00:57 上傳
所有資料51hei提供下載:
adc.zip
(72.14 KB, 下載次數: 108)
2018-8-16 21:45 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|