完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 muhuilai 于 2012-10-26 20:21 编辑
用adc0809做的数字电压表,测量时准时不准电压测量如下: 标准值 1.10 1.50 1.90 2.50 2.70 2.80 3.50 3.68 4.26 测量值 1.03 1.42 1.31 2.43 2.02 2.22 3.34 3.02 4.14 我大概看了一下,每次一超过0.5之后,就会不准。不知道是怎么回事。 程序在下: #include #include #define uchar unsigned char #define uint unsigned int #define keyio P2 ***it DISX=P0^7; //小数点 ***it ALE=P3^3; ***it START=P3^4; ***it OE=P2^7; ***it EOC=P2^6; ***it a=P3^0; ***it b=P3^1; ***it c=P3^2; ***it z=P3^5; ***it r=P3^6; ***it s=P3^7; uchar code dis_7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管 uchar data dis[4]={0x00,0x00,0x00,0x00};// 3个显示单元和1个存储单元 uchar zancun;//转换暂存 uchar data mshu[2]; uchar xianshi_temp; //1ms延时子函数 void delay1ms(uint t) {uint i,j; for(i=0;i ; } //转换子函数 void test() { ALE=1;_nop_();_nop_();_nop_(); START=1;_nop_();_nop_();_nop_();ALE=0;_nop_();_nop_();_nop_();START=0; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); while(EOC==0);_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); OE=1;_nop_();_nop_();_nop_();_nop_();_nop_();zancun=P1;OE=0; } void xianshi(uchar digit) { xianshi_temp=digit; dis[2]=xianshi_temp/51; dis[3]=xianshi_temp%51; dis[3]=dis[3]*10; dis[1]=dis[3]/51; dis[3]=dis[3]%51; dis[3]=dis[3]*10; dis[0]=dis[3]/51; P0=dis_7[dis[0]]; z=1;r=1;s=0;delay1ms(1);s=1; P0=dis_7[dis[1]]; r=0;delay1ms(1);r=1; P0=dis_7[dis[2]]; DISX=0; z=0;delay1ms(1);z=1; } void zhuanhuan() { a=0;b=0;c=0;//确定第一路电压 test();//转换电压 } void main() { xianshi(0x00); while(1) { zhuanhuan(); xianshi(zancun); } } |
|
相关推荐
5 个讨论
|
|
|
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 21:15 , Processed in 0.862055 second(s), Total 64, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号