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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2867|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91久久看片 | 国产高清一区二区三区 | 欧美日韩在线一区二区 | 亚洲少妇综合网 | 黄色成人av | 亚洲一区二区三区在线视频 | 精品无码久久久久久国产 | 特黄特色大片免费视频观看 | 国产亚洲精品区 | 一级片在线视频 | 免费精品久久久久久中文字幕 | 精品亚洲一区二区三区四区五区 | 91视视频在线观看入口直接观看 | av男人的天堂在线 | 久久国产区 | 97日日碰人人模人人澡分享吧 | 日韩毛片 | 欧美日韩一区二区在线观看 | 免费在线观看一区二区三区 | 国产精品久久亚洲 | 麻豆久久久久久久久久 | 欧美精品99 | 久久33| 一级毛片免费完整视频 | 澳门永久av免费网站 | 午夜电影一区二区 | 成人黄视频在线观看 | 91一区二区三区在线观看 | 精品在线一区 | 国产精品久久久久无码av | 欧美成人免费在线视频 | a久久久久久 | 福利网址| 性福视频在线观看 | 麻豆视频国产在线观看 | 久久九精品 | 91精品一区二区三区久久久久 | 欧美在线亚洲 | 欧美一区二区在线观看 | 精品欧美一区二区三区精品久久 | 啪啪免费网站 |