完善资料让更多小伙伴认识你,还能领取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个回答
|
|
|
|
|
|
前辈!我是想问问 我的那个电压表使用手动切换量程的 !切换了怎么不行! 逻辑上感觉没问题!但运行的时候就不行了! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
好东西啊 谢谢楼主分享
|
|
|
|
好东西谢谢分享
|
|
|
|
|
|
|
|
谢谢分享!
|
|
|
|
学习一下,谢谢分享
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
72 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
509 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
546 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
545 浏览 0 评论
1008 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11762 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 11:45 , Processed in 1.350489 second(s), Total 95, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号