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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2797|回復: 2
打印 上一主題 下一主題
收起左側

基于單片機的數字式電能表

[復制鏈接]
跳轉到指定樓層
樓主
ID:308098 發表于 2018-4-14 17:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


//////////////////////////////////////////////
#include<REG52.H>
#define uchar unsigned char
#define uint unsigned int
unsigned char code command[6][7]={
                                 0xB0,0xC0,0xA8,0x01,0x01,0x00,0x1A,//讀取電壓值
                                 0xB1,0xC0,0xA8,0x01,0x01,0x00,0x1B,//讀取電流值
                                 0xB3,0xC0,0xA8,0x01,0x01,0x00,0x1D,//讀取電量值
                                 0x7e,0x05,0x41,0x00,0x04,0x40,0xef,
                                 0x7e,0x05,0x41,0x00,0x05,0x41,0xef,
                                 0x7e,0x05,0x41,0x00,0x06,0x42,0xef

                                };//串口控制音樂指令
uchar shuju[8];
uchar jishu=0;
uchar CRC=0;
uchar j=0;

long  AA=0;
uint BB=0;
uint CC;
//******************LCD1602****************************//
sbit lcden=P1^2;
sbit lcdrw=P1^1;
sbit lcdrs=P1^0;

//////////////LCD1602///////////////////////////////////////
void delay1(uint z)
{
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}
void write_com(uchar com)
{
    lcdrs=0;
    P0=com;
    delay1(5);
    lcden=1;
    delay1(5);
    lcden=0;
}

void write_data(uchar date)
{
    lcdrs=1;
    P0=date;
    delay1(5);
    lcden=1;
    delay1(5);
    lcden=0;
}
void init1602()
{
    lcden=0;
    write_com(0x38);
    write_com(0x0c);//    write_com(0x0e);
    write_com(0x06);
    write_com(0x01);
    write_com(0x80+2);
}
///////////////LCD1602   
void SendASC(uchar d)    //串口發送字符
{
   
    SBUF=d;                //數據賦值到緩沖區
    while(!TI);            //發送完

    TI=0;                //清零
}
void deal(void)
{
  //電壓讀取
           jishu=0;
           for(j=0;j<7;j++)
            {    shuju[j]=0;
                  SendASC(command[0][j]);   
            }
            delay1(200);
            delay1(20);
            if(jishu>0)
              {      CRC=0;
                  for(j=0;j<6;j++)
                    {   
                       CRC=CRC+shuju[j];

                    }
                  if((CRC==shuju[6])&&(shuju[0]==0xa0))
                      {
                          AA=shuju[1]*256+shuju[2];
                          write_com(0x80+0x40);
                          if(AA>=100)
                               write_data(AA/100+0x30);
                          else write_data(' ');
                          delay1(20);
                          write_data(AA%100/10+0x30);
                          delay1(20);
                          write_data(AA%10+0x30);
                          delay1(20);
                          write_data('.');
                          delay1(20);
                          write_data(shuju[3]+0x30);
                          delay1(20);
                          write_data('V');
                          delay1(20);
                      }
              }
   //電流讀取
           jishu=0;
           for(j=0;j<7;j++)
            {    shuju[j]=0;
                  SendASC(command[1][j]);   
            }
            delay1(200);
            if(jishu>0)
              {      CRC=0;
                  for(j=0;j<6;j++)
                    {   
                       CRC=CRC+shuju[j];

                    }
                  if((CRC==shuju[6])&&(shuju[0]==0xa1))
                      {
                          AA=shuju[2];
                          write_com(0x80+0x40+9);
                          if(AA>=100)
                               write_data(AA/100+0x30);
                          else write_data(' ');
                          delay1(20);
                          write_data(AA%100/10+0x30);
                          delay1(20);
                          write_data(AA%10+0x30);
                          delay1(20);
                          write_data('.');
                          delay1(20);
                          write_data(shuju[3]/10+0x30);
                          delay1(20);
                          write_data(shuju[3]%10+0x30);
                          delay1(20);
                          write_data('A');
                          delay1(20);
                      }
              }
    //電量讀取
           jishu=0;
           for(j=0;j<7;j++)
            {    shuju[j]=0;
                  SendASC(command[2][j]);   
            }
            delay1(200);
            if(jishu>0)
              {      CRC=0;
                  for(j=0;j<6;j++)
                    {   
                       CRC=CRC+shuju[j];

                    }
                  if((CRC==shuju[6])&&(shuju[0]==0xa3))
                      {
                        
                          AA=shuju[1];
                          AA=AA<<16;
                          AA=AA+shuju[2]*256;
                          AA=AA+shuju[3];
                          write_com(0x80);
                          if(AA>=1000000)
                               write_data(AA/1000000+0x30);
                          else write_data(' ');
                          delay1(20);
                          if(AA>=100000)
                               write_data(AA%1000000/100000+0x30);
                          else write_data(' ');
                          delay1(20);
                          if(AA>=10000)
                               write_data(AA%100000/10000+0x30);
                          else write_data(' ');
                          delay1(20);
                          if(AA>=1000)
                               write_data(AA%10000/1000+0x30);
                          else write_data(' ');
                          delay1(20);
                          if(AA>=100)
                               write_data(AA%1000/100+0x30);
                          else write_data(' ');
                          delay1(20);
                          if(AA>=10)
                               write_data(AA%100/10+0x30);
                          else write_data(' ');
                          delay1(20);
                          write_data(AA%10+0x30);
                          delay1(20);

                          write_data('W');
                          delay1(20);
                          write_data('H');
                          delay1(20);
                      }
              }

}
void main(void)
{

  lcdrw=0;
  init1602();
  //串口通信
   TMOD=0x21;//?????0?????1
   TH1=0Xfd;
   TL1=0Xfd;        //9600波特率
   TR1=1;             // 定時器1啟動  
   SM0=0;        // 設置串口的工作模式
   SM1=1;         //方式1
   REN=1;          // 允許串口接收數據      
   ES=1;          // 串口中斷應許
   EA=1;
  while(1)
        {  
        
            deal();
         

        }
}

