日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于proteus软件仿真AT89C52的电压表(附工程文件)

發(fā)布時間:2023/12/29 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于proteus软件仿真AT89C52的电压表(附工程文件) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

通過ADC0808芯片進行高精度的電壓轉換,再通過LCD顯示。
電壓范圍0-5V,精度0.05V
ADC0808是采樣分辨率為8位的、以逐次逼近原理進行模/數轉換的器件。其內部有一個8通道多路開關,它可以根據地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個進行A/D轉換。

ADC0808是ADC0809的簡化版本,功能基本相同。一般在硬件仿真時采用ADC0808進行A/D轉換,實際使用時采用ADC0809進行A/D轉換。

ADC0808芯片有28條引腳,采用雙列直插式封裝,各引腳功能如下:
1~5和26~28(IN0~IN7):8路模擬量輸入端。
8、14、15和17~21:8位數字量輸出端。
22(ALE):地址鎖存允許信號,輸入,高電平有效。
6(START): A/D轉換啟動脈沖輸入端,輸入一個正脈沖(至少100ns寬)使其啟動(脈沖上升沿使0808復位,下降沿啟動A/D轉換)。
7(EOC): A/D轉換結束信號,輸出,當A/D轉換結束時,此端輸出一個高電平(轉換期間一直為低電平)。
9(OE):數據輸出允許信號,輸入,高電平有效。當A/D轉換結束時,此端輸入一個高電平,才能打開輸出三態(tài)門,輸出數字量。
10(CLK):時鐘脈沖輸入端。要求時鐘頻率不高于640KHZ。
12(VREF(+))和16(VREF(-)):參考電壓輸入端
11(Vcc):主電源輸入端。
13(GND):地。
23~25(ADDA、ADDB、ADDC):3位地址輸入線,用于選通8路模擬輸入中的一路

電路原理圖如下:

運行時的截圖如下:

源代碼如下:

#include "includes.h"#define TIME0H 0x3C #define TIME0L 0xB0unsigned char uc_Clock=0; //定時器0中斷計數bit b_DATransform=0;void vShowVoltage(unsigned int uiNumber) {unsigned char ucaNumber[3],ucCount;if(uiNumber>999) uiNumber=999;ucaNumber[0]=uiNumber/100; //把計算數字的每個位存入數組。ucaNumber[1]=(uiNumber-100*(int)ucaNumber[0])/10; ucaNumber[2]=uiNumber-100*(int)ucaNumber[0]-10*ucaNumber[1];for(ucCount=0;ucCount<3;ucCount++){vShowOneChar(ucaNumber[ucCount]+48); //從首位到末位逐一輸出。if(ucCount==0)vShowOneChar('.');}}//************************************************************************************************* //* * //* ********************************主函數****************************** * //* * //************************************************************************************************* void main() {TMOD=0x01; //定時器0,模式1。TH0=TIME0H;TL0=TIME0L;TR0=1; //啟動定時器。ET0=1; //開定時器中斷。EA=1; //開總中斷vdInitialize();vWriteCMD(0x84); //寫入顯示起始地址(第二行第一個位置)vShowChar("Voltage:");vWriteCMD(0xC9);vShowChar("(V)");while(1){if(b_DATransform==1){b_DATransform=0;vWriteCMD(0xC4);vShowVoltage(uiADTransform());}} }void Time0() interrupt 1 {if(uc_Clock==0){uc_Clock=5;b_DATransform=1;}elseuc_Clock--;TH0=TIME0H; //恢復定時器0。TL0=TIME0L; }

下載鏈接:資源鏈接

總結

以上是生活随笔為你收集整理的基于proteus软件仿真AT89C52的电压表(附工程文件)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。