基于单片机数字电压表系统设计
1490下载地址 https://docs.qq.com/doc/DWEpnR2pOWU91b3p4?pub=1&dver=2.1.0
第一部分:单片机控制模块。控制中心微控制器采用的是AT89C52 单片机,其对于多量程电路的测量有着不可比拟的性价比,而且操作简单,特别是与ADC0808 构成的电压采集电路,反映时间短,能够有效地将模拟电压数据在LED 上显示出来。
第二部分:AD转换模块。A/D 转换电路用来将量程转换电路输入的直流电压信号转成数字电压信号,以供主控制器进行数据处理。采用一片ADC0808,它是采样分辨率为8 位的、以逐次逼近原理进行模—数转换的器件。
第三部分:量程自动转换模块。通过对输入电压的测量,利用软件编程的方式来实现量程的自动转换。
第四部分;LED显示模块。数码管显示电路以显示4位的方式来显示数字电压表测量的直流电压值。
第五部分:报警模块。当输入的直流电压超过最大量程时,数字电压表报警以示警告。
#include<reg52.h> #define uchar unsigned char #define uint unsigned int #define data P1 sbit ST=P3^0; sbit OE=P3^1; sbit EOC=P3^2; sbit CLK=P3^3; sbit S1=P3^4; sbit S2=P3^5; sbit S3=P3^6; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ; uchar code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xdf} ; uint sum; uchar getdata; uchar num[4]; void delay(uint ms) { uchar i; while(ms--) for(i=0;i<120;i++); } void Display_Result() { P2=0xfe;//千位 P0=table1[num[3]]; delay(5); P2=0xfd;//百位 P0=table[num[2]]; delay(5); P2=0xfb;//十位 P0=table[num[1]]; delay(5); P2=0xf7;//个位