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