數(shù)字電壓表設(shè)計proteus仿真原理圖:
0.png (28.51 KB, 下載次數(shù): 90)
下載附件
2017-4-22 01:30 上傳
單片機源程序:
- #include <reg52.h>
- #include <intrins.h>
- sbit EOC=P2^6;
- sbit START=P2^5;
- sbit OE=P2^7;
- sbit CLK=P2^4;
- long int a;
- int b,c,d,e,f,g; //定義長度為7的字符串
- unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};
- void delay_display(unsigned int z) //延時子程序
- {
- unsigned int x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void ADC0808()
- {
- if(!EOC) //如果EOC為低電屏,則產(chǎn)生一個脈沖,這個脈沖的下降沿用于啟動AD轉(zhuǎn)換
- {
- START=0;
- START=1;
- START=0;
- }
- while(!EOC); //等待AD轉(zhuǎn)換結(jié)束
- START=1; //轉(zhuǎn)換結(jié)束后,再產(chǎn)生一個脈沖,這個脈沖的下降沿用于將EOC置為低電屏,為下一次轉(zhuǎn)換作準備
- START=0;
- while(EOC);
- }
- void bianma()
- {
- START=0;
- ADC0808();
- a=P1*100;
- a=a/51;
- }
- void yima()
- {
- //定義整形局域變量
- b=a/1000; //取出千位
- c=a-b*1000; //取出百位、十位、個位
- d=c/100; //取出百位
- e=c-d*100; //取出十位、個位
- f=e/10; //取出十位
- g=e-f*10; //取出個位
- }
- void display() //顯示子程序
- {
- P2 = 0xfe;
- P0 = table[b];
- delay_display(1);
-
- P2 = 0xfd;
- P0 = table[d];
- delay_display(1);
-
- P2 = 0xfd;
- P0 = table[10];
- delay_display(1);
- P2 = 0xfb;
- P0 = table[f];
- delay_display(1);
-
- P2 = 0xf7;
- P0 = table[g];
- delay_display(1);
- }
- void main()
- {
- EA=1;
- TMOD=0X02;
- TH0=216;
- TL0=216;
- TR0=1;
- ET0=1;
- while(1)
- {
- bianma();
- yima();
- display();
- }
- }
- void t0() interrupt 1 using 0
- {
- CLK=~CLK;
- }
復(fù)制代碼
0.png (49.63 KB, 下載次數(shù): 102)
下載附件
2017-4-22 01:29 上傳
仿真工程文件和源碼下載:
第1章 數(shù)字電壓表設(shè)計.rar
(46.59 KB, 下載次數(shù): 54)
2017-4-21 19:41 上傳
點擊文件名下載附件
數(shù)字電壓表 下載積分: 黑幣 -5
|