久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10382|回復: 5
打印 上一主題 下一主題
收起左側(cè)

基于51單片機電流電壓采集

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:121335 發(fā)表于 2016-5-17 00:07 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

想做采集器的來看看吧
全部程序下載:
51單片機電流電壓采集.zip (27.11 KB, 下載次數(shù): 176)


源碼預覽:
  1. # include <reg52.h>
  2. # include <intrins.h>




  3. sbit rs=P0^7;
  4. sbit rw=P0^6;
  5. sbit ep=P0^5;

  6. unsigned char dis1[4];
  7. unsigned char dis2[4];
  8. unsigned char chv=0x00;
  9. unsigned char cha=0x70;
  10. //unsigned char chv;
  11. unsigned int date_v=0;
  12. unsigned int date_a=0;


  13. sbit EOC=P1^0;
  14. sbit CS=P1^4;
  15. sbit IO_CLK=P1^1;
  16. sbit DAT_IN=P1^2;
  17. sbit DAT_OUT=P1^3;


  18. void init() //初始化uart
  19. {
  20.   
  21.   
  22.     TMOD=0X20;  //定時器1定時器方式  工作模式2,可自動重載的8位計數(shù)器常把定時/計數(shù)器1以模式2作為串行口波特率發(fā)生器
  23.         SCON=0XD0; //選擇工作模式1使能接收,允許發(fā)送,允許接收
  24.     EA=1; //開總中斷
  25.         ES=1;  //打開串口中斷
  26.         ET1=0;  //打開定時器中斷
  27.     PCON=0X00; //8位自動重載,波特率加倍
  28.         TH1=0Xfd;  //用22.1184 mhz波特率
  29.         TL1=0Xfd;
  30.            TR1=1; //打開中時器
  31.    

  32. }


  33. void UART_Putch(unsigned char dat)  //輸出一個字符
  34. {
  35.         SBUF=dat; //把數(shù)據(jù)送給sbuf緩存器中
  36.         while(TI!=1);//發(fā)送標志位 TI如果發(fā)送了為1,沒發(fā)送為0,沒發(fā)送等待,到了退出循環(huán)
  37.         TI=0;  //到了,TI清為0
  38. }



  39. unsigned int read_tlc2543(unsigned char M)//M 為十六進制;
  40. {
  41.         unsigned char i,ctrl_word;
  42.         unsigned int ad_result=0;
  43.         DAT_OUT=1;
  44.         ctrl_word=M;
  45.         CS=1;
  46.         IO_CLK=0;
  47.         CS=0;
  48.         for(i=0;i<8;i++)
  49.         {
  50.                 DAT_IN=ctrl_word&0x80;
  51.                 ctrl_word=ctrl_word<<1;
  52.                 IO_CLK=1;
  53.                 ad_result=ad_result<<1;
  54.                 if(DAT_OUT)
  55.                         ad_result=ad_result+1;
  56.                 IO_CLK=0;
  57.         }
  58.         for(i=8;i<12;i++)
  59.         {
  60.                 IO_CLK=1;
  61.                 ad_result=ad_result<<1;
  62.                 if(DAT_OUT)
  63.                         ad_result=ad_result+1;
  64.                 IO_CLK=0;
  65.         }
  66.         CS=1;
  67.         return ad_result;
  68. }




  69. void delay (int m)
  70. {
  71. unsigned char i,j;
  72. for (i=0;i<m;i++)
  73. for (j=0;j<253;j++);
  74. }

  75. bit lcd_bz()
  76. {
  77.   bit result;
  78.   rs=0;           // 讀忙信號
  79.   rw=1;
  80.   ep=1;
  81.   _nop_();
  82.   _nop_();
  83.   _nop_();
  84.   _nop_();
  85.   result = (bit)(P2&0x80);
  86.   ep=0;
  87.   return result;
  88. }

  89. void lcd_wcmd (unsigned char cmd)
  90. {
  91.   while (lcd_bz());
  92.   rs=0;
  93.   rw=0;
  94.   ep=0;
  95.   _nop_();
  96.   _nop_();
  97.   P2=cmd ;
  98.   _nop_();
  99.   _nop_();
  100.   _nop_();
  101.   _nop_();
  102.   ep=1;
  103.   _nop_();
  104.   _nop_();
  105.   _nop_();
  106.   _nop_();
  107.   ep=0;
  108. }

  109. void lcd_pos (unsigned char pos)
  110. {
  111.   lcd_wcmd (pos|0x80);
  112. }

  113. void lcd_wdat (unsigned char dat)
  114. {
  115.    while (lcd_bz());
  116.   rs=1;
  117.   rw=0;
  118.   ep=0;
  119.   _nop_();
  120.   _nop_();
  121.   P2=dat ;
  122.   _nop_();
  123.   _nop_();
  124.   _nop_();
  125.   _nop_();
  126.   ep=1;
  127.   _nop_();
  128.   _nop_();
  129.   _nop_();
  130.   _nop_();
  131.   ep=0;
  132. }

  133. void lcd_init ()
  134. {
  135.   lcd_wcmd (0x38);
  136.   delay (1);
  137.   lcd_wcmd (0x0c);
  138.   delay (1);
  139.   lcd_wcmd (0x06);
  140.   delay (1);
  141.   lcd_wcmd (0x01);
  142.   delay (1);
  143. }

  144. void lcd_dis(unsigned char pose,unsigned char *dis)
  145. {
  146. unsigned char i;
  147.   //lcd_init ();
  148.   delay (10);

  149.   lcd_pos (pose);
  150.   for(i=0;i<4;i++)
  151.   {
  152.           lcd_wdat(dis[i]+0x30);
  153.   }


  154. }

  155. void convert(unsigned int  a,unsigned char *dis1)//電流
  156. {
  157.         unsigned int temp,b;
  158.         b=a/1000;
  159.         if(b!=0)
  160.                 dis1[0]=(unsigned char)b;
  161.         else
  162.                 dis1[0]=0;
  163.         temp=a%1000;
  164.         b=temp/100;
  165.         if(b!=0)
  166.                 dis1[1]=(unsigned char)b;
  167.         else
  168.                 dis1[1]=0;
  169.         temp=temp%100;
  170.         b=temp/10;
  171.         if(b!=0)
  172.                 dis1[2]=(unsigned char)b;
  173.         else
  174.                 dis1[2]=0;
  175.         b=temp%10;
  176.         if(b!=0)
  177.                 dis1[3]=(unsigned char)b;
  178.         else
  179.                 dis1[3]=0;
  180. }

  181. void main ()
  182. {
  183.   init();
  184.   lcd_init ();
  185.   read_tlc2543(cha);
  186.   delay(10);
  187.   //read_tlc2543(cha);
  188.   date_v=read_tlc2543(cha);
  189.   convert(date_v,dis2);
  190.   lcd_dis(0x00,dis2);
  191.   while(1){}
  192. }


  193. void init1() interrupt 4  //uart中斷 ,4為串口中斷
  194. {

  195.         if(RI==1)  //收到數(shù)據(jù)
  196.         {
  197.              unsigned char m=SBUF; //m為計算機發(fā)送給串口的數(shù)據(jù),例,open //總體思想是,計算機通知串口,我要發(fā)數(shù)據(jù)了
  198.                    RI=0;   //收到清0
  199.   
  200.                if(m=='1')   //判斷m這位數(shù)據(jù)有無\r
  201.          {
  202.                          read_tlc2543(cha);
  203.                             delay(10);
  204.                    //read_tlc2543(cha);
  205.                            date_a=read_tlc2543(cha);
  206.                            convert(date_a,dis1);
  207.                            lcd_dis(0x00,dis1);
  208.                        UART_Putch(dis1[0]);
  209.                          UART_Putch(dis1[1]);
  210.                          UART_Putch(dis1[2]);
  211.                          UART_Putch(dis1[3]);
  212.                        UART_Putch('\n');  // 換行
  213.            
  214.         }
  215.              else if(m=='2')
  216.             {
  217.                          read_tlc2543(chv);
  218.                             delay(10);
  219.                    //read_tlc2543(cha);
  220.                            date_v=read_tlc2543(chv);
  221.                            convert(date_v,dis2);
  222.                            lcd_dis(0x00,dis2);
  223.                          UART_Putch(dis2[0]);
  224.                          UART_Putch(dis2[1]);
  225.                          UART_Putch(dis2[2]);
  226.                          UART_Putch(dis2[3]);
  227.                          UART_Putch('\n');  // 換行
  228.             }  
  229.                      else
  230.                      {
  231.                             UART_Putch('e');
  232.                                UART_Putch('r');
  233.                               UART_Putch('r');
  234.                                UART_Putch('o');
  235.                               UART_Putch('r');
  236.                                UART_Putch('!');
  237.                             UART_Putch('\r');
  238.                             UART_Putch('\n');
  239.                      }
  240.   
  241.    }
  242. }
