基于51單片機的直流數字電壓表系統。 采用掌握LED動態顯示和A/D轉換接口的設計方法,制作直流數字電壓表。 用到了ADC0808芯片和四位七段LED顯示器。 將待顯示的數據拆解為3位十進制數,并分時的顯示在其相應的數碼管上。一次完整的輸出過程:最低位數據傳送P0口—P2.3清零—軟件延時—P2.3置1—中間位數據送P0口—P2.2清零—軟件延時—P2.2置1—最高位數據送P0口—P2.1清零—軟件延時—P2.1置1,如此循環。 啟動信號與輸出使能信號(START、ALT、OE)均由軟件方式的正脈沖提供;結束信號(EOC)由P2.6的高電平提供。A/D轉換時鐘信號由T0定時方式2中斷提供(設系統的振蕩頻率為12MHz)。一次完整的A/D轉換過程:發出啟動信號—查詢EOC標志—發出OE置1信號—讀取A/D結果—發出OE清零信號,如此無限循環。 仿真原理圖如下:
51hei.png (16.39 KB, 下載次數: 54)
下載附件
2020-12-12 00:07 上傳
1.png (17.63 KB, 下載次數: 71)
下載附件
2020-12-11 19:44 上傳
2.png (19.69 KB, 下載次數: 66)
下載附件
2020-12-11 19:44 上傳
3.png (16.2 KB, 下載次數: 66)
下載附件
2020-12-11 19:44 上傳
單片機C語言程序如下: #include <reg51.h> sbit _st= P2^5; sbit _eoc=P2^6; sbit _oe=P2^7; sbit led0=P2^3; sbit led1=P2^2; sbit led2=P2^1; sbit led3=P2^0; unsigned char ad_result=0; unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //×ÖÄ££¬êééÏ158ò3 unsigned char table2[]={0x3e}; void delay(unsigned int time) { unsigned int j=0; for(;time>0;time--) for(j=0;j<125;j++); } void disp(void) { led3=0; P0=table[ad_result/100]; delay(10); led3=1; led2=0; P0=table[(ad_result/10)%10]; delay(10); led2=1; led1=0; P0=table[(ad_result/1)%10]; delay(10); led1=1; led0=0; P0=table2[0]; delay(10); led0=1; } void main(void) { while(1) { _st=0;_st=1;_st=0; while(!_eoc); _oe=1; ad_result=P1; _oe=0; disp(); } } 附件下載(包含Protues工程和C語言程序):
text7.rar
(64.53 KB, 下載次數: 50)
2020-12-11 19:45 上傳
點擊文件名下載附件
直流數字電壓表系統 下載積分: 黑幣 -5
|