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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

ADC0808是ADC0809的簡(jiǎn)化版本,功能基本相同。一般在硬件仿真時(shí)采用ADC0808進(jìn)行A/D轉(zhuǎn)換,實(shí)際使用時(shí)采用ADC0809進(jìn)行A/D轉(zhuǎn)換。

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

電路原理圖如下:

運(yùn)行時(shí)的截圖如下:

源代碼如下:

#include "includes.h"#define TIME0H 0x3C #define TIME0L 0xB0unsigned char uc_Clock=0; //定時(shí)器0中斷計(jì)數(shù)bit b_DATransform=0;void vShowVoltage(unsigned int uiNumber) {unsigned char ucaNumber[3],ucCount;if(uiNumber>999) uiNumber=999;ucaNumber[0]=uiNumber/100; //把計(jì)算數(shù)字的每個(gè)位存入數(shù)組。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('.');}}//************************************************************************************************* //* * //* ********************************主函數(shù)****************************** * //* * //************************************************************************************************* void main() {TMOD=0x01; //定時(shí)器0,模式1。TH0=TIME0H;TL0=TIME0L;TR0=1; //啟動(dòng)定時(shí)器。ET0=1; //開定時(shí)器中斷。EA=1; //開總中斷vdInitialize();vWriteCMD(0x84); //寫入顯示起始地址(第二行第一個(gè)位置)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; //恢復(fù)定時(shí)器0。TL0=TIME0L; }

下載鏈接:資源鏈接

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。