-基于单片机的数字万用表设计 - 联系客服

发布时间 : 星期一 文章-基于单片机的数字万用表设计 -更新完毕开始阅读c0f9bbeb172ded630b1cb63b

录unsigned int dacl() //AD0809读出数据处理 {unsigned char x; unsigned int dady=0; for(x=0;x<10;x++)

{dady=adc0809()+dady;}

dady=dady/10; //求平均值,提高精度 return(dady);//返回处理结果 }

/*显示数码处理*/

void send_byte( unsigned char out_byte) {

unsigned char i;

delay(1);//调用延时子程序 for (i=0;i<8;i++) {

SCP=0;

if ((out_byte&0x01)==0x01) { SI=1; } else {

SI=0;// 由于显示芯片是SPI总线,所以数据一位位送 }

delay(1); SCP=1;

out_byte=out_byte>>1; } }

void led_display(int val) { int i;

unsigned char digit[4];

unsigned char isHightFlag=0;

if (val>9999) val=9999;

digit[3]=val/1000; val=val-1000*digit[3];

digit[2]=val/100;

2

44

附录val=val-100*digit[2];

digit[1]=val/10;

digit[0]=val-10*digit[1]; if (digit[3]==0) {

digit[3]=table[10];//no echo } else {

digit[3]=table[digit[3]]; isHightFlag=1; }

if (digit[2]==0) {

if (isHightFlag==0) {

digit[2]=table[10];//no echo } else {

digit[2]=table[digit[2]]; } } else {

digit[2]=table[digit[2]]; isHightFlag=1; }

if (digit[1]==0) {

if (isHightFlag==0) {

digit[1]=table[10];//no echo } else {

digit[1]=table[digit[1]]; } else {

digit[1]=table[digit[1]];

2

45

isHightFlag=1; }

录2

digit[0]=table[digit[0]]; //显示程序,把数分到每一位,送显示 LCP=0; LCP=0;

for (i=0;i<4;i++) send_byte(digit[i]); send_byte(0x00); send_byte(0x00); send_byte(0x00); send_byte(0x00); LCP=1; LCP=1; }

void main(void) {

BEEP=0;// 蜂鸣器初始化 while(1) {

led_display(dacl()); //读值显示

if(dacl()<=1) //如果值小于1,则发出响声 {

BEEP=!BEEP; delay(100); BEEP=!BEEP; } }

}

46