找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TLC1543电流表程序

[复制链接]
跳转到指定楼层
楼主
ID:179665 发表于 2017-3-22 10:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include <reg52.h>
  2. #include <INTRINS.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. #define ulong unsigned long
  6. //#define CLOCK P1_0
  7. //#define D_IN  P1_1
  8. //#define D_OUT P1_2
  9. //#define _CS   P1_3
  10. sbit CLOCK=P1^0;
  11. sbit D_IN =P1^1;
  12. sbit D_OUT=P1^2;
  13. sbit   _CS=P1^3;
  14. sbit g1=P2^7;
  15. sbit g2=P2^1;
  16. sbit g3=P2^3;
  17. sbit g4=P2^5;
  18. ulong AD_ad1,AD_ad2;
  19. float JiZhun_AD=2.5;
  20. float AD_Data=0.0;
  21. ulong AD_ad=0;
  22. char chi;
  23. unsigned char code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};        
  24.         void delay02s(void)
  25.         {  
  26.         unsigned char i,j,k;
  27.         for(i=1;i>0;i--)
  28.         for(j=10;j>0;j--)
  29.         for(k=200;k>0;k--);
  30.         }
  31. uint read1543(uchar port)
  32.         {        
  33.         uint ad;
  34.         uint i;
  35.         uchar al=0,ah=0;
  36.         CLOCK=0;
  37.         _CS=0;
  38.         port<<=4;
  39.         for (i=0;i<4;i++) //将四位通道地址送1543
  40.                 {
  41.                 D_IN=(bit)(port&0x80);CLOCK=1;CLOCK=0;
  42.                 port<<=1;
  43.                 }
  44.         for (i=0;i<6;i++) //填6个CLOCK信号
  45.                 {
  46.                 CLOCK=1;CLOCK=0;
  47.                 }
  48.         _CS=1;
  49.         _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  50.         _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  51.         _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  52.         _nop_();_nop_();_nop_();
  53.         _CS=0; //等待AD转换结束
  54.         _nop_();_nop_();_nop_();
  55. for (i=0;i<2;i++) //D9,D8
  56.                 {        
  57.                 D_OUT=1;CLOCK=1;ah<<=1;               
  58.                 if (D_OUT) ah +=0x01;
  59.                 CLOCK=0;
  60.                 }
  61.         for (i=0;i<8;i++) //取出D7--D0
  62.                 {        
  63.                 D_OUT=1;CLOCK=1;al <<= 1;               
  64.                 if (D_OUT)
  65.                 al +=0x01;
  66.                 CLOCK=0;
  67.                 }
  68. _CS=1;        
  69. ad = (uint)ah;
  70. ad <<= 8;
  71. ad +=(uint)al; //
  72. return(ad);
  73. }
  74. void main()
  75. {
  76. TMOD=0x01;
  77. TH0=(65535-20000)/255;
  78. TL0=(65535-20000)%255;
  79. EA=1;ET0=1;TR0=1;
  80. while(1)
  81.         {
  82.         P0=table[(AD_ad%10)];
  83.         g1=1;
  84.     delay02s();
  85.     g1=0;              
  86.         P0=table[(AD_ad/10)%10];
  87.         g2=1;
  88.     delay02s();
  89.     g2=0;            
  90.     P0=table[(AD_ad/100)%10];
  91.         g3=1;
  92.     delay02s();
  93.     g3=0;
  94.         P0=table[(AD_ad/1000)]|0X80;
  95.         g4=1;
  96.     delay02s();
  97.         g4=0;
  98.         }
  99. }
  100. zhongduan()interrupt 1
  101. {
  102.         TH0=(65535-20000)/255;
  103.         TL0=(65535-20000)%255;
  104.         chi++;
  105.         if(chi==50)
  106.         {
  107.         chi=0;
  108.         AD_ad1 = read1543(0);   //          (通道0电压正端)
  109.         AD_Data = ((float)AD_ad1)*JiZhun_AD*2/1024+0.15005;//0.15经过实测需要加0.15减少误差        
  110.         AD_ad =((AD_Data-2.68)/0.185)*1000;
  111.                  
  112.         }
  113.         
  114. }

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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