復制代碼


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復

使用道具 舉報

沙發(fā)
ID:136090 發(fā)表于 2016-10-16 14:18 | 只看該作者
有誰做出來過沒?
回復

使用道具 舉報

無效樓層,該帖已經(jīng)被刪除
地板
ID:300719 發(fā)表于 2018-4-26 23:37 | 只看該作者
請問這是測直流還是交流呀
回復

使用道具 舉報

5#
ID:53978 發(fā)表于 2018-5-25 20:06 | 只看該作者
慢慢學習
回復

使用道具 舉報

6#
ID:256747 發(fā)表于 2018-7-20 16:22 | 只看該作者
學習一下
回復

使用道具 舉報

7#
ID:56002 發(fā)表于 2018-9-15 08:07 | 只看該作者
發(fā)個電路圖看看
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 九九热这里 | 久久久久久国产精品 | 国产一区二区三区四区五区加勒比 | 亚洲一区二区三区四区五区中文 | 欧美日韩在线观看一区二区三区 | 国产成人精品一区二 | 日韩精品一区二区三区中文在线 | 在线免费观看日本视频 | 在线小视频 | 五月综合久久 | 国产成人免费网站 | 国产精品一区二区福利视频 | 亚洲福利片 | 亚洲一区二区在线播放 | 一区二区三区欧美在线 | 国产精品久久久久久久久免费 | 久草免费在线视频 | 亚洲精品免费视频 | 国产午夜精品视频 | 久久香焦 | 久久视频一区 | 国产黄色av网站 | 免费av电影网站 | 欧美成人一区二区三区 | 99精品国产一区二区青青牛奶 | 午夜精品久久久久久久久久久久 | 一级毛片播放 | 欧美日韩高清在线一区 | 桃色五月 | 中文字幕久久精品 | 国产成人精品免费 | 午夜影院 | 久久婷婷香蕉热狠狠综合 | 久久大全 | 国产一区二区免费 | 免费成年网站 | 亚洲午夜视频在线观看 | 国产精品福利在线 | 日韩成人免费在线视频 | 中文字幕国 | 亚洲成网 |