完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请各位大神帮我看看!程序调试不成功!小弟初学者!调试了好久!找了许多资料还是没发现问题!麻烦那位大神帮我看看!
#include #include ***it ST=P3^0; //ADC0809启动转换 ***it OE=P3^1; //允许ADC0809输出数据 ***it EOC=P3^2; //ADC0809转换结束信号 ***it BEEP=P3^3; ***it V1=P3^4; //200V档位测试标志位 ***it V2=P3^5; //20V档位测试标志位 ***it V3=P3^6; //2V档位测试标志位 ***it V4=P3^7; //200mV档位测试标志位 ***it led=P0^7; unsigned int h; unsigned char digit[4]; unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; void delay(unsigned int tc)//带小数点编码 /*延时*/ { while(tc!=0) { unsigned int i; for(i=0;i<100;i++) { tc--; } } } /*ADC0809转换子程序*/ unsigned char adc0809() //读AD0809子程序 { unsigned char adda; ST=0; OE=0; //读AD0809准备 P1=0xff; //先把ADC0809的输出清0 ST=1; ST=0; //启动转换 while(EOC==1);// 如果有输出中断,使能读功能,并读数据 { OE=1; adda=P1; OE=0; } return(adda);//返回最后读出数据 } /*ADC0809转换数据处理*/ 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 loop(void) { while(h==1) { BEEP=!BEEP; delay(100); BEEP=!BEEP; break; } } void led_display(float val)//显示函数 { if(V1==0) //200V档 { val=val*5000/255; if(val>2000||val<200) { led=0; h=1; loop(); } else if(val>200) { digit[3]=val/1000; val=val-1000*digit[3]; digit[2]= val/100; val=val-100*digit[2]; digit[1]=val/10; val=val-10*digit[1]; //此后选择带小数点编码 digit[0]=val*10/10; /*将十进制数转换成字符*/ digit[3]=table[digit[3]]; digit[2]=table[digit[2]]; digit[1]=table[digit[1]+10]; digit[0]=table[digit[0]]; } } else if(V2==0) //20V档 { val= 5000*val/255; if(val>2000||val<200) { h=1; loop(); } else { digit[3]=val/1000; val=val-1000*digit[3]; digit[2]=val/100; val=val-100*digit[2]; //此后选择带小数点编码 digit[1]=val/10; val=val-10*digit[1]; digit[0]=val*10/10; /*将十进制数转换成字符*/ digit[3]=table[digit[3]]; digit[2]=table[digit[2]+10]; digit[1]=table[digit[1]]; digit[0]=table[digit[0]]; } } else if(V3==0) //2V档 { val=5000*val/255; if(val>2000||val<200) { h=1; loop(); } else { digit[3]=val/1000; val=val-1000*digit[3]; //此后选择带小数点编码 digit[2]=val/100; val=val-100*digit[2]; digit[1]=val/10; val=val-10*digit[1]; digit[0]=val*10/10; /*将十进制数转换成字符*/ digit[3]=table[digit[3]]; digit[2]=table[digit[2]+10]; digit[1]=table[digit[1]]; digit[0]=table[digit[0]]; } } else if(V4==0) //200mV档 { val= 5000* val/255;//将伏转化为毫伏 if(val>2000) { h=1; loop(); } else { digit[3]=val/1000; val=val-1000*digit[3]; digit[2]=val/100; val=val-100*digit[2]; digit[1]=val/10; val=val-10*digit[1];//此后选择带小数点编码 digit[0]=val*10/10; /*将十进制数转换成字符*/ digit[3]=table[digit[3]]; digit[2]=table[digit[2]]; digit[1]=table[digit[1]]; digit[0]=table[digit[0]]; } } } void main() { int i; int j=3; int k; unsigned char fuhao[4]; BEEP=0;// 蜂鸣器初始化' led_display(dacl());//读值显示 for(i=3;i>=0;i--) { if(digit[i]!=0xc0) { fuhao[j]=digit[i]; j=j--; } for(k=0;k<4;k++) { P0=0X01< delay(10); } } }
|
|
相关推荐
11个回答
|
|
|
|
|
|
前辈!我是想问问 我的那个电压表使用手动切换量程的 !切换了怎么不行! 逻辑上感觉没问题!但运行的时候就不行了! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
好东西啊 谢谢楼主分享
|
|
|
|
好东西谢谢分享
|
|
|
|
|
|
|
|
谢谢分享!
|
|
|
|
学习一下,谢谢分享
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12010 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 20:11 , Processed in 0.808821 second(s), Total 94, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号