数字万用表的一种设计源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

附录

完整程序:

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit start=P3^0;//ADC0808控制端引脚定义

sbit eoc=P3^1;

sbit cs=P2^3;

sbit clock=P2^4

sbit V=P2^5;//电压、电流、电阻测量换挡引脚定义

sbit I=P2^6;

sbit R=P2^7;

sbit a=P3^5;//ADC0808控制输入端引脚定义

sbit b=P3^6;

sbit c=P3^7;

sbit duan=P2^0;//锁存器74HC573使能端引脚定义

sbit wei=P2^1;

uchar code

table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴数码管代码表"0-F"

uchar code

table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1}; //共阴数码管代码表"0-F"(带小数点)

uchar ge=0,shi=0,bai=0,qian=0,wan=0,sw=0;//声明全局变量,用于数码管显示,分别为“个、十百、千、万、十万”

void delay(uint count)//延时1ms 子程序

{

uint i,j;

for(i=0;i

for(j=0;j<120;j++);

}

void clockf() interrupt 1

{

clock=~clock;

TL0=0xfe;

TH0=0xff;

TF0=0;

}

/*主函数*/

void main()

{

uint adval,adval2,adval3;//声明变量

unsigned long int temp;

TL0=0xfe;

TH0=0xff;

IE0=1;

EA=1;

TR0=1;

while(1)

{

if(V==0)//选择电压档,进行电压测量{

a=0;b=0;c=0;//ADC0808通道选择

start=0;

cs=0;

delay(5);

start=1;

delay(5);

start=0;

while(1)

{

if(eoc==1)

{

cs=1;

adval=P1;//读取数字量

temp=adval* 1.0/255* 1000;//换算成具体电压值的100倍

cs=0;

sw=temp/100000;//取各位的具体数值

wan=temp%100000/10000;

qian=temp%10000/1000;

bai=temp%1000/100;

shi=temp%100/10;

ge=temp%10;

//delay(5);

P0=0x00; //清除P0口的数据,方便下次赋值delay(5);

wei=1;duan=0;//对数码管进行位选

P0=0xdf;

delay(2);

wei=0;duan=1;//对数码管进行段选(下面类似)P0=table[ge];

delay(2);

P0=0x00;

wei=1;duan=0;

P0=0xef;

delay(2);

wei=0;duan=1;

P0=table[shi];

delay(2);

P0=0x00;

wei=1;duan=0;

P0=0xf7;

delay(2);

wei=0;duan=1;

P0=table1[bai];

delay(2);

P0=0x00;

wei=1;duan=0;

P0=0xfb;

delay(2);

wei=0;duan=1;

P0=table[qian];

delay(2);

P0=0x00;

wei=1;duan=0;

P0=0xfd;

delay(2);

wei=0;duan=1;

P0=table[wan];

delay(2);

P0=0x00;

wei=1;duan=0;

P0=0xfe;

delay(2);

wei=0;duan=1;

P0=table[sw];

delay(2);

P0=0x00;

start=1;

start=0;

delay(10);

}

if(I==0||R==0)break;//中途换挡则退出循环

}

}

if(I==0)//选择电流档进行电流测量{

a=0;b=1;c=0;

start=0;

cs=0;

delay(5);

start=1;

delay(5);

start=0;

while(1)

{

if(eoc==1)

{

cs=1;

adval2=P1;

temp=adval2*0.1/255*500000;

cs=0;

sw=temp/100000;

wan=temp%100000/10000;

qian=temp%10000/1000;

bai=temp%1000/100;

shi=temp%100/10;

ge=temp%10;

P0=0x00;

delay(5);

wei=1;duan=0;

P0=0xdf;

delay(2);

wei=0;duan=1;

P0=table[ge];

delay(2);

P0=0x00;

相关文档
最新文档