基于51单片机的数字电压表
生活随笔
收集整理的這篇文章主要介紹了
基于51单片机的数字电压表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基于51單片機的數字電壓表
文章目錄
- 基于51單片機的數字電壓表
- 前言
- 一、基本設計要求
- 二、Proteus仿真
- 三、使用步驟
- 1.使用中斷
- 2.使用四位數碼管顯示
- 3.主函數及關于ADC0808的代碼
- 總結
前言
繼續整理總結之前的小項目,這一次的沒有去將實物連接出來,運用的是Proteus仿真制作的,借著回憶還沒有完全散去,寫下此小項目。本設計中利用51單片機制作了一個簡單的數字電壓表,主要通過A/D轉換器ADC0808把輸入的模擬信號即電位器的電壓值轉換成數字信號,送到LED數碼管進行數據顯示,并預設了一個警報值,當超過警報值時,報警電路發出警報,燈泡閃爍。
一、基本設計要求
二、Proteus仿真
三、使用步驟
1.使用中斷
代碼如下(示例):
void init() {TMOD=0x01;TH0=0xFC;TL0=0x18;ET0=1;EA=1;TR0=1; } void init0() interrupt 1 {static u16 i;TMOD=0x01;TH0=0xFC;TL0=0x18;i++;if(i==5000)//在中斷里面進行設置ADC0808哪一個端口輸出{ADDA=0;}if(i==10000){ADDA=1;i=0;} }2.使用四位數碼管顯示
void display() {P3=0xff;P1=0xf7;P3=(~smgduan[dat/1000])&0x7f;delay5ms();P3=0xff;P1=0xfb;P3=~smgduan[(dat/100)%10];delay5ms();P3=0xff;P1=0xfd;P3=~smgduan[(dat/10)%10];delay5ms();P3=0xff;P1=0xfe;P3=~smgduan[(dat%10)];delay5ms(); }3.主函數及關于ADC0808的代碼
void main() {while(1){LED=0;sound=0;ADDC=0;ADDB=0;init();START=0;OE=0;START=1;START=0;while(EOC==0);OE=1;dat=P0;dat=dat*19.53125;display();OE=0;if(ADDA==1){abc=dat*0.001;if(abc>1.25){sound=1; LED=1;delay(3500);LED=0;} }if(ADDA==0){abc=dat*0.001;if(abc>2.5){sound=1; LED=1;delay(3500);LED=0;}} } }關于數字電壓表完整代碼及Proteus電路圖百度網盤自取:
鏈接:https://pan.baidu.com/s/16nELmxn1rGXHXuxsLP0tuQ
提取碼:gzx5
總結
本次用51單片機設計一個數字電壓表,設計中用到了ADC0808芯片,以前也沒有接觸過這個芯片,讓自己有了新的了解,懂得了簡易數字電壓表設計方法以及數模轉換運算的一般原理,也進一步了解了at89c51單片機編程,熟練了編程過程中的思路,提高了分析能力。但不足的地方是當時沒主動去買零件進行連接成實物
總結
以上是生活随笔為你收集整理的基于51单片机的数字电压表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c51为啥要宏定义时钟_c51时钟
- 下一篇: 痞子衡嵌入式:恩智浦i.MX RT1xx