|
1黑幣
本人畢業設計是數字交流毫伏表,測量范圍為0.2v-200v,自動換擋,但是液晶屏顯示總是不停變換電壓值,
單片機源程序:
- #include<reg52.h>
- #include<intrins.h>
- #include"LCD.h"
- sbit AD_EOC=P3^0;
- sbit AD_START=P3^3;
- sbit AD_OE=P3^4;
- sbit A=P2^4;
- sbit BB=P2^5;
- sbit s1=P2^0;
- sbit s2=P2^1;
- sbit s3=P2^2;
- sbit s=P2^3;
- #define _200v_on {s1=0;s2=0;s3=0;}
- #define _20v_on {s1=1;s2=0;s3=0;}
- #define _2v_on {s1=0;s2=1;s3=0;}
- #define _200mv_on {s1=0;s2=0;s3=1;}
- void main()
- {
- float DATA,temp2;
- // float temp;
- LcdInit(); //òo¾§3õê¼»ˉ
- LCD_word(0x80,"voltag:");
-
-
- while(1)
- _200v:
- {
- _200v_on;
- AD_START=0;
- AD_OE=0;
- AD_START=1;
- _nop_();
- AD_START=0;
-
- while(!AD_EOC);
- AD_OE=1;
- temp2=P1;
- AD_OE=0;
- if(temp2<3)
- {
- goto _20v;
- }
- DATA=(temp2*1.0/255*5)*40;
- LCD_DATA(0x87,DATA);
- LCD_word(0x80+15,"V");
-
- _20v:
- _20v_on;
- AD_START=0;
- AD_OE=0;
- AD_START=1;
- _nop_();
- AD_START=0;
-
- while(!AD_EOC);
- AD_OE=1;
- temp2=P1;
- AD_OE=0;
- if(temp2<3)
- {
- goto _2v;
- }
- DATA=(temp2*1.0/255*5)*4;
- LCD_DATA(0x87,DATA);
- LCD_word(0x80+15,"V");
-
- _2v:
- _2v_on;
- AD_START=0;
- AD_OE=0;
- AD_START=1;
- _nop_();
- AD_START=0;
-
- while(!AD_EOC);
- AD_OE=1;
- temp2=P1;
- AD_OE=0;
- if(temp2<2)
- {
- goto _200mv;
- }else if(temp2>200)
- {
- goto _200v;
- }
- DATA=(temp2*1.0/255*5)*0.4;
- LCD_DATA(0x87,DATA);
- LCD_word(0x80+15,"V");
-
- _200mv:
- _200mv_on;
- s=1;
- AD_START=0;
- AD_OE=0;
- AD_START=1;
- _nop_();
- AD_START=0;
-
- while(!AD_EOC);
- AD_OE=1;
- temp2=P1;
- AD_OE=0;
- if(temp2>200)
- {
- goto _2v;
- }
- DATA=temp2*1.0/255*5;
- LCD_DATA(0x87,DATA);
- LCD_word(0x80+15,"V");
- }
復制代碼
下面是電路圖和程序,求大神幫我看看,指點指點
|
-
1.jpg
(119.67 KB, 下載次數: 51)
下載附件
2018-4-29 09:41 上傳
轉換和控制電路
-
2.jpg
(54.09 KB, 下載次數: 58)
下載附件
2018-4-29 09:41 上傳
電壓輸入電路
-
-
數字交流毫伏表0.2-200V.zip
2018-4-29 09:43 上傳
點擊文件名下載附件
189.35 KB, 下載次數: 53
|