void ser() interrupt 4
{
    if(RI)
       {
        RI=0;
        shuju[jishu++]=SBUF;
        if(jishu>7)
            jishu=0;
       }
   
}  

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

使用道具 舉報

沙發
ID:313732 發表于 2018-4-25 17:25 | 只看該作者
小白在做設計,有沒有仿真圖啊
回復

使用道具 舉報

板凳
ID:1115953 發表于 2024-4-10 14:05 | 只看該作者
靜凈 發表于 2018-4-25 17:25
小白在做設計,有沒有仿真圖啊

哥給看看仿真圖,我現在才做DIY小玩意,遇到難點了
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产999精品久久久久久 | 99久久免费精品国产免费高清 | 网站黄色在线免费观看 | a黄视频 | 免费在线观看一区二区三区 | 一级毛片,一级毛片 | 久久久久一区 | 爱爱无遮挡 | 欧美亚州综合 | www.国产精 | 亚洲精品中文字幕av | 欧美日韩精品一区二区三区四区 | 成人深夜福利 | 一级做a爰片性色毛片 | 精品乱码一区二区 | 在线超碰 | 精品欧美乱码久久久久久1区2区 | 国产日韩中文字幕 | 中文字幕成人在线 | 亚洲一区二区视频 | 91麻豆产精品久久久久久 | 中文字幕在线播放第一页 | 女同久久另类99精品国产 | 日韩欧美国产一区二区三区 | 伊人春色在线 | 一级毛片视频免费观看 | 色视频一区二区 | 综合久久综合久久 | 天天操 夜夜操 | 久久大 | 免费日本视频 | 麻豆av电影网 | 成在线人视频免费视频 | 国产精品1区2区3区 欧美 中文字幕 | 欧美在线激情 | 亚洲免费精品 | 午夜免费视频观看 | 国产精品久久久久久久久免费丝袜 | 日韩欧美1区2区 | 一级h片| 99久久精品免费视频 |