|
|
這個(gè)項(xiàng)目主要是應(yīng)用51單片機(jī)實(shí)現(xiàn),ad轉(zhuǎn)換+數(shù)碼管輸出、
注意:ad0809這個(gè)型號(hào)在Proteus中沒(méi)有所以用ad0808代替仿真。
單片機(jī)源程序如下:
- #include "reg51.h"
- typedef unsigned int u16;
- typedef unsigned char u8;
- sbit sla=P3^0;//選擇輸入口定義
- sbit slb=P3^1;
- sbit slc=P3^3;//裝置為3.仿真為6
- sbit dia=P0^7;
- sbit ALE=P3^4 ;//AD鎖存器允許信號(hào)(4)仿真為3
- sbit CLOCK=P3^5;//時(shí)鐘信號(hào)(5)仿真為4
- sbit ST=P3^7;//裝置為(7)仿真為5
- sbit EOC=P3^2;//轉(zhuǎn)換完成信號(hào)
- sbit OE=P3^6;//允許輸出信號(hào)裝置為(6)仿真為7
- sbit dula=P2^6;//數(shù)碼管鎖存信號(hào),裝置為6/7,仿真為0/1
- sbit wula=P2^7;
- u8 code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
-
- u16 t0, votage;
- void delay(u16 i)
- {
- u16 m,n;
- for(m=i;m>0;m--)
- for(n=110;n>0;n--);
- }
- u16 trans(u16 x)//將二進(jìn)制轉(zhuǎn)化為十進(jìn)制
- {
-
- u16 d;
- d=(19.6078431372549)*x;
-
- return d;
-
- }
- void display(u16 v)
- {
- P0=0x00;
- dula=1;
- P0=table[v/1000];
- dia=1;
- dula=0;
- P0=0x00;
- wula=1;
- P0=0xfe;
- wula=0;
- delay(2);
-
- P0=0x00;
- dula=1;
- P0=table[(v%1000)/100];
- dula=0;
- P0=0x00;
- wula=1;
- P0=0xfd;
- wula=0;
- delay(2);
-
- P0=0x00;
- dula=1;
- P0=table[((v%1000)%100)/10];
- dula=0;
- P0=0x00;
- wula=1;
- P0=0xfb;
- wula=0;
- delay(2);
-
- P0=0x00;
- dula=1;
- P0=table[v%10];
- dula=0;
- P0=0x00;
- wula=1;
- P0=0xf7;
- wula=0;
- delay(2);
-
-
- }
- void main()
- {
-
- sla=0;//0號(hào)作為口輸入模擬信號(hào)
- slb=0;
- slc=0;
-
- OE=0;
- ST=0;
-
- TMOD=0x01;
- TH0=(65536-2)/256;
- TL0=(65536-2)%256;
- EA=1;
- ET0=1;
- TR0=1;
-
-
-
- while(1)
- {
- ST=0;ST=1;ST=0;//啟動(dòng)轉(zhuǎn)換
- while(EOC==0)
- {
- OE=1;
- display(trans(P1));
- OE=0;
- }
- trans(P1);
- }
- }
- void T0_time() interrupt 1//TO計(jì)時(shí)器給ADC提供時(shí)鐘信號(hào)
- {
- TH0=(65536-2)/256;
- TL0=(65536-2)%256;
- CLOCK=~CLOCK;
- }
復(fù)制代碼
Keil5工程文件,仿真圖在下面jpg圖片格式,大家自己打開(kāi)Proteus畫(huà)一下吧,下面的附件里面只有代碼的Keil文件:
AD_51.rar
(12.8 KB, 下載次數(shù): 45)
2018-9-28 21:01 上傳
點(diǎn)擊文件名下載附件
工程代碼 下載積分: 黑幣 -5
|
|