找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3131|回复: 2
打印 上一主题 下一主题
收起左侧

求解决单片机数字交流毫伏表设计的问题

[复制链接]
跳转到指定楼层
楼主
1黑币
本人毕业设计是数字交流毫伏表,测量范围为0.2v-200v,自动换挡,但是液晶屏显示总是不停变换电压值,

单片机源程序:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include"LCD.h"
  4. sbit AD_EOC=P3^0;
  5. sbit AD_START=P3^3;
  6. sbit AD_OE=P3^4;
  7. sbit A=P2^4;
  8. sbit BB=P2^5;
  9. sbit s1=P2^0;
  10. sbit s2=P2^1;
  11. sbit s3=P2^2;
  12. sbit s=P2^3;

  13. #define _200v_on {s1=0;s2=0;s3=0;}
  14. #define _20v_on {s1=1;s2=0;s3=0;}
  15. #define _2v_on {s1=0;s2=1;s3=0;}
  16. #define _200mv_on {s1=0;s2=0;s3=1;}

  17. void main()
  18. {
  19.    float DATA,temp2;
  20. //                float temp;
  21.    LcdInit();            //òo¾§3õê¼»ˉ
  22.    LCD_word(0x80,"voltag:");
  23.         
  24.                
  25.         while(1)
  26. _200v:
  27.         {
  28.                 _200v_on;
  29.                 AD_START=0;
  30.                 AD_OE=0;
  31.                 AD_START=1;
  32.                 _nop_();
  33.                 AD_START=0;
  34.          
  35.                 while(!AD_EOC);
  36.     AD_OE=1;
  37.           temp2=P1;
  38.           AD_OE=0;
  39.                 if(temp2<3)
  40.                 {
  41.                         goto _20v;
  42.                 }
  43.                 DATA=(temp2*1.0/255*5)*40;
  44.                 LCD_DATA(0x87,DATA);
  45.           LCD_word(0x80+15,"V");
  46.                
  47. _20v:
  48.                 _20v_on;
  49.                 AD_START=0;
  50.                 AD_OE=0;
  51.                 AD_START=1;
  52.                 _nop_();
  53.                 AD_START=0;
  54.          
  55.                 while(!AD_EOC);
  56.     AD_OE=1;
  57.           temp2=P1;
  58.           AD_OE=0;
  59.                 if(temp2<3)
  60.                 {
  61.                         goto _2v;
  62.                 }
  63.                 DATA=(temp2*1.0/255*5)*4;
  64.                 LCD_DATA(0x87,DATA);
  65.           LCD_word(0x80+15,"V");
  66.                
  67. _2v:
  68.                 _2v_on;
  69.                 AD_START=0;
  70.                 AD_OE=0;
  71.                 AD_START=1;
  72.                 _nop_();
  73.                 AD_START=0;
  74.          
  75.                 while(!AD_EOC);
  76.     AD_OE=1;
  77.           temp2=P1;
  78.           AD_OE=0;
  79.                 if(temp2<2)
  80.                 {
  81.                         goto _200mv;
  82.                 }else if(temp2>200)
  83.                 {
  84.                         goto _200v;
  85.                 }
  86.                 DATA=(temp2*1.0/255*5)*0.4;
  87.                 LCD_DATA(0x87,DATA);
  88.           LCD_word(0x80+15,"V");
  89.                
  90. _200mv:
  91.                 _200mv_on;
  92.                 s=1;
  93.                 AD_START=0;
  94.                 AD_OE=0;
  95.                 AD_START=1;
  96.                 _nop_();
  97.                 AD_START=0;
  98.          
  99.                 while(!AD_EOC);
  100.     AD_OE=1;
  101.           temp2=P1;
  102.           AD_OE=0;
  103.                 if(temp2>200)
  104.                 {
  105.                         goto _2v;
  106.                 }
  107.                 DATA=temp2*1.0/255*5;
  108.                 LCD_DATA(0x87,DATA);
  109.           LCD_word(0x80+15,"V");
  110. }
复制代码

下面是电路图和程序,求大神帮我看看,指点指点

1.jpg (119.67 KB, 下载次数: 41)

转换和控制电路

转换和控制电路

2.jpg (54.09 KB, 下载次数: 50)

电压输入电路

电压输入电路

数字交流毫伏表0.2-200V.zip

189.35 KB, 下载次数: 53

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:332129 发表于 2018-5-17 14:45 | 只看该作者
具体我没看(因为懒),但是不是你用0808测交流信号的关系呢,你直接接直流电压看会不会跳,不会应该是0808测不了交流的关系
回复

使用道具 举报

板凳
ID:362692 发表于 2019-12-15 17:26 来自手机 | 只看该作者
下载看了  不知道我的问题还是你压缩包的问题,麻烦你检查一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表