找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机测量电压及电流,ADC0809,asc712

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code table[]={ ~0x3F,/*0*/
  5.         ~0x06,/*1*/
  6.         ~0x5B,/*2*/
  7.         ~0x4F,/*3*/
  8.         ~0x66,/*4*/
  9.         ~0x6D,/*5*/
  10.         ~0x7D,/*6*/
  11.         ~0x07,/*7*/
  12.         ~0x7F,/*8*/
  13.        ~0x6F,/*9*/
  14. };
  15. uchar Tcount;
  16. uint wei3,wei2,wei1,wei0,num,wei4,wei5,wei6,wei7;
  17. bit timerflag,ADflag;
  18. sbit AD_end        =P3^2;
  19. sbit OE=P3^3;
  20. sbit ST=P3^4;
  21. sbit channel=P3^5;
  22. void AD_INT() interrupt 0
  23. {ADflag=1;
  24. AD_end=1;
  25. }
  26. void T0_int()interrupt 1
  27. {TL0|=0xb0;
  28. TH0=0x3c;
  29.    if(--Tcount==0)
  30.      {Tcount=20;
  31.       timerflag=1;}
  32.                   
  33. }
  34. void delay(uint z)
  35. {uint x,y;
  36. for(x=z;x>0;x--)
  37.     for(y=110;y>0;y--);
  38. }
  39. void main()
  40. {
  41. channel = 0;
  42. Tcount=20;
  43. TMOD=0x01;
  44. TL0=0xb0;
  45. TH0=0x3c;
  46. IT0=1;
  47. TR0=1;
  48. ET0=1;
  49. EX0=1;
  50. EA=1;

  51. while(1)
  52. {
  53.                         

  54.   if(timerflag==1)
  55.     {timerflag=0;
  56.      ADflag=0;
  57.      ST=1;
  58.            ST=0;
  59.         
  60.       while(!ADflag);
  61.          {
  62.                                         if(channel == 0)
  63.                                         {
  64.                                                 OE=1;
  65.                                                 num=P2*20-2500;                                       
  66.                                                 wei0=num/1000;
  67.                                                 wei1=num%1000/100;
  68.                                                 wei2=num%100/10;
  69.                                                 wei3=num%10;
  70.                                         }
  71.                                         else
  72.                                         {
  73.                                                 OE=1;
  74.                                                 num=P2*20/100*51;                                       
  75.                                                 wei4=num/1000;
  76.                                                 wei5=num%1000/100;
  77.                                                 wei6=num%100/10;
  78.                                                 wei7=num%10;                                
  79.                                         }

  80.           OE=0;
  81.           ADflag=0;
  82.                                         channel = ~channel;
  83.                                  }
  84.     }
  85.         
  86.                         //显示电流
  87.         P1=0x01;
  88.   P0=table[wei0];
  89.   delay(1);
  90.   P1=0x02;
  91.   P0=table[wei1]&0X7F;
  92.   delay(1);
  93.   P1=        0X04;        
  94.   P0=table[wei2];
  95.   delay(1);
  96. //  P1=0x08;
  97. //  P0=table[wei3];
  98. //  delay(1);               
  99.                
  100.         //显示电压        
  101.         P1=0x10;
  102.   P0=table[wei4];
  103.   delay(1);
  104.   P1=0x20;
  105.   P0=table[wei5];
  106.   delay(1);
  107.   P1=0x40;
  108.   P0=table[wei6]&0x7f;
  109.   delay(1);
  110.   P1=0x80;
  111.   P0=table[wei7];
  112.   delay(1);
  113. }
  114. }

  115.   

复制代码

全部资料51hei下载地址:
电流 (2).zip (97.16 KB, 下载次数: 97)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:288629 发表于 2021-2-1 11:17 | 只看该作者
好东西,是需要的东西,谢了!
回复

使用道具 举报

板凳
ID:905674 发表于 2021-4-19 21:32 | 只看该作者
我想请问一下怎么测量两点之间的电压,因为用您的电路貌似只能测出电位。求赐教。
回复

使用道具 举报

地板
ID:428799 发表于 2021-5-15 15:24 | 只看该作者
谢大哥,不错的好东西
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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